• Jmeter函数组件开发


    插件开发方法有两种:

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

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

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

    在eclipse新建项目,导入jmeter目录下libext目录中的的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文件,放在libext目录中,打开jmeter即可在函数助手中查看到该函数组件: 

  • 相关阅读:
    微服务全链路剖析
    记一次被挖矿经历
    centos权限总结
    Beizer。。。。。
    遇到的几个算法
    程序截图
    CFileViewer(文件浏览器)
    框架设计
    git常用代码
    右值引用
  • 原文地址:https://www.cnblogs.com/liu-ke/p/6674361.html
Copyright © 2020-2023  润新知