多场景并行执行
Parallel execution of multiple scenarios
多场景并行执行的最佳实践是什么?例如,30% 的用户执行场景 1,70% 的用户执行场景 2。
下面的代码是正确的方式还是有条件地执行 REST 调用的场景更好?
class MySimulation extends Simulation {
val userIdsData = csv(userIdsCSV).queue
...
val scenario1 = scenario("Scenario 1")
.feed(userIdsData)
.get(...)
val scenario2 = scenario("Scenario 2")
.feed(userIdsData)
.get(...)
.post(...)
setUp(scenario1.inject(rampUsers(30) over (ramp seconds))
.protocols(HttpConfig.value(baseURL)),
scenario2.inject(rampUsers(70) over (ramp seconds))
.protocols(HttpConfig.value(baseURL))
)
}
无论你做什么都很好。
您的方式 运行 您将看到请求是 运行 并行的设置。
Gatling 将 运行 SetUp 中的每个项目并行进行,因为场景中定义的每个项目将是 运行 sequentially。从 link
可以看出
The definition of the injection profile of users is done with the
inject method. This method takes as argument a sequence of injection
steps that will be processed sequentially.
所以你上面的代码将 运行 scenario01 ramp to 30 over x seconds
和 scenario02 ramp to 70 over y seconds
并行。
您也可以尝试使用以下代码。
scenario1.inject(rampConcurrentUsers(0) to (6) during(10),constantConcurrentUsers(6) during(60 seconds)),
scenario2.inject(rampConcurrentUsers(0) to (4) during(10),constantConcurrentUsers(4) during(60 seconds))
多场景并行执行的最佳实践是什么?例如,30% 的用户执行场景 1,70% 的用户执行场景 2。
下面的代码是正确的方式还是有条件地执行 REST 调用的场景更好?
class MySimulation extends Simulation {
val userIdsData = csv(userIdsCSV).queue
...
val scenario1 = scenario("Scenario 1")
.feed(userIdsData)
.get(...)
val scenario2 = scenario("Scenario 2")
.feed(userIdsData)
.get(...)
.post(...)
setUp(scenario1.inject(rampUsers(30) over (ramp seconds))
.protocols(HttpConfig.value(baseURL)),
scenario2.inject(rampUsers(70) over (ramp seconds))
.protocols(HttpConfig.value(baseURL))
)
}
无论你做什么都很好。
您的方式 运行 您将看到请求是 运行 并行的设置。
Gatling 将 运行 SetUp 中的每个项目并行进行,因为场景中定义的每个项目将是 运行 sequentially。从 link
可以看出The definition of the injection profile of users is done with the inject method. This method takes as argument a sequence of injection steps that will be processed sequentially.
所以你上面的代码将 运行 scenario01 ramp to 30 over x seconds
和 scenario02 ramp to 70 over y seconds
并行。
您也可以尝试使用以下代码。
scenario1.inject(rampConcurrentUsers(0) to (6) during(10),constantConcurrentUsers(6) during(60 seconds)),
scenario2.inject(rampConcurrentUsers(0) to (4) during(10),constantConcurrentUsers(4) during(60 seconds))