Повторять цикл Jmeter, если хотя бы один запрос не удался - PullRequest
0 голосов
/ 08 марта 2019

В настоящее время я использую Jmeter для заполнения базы данных данными, которые позже я буду использовать для тестирования производительности.Проблема в том, что иногда я получаю случайную ошибку: 100 или 5000 записей, которые останавливают мой поток и ввод данных, пока я не сделаю все необходимое, чтобы снова запустить загрузку данных.Я думаю, что простой повторный цикл должен решить этот ручной перезапуск.

Моя структура Jmeter выглядит следующим образом:ThreadGroup-Запуск пустышки- Контроллер петли--- Счетчик--- фиктивный образец--- Пользовательский параметр: переменная «ошибка» = ноль--- Пока контроллер: $ {__ javaScript ("$ {Error}"! = "False",)}---- Контроллер транзакций----- Параметр пользователя: переменная «Ошибка» = ложь----- Фиктивный образец 1----- Dampmy Sampler 2 (встроенная ошибка / успех)----- Dampmy Sampler 3----- Пустышка 4----- JSR223 постпроцессор- утверждение

Чего я хотел бы добиться, так это того, что если утверждение по какой-либо причине не выполняется по какому-либо примеру / запросу, цикл while должен быть перезапущен.В основном, в случае сбоя, повторите цикл с теми же данными.

Я пробовал это со многими вариантами примеров ниже в Groovy и Javascript, но не смог заставить его работать.Я думаю, что моя проблема в сравнении.

if(vars.get("JMeterThread.last_sample_ok").equals('false')){vars.put("Error","true");}
if(vars.get("JMeterThread.last_sample_ok")=='false'){vars.put("Error","true");}

Кто-то видит проблему?Или могли бы предложить альтернативное решение моей проблемы?Теперь я хочу начать новый поток с помощью элемента управления группы потоков, так как я хочу повторить попытку с моими текущими данными / переменными до тех пор, пока не перейдет к следующему набору данных (csv)


Решение: я добавилСлушатель JSR223 на уровне группы потоков со следующим кодом:

if(vars.get("JMeterThread.last_sample_ok")=="false"){vars.put("Error","true");}

Хотя при просмотре сэмплера отладки он, похоже, не обновляет переменную, он все еще работает и делает то, что я хочу.Я также посмотрел на обработчик действия статуса результата, однако он на самом деле не работает.Он работает только на уровне сэмплера, поэтому мне придется добавить элемент в каждый сэмплер ... Я рассмотрю это и попытаюсь обойти его с помощью дополнительного кода в слушателе JSR223.

...