无法解析重载方法'exec'

问题描述 投票:0回答:1

我是 Gatling with Scala 的新手,我创建了一个简单的场景链接,在 Intellij 中编译以下代码时,我遇到错误“无法解析重载方法‘exec’”。我已经使用 sbt 设置了我的项目并添加了 gatling 插件。 val scenario1、scenario2、scenario3 出现错误

package gatlingAssignment

import io.gatling.core.Predef._
import io.gatling.core.structure.ScenarioBuilder
import io.gatling.http.Predef._
import io.gatling.http.request.builder.HttpRequestBuilder

import scala.concurrent.duration._

class GetUsers extends Simulation {

  val baseUrl = "https://reqres.in/api"

  object HttpRequests {
    val baseUrl = "https://reqres.in/api"

    val createUserInfo: HttpRequestBuilder = http("Create user info")
      .post(baseUrl + "/users")
      .body(
        StringBody(
          """{ "name": "${name}", "job": "${job}", "id": "${id}" }"""
        )
      )
      .asJson
      .header("content-type", "application/json")
      .check(status is 201)

    val getUsers: HttpRequestBuilder = http("Get all users")
      .get(baseUrl + "/users")
      .queryParam("page", "2")
      .check(status is 200)

    val updateUserInfo: HttpRequestBuilder = http("Update user info")
      .put(baseUrl + "/users/2")
      .body(
        StringBody(
          """{ "name": "${name}", "job": "${job}", "id": "${id}" }"""
        )
      )
      .asJson
      .header("content-type", "application/json")
      .check(status is 200)
  }

  object Scenarios {

    import HttpRequests._

    val feeder = csv("src/user_data.csv").random

    val userScenario: ScenarioBuilder = scenario("User scenario")
      .feed(feeder)
      .exec(createUserInfo)
      .exec(getUsers)
      .exec(updateUserInfo)

    val scenario1: ScenarioBuilder = scenario("Scenario 1")
      .exec(userScenario.inject(atOnceUsers(50)))

    val scenario2: ScenarioBuilder = scenario("Scenario 2")
      .exec(userScenario.inject(constantUsersPerSec(20) during (15 seconds)))

    val scenario3: ScenarioBuilder = scenario("Scenario 3")
      .exec(userScenario.inject(rampUsersPerSec(1) to 100 during (30 seconds)))

    val chainedScenario: ScenarioBuilder = scenario("Chained scenario")
      .exec(scenario1)
      .exec(scenario2)
      .exec(scenario3)
  }

  object LoadTest {

    import Scenarios._

    setUp(
      chainedScenario.inject(nothingFor(5 seconds))
    ).assertions(
      global.responseTime.max.lt(4000)
    ).maxDuration(1 minute)
  }

}

我在编译上面的代码时遇到了困难,参考了加特林文档但无济于事。

scala gatling
1个回答
0
投票
val scenario1: ScenarioBuilder = scenario("Scenario 1")
      .exec(userScenario.inject(atOnceUsers(50)))

exec
文档 中没有任何内容可以让人认为它可以接受
PopulationBuilder
inject
的返回类型)。

此外,

setUp
必须在您的模拟类中直接调用。

我猜你想做的实际上是:

  setUp(
    userScenario.inject(
      nothingFor(5.seconds),
      atOnceUsers(50),
      constantUsersPerSec(20).during(15.seconds),
      rampUsersPerSec(1).to(100).during(30.seconds)
    )
  )
© www.soinside.com 2019 - 2024. All rights reserved.