Jmeter函数组件开发

来源:互联网 发布:centos 连接不加密wifi 编辑:程序博客网 时间:2024/05/29 19:03
插件开发方法有两种:

一、在jmeter官网下载jmeter源码,在源码里面新加函数,然后导出jar;

二、不下载源码,直接导入jmeter相应的jar包,即可开发。(推荐)

  下面介绍第二种开发方法:

在eclipse新建项目,导入jmeter目录下\lib\ext目录中的的ApacheJMeter_core.jar,继承AbstractFunction类。

案例:以下写一个计算阶乘的Function,将其命名为Factorial,主要代码参考如下,

import java.util.Collection;import java.util.LinkedList;import java.util.List;import org.apache.jmeter.engine.util.CompoundVariable;import org.apache.jmeter.functions.AbstractFunction;import org.apache.jmeter.functions.InvalidVariableException;import org.apache.jmeter.samplers.SampleResult;import org.apache.jmeter.samplers.Sampler;import org.apache.jmeter.util.JMeterUtils;import org.apache.jorphan.logging.LoggingManager;import org.apache.log.Logger;public class Factorial extends AbstractFunction {    private static final Logger log = LoggingManager.getLoggerForClass();    private static final List<String> desc = new LinkedList<String>();    private static final String KEY = "__factorial";    private Object[] values = null;    static {        desc.add("factorial_value");    }    //描述参数    @Override    public List<String> getArgumentDesc() {        // TODO Auto-generated method stub        return desc;    }    //函数执行,返回结果    @Override    public String execute(SampleResult previousResult, Sampler currentSampler)            throws InvalidVariableException {        // TODO Auto-generated method stub        String numberString = ((CompoundVariable) values[0]).execute().trim();        int num;        try{            num = Integer.valueOf(numberString);        } catch (Exception e){            return null;        }        return String.valueOf(factorial(num));    }    //获取函数引用关键字    @Override    public String getReferenceKey() {        // TODO Auto-generated method stub        return KEY;    }    //设置参数    @Override    public void setParameters(Collection<CompoundVariable> parameters)            throws InvalidVariableException {        // TODO Auto-generated method stub        //可以检查参数数量,主要包括以下两种方法        checkMinParameterCount(parameters, 1);        checkParameterCount(parameters, 1, 1);        values = parameters.toArray();    }    private int factorial(int num){        int result = 1;        if(num < 0){            return -1;        }        if(num == 0){            result = 1;        } else {            for(int i = num; i > 0; i--){                result *= i;            }        }        return result;    }}

通过继承AbstractFunction抽象类,重写getArgumentDesc方法实现对函数参数的描述,重写setParameters方法来对函数的参数进行检查和设置,重写getReferenceKey方法告诉JMeter该函数在框架中的引用名称,重写execute方法,实现对该函数的执行并返回结果。通过上述代码我们完成了对Factorial函数组件的编写。 
将代码导出为jar文件,放在\lib\ext目录中,打开jmeter即可在函数助手中查看到该函数组件: 

0 0
原创粉丝点击