Jemeter插件开发
0x00.这段时间做服务器接口测试,遇到一个需要动态获取校验码的,需要自己开发插件。
0x01.准备基本的开发环境eclipse,下载jmeter源码,导入工程。下载地址:http://jmeter.apache.org/download_jmeter.cgi,请选择你使用的jmeter对应版本的源码。
0x02.在src/functions下新建你自己的函数类
0x03.开始码代码:
package org.apache.jmeter.functions;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
public class {"函数名称"}extends AbstractFunction {
//private static final Logger log = LoggingManager.getLoggerForClass();
private static final List desc = new LinkedList();
private static final String KEY = "__函数名称";
private Object[] values = null;
//Add arguments description
static{
desc.add("参数提示一");
desc.add("参数提示二");
}
@Override
public List getArgumentDesc() {
// TODO Auto-generated method stub
return desc;
}
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
String numberString1 = ((CompoundVariable) values[0]).execute().trim();
String numberString2 = ((CompoundVariable) values[1]).execute().trim();
String 参数一;
String 参数二;
try{
url = numberString1;
isAuth = numberString2;
} catch (Exception e){
return null;
}
return String.valueOf(work(参数一,参数二));
}
public static void print(String s){
System.out.println(s);
}
private String work(String 参数一,String 参数二) {
String ret = null;
//.....your code
return ret;
}
@Override
public void setParameters(Collection parameters) throws InvalidVariableException {
//可以检查参数数量,主要包括以下两种方法
checkMinParameterCount(parameters, 2);
checkParameterCount(parameters, 2, 2);
values = parameters.toArray();
}
@Override
public String getReferenceKey() {
//显示的函数名称
return KEY;
}
}