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
舉例子。
水平有限,看看大致執行的過程就行,明白之后方便我們自定義或者修改