我正在尝试运行一个有2个请求的场景
第一个通过api对用户进行身份验证并获得令牌。我希望每个用户只执行一次第一个请求。
第二个执行get through另一个api。
以下是场景代码:
val slot: ScenarioBuilder = scenario("Get slot")
.doIf(_("connected").asOption[String].isEmpty) {
exec(
http("Get_token")
.post(my_endpoint)
.headers(specific_headers)
.formParam("username", "my_username")
.formParam("password", "my_password")
.check(regex("""id_token":"(.*?)"""").saveAs("my_token"))
)
.exec { session =>
println("Before: " + session("connected").as[String]) //prints nothing as expected
session
}
.exec(_.set("connected", "true"))
.exec { session =>
println("After: " + session("connected").as[String]) //prints "true" as expected
session
}
}
.feed(fsid)
.exec(
http("Get_slot")
.get("/slots")
.headers(other_specific_headers) //including "my_token" extraced above
.queryParam("specific_id", "${specific_id}") //from feeder fsid
.check(regex("""id":"(.*?)"""").findRandom.saveAs("slot_id"))
)
以下是模拟代码:
setUp(
slot.inject(
constantUsersPerSec(1).during(15.seconds)
).protocols(httpConfig)
)
当我执行上面的模拟时,我可以在日志中看到这两个请求都执行了15次。我希望执行的“get\u token”少于“get\u slot”。
我读过一些关于加特林永恒元素的文档,我认为它可以完成这项工作。但我想理解为什么这不是我所期望的。
如果两个请求都执行了15次,是否意味着:
启动了15个用户,因此他们的会话在开始时是空的,所以他们执行get\u令牌是正常的吗?
我的“doif”写得不好?
我还缺什么?
任何帮助都会很好,提前谢谢你。
编辑:为了提供更多信息,根据simpleapp的评论,我在测试期间只看到2个actives用户(平均)
这就是为什么我希望看到4“get\ U token”,而不是更多。
暂无答案!
目前还没有任何答案,快来回答吧!