Jmeter — Запрос Asnc

#http #asynchronous #tcp #jmeter

#http #асинхронный #tcp #jmeter

Вопрос:

Как я могу имитировать асинхронный запрос от JMeter.

Отправить запрос из Jmeter -> Отправлено на сервер -> Сервер выдает подтверждение

Теперь, как я могу открыть порт или URL, где сервер может дать мне ответ, как только он завершит свой внутренний цикл / поток. и как я могу прочитать ответ.

Ответ №1:

Вы можете использовать JSR223 Sampler и написать простой TCP-сервер на Groovy, используя ServerSocket, который будет прослушивать входящие данные и делать с ними все, что вам нужно.

Ссылочная реализация, которая печатает полученные сообщения в jmeter.файл журнала:

 def socketServer = new ServerSocket(1234)

while (true) {
    socketServer.accept { socket ->
        socket.withStreams { input, output ->
            log.info("Received message: ${input.newReader().readLine()}")
        }
    }
}
 

И вот как это выглядит в действии:

введите описание изображения здесь

как вы можете видеть, когда я отправляю hello сообщение с помощью HTTP Raw Request sampler, оно печатается в файле журнала JMeter, аналогичным образом вы можете перехватить обратный вызов вашего сервера, просто убедитесь, что сервер может связаться с машиной, на которой запущен JMeter, т. Е. У него есть статический IP-адрес, входящий трафик на портваш выбор не блокируется брандмауэром и т. Д.

Комментарии:

1. почему JMeter не останавливается после получения ответа в JSR223 и как я могу запустить этот скрипт с моим основным HTTP-запросом с 1000 запросов?

2. Поскольку while(true) это бесконечный цикл, вам нужно как-то выйти из него, например, закрыв сокет. Что касается 1000 запросов — я недостаточно телепатичен, чтобы угадать, каковы ваши требования и как вы различаете каждый из этих 1000 потоков