【发布时间】:2020-04-23 16:38:56
【问题描述】:
这是我在这个网站上的第一个问题,请耐心等待。
我正在尝试为使用 Gatling 的项目制作一个 http 长轮询程序。虽然在 stackoverflow 上浏览了许多问题,但我已经能够将单独的概念重新组合成一段语法正确的代码,但遗憾的是,它并没有达到预期的效果。
当任何请求后获得状态代码 200 时,循环应该中断并且测试将被视为已批准。如果状态码与 200 不同,它应该保持连接处于活动状态并进行轮询,而不是测试失败。
当达到 .tryMax 值并且所有响应给出的状态都不是 200 时,循环应该中断并且测试应该被视为失败。
使用差异运算符 (!=) 也不起作用,因此我决定使用 .equals() 并测试循环,但无济于事。
作为 Gatling 和 Scala 的新手,我仍在尝试从执行方面找出这段代码有什么问题:
def HttpPollingAsync() = {
asLongAs(session => session("statuss").validate[String].equals("200")) {
exec(
polling
.every(10 seconds)
.exec(
http("polling-async-response")
.post("/" + BaseURL + "/resource-async-response")
.headers(headers)
.body(RawFileBody("requestdata.json"))
.check(
status.is(200),
jsonPath("$.status").is("200"),
jsonPath("$.status").saveAs("statuss")
))
).exec(polling.stop)
}
}
val scn = scenario("asyncpolling")
.tryMax(60){
exec(HttpPollingAsync())
}
setUp(scn.inject(atOnceUsers(10))).protocols(httpProtocol)
运行这段代码时遇到的异常是(只是语法正确):
Exception in thread "main" java.lang.UnsupportedOperationException: There were no requests sent during the simulation, reports won't be generated
at io.gatling.charts.report.ReportsGenerator.generateFor(ReportsGenerator.scala:49)
at io.gatling.app.RunResultProcessor.generateReports(RunResultProcessor.scala:59)
at io.gatling.app.RunResultProcessor.processRunResult(RunResultProcessor.scala:38)
at io.gatling.app.Gatling$.start(Gatling.scala:81)
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:46)
at io.gatling.app.Gatling$.main(Gatling.scala:38)
at io.gatling.app.Gatling.main(Gatling.scala)
所以有些部分从未被访问或使用过。
任何帮助或指出我正确的方向将不胜感激。
谢谢!
【问题讨论】:
标签: scala automated-tests performance-testing gatling