2014-11-06 157 views
1

我已经实现了一个执行链,每个执行都会向服务器发送一个HTTP请求,并检查响应状态是否为2XX。我需要实现一个同步模型,其中只有当前一次执行成功时才会触发链中的下一个执行,即响应状态为2xx。 下面是执行链的快照。Gatling同步Http请求/响应链

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

由于加特林具有异步IO模型,什么我目前观察是请求由多个用户发送到服务器以异步方式的HTTP和存在的执行之间没有真正的依赖性相对于单用户。

另外我想知道一个演员/用户,如果链中的执行失败,检查是否失败,它不会继续执行链中的下一个执行吗?

回答

1

不存在关于处决之间没有真正依赖于单个用户

不,你错了。除了使用“资源”时,请求对于给定用户是连续的。如果您想在给定用户遇到错误时停止流程,则可以使用exitblockonfail

+0

在一个给定的执行链中,在执行的每一步中都有一个检查,在发送下一个链之前,gatling是否等待响应? 所以在我刚才提到的代码示例中,确认StockExcecution等待reserveStockExection的响应,因为reserveStockExecution可能由于其检查而失败,我不想在收到响应之前执行confirmStockExecution操作? – BalajiM 2014-11-06 13:41:50

+0

基本上我想要实现的是类似 如果(reserveStockExecution是成功的) 与ConfirmStockExecution 如果(confirmStockExecution是成功的)继续发送下一个请求之前 着手CancelStockExecution – BalajiM 2014-11-06 13:55:41

+0

@slandelle如何等待响应的任何想法在链中? – BalajiM 2014-11-07 16:06:41

1

Gatling在链接下一次发射之前不考虑来自先前请求的失败响应。您可能需要使用exitBlockOnFail {}来覆盖整个块,以阻止接下来触发的gatling。