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
Your code looks fine to me and should generate different UUIDs for each virtual user every time they reach the feed action.
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(
"""{
}""")
}}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With