2016-09-26 11 views
2

У меня есть группа потоков, которая будет работать для более 100 пользователей, которые должны выполнить конкретный HTTP-запрос один раз для всех потоков. Я знаю «только один контроллер», но он выполняет дочерние пробоотборники один раз в потоке, поэтому он не отвечает указанным здесь требованиям:Jmeter: Как контролировать запрос сэмплера http в группе потоков, который запускается только один раз из 100 потоков

Как показано на рисунке: «Один раз контроллер» запускает запрос E & F только один раз для каждой нити, где I мое требование для запуска запроса на выборщик E & F один раз для всех потоков A, B, C & D. сказав, что если я запускаю запрос на 100+ потоков E & F должен работать только один раз.

Есть ли способ достичь этого в jmeter ??

Проблема ScreenShot:

enter image description here

+0

Когда вы хотите E & F для запуска? –

+0

@UBIKLOADPACK Я хочу, чтобы E & F выполнялся после того, как все HTTP-запросы были завершены, т.е. если есть 100 потоков для потока 99, он должен пропустить E & F, но для 100-го потока он должен включать E & F. –

ответ

1

Положите ваши запросы E и F под If Controller и использовать следующее условие:

${__BeanShell(ctx.getThreadNum() == 0 && vars.getIteration() == 1)} 

If Controller Example

Где:

  • __Beanshell() - JMeter Функция, разрешающая выполнение арбитра у Beanshell код
  • ctx - сокращение для JMeterContext экземпляра класса
  • vars - сокращение для JMeterVariables экземпляра класса
+0

Спасибо @Dmitri , Я подкорректирую вышеуказанный код, чтобы соответствовать моим требованиям. –

2

Там нет прямого логического контроллера для достижения этой цели. Обычно этот тип требования должен быть частью группы setup или tear down.

Если он должен быть частью вашей обычной группы потоков, то это может быть достигнуто с помощью некоторого обходного пути. Пример:

только один раз контроллер + Если контроллер:

Если контроллер будет выполнять E F & только если ${__threadNum} == 1. Таким образом, мы можем блокировать другие потоки от выполнения E & F