在加特林中设置异步调用的超时



我正在使用Gatling对微服务架构进行一些负载测试。我正在测试两个 REST 服务;服务A上的POST开始执行引擎,而服务GETB最终检索此类执行的结果。

使用asLongAs构造,我重试进行GETREST 调用,直到结果尚未准备好。但是,我不想永远循环。我需要设置超时或最大尝试时间。

我正在使用的代码摘录如下。

scenario("my-scenario")
.feed(feeder)
.exec(
http("post-to-A")
.post("/execution")
.body(StringBody(
"""{
| "information": ${INFORMATION}
|}""".stripMargin
))
.asJSON
.check(status.is(200))
)
.exec(_.set("result", ""))
.asLongAs(session => session("result").validate[String].get != "") {
exec(
http("get-to-B")
.get("/result")
.check(status.is(200))
.check(jsonPath("$.result").saveAs("result"))
)
}

如何在上面的代码中设置超时?

谢谢大家。

在谷歌上搜索了一下之后,我发现关于加特林复杂场景开发的文档和示例很少。得出类似结论的一篇优秀文章如下:使用 Gatling 对异步 REST 服务进行压力测试。

由于缺乏可以满足我需求的本机构造,我们可以构建的最佳解决方案是同时使用tryMaxasLongAs方法。

我的问题中发布的代码如下。

scenario("my-scenario")
.feed(feeder)
.exec(
http("post-to-A")
.post("/execution")
.body(StringBody(
"""{
| "information": ${INFORMATION}
|}""".stripMargin
))
.asJSON
.check(status.is(200))
)
.exec(_.set("result", ""))
.tryMax(10) {
asLongAs(session => session("result").validate[String].get != "") {
exec(
http("get-to-B")
.get("/result")
.check(status.is(200))
.check(jsonPath("$.result").saveAs("result"))
)
}
}

Gatling 将尝试调用第二个 REST 服务 10 次,直到调用成功。显然,应该正确设计 REST 服务,响应不同于 200 的 HTTP 状态,直到无法到达结果。

唯一的缺点是

请求失败计

入失败的请求,在我们的例子中会严重伪造结果。

希望对您有所帮助。

您可以使用during在指定的时间内遍历循环,而不是asLongAs(请查看 Gatling Session API 文档以了解用法(。 此外,您可能需要检查您的状况。到目前为止,仅当result的值不是空字符串时,才会执行循环,这意味着它根本不会被执行。

相关内容

  • 没有找到相关文章

最新更新