简体   繁体   中英

How do I increment a UUID gatling feeder

I am new to gatling and scala, so this is definitely a n00b question but I am struggling to figure this out. I found this great blog post to be able to use a UUID feeder 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());
        }
    }
}

This works great, my issue is that I can't figure out how to get a new value, when I put it into a loop.

I am using it like this -

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

If I use ${uuid} in a subsequent test, it will be the same value. How do I get a new value for the next call?

I prefer using the Iterator.continually helper instead like so:

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

usage would be the same as before.. hope it helps :)

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

您的代码对我来说看起来不错,并且每次到达提要操作时都应该为每个虚拟用户生成不同的 UUID。

I used below code to generate random UUID this might be useful. I used in header and it worked.

Define the val

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

call the val to the post response

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM