Search code examples
scalagatling

How to access session attributes in doIf block?


I'm trying to write the gatling test step which will do the retry based on some saved session values. How could I access the values in following doIf chain step?

val step = asLongAs(session => !session.contains("status") || session("status").as[Int] == 123) {
  exec(http("post")
   .post("/test")
   .check(status.saveAs("status"))
   .check(
     checkIf(session => session("status").as[Int] == 123) {
       jsonPath("$.data1").saveAs("data1")
       jsonPath("$.data2").saveAs("data2")
     }))
 .doIf(session => session("status").as[Int] == 123) {
    pause(data1, data2) // <------- use data here HERE
 }
}

Solution

  • .doIf(session => session("status").as[Int] == 123) {
      pause(
        session => {
          val data = session("data").as[String] // data is a String, not a FiniteDuration
          ??? // your job to return a FiniteDuration based on the data String
        },
        session => {
          val data = session("data").as[String] // data is a String, not a FiniteDuration
          ??? // your job to return a FiniteDuration based on the data String
        }
      )
    }