首页 > 解决方案 > Gatling 用户按顺序注入

问题描述

我有 1 个场景,我想用不同的用户负载进行测试。

  val reports1 = createScenario("rep1")
  val reports2 = createScenario("rep2")
  val reports3 = createScenario("rep3")

  def createScenario(name: String) : ScenarioBuilder = {
    val newScenario = scenario(name)
    .exec(
      sse("My Scenario")
        .open("/endpoint")
        .headers(config.header))
    .exec(sse("close").close())

    newScenario
  }

  setUp(
    reports1.inject(
      atOnceUsers(1),
      nothingFor(2 minutes),
      atOnceUsers(10),
      nothingFor(5 minutes),
      atOnceUsers(50)
    ),
    reports2.inject(
      atOnceUsers(1),
      nothingFor(2 minutes),
      atOnceUsers(10),
      nothingFor(5 minutes),
      rampUsers(50) over(50 seconds)
    ))
    .protocols(http.baseURL(config.url))

当我运行它时,注入是并行完成的。

我可能可以在 1 个块中合并所有用户注入并用 pause() 分隔,但这似乎不是一个好的解决方案

标签: scalagatling

解决方案


注入不是并行完成的,场景是并行完成的。这就是 Gatling 的工作方式 - 作为一个setUp()调用的参数传递的所有场景总是并行执行,如果您希望它们按顺序运行,而不是每个场景应该在单独的模拟类中。此外,您的示例也没有任何意义,因为您运行了 2 个仅名称不同的场景,如果您可以提供现实生活中的示例,我可能会推荐其他内容。


推荐阅读