Jmetr, как правильно написать условие в While controller?
есть API которое возвращает токен и первые 100 элементов на странице. пример: {'token'value,'elements':[1,2...100]}
чтобы взять вторые 100 элементов на следуещей странице, нужно отправить запрос с токеном из первого запроса. мы получаем снова токен и вторые 100 элементов. итд до тех пор пока нам не будет приходить один токен без элементов. это означает что мы долистали до конца. пример: {'token': value}
Делаем нагрузочный тест в Jmeter. Отправляем первый запрос из него берем токен, далее вставляем WhileController и в нем отправляем второй запрос с токеном.
Вопрос как правильно написать условие в контроллере? то есть я прошу чтобы он второй запрос выполнял до тех пор пока не получит в ответе один токен без элементов. тут вроде как на js надо напиать, но я с ним не дружу. подскажите пожалуйста
Ответы (1 шт):
Я подозреваю вы что-то делаете с этим массивом элементов, то есть вы используете какой-то Post-Processor который читает ответ и сохраняет или количество или все элементы в переменную
Следовательно в условии While Controller можно проверить наличие или содержимое этой переменной
Например, если вы используете JSON Extractor
то в случае когда массив будет в ответе у вас будет такая переменная:
elements=[1,2,3,100]
а если его не будет - то такие
elements=
elements_matchNr=0
соответственно условие для While Controller будет звучать так: выполнять запросы, пока elements_matchNr
не станет равным 0
While Controller будет выполнять запросы пока условие имеет значение true
, то есть вам нужна примерно следующая функция:
${__groovy(vars.get('elements_matchNr') != '0',)}
Насчет использования JS - это не самая лучшая идея с точки зрения производительности, к тому же JavaScript убрали из JDK 15, лучше используйте или __jexl3() или __groovy()