30
votes

What ist the best practice for parallel execution of multiple scenarios? For example 30% Users execute scenario1 and 70% users scenario2.

Is the code below the right way or is it better to have one scenario with contional executions of REST calls?

class MySimulation extends Simulation {

  val userIdsData = csv(userIdsCSV).queue



  ...



  val scenario1 = scenario("Scenario 1")

    .feed(userIdsData)

    .get(...)



  val scenario2 = scenario("Scenario 2")

    .feed(userIdsData)

    .get(...)

    .post(...)



  setUp(scenario1.inject(rampUsers(30) over (ramp seconds))

      .protocols(HttpConfig.value(baseURL)),

    scenario2.inject(rampUsers(70) over (ramp seconds))

      .protocols(HttpConfig.value(baseURL))

  )

}
3

3 Answers

22
votes

Whatever you are doing is absolutely fine.

The way you are running the setup you will see that the requests are running in parallel.

13
votes

Gatling will run each item within SetUp in parallel where as each item defined in a scenario will be run sequentially. As you can see from the link

The definition of the injection profile of users is done with the inject method. This method takes as argument a sequence of injection steps that will be processed sequentially.

So your above code will run scenario01 ramp to 30 over x seconds and scenario02 ramp to 70 over y seconds in parallel.

1
votes

You can also try with below code .

scenario1.inject(rampConcurrentUsers(0) to (6) during(10),constantConcurrentUsers(6) during(60 seconds)),

scenario2.inject(rampConcurrentUsers(0) to (4) during(10),constantConcurrentUsers(4) during(60 seconds))