实施自定义JMeter采样器
隨著我們采用不同的體系結構和實現方式,對通用壓力測試工具的需求不斷增長。
Apache Jmeter是進行負載測試時最著名的工具之一。 它支持許多協議,例如ftp http tcp,并且可以輕松地用于分布式測試。
Jmeter還為您提供了一種創建自定義采樣器的簡便方法。 例如,如果您需要對HTTP終結點進行負載測試,而該終結點需要用于簽名標頭的特定過程,那么自定義采樣器將派上用場。
目標是實現一個自定義采樣器項目,該項目將對一個簡單功能進行負載測試。
在此示例中,我使用gradle 。
group 'com.gkatzioura.jmeter' version '1.0-SNAPSHOT'apply plugin: 'java'sourceCompatibility = 1.6repositories {mavenCentral() }dependencies {compile 'org.apache.jmeter:ApacheJMeter_java:2.11'compile 'org.json:json:20151123'testCompile group: 'junit', name: 'junit', version: '4.11' }task copySample(type:Copy,dependsOn:[build]) {copy {from project.buildDir.getPath()+'/libs/jmeter-sampler-1.0-SNAPSHOT.jar'into 'pathtoyourjmeterinstallation/apache-jmeter-2.13/lib/ext/'} }我包括對項目的ApacheJMeter依賴項,因為采樣器將必須擴展AbstractJavaSamplerClient。 copySample任務會將jar復制到所有采樣器所在的Jmeter的lib / ext路徑中。
采樣器將調用一個簡單的函數:
package com.gkatzioura.jmeter;/*** Created by gkatzioura on 30/1/2016.*/ public class FunctionalityForSampling {public String testFunction(String arguement1,String arguement2) throws Exception {if (arguement1.equals(arguement2)) {throw new Exception();}else return arguement1+arguement2;}}CustomSampler類擴展AbstractJavaSamplerClient類并調用testFunction。 通過覆蓋getDefaultParameters函數,我們可以應用可與請求一起使用的默認參數。
package com.gkatzioura.jmeter;import org.apache.jmeter.config.Arguments; import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient; import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext; import org.apache.jmeter.samplers.SampleResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.Serializable;/*** Created by gkatzioura on 30/1/2016.*/ public class CustomSampler extends AbstractJavaSamplerClient implements Serializable {private static final String METHOD_TAG = "method";private static final String ARG1_TAG = "arg1";private static final String ARG2_TAG = "arg2";private static final Logger LOGGER = LoggerFactory.getLogger(CustomSampler.class);@Overridepublic Arguments getDefaultParameters() {Arguments defaultParameters = new Arguments();defaultParameters.addArgument(METHOD_TAG,"test");defaultParameters.addArgument(ARG1_TAG,"arg1");defaultParameters.addArgument(ARG2_TAG,"arg2");return defaultParameters;}@Overridepublic SampleResult runTest(JavaSamplerContext javaSamplerContext) {String method = javaSamplerContext.getParameter(METHOD_TAG);String arg1 = javaSamplerContext.getParameter(ARG1_TAG);String arg2 = javaSamplerContext.getParameter(ARG2_TAG);FunctionalityForSampling functionalityForSampling = new FunctionalityForSampling();SampleResult sampleResult = new SampleResult();sampleResult.sampleStart();try {String message = functionalityForSampling.testFunction(arg1,arg2);sampleResult.sampleEnd();;sampleResult.setSuccessful(Boolean.TRUE);sampleResult.setResponseCodeOK();sampleResult.setResponseMessage(message);} catch (Exception e) {LOGGER.error("Request was not successfully processed",e);sampleResult.sampleEnd();sampleResult.setResponseMessage(e.getMessage());sampleResult.setSuccessful(Boolean.FALSE);}return sampleResult;}}編譯完成后,必須將創建的jar復制到JMeter安裝目錄的lib / ext目錄。 同樣,如果還有更多依賴項需要導入,則還應該將它們復制到JMeter安裝目錄的lib路徑中。
通過將Java Sampler添加到JMeter線程組來完成該過程之后,我們可以選擇我們的自定義采樣器。
- 您也可以在此處找到源代碼。
翻譯自: https://www.javacodegeeks.com/2016/02/implement-custom-jmeter-samplers.html
總結
以上是生活随笔為你收集整理的实施自定义JMeter采样器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克警告传统汽车厂商:不尽快转型自动驾
- 下一篇: 多款华为 Mate 60 Pro 官方手