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