Jmetr, как правильно написать условие в While controller?

есть API которое возвращает токен и первые 100 элементов на странице. пример: {'token'value,'elements':[1,2...100]}

чтобы взять вторые 100 элементов на следуещей странице, нужно отправить запрос с токеном из первого запроса. мы получаем снова токен и вторые 100 элементов. итд до тех пор пока нам не будет приходить один токен без элементов. это означает что мы долистали до конца. пример: {'token': value}

Делаем нагрузочный тест в Jmeter. Отправляем первый запрос из него берем токен, далее вставляем WhileController и в нем отправляем второй запрос с токеном.

Вопрос как правильно написать условие в контроллере? то есть я прошу чтобы он второй запрос выполнял до тех пор пока не получит в ответе один токен без элементов. тут вроде как на js надо напиать, но я с ним не дружу. подскажите пожалуйста


Ответы (1 шт):

Автор решения: Ivan G

Я подозреваю вы что-то делаете с этим массивом элементов, то есть вы используете какой-то 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()

→ Ссылка