在 inject 中的多个命令上加特林循环
Gatling loop on multiple commands inside inject
对于冗余,我深表歉意,这是我上一个问题的延续。我意识到我没有正确表述我的问题,导致出现不同的答案。
我想在这样的注入中有一个 for 循环,我可以在其中设置我想要 多个 命令的次数 运行。
scn.inject(
for (i <- 1 to numTimes){
atOnceUsers(10),
nothingFor(10 seconds)
}
).protocols(httpProtocol)
我得到了以下答案,如果我只有一个我想执行的命令,这个答案非常有用 运行。
scn.inject(
(1 to numTimes).map(i => atOnceUsers(10))
).protocols(httpProtocol)
但是,我想要多个命令 运行,但我不确定如何执行此操作。我尝试过类似的操作,但收到一条错误消息 Too many arguments for method map(A => B)
.
scn.inject(
(1 to numTimes).map(i => atOnceUsers(10), nothingFor(10 seconds))
).protocols(httpProtocol)
我也试过了,报错No implicits found for parameter evidence
def commands() {
atOnceUsers(10)
nothingFor(10 seconds)
}
setUp(
scn.inject(
(1 to numTimes).map(i => commands())
).protocols(httpProtocol)
)
您可以使用 List 或 Seq 在循环中对命令进行分组,但是您需要 return 一个 Iterable to inject
方法。 flatMap
有助于将所有中间序列合并为一个序列,因此它也成为可迭代的。
scn.inject(
(1 to numTimes).flatMap(i => Seq(atOnceUsers(10), nothingFor(10 seconds)))
)
这将被构造为对象。
res13: io.gatling.core.structure.PopulationBuilder = PopulationBuilder(
ScenarioBuilder("BasicSimulation", List(io.gatling.core.action.builder.PauseBuilder@60a07d77, io.gatling.http.action.sync.HttpRequestActionBuilder@76795a95)),
InjectionProfile(
Vector(
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds)
)
),
Protocols(Map()),
List(),
None
)
对于冗余,我深表歉意,这是我上一个问题的延续
我想在这样的注入中有一个 for 循环,我可以在其中设置我想要 多个 命令的次数 运行。
scn.inject(
for (i <- 1 to numTimes){
atOnceUsers(10),
nothingFor(10 seconds)
}
).protocols(httpProtocol)
我得到了以下答案,如果我只有一个我想执行的命令,这个答案非常有用 运行。
scn.inject(
(1 to numTimes).map(i => atOnceUsers(10))
).protocols(httpProtocol)
但是,我想要多个命令 运行,但我不确定如何执行此操作。我尝试过类似的操作,但收到一条错误消息 Too many arguments for method map(A => B)
.
scn.inject(
(1 to numTimes).map(i => atOnceUsers(10), nothingFor(10 seconds))
).protocols(httpProtocol)
我也试过了,报错No implicits found for parameter evidence
def commands() {
atOnceUsers(10)
nothingFor(10 seconds)
}
setUp(
scn.inject(
(1 to numTimes).map(i => commands())
).protocols(httpProtocol)
)
您可以使用 List 或 Seq 在循环中对命令进行分组,但是您需要 return 一个 Iterable to inject
方法。 flatMap
有助于将所有中间序列合并为一个序列,因此它也成为可迭代的。
scn.inject(
(1 to numTimes).flatMap(i => Seq(atOnceUsers(10), nothingFor(10 seconds)))
)
这将被构造为对象。
res13: io.gatling.core.structure.PopulationBuilder = PopulationBuilder(
ScenarioBuilder("BasicSimulation", List(io.gatling.core.action.builder.PauseBuilder@60a07d77, io.gatling.http.action.sync.HttpRequestActionBuilder@76795a95)),
InjectionProfile(
Vector(
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds),
AtOnceInjection(10),
NothingForInjection(10 seconds)
)
),
Protocols(Map()),
List(),
None
)