我是 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)
}
}
我在编译上面的代码时遇到了困难,参考了加特林文档但无济于事。
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)
)
)