scalaperformance-testinggatlingscala-gatlinggatling-plugin

CSV Feeders for gatling 3


I am using Gatling 3. I have a csv feeder with just one column titled accountIds. I need to pass this in the body of my POST request as JSON. I have tried a lot of different syntax but nothing seems to be working. I can also not print what is actually being sent in the body. It works if I remove the "$accountIds" and use an actual value instead. Below is my code:

val searchFeeder = csv("C://data/accountids.csv").random

val scn1 = scenario("Scenario 1")
  .feed(searchFeeder)
  .exec(http("Search")
  .post("/v3/accounts/")
     .body(StringBody("""{"accountIds": "${accountIds}"}""")).asJson)

setUp(scn1.inject(atOnceUsers(10)).protocols(httpConf))

Solution

  • Have you enabled trace level in logback.xml to see the details of post request? Also, can you confirm if location you have mentioned "C://data/accountids.csv" is the right one. Generally, data folder resides in project location and within project you can access the data file as: val searchFeeder = csv("data/stack.csv").random

    I just created sample script and enabled logging.I am able to see that accountId is getting passed:

    package basicpackage
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    
    import io.gatling.core.scenario.Simulation
    
    class StackFeeder extends Simulation {
    
      val httpConf=http.baseUrl("http://example.com")
    
      val searchFeeder = csv("data/stack.csv").random
    
      val scn1 = scenario("Scenario 1")
        .feed(searchFeeder)
        .exec(http("Search")
          .post("/v3/accounts/")
          .body(StringBody("""{"accountIds": "${accountIds}"}""")).asJson)
    
      setUp(scn1.inject(atOnceUsers(1)).protocols(httpConf))
    

    csv file location