gatling - 如果测试系统未处于正确状态,我如何中止 Gatling 模拟?
问题描述
我正在负载测试的目标系统有一个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)
)
我看到的问题:
- 简单地检查被测系统是否适合进行测试似乎有点过于复杂。
- 它实际上会并行运行这些场景,因此如果检查需要一段时间,它仍然会对处于错误模式的系统产生负载。
- 需要考虑并测试如果模式检查行为不正确会发生什么
有没有更好的办法?
是否有某种“模拟开始之前”阶段我可以进行此检查?
解决方案
推荐阅读
- python - 使用 pyinstaller 创建的 .exe 文件闪烁并消失
- systemd - 尽管有足够的规则,Policy Kit 仍不允许重新启动服务
- express - 如何使用 Express 和 hbs 渲染多个视图?
- apache-superset - html iframe 上的超集图表加载问题
- javascript - electronjs 在默认浏览器中打开链接?
- security - Quay Clair - 无法在扫描容器图像时获得输出
- wordpress - WordPress 和 Ocean Extra 插件......我认为需要摆脱 Hero Header 吗?
- c - 无法发现双重免费
- sql - 如何从 SQL 表中获取表中出现的每个项目的最后一个事务?
- regex - 按字符分隔符和子元素分割行