Целевая система, которую я тестирую при нагрузке, имеет mode
, которая указывает, подходит ли она для проведения нагрузочного теста.
Я хочу проверить этот режим только один раз в начале симуляции (т.е. я не хочу делать проверку снова и снова для каждого пользователя в симе).
Это то, что я придумал, но System.exit()
кажется довольно резким.
Я определяю цепочку выполнения, которая проверяет, является ли режим значением, которое я хочу:
def getInfoCheckNotRealMode:ChainBuilder = exec(
http("mode check").get("/modeUrl").
check( jsonPath("$.mode").saveAs("mode") )
).exec { sess =>
val mode = sess("mode").as[String]
println(s"sengingMode $mode")
if( mode == "REAL"){
log.error("cannot allow simulation to run against system in REAL mode")
System.exit(1)
}
sess
}
Затем я запускаю сценарий «проверки» параллельно реальному сценарию, как этот:
val sim = setUp(
newUserScene.inject(loadProfile).
protocols(mySvcHttp),
scenario("Check Sending mode").exec(getInfoCheckNotRealMode).
inject(atOnceUsers(1)).
protocols(mySvcHttp)
)
Проблемы, которые я вижу с этим:
- Кажется немного сложным для простой проверки того, что тестируемая система подходит для тестирования.
- На самом деле он будет запускать сценарии параллельно, поэтому, если проверка займет некоторое время, она все равно будет генерировать нагрузку на систему, которая находится в неправильном режиме.
- Необходимо учесть и проверить, что происходит, если проверка режима работает неправильно
Есть ли лучший способ?
Есть ли какая-то фаза "до начала симуляции", где я могу поставить эту проверку?