JMeter5.4.1源碼IDEA構建&二次開發(實戰)


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進行二次開發,我當前的需求就是新增自定義的系統函數。

整體流程

  1. 系統函數是在 src/functions下。我們需要新增里面的系統函數

  2. 之后打出的jar包 我們需要替換到\apache-jmeter-5.2.1\lib\extApacheJMeter_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舉例子。

水平有限,看看大致執行的過程就行,明白之后方便我們自定義或者修改


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM