Цепочка запросов / ответов синхронного HTTP-запроса Gatling

Я реализовал цепочку выполнения, и каждое выполнение будет отправлять HTTP-запрос на сервер и проверять, является ли статус ответа 2XX. Мне нужно реализовать синхронную модель, в которой следующее выполнение в цепочке должно запускаться только тогда, когда предыдущее выполнение было успешным, т.е. статус ответа равен 2xx. Ниже приведен снимок цепочки выполнения.

feed(postcodeFeeder).
     exec(Seq(LocateStock.locateStockExecution, ReserveStock.reserveStockExecution, CancelOrder.cancelStockExecution,
     ReserveStock.reserveStockExecution, ConfirmOrder.confirmStockExecution, CancelOrder.cancelStockExecution)

Поскольку в gatling используется асинхронная модель ввода-вывода, сейчас я наблюдаю, что HTTP-запросы отправляются на сервер асинхронно несколькими пользователями, и нет реальной зависимости между выполнением по отношению к одному пользователю.

Также я хотел знать для актера / пользователя, если выполнение в цепочке завершается неудачно из-за проверки, не переходит ли оно к следующему выполнению в цепочке?


person BalajiM    schedule 06.11.2014    source источник


Ответы (2)


нет реальной зависимости между исполнениями по отношению к одному пользователю

Нет, ты ошибаешься. За исключением случаев использования «ресурсов», запросы для данного пользователя являются последовательными. Если вы хотите остановить поток для данного пользователя при обнаружении ошибки, вы можете использовать exitblockonfail.

person Stephane Landelle    schedule 06.11.2014
comment
В данной цепочке выполнения, где есть проверка на каждом шаге выполнения, ожидает ли gatling ответа перед отправкой следующего в цепочке? поэтому в примере кода, который я упомянул, ожидает ли confirmStockExecution ответа от reserveStockExection, так как ReserveStockExecution может дать сбой из-за своей проверки, и я не хочу, чтобы confirmStockExecution выполнялся до получения ответа? - person BalajiM; 06.11.2014
comment
В основном то, что я хотел достичь, - это что-то вроде if (reserveStockExecution успешно), продолжить с ConfirmStockExecution, если (confirmStockExecution успешно), продолжить с CancelStockExecution - person BalajiM; 06.11.2014
comment
@slandelle есть идеи о том, как дождаться ответа перед отправкой следующего запроса в цепочке? - person BalajiM; 07.11.2014
comment
Когда сервер возвращает ошибку, цепочка не прерывается / не завершается автоматически, и gatling продолжал выполнять следующий запрос в цепочке. Поэтому я добавил exitBlockOnFail, чтобы явно разорвать цепочку, чтобы имитировать вложенную логику if, которая мне нужна. Спасибо Стефану Ландель. - person BalajiM; 07.11.2014

Gatling не учитывает отказ от предыдущего запроса перед запуском следующего в цепочке. Возможно, вам потребуется покрыть весь блок exitBlockOnFail {}, чтобы заблокировать гатлинг, чтобы он выстрелил следующим.

person Deepan Karthik R    schedule 07.11.2014