scalagatling

Gatling - execute scenarios sequentialy


When I run code like:

setUp(
     scenario1.inject(constantUsersPerSec(1) during (1 second)),
     scenario2.inject(constantUsersPerSec(1) during (1 second))
).protocol()

Both scenarios are started at once.
What need to be changed to run it one by one?


Solution

  • You could start the second scenario with a "nothingFor" injection step

    setUp(
       scenario1.inject(constantUsersPerSec(1) during (1 second)),
       scenario2.inject(nothingFor(1 second) ,
                        constantUsersPerSec(1) during (1 second))
    ).protocol()
    

    If you want to have a guaranteed sequential execution, you have to put the chains of both scenarios into a new scenario.

    var scn = scenario("combined scenario").
               .exec(chain1)
               .exec(chain2)
    
    def chain1 = exec(...)...
    def chain2 = exec(...)...
    

    Usually I separate the scripts for a page (recorded, volatile) from the user scenario sequences (chains of page calls) and the load model (the setup with the injection steps), which makes it easier to recombine chains to create new scenarios.