我如何 bulk/chunk 在 Gatling 中对现有的 Seq[(String)] 会话值进行分页?
How do I bulk/chunk paginate existing Seq[(String)] session value in Gatling?
我正在执行一个将大量值保存到 Seq[(String)] 中的调用,它看起来如下:
.exec(session => {session.set("Ids", session("externalIds").as[Seq[String]])})
我必须创建另一个名为 IDs our of externalIds 的会话变量是有原因的,但我现在不会深入讨论它。
我必须执行另一个调用并从 ${Ids} 中分页 10 个值,直到我将它们全部发送出去。
(所以如果有 100 个值,我将不得不执行此调用 10 次)
JSON 如下所示:
..."Ids": [
"962950",
"962955",
"962959",
"962966",
"962971",
"962974",
"962978",
"962983",
"962988",
"962991"
],...
当我每次都必须遍历一个值时,我通常会做的很简单:
.foreach("${Ids}", "id") {
exec(getSomething)
}
但由于我需要发送每个 10 个值的 [...],我不确定它是否应该在场景级别。帮助! :)
使用transform in your check to transform your Seq[String] into chunks, eg with Seq#grouped.
我不知道如何在 session 内解决这个问题,所以我接受了
在函数之外,这里是解决方案:
.exec(session => {session.set("idSeqList", convertFileIdSeqToFileIdSeqList(session("idsSeq").as[Seq[String]]))})
def convertFileIdSeqToFileIdSeqList(idSeq: Seq[String]): Seq[Seq[String]] = {
idSeq.grouped(10).toList
}
请注意,将列表放在 JSON 正文中时,您需要使用 .jsonStringify() 在 JSON 上下文中正确格式化它,如下所示:
"ids": ${ids.jsonStringify()},
我正在执行一个将大量值保存到 Seq[(String)] 中的调用,它看起来如下:
.exec(session => {session.set("Ids", session("externalIds").as[Seq[String]])})
我必须创建另一个名为 IDs our of externalIds 的会话变量是有原因的,但我现在不会深入讨论它。
我必须执行另一个调用并从 ${Ids} 中分页 10 个值,直到我将它们全部发送出去。 (所以如果有 100 个值,我将不得不执行此调用 10 次) JSON 如下所示:
..."Ids": [
"962950",
"962955",
"962959",
"962966",
"962971",
"962974",
"962978",
"962983",
"962988",
"962991"
],...
当我每次都必须遍历一个值时,我通常会做的很简单:
.foreach("${Ids}", "id") {
exec(getSomething)
}
但由于我需要发送每个 10 个值的 [...],我不确定它是否应该在场景级别。帮助! :)
使用transform in your check to transform your Seq[String] into chunks, eg with Seq#grouped.
我不知道如何在 session 内解决这个问题,所以我接受了 在函数之外,这里是解决方案:
.exec(session => {session.set("idSeqList", convertFileIdSeqToFileIdSeqList(session("idsSeq").as[Seq[String]]))})
def convertFileIdSeqToFileIdSeqList(idSeq: Seq[String]): Seq[Seq[String]] = {
idSeq.grouped(10).toList
}
请注意,将列表放在 JSON 正文中时,您需要使用 .jsonStringify() 在 JSON 上下文中正确格式化它,如下所示:
"ids": ${ids.jsonStringify()},