本文介绍通过修改源码的方式在jmeter中新增自定义函数,编译jmeter源码请参考我的文章jmeter4.0 源码编译 二次开发
1.在org.apache.jmeter.functions包下新增函数类,这里以生成当天日期字符串为例说明,新增DateTimeStringGenerator.java,继承jmeter的org.apache.jmeter.functions.AbstractFunction
2.DateTimeStringGenerator.java内容如下:
package org.apache.jmeter.functions;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
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;
import org.apache.jmeter.util.JMeterUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author leocnx
*
*/
public class DateTimeStringGenerator extends AbstractFunction {
private static final Logger log = LoggerFactory.getLogger(DateTimeStringGenerator.class);
private static final List<String> desc = new LinkedList<>();
private static final String KEY = "__DateTimeStringGenerator";
static {
desc.add(JMeterUtils.getResString("function_name_paropt"));
}
public DateTimeStringGenerator() {
}
@Override
public List<String> getArgumentDesc() {
return desc;
}
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
return sdf.format(new Date());
}
@Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
// TODO Auto-generated method stub
}
@Override
public String getReferenceKey() {
return KEY;
}
}
3.Ant 编译,编译方式参见
jmeter4.0 源码编译 二次开发
4.运行, 运行方式参见jmeter4.0 源码编译 二次开发
如图: