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

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

流柯      

目录
相关文章
|
6月前
|
消息中间件 Java 测试技术
性能工具之Jmeter扩展函数及压测ActiveMQ实践
【5月更文挑战第18天】性能工具之Jmeter扩展函数及压测ActiveMQ实践
110 5
jmeter函数助手对话框 随机数、字符和时间戳,判断变量是否存在
jmeter函数助手对话框 随机数、字符和时间戳,判断变量是否存在
新版jmeter函数助手不在选项菜单下-在工具栏中
了解新版jmeter函数助手不在选项菜单下-在工具栏中。
109 0
新版jmeter函数助手不在选项菜单下-在工具栏中
|
存储
JMeter入门教程(10) --函数助手
一些常用的函数助手的介绍
191 0
JMeter入门教程(10) --函数助手
JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制
学习JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制。
644 0
JMeter5.3 及以后的版本jmeter函数助手生成的字符在置灰无法复制
|
数据安全/隐私保护
Jmeter系列(46)- Jmeter 中有哪些常用的函数
Jmeter系列(46)- Jmeter 中有哪些常用的函数
151 0
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
【10月更文挑战第1天】Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
139 3
|
2月前
|
测试技术 数据库 UED
Python 性能测试进阶之路:JMeter 与 Locust 的强强联合,解锁性能极限
【9月更文挑战第9天】在数字化时代,确保软件系统在高并发场景下的稳定性至关重要。Python 为此提供了丰富的性能测试工具,如 JMeter 和 Locust。JMeter 可模拟复杂请求场景,而 Locust 则能更灵活地模拟真实用户行为。结合两者优势,可全面评估系统性能并优化瓶颈。例如,在电商网站促销期间,通过 JMeter 模拟大量登录请求并用 Locust 模拟用户浏览和购物行为,可有效识别并解决性能问题,从而提升系统稳定性和用户体验。这种组合为性能测试开辟了新道路,助力应对复杂挑战。
113 2
|
19天前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
44 3