2

假设我有这个配置

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

4

1 回答 1

0

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

于 2018-03-26T07:10:48.287 回答