• Jmeter扩展自定义函数


    步骤1、导入libext下ApacheJMeter_core.jar和ApacheJMeter_functions.jar

    步骤2、新建function的类的package声明必须已".functions"结尾,如com.mytest.fuctions

    步骤3、继承AbstractFunction类,并实现相应的方法

    package com.mytest.functions;
    
    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;
    
    public class MyFunction extends AbstractFunction{
        
        // 传入参数的值
        private Object[] values;
        
     // 自定义function的描述
        private static final List<String> desc = new LinkedList<String>();
        static {
            desc.add("Get a random int within specified parameter value.");
        }
    
        // function名称
        private static final String KEY = "__MyRandomFunc";
        
        @Override
        public List<String> getArgumentDesc() {
            // TODO Auto-generated method stub
            return desc;
        }
    
        /*
         * JMeter会将上次运行的SampleResult和当前的Sampler作为参数传入到该方法里,返回值就是在运行该function后得到的值,以String类型返回。
         * 该方法如果操作了非线程安全的对象(比如文件),则需要将对该方法进行线程同步保护
         */
        @Override
        public String execute(SampleResult arg0, Sampler arg1) throws InvalidVariableException {
            // TODO Auto-generated method stub
            return null;
        }
    
        /*
          这个就是function的名字。JMeter的命名规则是在方法名前面加入双下划线"__"。比如"__MyRandomFunc",
         function的名字跟实现该类的类名应该一致,而且该名字应该以static final的方式在实现类中定义好,避免在运行的时候更改它
         */
        @Override
        public String getReferenceKey() {
            // TODO Auto-generated method stub
            return KEY;
        }
    
        /*
         * 这个方法在用于传递用户在执行过程当中传入的实际参数值。该方法在function没有参数情况下也会被调用。
         * 一般该方法传入的参数会被保存在类内全局变量里,并被后面调用的execute方法中使用到
         */
        @Override
        public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
            values = parameters.toArray(); // 将值存入类变量中
            
        }
    
    }
  • 相关阅读:
    刚刚开通
    腾讯面试经历2015
    排序之归并排序
    AC自动机
    后缀数组初步
    概率dp初探
    【NOIP2015】反思+题解
    Built-in functions
    poj2528 Mayor's posters(线段树区间覆盖)
    Codeforces #317 C.Lengthening Sticks(数学)
  • 原文地址:https://www.cnblogs.com/yaoqingzhuan/p/12058578.html
Copyright © 2020-2023  润新知