Gatling - 循环中的长轮询 - 异步响应 - 循环无法正常工作

问题描述 投票:0回答:1

这是我在这个网站上第一次提问,请耐心等待。

我想用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
1个回答
0
投票

一个 asLongAs 循环条件是在循环开始时评估的--所以在第一次执行时,由于没有会话值,该条件将失败。statuss.

doWhile loop在循环结束时提供检查。

© www.soinside.com 2019 - 2024. All rights reserved.