понедельник, 20 июня 2016 г.

Custom Sampler in Jmeter

Custom Sampler in Jmeter


Иногда при создании тест планов в Jmeter, нужно кастомизировать определенные запросы.Вариантов для этого достаточно много,можно использовать BeanShellSampler,JSR223 Sampler,Java Sampler или создать свой собственный.

Наверное один из самых простых вариантов(по моему мнению) использовать Java Sampler.

Что для этого нужно сделать?

Создаем проект в нашей любимой среде разработки
Добавляем следующие 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,там мы сможем выбрать наш тест по имени класса 

Ну и запустив этот sampler мы получим




Вот и все.