Search code examples
scalagatlingscala-gatling

Execute gatling scenarios based on a boolean flag


Is it possible in Gatling to execute scenarios based on a boolean flag from properties file application.conf

config {
  isDummyTesting = true,

  Test {
    baseUrl = "testUrl"
    userCount = 1
    testUser {
      CustomerLoginFeeder = "CustomerLogin.getLogin()"
      Navigation = "Navigation.navigation"
    }
  },
  performance {
    baseUrl = "testUrl"
    userCount = 100
    testUser {
      CustomerLoginFeeder = "CustomerLogin.getLogin()"
    }
  }
}

and in my simulation file

var flowToTest = ConfigFactory.load().getObject("config.performance.testUser").toConfig
if (ConfigFactory.load().getBoolean("config.isDummyTesting")) {
 var flowToTest = ConfigFactory.load().getObject("config.Test.testUser").toConfig
}

while executing flow, i am running below code

scenario("Customer Login").exec(flowToTest)

and facing error

ERROR : io.gatling.core.structure.ScenarioBuilder
 cannot be applied to (com.typesafe.config.Config)

I want if flag is true, it executes two scenarios else the other one.


Solution

  • I think you're making a mistake in trying to have to flow defined in the config, rather than just the flag. You can then load the value of the isDummyTesting flag and have that passed into a session variable. From there, you can use the standard gatling doIf construct to include Navigation.navigation if specified.

    so in your simulation file, you can have

    private val isDummyTesting = java.lang.Boolean.getBoolean("isDummyTesting")
    

    and then in your scenario

    .exec(session => session.set("isDummyTesting", isDummyTesting)) 
    ...
    .exec(CustomerLogin.getLogin())
    .doIf("${isDummyTesting}") {
      exec(Navigation.navigation)
    }