#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 потоков