Отладка с помощью Gatling - println, если статус 500

Я тестирую производительность в Play! приложение, которое содержит ряд API GET/POST. Я хочу провести некоторую отладку, так как один тест загадочно проваливается из сотен (и он завершается ошибкой только тогда, когда запускается вся партия). Как я могу условно добавить println, если возвращенный статус равен 500?

Я пробовал следующее, но так как session.status это не Int, это не работает (то есть всегда возвращает false). Кроме того, я не думаю, что проверка session.status это даже правильно делать, когда я просто распечатаю session.status для каждого звонка, он просто плюет кучу строк OK (даже не SEE_OTHER или что-то подобное, как я ожидаю, что это будет для успешных пробегов), но я не уверен, что альтернатива.

val postData: ChainBuilder = exec(http(s"[POST] Data sent to API")
  .post(s"$baseUrl/post-data")
  .formParam("id", s"$${id}")
  .check(status.is(303))
  .disableFollowRedirect)
  .exec {
    session =>
      if (session.status == 500) {
        println(session.attributes("id")) // whatever
      }
      session
  }

Я не уверен, как это сделать if проверьте, или где его поставить. Как я могу условно проверить некоторые данные в моих тестах, основываясь на status результата?

2 ответа

Дайте ниже попробовать

exec(Actions.Job()).pause(Configuration.THINK_TIME_AFTER_PUT second)
.asLongAs(session => (session("responseStatus").as[String], session("statusCode").as[Int], session("reqInfo").as[String])) {
          println ("test")

}

Вы пытаетесь сделать это трудным путем. У Гатлинга хорошее ведение журналов с помощью инфраструктуры Log4J, но в большинстве мест в Интернете вам советуют использовать файл log4j.xml, но я думаю, что это сложнее, чем просто включить отладку Гатлинга в тесте с использованием кода Scala:

Это всего лишь пример. Вы могли бы упростить это и добавить этот код в начале вашего теста Гатлинга:

  val LOG_LEVEL = sys.env.getOrElse("LOG_LEVEL", "WARN")

  val context: LoggerContext = LoggerFactory.getILoggerFactory.asInstanceOf[LoggerContext]

  if (LOG_LEVEL.equals(Level.TRACE)) {
    context.getLogger("io.gatling.http.engine.response").setLevel(Level.valueOf(LOG_LEVEL))
  } else if (LOG_LEVEL.equals(Level.DEBUG)) {
    context.getLogger("io.gatling.http.engine.response").setLevel(Level.valueOf("DEBUG"))
  } else {
    context.getLogger("io.gatling.http").setLevel(Level.valueOf("INFO"))
  }
Другие вопросы по тегам