• jmeter添加自定义扩展函数之if判断


    1,打开eclipse,新建maven工程,在pom中引用jmeter核心jar包,具体请看---https://www.cnblogs.com/guanyf/p/10863033.html---,这里就不再赘述

    2,代码如下:

      1 package com.mytest.functions;
      2 
      3 
      4 
      5 import org.apache.jmeter.engine.util.CompoundVariable;
      6 
      7 import org.apache.jmeter.functions.AbstractFunction;
      8 
      9 import org.apache.jmeter.functions.InvalidVariableException;
     10 
     11 import org.apache.jmeter.samplers.SampleResult;
     12 
     13 import org.apache.jmeter.samplers.Sampler;
     14 
     15 import org.apache.jmeter.threads.JMeterVariables;
     16 
     17 
     18 
     19 import java.util.Collection;
     20 
     21 import java.util.LinkedList;
     22 
     23 import java.util.List;
     24 
     25 
     26 
     27 public class If extends AbstractFunction {
     28 
     29     private static final List<String> desc = new LinkedList<String>();
     30 
     31     private static final String KEY = "__if";
     32 
     33 
     34 
     35     static {
     36 
     37         desc.add("Actual value");
     38 
     39         desc.add("Expected value");
     40 
     41         desc.add("Result if actual == expected");
     42 
     43         desc.add("Result if actual != expected");
     44 
     45         desc.add("Name of variable in which to store the result (optional)");
     46 
     47     }
     48 
     49 
     50 
     51     private Object[] values;
     52 
     53 
     54 
     55     public If() {
     56 
     57     }
     58 
     59 
     60 
     61     @Override
     62 
     63     public synchronized String execute(SampleResult previousResult, Sampler currentSampler)
     64 
     65             throws InvalidVariableException {
     66 
     67 
     68 
     69         String actual = getParameter(0);
     70 
     71         String expected = getParameter(1);
     72 
     73 
     74 
     75         String result = null;
     76 
     77         if (actual.equals(expected)) {
     78 
     79             result = getParameter(2).toString();
     80 
     81         } else {
     82 
     83             result = getParameter(3).toString();
     84 
     85         }
     86 
     87 
     88 
     89         JMeterVariables vars = getVariables();
     90 
     91         if (vars != null && values.length > 4) {
     92 
     93             String varName = getParameter(4).trim();
     94 
     95             vars.put(varName, result);
     96 
     97         }
     98 
     99 
    100 
    101         return result;
    102 
    103     }
    104 
    105 
    106 
    107     @Override
    108 
    109     public synchronized void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
    110 
    111         checkMinParameterCount(parameters, 4);
    112 
    113         values = parameters.toArray();
    114 
    115     }
    116 
    117 
    118 
    119     @Override
    120 
    121     public String getReferenceKey() {
    122 
    123         return KEY;
    124 
    125     }
    126 
    127 
    128 
    129     @Override
    130 
    131     public List<String> getArgumentDesc() {
    132 
    133         return desc;
    134 
    135     }
    136 
    137 
    138 
    139     private String getParameter(int i) {
    140 
    141         return ((CompoundVariable) values[i]).execute();
    142 
    143     }
    144 
    145 }
    View Code
  • 相关阅读:
    ResponsibleChain(责任链模式)
    IteratorPattern(迭代子模式)
    为什么抽象类不能实例化却有构造方法
    ObserverPattern(观察者模式)
    TemplateMethod(模块方法模式)
    java 定义一个同步map内存去重法
    oracle sql修改序列为当前序列开始
    oracle sql 当初始化数据时避免重复主键
    搭建基于express框架运行环境
    vue路由基础介绍
  • 原文地址:https://www.cnblogs.com/guanyf/p/10912399.html
Copyright © 2020-2023  润新知