我以这种方式定义了多个加特林模拟(删除了导入)。
class MySimulation1 extends Simulation {
object SimulationObj1 {
var feeder = ...
var random = exec(...)
}
val httpProtocol = ...
val myScenario = scenario("Scenario name").exec(SimulationObj1.random)
setUp(myScenario.inject(
rampUsers(10) over (180 seconds)
)
)
.assert(...)
}
class MySimulation2 extends Simulation {
object SimulationObj2 {
var feeder = ...
var random = exec(...)
}
val httpProtocol = ...
val myScenario = scenario("Scenario name").exec(SimulationObj2.random)
setUp(myScenario.inject(
rampUsers(15) over (300 seconds)
)
)
.assert(...)
}
然后还有另一个AllSimulations
类,该类仅调用所有模拟,以便可以并行执行模拟。
class AllSimulations extends Simulation {
object AllSimulationsObj {
var feeder = ...
var random = exec(...)
}
val httpProtocol = ...
val myScenario = scenario("All scenarios").exec(
new MySimulation1().SimulationObj1.random,
new MySimulation2().SimulationObj2.random)
setUp(myScenario.inject(
rampUsers(10) over (180 seconds)
)
)
.assert(...)
}
问题是,为了让不同的rampUsers
超过不同的durations
,我从setUp
类中删除了AllSimulations
块,但这给了我错误“未设置方案”。
如何与所有模拟类中定义的rampUsers
和durations
并行运行所有模拟方案?
编辑:这是我尝试过的方法,但是我不确定是否有意义。
class AllSimulations extends Simulation {
setUp(
new MySimulation1().myScenario.inject(rampUsers(10) over (180 seconds)),
new MySimulation2().myScenario.inject(rampUsers(15) over (300 seconds))
)
.assert(...)
}
答案 0 :(得分:0)
我认为您的建议不会奏效-并行执行模拟实际上没有任何意义,因为您的结果将不再反映并发用户的真实数量。
可行的方法是定义您的方案(如果合适,可以在不同的文件中),然后进行模拟,以根据需要将用户注入每个方案中。