如何在 Scala 文件中的 gatling 场景之外使用保存的变量值
How to use saved variable values outside of gatling scenario in scala file
其中一个 gatling get 请求是提供多个字符串值,我使用 saveAs 保存它们,如下所示:
val scn = scenario("ReadLogs")
.exec(http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message").findAll.saveAs("mList")))
/* My scala code to achieve some requirements*/
我可以在日志中看到 "mList" 是一个向量,其中包含我需要的字符串消息。我想在我的 Scala 代码中处理这些消息。如何以简单的方式做到这一点?我认为如果我可以在 scn 场景之外使用 "mList" 变量,那么事情就会顺利进行,所以我会更具体地提出这个问题。我如何在我的 Scala 代码中使用 "mList" 变量?
在单独的执行步骤中编写流程逻辑,并确保在获取数据后执行它。
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.saveAs("mList")
)
val processLogs = exec { s: Session =>
val mList = s("mList").as[Seq[Any]]
val result = ...
s.set("processResult", result)
}
val scn = scenario("ReadLogs").exec(
fetchLogs,
processLogs
)
更新:保存数据以备后用
var mList: Seq[String] = _
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.transform { v => mList = v; v } // save the data
.saveAs("mList")
)
val scn = scenario("ReadLogs").exec(fetchLogs)
after {
// Process the data here. It will be executed when the simulation is finished.
}
其中一个 gatling get 请求是提供多个字符串值,我使用 saveAs 保存它们,如下所示:
val scn = scenario("ReadLogs")
.exec(http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message").findAll.saveAs("mList")))
/* My scala code to achieve some requirements*/
我可以在日志中看到 "mList" 是一个向量,其中包含我需要的字符串消息。我想在我的 Scala 代码中处理这些消息。如何以简单的方式做到这一点?我认为如果我可以在 scn 场景之外使用 "mList" 变量,那么事情就会顺利进行,所以我会更具体地提出这个问题。我如何在我的 Scala 代码中使用 "mList" 变量?
在单独的执行步骤中编写流程逻辑,并确保在获取数据后执行它。
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.saveAs("mList")
)
val processLogs = exec { s: Session =>
val mList = s("mList").as[Seq[Any]]
val result = ...
s.set("processResult", result)
}
val scn = scenario("ReadLogs").exec(
fetchLogs,
processLogs
)
更新:保存数据以备后用
var mList: Seq[String] = _
val fetchLogs = exec(
http("logEvent")
.get("""/xyz/abc""")
.check(jsonPath("$.data[*].message")
.findAll
.transform { v => mList = v; v } // save the data
.saveAs("mList")
)
val scn = scenario("ReadLogs").exec(fetchLogs)
after {
// Process the data here. It will be executed when the simulation is finished.
}