Как я могу использовать файл JAR в счетчик циклов - Jmeter - PullRequest
1 голос
/ 29 октября 2019

Я хочу создать сценарий, в котором я хочу использовать данные из файла jar в логике Jmeter Loop.

Мой jar выглядит так:

public String Australia()
{
    String a = "{"
            + "\"location\": {" 
            + "\"lat\": -33.8669710,"
            + "\"lng\": 151.1958750"
            + "},"
            + "\"accuracy\": 50,"
            + "\"name\": \"Google Shoes!\","
            + "\"phone_number\": \"(02) 9374 4000\","
            + "\"address\": \"48 Pirrama Road, Pyrmont, NSW 2009, Australia\","
            + "\"types\": [\"shoe_store\"],"
            + "\"website\": \"http://www.google.com.au/\","
            + "\"language\": \"en-AU\""
            +
            "}";

    return a;
}

public String canada()
{
    String c = "{"
            + "\"location\": {" 
            + "\"lat\": -33.8669710,"
            + "\"lng\": 151.1958750"
            + "},"
            + "\"accuracy\": 50,"
            + "\"name\": \"Google Shoes!\","
            + "\"phone_number\": \"(02) 9374 4000\","
            + "\"address\": \"48 Pirrama Road, Pyrmont, NSW 2009, Canada\","
            + "\"types\": [\"shoe_store\"],"
            + "\"website\": \"http://www.google.com.ca/\","
            + "\"language\": \"en-CA\""
            +
            "}";

    return c;
}

1) с указанными выше данными, которые я хочу 'feed 'Jmeter call, как описано на изображении ниже

enter image description here

2) каждый раз, когда я добавляю новую страну в файл jar, цикл увеличивается соответственно.

Некоторые думали, как это можно сделать, что я должен использовать в качестве переменной и как я могу указать циклу увеличение?

1 Ответ

2 голосов
/ 29 октября 2019
  1. Добавить Препроцессор JSR223 как дочерний элемент запроса 002_2_send payment
  2. Поместить следующий код в область «Сценарий»:

    def testData = new com.example.TestData()
    def methods = testData.class.getDeclaredMethods()
    def payload = org.apache.commons.lang.reflect.MethodUtils.invokeExactMethod(testData, methods[vars.get('__jm__Loop Controller__idx') as int].getName())
    sampler.addNonEncodedArgument('',payload,'')
    sampler.setPostBodyRaw(true)
    
  3. Определите «Число циклов» в контроллере циклов с помощью функции __ groovy () , например:

    ${__groovy(com.example.TestData.getDeclaredMethods().size(),)}
    

    enter image description here

  4. Измените com.example на собственное имя пакета и TestData на имя вашего класса

  5. После того, как вы добавите новую версию .jar в JMeter Classpath, вы получитенеобходимо перезапустить JMeter, чтобы получить изменения

Вот и все, каждая итерация контроллера цикла, препроцессор JSR223 будет выполнять следующую функцию в вашем классе и обновлять тело запроса возвращенными данными:

enter image description here

Ссылки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...