当使用 repeat() 或 during() 以及使用 1 个虚拟用户时,Gatling CSV 进纸器不断获取 csv 中的第一个值

Gatling CSV feeder keeps getting the first value in the csv when using repeat() or during() and when using 1 virtual user

我的问题和一个类似,但是他没有使用循环,而我绝对需要使用它。

我的 CSV 看起来像这样

使用 Gatling 3.3.1 ,我使用 1 个用户并希望 运行 并使用 during() 重复一个场景,但在每次重复中,应按顺序获取下一个 CSV 值。一旦达到最后一个值,它应该重新启动到 CSV 中的第一个值。

我的代码是这样的

val myCSV = csv("data/myCSV.csv").eager.queue.circular

val theScenarioBuilder: ScenarioBuilder = scenario("Test Only")
  .feed(myCSV)
  .during(3 seconds) {
    exec(session => {
      println("myCSV:     " + session("id").as[String])
      session
    })

  }


setUp(
  theScenarioBuilder.inject(atOnceUsers(1))
).protocols(theHttpProtocolBuilder)

这将打印 myCSV: 1 几次。
我的期望是 myCSV: 1myCSV: 2myCSV: 3 等等。

同样,当我尝试使用 repeat() 时,我遇到了同样的问题,只会打印 myCSV: 1

val myCSV = csv("data/myCSV.csv").eager.queue.circular

val theScenarioBuilder: ScenarioBuilder = scenario("Test Only")
  .feed(myCSV)
  .repeat(3) {
    exec(session => {
      println("myCSV:     " + session("id").as[String])
      session
    })

  }

如何为每次迭代获取不同的 CSV 值?

您在 repeat 循环之外调用 feed。你怎么可能得到不同的记录?

val myCSV = csv("data/myCSV.csv").eager.circular // queue and circular are exclusive

val theScenarioBuilder: ScenarioBuilder = scenario("Test Only")
  .repeat(3) {
    feed(myCSV)
    .exec(session => {
      println("myCSV:     " + session("id").as[String])
      session
    })

  }