JMeter: пока контроллер не завершает работу при нулевом счете - PullRequest
0 голосов
/ 20 февраля 2019

Это продолжение моего вопроса JMeter: Как сравнить удаление данных из таблицы базы данных в пакетном режиме? .Я принял решение, предложенное Dimitri T, и теперь я использую контрольный пример для Oracle DB.

Мой контрольный пример начинается с вставки 1000 записей, используя 100 потоков в 10 циклах.После этого он удаляет где rownum < 250.

. Однако мой тестовый пример больше не может обнаружить, что таблица пуста.Когда я просматриваю данные ответов в своем дереве результатов, я вижу следующее:

249 updates
249 updates
249 updates
249 updates
4 updates
0 updates
0 updates
0 updates
...

Сам JMeter не сообщает о каких-либо ошибках.

Моя группа потоков выглядит следующим образом:

...(separate thread group to do INSERT)...

Thread Group: Do DELETE
   Txn Ctrl: DELETE
      While Loop: tbl still has data
         JDBC Request: DELETE from tbl
            JDBC PostProcessor

Условие цикла определяется следующим образом:

${__jexl3('${count_1} > 0',)}

(В качестве небольшого отличия от решения в моем предыдущем вопросе я заключил условие в кавычки, чтобы предотвратить появление ошибки неоднозначного выражения.)

Запрос JDBC определен следующим образом:

delete from tbl where (entrydt < ${endDt}) and (rownum < ${deleteLimit})

(пользовательские переменные endDt и deleteLimit имеют значения TO_DATE('2019/02/01 00:00:00', 'yyyy/mm/dd hh24:mi:ss') и 250 соответственно.)

Постпроцессор JDBC определяется следующим образом:

[Select statement] select count(*) from tbl

Variable names: count (All other fields are empty.)
Handle ResultSet: Store as String

Я пытался

  • Изменение условия цикла;цитаты не имеют значения;Также нельзя изменить ${count_1} на ${count}
  • Изменение постпроцессора;между именами переменных, именем переменной результата и тем, как обрабатывается набор результатов

1 Ответ

0 голосов
/ 20 февраля 2019

кто сказал вам окружить выражение кавычками?Сначала вы ломаете рабочее решение, а затем жалуетесь, что предоставленное выражение не работает.

Просто определите count_1 как положительное число через Определяемые пользователем переменные , и у вас не будет ошибок в jmeter.log

Если дляпо какой-то причине вы не хотите этого делать или не можете этого сделать - вы можете перейти на __ groovy () функцию с дополнительной проверкой переменной count_1, установленной как:

${__groovy(vars.get('count_1') == null || (vars.get('count_1') as int) > 0,)}
...