Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I increment a UUID gatling feeder

Tags:

scala

gatling

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?

like image 533
namesake Avatar asked Oct 22 '15 01:10

namesake


3 Answers

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
like image 61
CraftyFella Avatar answered Nov 14 '22 19:11

CraftyFella


Your code looks fine to me and should generate different UUIDs for each virtual user every time they reach the feed action.

like image 24
Stephane Landelle Avatar answered Nov 14 '22 20:11

Stephane Landelle


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(
       """{  
      }""")
}}
like image 1
Sushant Tavrawala Avatar answered Nov 14 '22 18:11

Sushant Tavrawala