如何增加 UUID 加特林进纸器

How do I increment a UUID gatling feeder

我是 gatling 和 scala 的新手,所以这绝对是一个 n00b 问题,但我正在努力解决这个问题。我发现这个很棒的博客 post 能够使用 UUID 馈线 http://www.andrewgorton.uk/blog/gatling-uuid-feeder/

object UuidFeeder {
    val feeder = new Feeder[String] {
        override def hasNext = true

        override def next: Map[String, String] = {
            Map("uuid" -> UUID.randomUUID.toString());
        }
    }
}

效果很好,我的问题是当我将新值放入循环中时,我无法弄清楚如何获取新值。

我是这样用的 -

val scn = scenario("Test Scenario")
  .feed(UuidFeeder.feeder)
    .exec(http("get stuff")
                .post("/stuff")
                .body(StringBody(
                """{
                   "uuid": "${uuid}",
                }""")).asJSON
                .check(status.is(201)))

如果我在后续测试中使用 ${uuid} ,它将是相同的值。如何为下一次调用获取新值?

你的代码对我来说很好,应该为每个虚拟用户每次到达提要操作时生成不同的 UUID。

我更喜欢使用 Iterator.continually 助手,而不是像这样:

object UuidFeeder {
    val feeder = Iterator.continually(Map("uuid" -> java.util.UUID.randomUUID.toString()))
}

用法与以前相同..希望对您有所帮助:)

// Usage
//
// scenario("My Scenario")
//      .feed(UuidFeeder.feeder)
//      .exec(http("MyCall"))
//    ...// rest of code

我使用下面的代码生成随机 UUID,这可能会有用。我在 header 中使用并且有效。

定义值

val uuidfeeder: Feeder[String] = Iterator.continually(Map("uuid" -> UUID.randomUUID().toString))

将 val 调用到 post 响应

def postResponse(): ChainBuilder = {
repeat(repeatLoop) {
  feed(uuidfeeder)
  .feed(jsonFeeder)
    .exec(http("Post Response: ")
      .post(endPoint)
      .header("x-request-id", "${uuid}")
      .body(StringBody(
       """{  
      }""")
}}