每个 Gatling 请求中的唯一 ID
Unique Ids in each Gatling request
def getrandomNo(): String = {
return ((rnd.nextDouble() * (1000000.0)).toLong).toString
}
scenario("scn getart).during(test_duration minutes) {
exec(actionBuilder = http("req getart")
.post(apiurl)
.header("txn-id", getrandomNo()+"_getart")
.body(apibody)
}
在上面的代码示例中,尝试为每个请求生成唯一的 txn-id。但是,观察到它重复使用相同的数字导致重复。我也尝试使用以下方法根据当前时间生成,但当在 1 秒内触发超过 1 个请求时仍然会导致重复。
def getTxnId(): String = {
"PerfTest_" + System.currentTimeMillis().toString+ getrandomNo()
}
是否有任何替代解决方案来为每个请求生成唯一 ID,而不考虑并发性?
提前致谢。
这不起作用,因为您的 getrandomNo
在构建模拟时仅被调用一次。如果你不想传递一个值,但是你想在每次执行时执行一些代码,你必须传递一个 function:
.header("txn-id", session => getrandomNo()+"_getart")
def getrandomNo(): String = {
return ((rnd.nextDouble() * (1000000.0)).toLong).toString
}
scenario("scn getart).during(test_duration minutes) {
exec(actionBuilder = http("req getart")
.post(apiurl)
.header("txn-id", getrandomNo()+"_getart")
.body(apibody)
}
在上面的代码示例中,尝试为每个请求生成唯一的 txn-id。但是,观察到它重复使用相同的数字导致重复。我也尝试使用以下方法根据当前时间生成,但当在 1 秒内触发超过 1 个请求时仍然会导致重复。
def getTxnId(): String = {
"PerfTest_" + System.currentTimeMillis().toString+ getrandomNo()
}
是否有任何替代解决方案来为每个请求生成唯一 ID,而不考虑并发性?
提前致谢。
这不起作用,因为您的 getrandomNo
在构建模拟时仅被调用一次。如果你不想传递一个值,但是你想在每次执行时执行一些代码,你必须传递一个 function:
.header("txn-id", session => getrandomNo()+"_getart")