Параллельные запросы JMeter с серверами-отправленными событиями

У меня есть тест JMeter, где я в настоящее время использую цикл, чтобы узнать, является ли какое-то условие истинным. Вместо опроса я хотел (и может) использовать запрос на ресурс, который отправляет сервер-отправленные события (SSE). Способ, которым он должен работать, заключается в том, что поток SSE запущен и запускается другой поток, который выполняет запрос, который в конечном итоге приведет к отправке определенного события. Если это событие получено, обработка должна продолжаться.

Возможно, более ясное графическое изображение. Мой текущий script выглядит примерно так:

ThreadGroup
 |
 + request 1
 + request 2
 ...
 + request N
 + Transaction controller
 |  |
 |  + While controller
 |     + polling request
 |
 + request N+1

Мне хотелось бы что-то вроде этого

ThreadGroup
 | 
 + request 1
 + request 2
 ...
 + <help needed here>
 |  |
 |  + event thread
 |  |   + request SSE
 |  |       + onEvent x: y = true
 |  + action thread
 |     + request N
 |     + While y=false wait
 + request N+1

Возможно ли это? Если да, то как? Если нет, могу ли я создать пробник для этого? Любые указатели?

Groeten,

Фризо

Ответ 1

Я думаю, вам придется реализовать свой собственный класс.

Во-первых, как клиент SSE, вы должны посмотреть на это:

Второй шаг - реализовать пользовательский сэмплер, который расширит этот класс:

И используйте его с этим графическим интерфейсом:

Теперь для самой сложной части (возможно, нам следует создать проект github, чтобы обсудить эту реализацию и как-то закончить вносить свой вклад в основной проект JMeter:-)):

  • Сэмплер SSESampler может работать в двух режимах:
    • Блокировать, пока он не получит ответ от сервера, таким образом вы можете утверждать результат
    • Начать поток (лучше использовать пул потоков или шаблон Reactor) для прослушивания с сервера, как только он получит ответ, мы должны найти способ, чтобы начальный поток мог получить доступ к этому и утверждать. Мы могли бы работать с безопасным по потоку общим доступом к карте и где данные были бы привязаны к некоторым данным, переданным в SSESampler

Это только первоначальные идеи и нуждаются в дополнительной работе.

Ответ 2

Подумав о создании нового sse-плагина для jmeter, я нашел gatling.io, он поддерживает SSE gatling.io