Gatling 提供随机字符串的 ArrayList

Gatling feed an ArrayList of random strings

我有加特林脚本来发送包含 10,000 个电子邮件地址的 HTTP 请求,JSON 正文如下所示:

{
  "userIds": [
    "user1@paragonia.com",
    "user2@bedlam.com",
    "user3@blurrybus.com",
    "user4@barkarama.com",
    "user5@bullzone.com",
    .
    .
    .
    "user10000@miraclis.com"
  ]
}

因此,我生成了一个包含 10,000 个随机电子邮件地址的 ArrayList:

val emails = new util.ArrayList[String]
  for(i <- 1 to 10000) {
    emails.add("\"" + Random.alphanumeric.take(8).mkString.toLowerCase +
      "@" + Random.alphanumeric.take(10).mkString.toLowerCase + ".com\"")
  }

我需要将该 ArrayList 提供到我的场景中:

  val scn = scenario("Add Users")
    .exec(
      http("AddUsers")
        .post(path)
        .header("Authorization", apiKey)
        .body(StringBody("{" +
          "\n\t\"userIds\": " +
          userNames +
          "\n\t\n" +
          "}")).asJson
    )

问题是在我的场景中向所有请求发送了同一个数组,我每次都需要生成不同的数组。

我想我需要将我的 ArrayList 转换为馈送器或迭代器,但我一直坚持下去。

加特林机能做到吗?

我找到了答案。

我创建了一个函数来构建随机电子邮件的 ArrayList:

def getEmailsArray(count: Integer): util.ArrayList[String] = {
    val emails = new util.ArrayList[String]
    for (i <- 1 to count) {
      emails.add("\"" + Random.alphanumeric.take(8).mkString.toLowerCase +
        "@" + Random.alphanumeric.take(10).mkString.toLowerCase + ".com\"")
    }
    emails
  }

然后我将 ArrayList 放入进纸器中:

val emailsFeeder = Iterator.continually(Map("emails" -> getEmailsArray(totalEmails)))