Jmeter函数组件开发

简介: 插件开发方法有两种: 一、在jmeter官网下载jmeter源码,在源码里面新加函数,然后导出jar; 二、不下载源码,直接导入jmeter相应的jar包,即可开发。(推荐)   下面介绍第二种开发方法: 在eclipse新建项目,导入jmeter目录下\lib\ext目录中的的ApacheJMeter_core.jar,继承AbstractFunction类。

插件开发方法有两种:

一、在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即可在函数助手中查看到该函数组件: 


img_42a4adae4716d0e15c3eeaabfd040044.png

注:转载需注明出处及作者。

流柯      

目录
相关文章
|
11月前
jmeter函数助手对话框 随机数、字符和时间戳,判断变量是否存在
jmeter函数助手对话框 随机数、字符和时间戳,判断变量是否存在
|
存储
JMeter入门教程(10) --函数助手
一些常用的函数助手的介绍
139 0
JMeter入门教程(10) --函数助手
JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制
学习JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制。
568 0
JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制
新版jmeter函数助手不在选项菜单下-在工具栏中
了解新版jmeter函数助手不在选项菜单下-在工具栏中。
新版jmeter函数助手不在选项菜单下-在工具栏中
|
数据安全/隐私保护
Jmeter系列(46)- Jmeter 中有哪些常用的函数
Jmeter系列(46)- Jmeter 中有哪些常用的函数
127 0
|
7月前
|
XML 前端开发 测试技术
使用 jMeter 对 SAP Spartacus 进行并发性能测试
使用 jMeter 对 SAP Spartacus 进行并发性能测试
73 0
|
8月前
|
JSON 监控 测试技术
性能测试--InfluxDB+Grafana+Jmeter搭建性能监控平台 (二)
性能测试--InfluxDB+Grafana+Jmeter搭建性能监控平台
|
8月前
|
监控 测试技术 时序数据库
性能测试--InfluxDB+Grafana+Jmeter搭建性能监控平台 (一)
性能测试--InfluxDB+Grafana+Jmeter搭建性能监控平台
|
9月前
|
XML 测试技术 API
JMeter和Postman:哪一个更适合性能测试?
Postman 和 JMeter 都可以用来做 API 测试,但是它们之间有一些区别。