【问题标题】:Gatling - Long Polling in a loop - asynchronous response - loop doesn't work as intendedGatling - 循环中的长轮询 - 异步响应 - 循环无法按预期工作
【发布时间】: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


    【解决方案1】:

    asLongAs 循环条件在循环开始时进行评估 - 因此在您第一次执行时,由于没有 statuss 的会话值,该条件将失败。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-26
      • 2022-06-17
      • 2021-04-13
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多