首页 > 解决方案 > 如何在加特林持续时间规范中使用变量?

问题描述

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

我可以将一个值从命令行传递给我的配置,它工作正常。我不知道如何描述这部分: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)

谢谢你的帮助。

标签: scalagatling

解决方案


如您所见,during()采用 aFiniteDuration而不是 anInt

  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)

推荐阅读