Gatling - 在循环内暂停
Gatling - Pause inside of loop
我正在尝试在带有 gatling 的循环内使用暂停,并且在单个 运行 之后我希望循环只执行 ~3 次,但它执行大约 1/秒。
我正在使用 bzt 作为 运行ner 与:
hold-for: 30s
concurrency: 1
iterations: 1
throughput: 1
private val scn = scenario("Post, Poll, and Delete")
.forever {
exec(http("Post").post(url + path)
.check(status.is(201))
.check(jsonPath("$..id").saveAs("id"))
)
.doWhile(session => session("status").as[String] == "STARTED", "index") {
pause(10.seconds)
exec(http("Poll")
.get(url + path)
.queryParam(id, session => session("id").as[String])
.check(jsonPath("$..status").saveAs("status"))
.check(jsonPath("$..status").not("ERROR"))
)
}.exec(http("Delete")
.delete(url + path)
.check(status.is(200))
)
}
编辑:在 [Stéphane] 的帮助下,我使用了以下内容:
.doWhile(condition) {
pace(???)
.exec(???)
}
在 Scala 中,最后一个操作的结果就是块returns。
所以你写的基本上是:
.doWhile(condition) {
pause(???)
return exec(???)
}
你可以看到问题:作为doWhile
第二个参数传递的只是exec
而没有前面的pause
。
发生这种情况是因为您忘记给它们附加一个点。
所以你要做的是:
.doWhile(condition) {
pause(???)
.exec(???)
}
我还看到您正在使用第三方启动器(遗憾)。不确定它的作用,特别是 throughput: 1
其措辞与 Gatling 中的任何内容都不匹配。如果它确实设置了 throttling
,这将禁用暂停,如文档中所述。
你应该使用
pace(duration)
在循环内暂停
并使用
pause(duration)
循环外
检查this
我正在尝试在带有 gatling 的循环内使用暂停,并且在单个 运行 之后我希望循环只执行 ~3 次,但它执行大约 1/秒。
我正在使用 bzt 作为 运行ner 与:
hold-for: 30s
concurrency: 1
iterations: 1
throughput: 1
private val scn = scenario("Post, Poll, and Delete")
.forever {
exec(http("Post").post(url + path)
.check(status.is(201))
.check(jsonPath("$..id").saveAs("id"))
)
.doWhile(session => session("status").as[String] == "STARTED", "index") {
pause(10.seconds)
exec(http("Poll")
.get(url + path)
.queryParam(id, session => session("id").as[String])
.check(jsonPath("$..status").saveAs("status"))
.check(jsonPath("$..status").not("ERROR"))
)
}.exec(http("Delete")
.delete(url + path)
.check(status.is(200))
)
}
编辑:在 [Stéphane] 的帮助下,我使用了以下内容:
.doWhile(condition) {
pace(???)
.exec(???)
}
在 Scala 中,最后一个操作的结果就是块returns。 所以你写的基本上是:
.doWhile(condition) {
pause(???)
return exec(???)
}
你可以看到问题:作为doWhile
第二个参数传递的只是exec
而没有前面的pause
。
发生这种情况是因为您忘记给它们附加一个点。
所以你要做的是:
.doWhile(condition) {
pause(???)
.exec(???)
}
我还看到您正在使用第三方启动器(遗憾)。不确定它的作用,特别是 throughput: 1
其措辞与 Gatling 中的任何内容都不匹配。如果它确实设置了 throttling
,这将禁用暂停,如文档中所述。
你应该使用
pace(duration)
在循环内暂停
并使用
pause(duration)
循环外
检查this