实施自定义JMeter采样器
隨著我們采用不同的體系結(jié)構(gòu)和實現(xiàn)方式,對通用壓力測試工具的需求不斷增長。
Apache Jmeter是進行負(fù)載測試時最著名的工具之一。 它支持許多協(xié)議,例如ftp http tcp,并且可以輕松地用于分布式測試。
Jmeter還為您提供了一種創(chuàng)建自定義采樣器的簡便方法。 例如,如果您需要對HTTP終結(jié)點進行負(fù)載測試,而該終結(jié)點需要用于簽名標(biāo)頭的特定過程,那么自定義采樣器將派上用場。
目標(biāo)是實現(xiàn)一個自定義采樣器項目,該項目將對一個簡單功能進行負(fù)載測試。
在此示例中,我使用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任務(wù)會將jar復(fù)制到所有采樣器所在的Jmeter的lib / ext路徑中。
采樣器將調(diào)用一個簡單的函數(shù):
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類并調(diào)用testFunction。 通過覆蓋getDefaultParameters函數(shù),我們可以應(yīng)用可與請求一起使用的默認(rèn)參數(shù)。
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;}}編譯完成后,必須將創(chuàng)建的jar復(fù)制到JMeter安裝目錄的lib / ext目錄。 同樣,如果還有更多依賴項需要導(dǎo)入,則還應(yīng)該將它們復(fù)制到JMeter安裝目錄的lib路徑中。
通過將Java Sampler添加到JMeter線程組來完成該過程之后,我們可以選擇我們的自定義采樣器。
- 您也可以在此處找到源代碼。
翻譯自: https://www.javacodegeeks.com/2016/02/implement-custom-jmeter-samplers.html
總結(jié)
以上是生活随笔為你收集整理的实施自定义JMeter采样器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 马斯克警告传统汽车厂商:不尽快转型自动驾
- 下一篇: 依赖注入通俗解释_我如何向团队解释依赖注