Search code examples
scalaperformance-testinggatling

How to pass a session variable from one object to another in Gatling?


I'm extracting session variable in ObjectA and would like to pass it to ObjectB, what is the best way to achieve this?

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec { session =>  
          val Count = session("Count").as[String].toInt
          val GroupName = SomeCustomFunc(Count)
        }
        .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group(GroupName){
      myChain
  }
}

Pretty sure I'll feel stupid after seeing the answer, but so far did not managed to get this working.

Answer: As Stephane suggested passing through Session worked fine:

object ObjectA {
  val foo = exec(jsfPost("Request1", "/something.xhtml")
        .formParam("SUBMIT", "1")
        .check(regex("""Count:([^:]*),""").saveAs("Count"))
        )
       .pause(1)
       .exec(session => session.set("GroupName", SomeCustomFunc(session("Count").as[String].toInt)))
       .exec(ObjectB.bar)
}

object ObjectB{      
  val bar = group("${GroupName}"){
      myChain
  }
}

Solution

  • You have to store GroupName in the user's session in your exec(function) so you can later fetch it (Gatling EL or function).