#performance #gatling #scala-gatling
#Производительность #gatling #scala-gatling
Вопрос:
Мне было поручено выполнить некоторые тесты производительности, чтобы сравнить наши системы. Я разработал сценарий, как показано ниже :
var scn: ScenarioBuilder = scenario("Sample Scenario")
.exec(
forever(
exec(<first request>)
.pause(2, 5)
.doIf(session => !session.isFailed) {
randomSwitch(
70d -> exec(<second request>),
15d -> exec(<third request),
15d -> exec(<fourth request>)
)
}
)
)
Проблема, с которой я столкнулся, возникла, когда мы выполняли отказоустойчивые тесты в нашей системе. Я заметил, что во время моделирования все запросы перестали выполняться после «первого запроса», как только в системе произошел сбой.
Я проверил журналы, и «первый запрос» прошел успешно, и, согласно моему пониманию !session.isFailed
, условие должно быть истинным, что позволяет продолжить выполнение сценария.
Может кто-нибудь, пожалуйста, поделиться, почему условие помечается как false
вместо true
?
Ответ №1:
Согласно Gatling.команда ввода — вывода:
Сеанс сохраняет свой статус даже после нескольких запросов.
Как вы упомянули, a failure was introduced in the system
Одна из основных целей — иметь точки в вашем сценарии, в которых виртуальный пользователь может уйти (из-за сбоя) с exitHereIfFailed
Если вы хотите восстановить, вы должны пометить свой сеанс как успешный.
var scn: ScenarioBuilder = scenario("Sample Scenario")
.exec(
forever(
exec(session => session.markAsSucceeded) // <---- reset the status
.exec(<first request>)
.pause(2, 5)
.doIf(session => !session.isFailed) {
randomSwitch(
70d -> exec(<second request>),
15d -> exec(<third request),
15d -> exec(<fourth request>)
)
}
)
)