Gating Feeder circular strategy not working on 3.9 gatling version

Hi Everyone, I need help from gatling Community, im new to gatling and learning these days and found tehre is an issue on 3.9 gatling version for CSVFEEDER circular strategy, My project has been setup using maven, and gatling version is 3.9 ,

where as i have setup another project using gatling-maven-archetype(version-3.6.1) there circular strategy is perfectly working --gatling version is 3.6.1

Hi @snag123,

You are at the right place for that!

Welcome aboard!

What is the “issue” you found?

Please, help us to help you.

What is your code? What is the behavior expected? What is the behavior observed?
See How to ask a question

Cheers!

Hi @sbrevet

my code :

 val csvFeeder=csv("Data/game.csv").circular

  def getAUser()={
    repeat(7){
      feed(csvFeeder)
      .exec(http("get a game by its name").get("/videogame/${gameID}")
        .check(jsonPath("$.name").is("${name}"))
        .check(status.in(200,304)))
        .pause(2)
    }
  }

  val scn =scenario("feed check")
    .exec(getAUser())

setUp(
  scn.inject(atOnceUsers(1)).protocols(httpProtocol)
)

Expected behaviour is : the no of request should be 7 in execution html report as teh strategy is circular and my csv has only 3 rows of data

Actual behaviour with gatling 3.6.1 is same as expected

But Actual behaviour in gatling 3.9 is only 3 request is showing as total request instead of 7 as its not performing repetition with circular strategy

import io.gatling.core.Predef._

class Foo extends Simulation {

  val feeder = csv("search.csv").circular

  val search =
    repeat(5) {
      feed(feeder)
      .exec{ session =>
        println(session("searchCriterion").as[String])
        session
      }
    }

  val httpProtocol =
    http.baseUrl("https://computer-database.gatling.io")
      .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
      .acceptLanguageHeader("en-US,en;q=0.5")
      .acceptEncodingHeader("gzip, deflate")
      .userAgentHeader(
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0"
      )

  val users = scenario("Users").exec(search)

  setUp(
    users.inject(atOnceUsers(1))
  ).protocols(httpProtocol)
}

search.csv file:

searchCriterion,searchComputerName
Macbook,MacBook Pro
eee,ASUS Eee PC 1005PE

logs:

Simulation Foo started...
Macbook
eee
Macbook
eee
Macbook

Works as expected. The problem is on your side.

@slandelle did u tried on any dummy api ? feed the csv data to any API end point etc , im talking about those scenario like get/post etc call ?

if u see my code im feeding those data into a get call and im getting only 3 request instead of 10 ,

if you can try to see that would be helpful :slight_smile:

did u tried on any dummy api ?

The other way around: it’s your responsibility to put some effort and provide a reproducer to demonstrate your issue. See How to ask a question as @sbrevet advised.

I went to demonstrate that the feature work as expected. Feel free to fork my sample and manage to find a use case where it doesn’t.

I’m pretty sure that what happens in your case is caching! You’re looping on records that have already been seen by the same virtual user and the previous request is cached because of the caching headers in the response.

Hi @slandelle many thanks for detailed investigation, Thats why i have added my code snippet so that i can get some help from expertised people , I tried with gatling 3.6.1 and thats has been worked for me,
but how to find caching can u help me on this

Thats why i have added my code snippet so that i can get some help from expertised people

Please properly read the provided link. A code snippet is not a reproducer. A reproducer is a complete program other people can run on their side.

but how to find caching can u help me on this

Have you tried searching “gatling caching” on Google?