Отладка с помощью 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"))
}