为什么Gatling在任何场景存在时停止模拟并且不等到结束?

时间:2018-03-22 09:18:31

标签: gatling scala-gatling

我们说我有这个配置

val scn = (name: String) => scenario(name)
  .forever() {
    .exec(request)
  }

setUp(
  scn("scn1").inject(atOnceUsers(1))
    .throttle(
      jumpToRps(1), holdFor(10 seconds)
    ),
  scn("scn2").inject(atOnceUsers(1))
    .throttle(jumpToRps(1), holdFor(20 seconds))
).protocols(http.baseURLs(url))

我希望整个模拟运行20秒 - 直到完成所有模拟。实际发生的是,模拟在第一个场景结束后10秒后停止。

---- Requests ------------------------------------------------------------------
> Global                                                   (OK=20     KO=0     )
> scn1 / HTTP Request                                      (OK=10     KO=0     )
> scn2 / HTTP Request                                      (OK=10     KO=0     )

---- scn1 ----------------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
        waiting: 0      / active: 1      / done:0     
---- scn2 ----------------------------------------------------------------------
[--------------------------------------------------------------------------]  0%
        waiting: 0      / active: 1      / done:0     
================================================================================

Simulation foo.Bar completed in 10 seconds

为了克服这个问题,我需要配置所有场景,这些场景早于最后一个场景,等待零点限制。

setUp(
  scn.inject(atOnceUsers(1))
     .throttle(
       jumpToRps(1), holdFor(10 seconds),
       jumpToRps(0), holdFor(10 seconds)  // <-- added wait 
     ),
  scn.inject(atOnceUsers(1))
     .throttle(jumpToRps(1), holdFor(20 seconds))
).protocols(http.baseURLs(url))

这是预期的行为吗?在所有方案完成之前或直到maxDuration

之前,我还有哪些其他选项可以使模拟运行

1 个答案:

答案 0 :(得分:0)

可能的解释可能是Feeder循环数据,当没有更多数据存在时。在这种情况下,在您的进纸器上调用“圆形”,以便在到达结束时返回到序列的顶部