带有随机数 body 部分的 Gatling 请求

Gatling request with random number of body parts

我想测试在单个请求中接受文件列表的 HTTP 上传 API。 我想编写一个 Gatling 脚本,每次生成一个带有随机数 body 部分的请求。

这是我的:

feed(feeder)
  .exec(
    {
      var req = http("My request")
        .post("/${id}")
        .header("Content-Type", "multipart/mixed")

      1 to Random.nextInt(10) foreach {
        i => {
          req = req.bodyPart(
            ByteArrayBodyPart("file-put", session => randomByteArray(10 * 1024 + Random.nextInt(10 * 1024 * 1024)))
              .contentType("application/pdf")
              .fileName(session => s"/$i-UPLOAD-TEST.pdf")
          )
        }
      }
      req
    }
  )

private def randomByteArray(size: Int): Array[Byte] = {
    val bytes = new Array[Byte](size)
    Random.nextBytes(bytes)
    bytes
}

对于每个请求,文件大小和内容都是随机的,因此 randomByteArray 工作正常。但是每次我得到相同数量的 body 零件。我假设这是因为请求 "template" 是在模拟开始时生成的,所以 foreach 循环只运行一次并为所有未来请求配置 body 部分的数量。

如何让 body 个零件的数量每次都是随机的?

您必须事先构建每个分支(一个用于一个部分,一个用于 2,等等)然后 switch randomly