问题描述
我的任务是运行一些性能测试,以便对我们的系统进行基准测试。我设计的场景如下:
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
条件应该为真,允许进一步执行场景。
解决方法
根据 Gatling.io 团队:
即使经过多次请求,会话仍保持其状态。
正如你提到的,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>)
)
}
)
)