Gatling - длинный опрос в al oop - асинхронный ответ - l oop не работает, как предполагалось - PullRequest
0 голосов
/ 23 апреля 2020

Это мой первый вопрос на этом сайте, пожалуйста, терпеливо терпите меня.

Я пытаюсь создать длинную программу опросов http для проекта, использующего Gatling. Просматривая много вопросов о стековом потоке, хотя я смог объединить отдельные концепции в кусок синтаксически правильного кода, к сожалению, он не выполняет то, что намеревается сделать.

Когда код состояния 200 получается после любого запроса, l oop должен прерваться, и испытание будет считаться одобренным. Если код состояния отличается от 200, он должен поддерживать соединение и опрос, не проваливая тест.

Когда достигается значение .tryMax и все ответы дают статус, отличный от 200, l oop должен прерваться, и тест следует считать неудачным.

Использование оператора разницы (! =) также не работает, поэтому я принял решение альтернативно использовать .equals () и проверить l oop, но безрезультатно.

Будучи новичком и в Гатлинге, и в 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)

Так что есть часть, когда к нему никогда не обращаются и не используют.

Любая помощь или указание Я был бы признателен в правильном направлении.

Спасибо!

1 Ответ

0 голосов
/ 24 апреля 2020
Условие

и asLongAs l oop вычисляется в начале l oop, поэтому при первом выполнении условие не будет выполнено из-за отсутствия значения сеанса для statuss.

* 1004. * doWhile l oop обеспечивает проверку в конце l oop.
...