JMeter5.4.1源码IDEA构建&二次开发(实战)
目录
1.下载源码
https://jmeter.apache.org/download_jmeter.cgi前往下载源码
2.导入IDEA
2.1 先设置Gradle目录
未设置过Gradle的IDEA,建议先设置下Gradle的用户目录
2.2导入JMeter工程
2.3设置国内Gradle源
设置gradle的下载源
速度直接起飞!😂
重新加载Gradle,或者重新加载项目
接下来就是耐心的等等待,网速好的话,大约30-3h左右即可下载完毕。
2.4 执行 runGui
进行整体项目构建,熟悉的JMeter就可以打开了
3.新增系统函数
拿到源码我们是为了对JMeter进行二次开发,我当前的需求就是新增自定义的系统函数。
整体流程
系统函数是在
src/functions
下。我们需要新增里面的系统函数之后打出的jar包 我们需要替换到
\apache-jmeter-5.2.1\lib\ext
的ApacheJMeter_functions.jar
即可。
实战:新增自定义的UUID系统函数
我想新增一个去掉 - 的UUID系统函数。于是在java\org\apache\jmeter\functions
新建了一个JAVA 类
package org.apache.jmeter.functions;
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
/**
* 自定义创建一个不含有 - 的 UUID
* Create a custom UUID that does not contain “-”
*
* Parameters:
* - None
*
* Returns:
* - A pseudo random UUID 4
*
*/
public class UuidCustomer extends AbstractFunction {
private static final List<String> desc = new LinkedList<>();
//定义 系统函数的名称
private static final String KEY = "__UUID2"; //$NON-NLS-1$
public UuidCustomer() {
}
//执行的系统函数的操作
@Override
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
return UUID.randomUUID().toString().replace("-", "");
}
@Override
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
checkParameterCount(parameters, 0, 0);
}
@Override
public String getReferenceKey() {
return KEY;
}
@Override
public List<String> getArgumentDesc() {
return desc;
}
}
运行测试一下
点击 runGui 运行测试一下
完美成功。接下来打包并替换到使用的JMeter上
打Jar包
成功之后会打一个jar包在
将此包重命名后进行替换
使用替换后JMeter查看
完美成功!🤙🤙🤙
系统函数里面关键讲解
拿DigestEncodeFunction
举例子。
水平有限,看看大致执行的过程就行,明白之后方便我们自定义或者修改