如何在 Gatling 持续时间规范中使用变量?

How to use variables in Gatling duration specifications?

我正在寻找一种使用变量设置场景持续时间的方法。从命令行开始测试时,我需要能够在这里使用不同的数字。

我可以从命令行向我的配置传递一个值,它工作正常。我想不通的是如何描述这部分:during (10 minutes) 使用变量而不是幻数 10。据我所知,有两个导入与这部分代码相关:scala.concurrent.duration.DurationIntscala.language.postfixOps.

下面是我的代码示例:

val usersPerSec: Double = 5
val pingScenario: ScenarioBuilder = {
    scenario("Ping")
      .exec(http("Ping").get(myUrl).check(status.is(200)))
}

setUp(
    pingScenario.inject(
      constantUsersPerSec(usersPerSec) during (10 minutes)
    ).protocols(myHttpProtocol)

这就是我想要的:

val usersPerSec: Double = 5
val duration = 10
val pingScenario: ScenarioBuilder = {
    scenario("Ping")
      .exec(http("Ping").get(myUrl).check(status.is(200)))
}

setUp(
    pingScenario.inject(
      constantUsersPerSec(usersPerSec) during (duration minutes)
    ).protocols(myHttpProtocol)

感谢您的帮助。

如您所见,during() 采用 FiniteDuration 而不是 Int

  case class ConstantRateBuilder(rate: Double) {
    def during(d: FiniteDuration) = ConstantRateOpenInjection(rate, d)
  }

因此,您可以这样做:

  import scala.concurrent.duration._

  val usersPerSec: Double = 5
  val duration = FiniteDuration(10, MINUTES)
  val pingScenario: ScenarioBuilder = {
    scenario("Ping")
      .exec(http("Ping").get("test").check(status.is(200)))
  }

  setUp(
    pingScenario.inject(
      constantUsersPerSec(usersPerSec) during (duration)
    ).protocols(myHttpProtocol)