Custom Sampler in Jmeter
Иногда при создании тест планов в Jmeter, нужно кастомизировать определенные запросы.Вариантов для этого достаточно много,можно использовать BeanShellSampler,JSR223 Sampler,Java Sampler или создать свой собственный.
Наверное один из самых простых вариантов(по моему мнению) использовать Java Sampler.
Что для этого нужно сделать?
Создаем проект в нашей любимой среде разработки
Добавляем следующие jar в classpath
Добавляем следующие jar в classpath
- $JMETER_HOME/lib/ext/ApacheJMeter_core.jar
- $JMETER_HOME/lib/ext/ApacheJMeter_java.jar
Создаем наш главный класс и расширяем класс AbstractJavaSamplerClient
Его методы:
public abstract class AbstractJavaSamplerClient implements JavaSamplerClient { private static final Logger log = LoggingManager.getLoggerForClass(); public AbstractJavaSamplerClient() { } public void setupTest(JavaSamplerContext context) { log.debug(this.getClass().getName() + ": setupTest"); } public void teardownTest(JavaSamplerContext context) { log.debug(this.getClass().getName() + ": teardownTest"); } public Arguments getDefaultParameters() { return null; } protected Logger getLogger() { return log; } }
И нам требуется переопределить метод runTest
Если требуется переопределить какие то дефолтные параметры то делаем это вот так
public Arguments getDefaultParameters() { Arguments defaultParameters = new Arguments(); defaultParameters.addArgument("username", "test"); defaultParameters.addArgument("password", "test"); return defaultParameters; }
Метод runTest может выглядеть как то так:
@Override public SampleResult runTest(JavaSamplerContext javaSamplerContext) { SampleResult result = new SampleResult(); RequestClient requestClient = new RequestClient(); boolean successful = true; String responseText = ""; result.sampleStart(); try { responseText = requestClient.sendRequest(RequestClient.METHODS.GET, "yandex.ru", null).getResponseText(); } catch (Exception e) { successful = false; responseText = "Error with request " + requestClient.getRequestLine(); } result.sampleEnd(); result.setSuccessful(successful); result.setResponseData(responseText, "UTF-8"); return result; }
После этого создаем jar файл и кидаем его вот сюда $JMETER_HOME/lib/ext/
В самом Jmeter создаем новый тест план и добавляем туда Java Request,там мы сможем выбрать наш тест по имени класса