我如何 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()},