如何在 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.
}