Gatling : session.isFailed 即使先前执行的请求已成功返回 true
Gatling : session.isFailed returning true even the previously executed request has succeeded
我的任务是 运行 一些性能测试,以便对我们的系统进行基准测试。我设计的场景如下:
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
吗?
根据 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>)
)
}
)
)
我的任务是 运行 一些性能测试,以便对我们的系统进行基准测试。我设计的场景如下:
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
吗?
根据 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>)
)
}
)
)