Как использовать свойства JMeter в контроллере IF и в то время как контроллер - PullRequest
0 голосов
/ 19 сентября 2019

Я устанавливаю свойства JMeter, используя JSR223 вне контроллера WHILE, как это -

if(jsonResponse.currentStatus == "Received")
{   
    props.put("pollCount", 0); 
    def requestId = jsonResponse.id;
    props.put("requestId", requestId); 
    props.put("currentStatus",jsonResponse.currentStatus);
}

Затем я получаю доступ к этим свойствам в контроллере "WHILE", как это -

((("${__groovy(props.get('currentStatus'))}" == "Received") ||
("${__groovy(props.get('currentStatus'))}" == "Processing")) &&
(${__groovy(props.get('pollCount'))} < 24)) 

Внутри контроллера WHILE я делаю HTTP-запрос для проверки «currentStatus».Если он «завершен», то моя идея заключается в том, что я выйду из контроллера «WHILE».

Аналогично, у меня есть «IF Controller» внутри «While Controller».После выполнения HTTP-вызова и проверки «currentStatus».Затем я сбрасываю свойства "реквизита".Если «currentStatus» равен «Received» или «Processing», я захожу внутрь «IF Controller», где я предоставляю задержку таймера 30 секунд с постоянным таймером.В «Контроллере IF» я применяю условие, подобное этому -

(("${__groovy(props.get('currentStatus'))}" == "Received") ||
("${__groovy(props.get('currentStatus'))}" == "Processing"))

Но оно не входит в контроллер IF, даже если условие «Обрабатывается».

«Пока контроллер» продолжает обрабатывать бесконечно, даже если для «currentStatus» установлено значение «Завершено».

Кажется, что условия не работают для меня.Как я могу это исправить, чтобы, когда «currentStatus» был «Completed», он выходил из «WHILE Controller»?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Есть несколько проблем с вашей настройкой:

  1. Я вижу, что вы устанавливаете pollCount на 0, однако я не вижу, где вы увеличиваете его, поэтому я ожидаю, чтооно всегда будет 0
  2. Ваше currentStatus всегда будет Received
  3. Ваше выражение props.get('pollCount'))} < 24 не будет выполнено, потому что вы сравниваете Integer String
  4. И самое главное, хотя контроллер «понимает» только критерии true или false, он не будет оценивать 3 функции __groovy (), поэтому вам следуетпоместите несколько предложений в одну функцию, например:

    ${__groovy((props.get('currentStatus').equals('Received') || props.get('currentStatus').equals('Processing')) && (props.get('pollCount') as int) < 24,)}
    

Изучите статью 6 советов по использованию JMeter If Controller для получения более подробной информации об обработке условных выборокв JMeter

6 Советы по JMeter, если использование контроллера

0 голосов
/ 19 сентября 2019

Вы проверяли установку только одного условия в то время как контроллер?

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