slim
slim

Reputation: 469

Inject user index into body file in Gatling scenario

I want to use ELFileBody and put a variable in a txt file. This file contains a soap request.

The request (scenario) is executed only one time but as many times as users. I want to put into file variable, the user index (position in execution).

Something like this :

.set("myVar", userIndex) //myVar is the variable declared in the body file ( ${myVar} )

Here is my code for now :

  val users = 1500
  val baseUrl = "http://127.0.0.1:7001"

  val httpProtocol = http
    .baseURL(baseUrl)
    .inferHtmlResources()
    .acceptEncodingHeader("gzip,deflate")
    .contentTypeHeader("text/xml;charset=UTF-8")
    .userAgentHeader("Apache-HttpClient/4.1.1 (java 1.5)")

  val headers_0 = Map("SOAPAction" -> """""""")

  val uri1 = "http://127.0.0.1:7001/myProject-ws/myProjectWebService"

  val scn = scenario("Scenario1Name")
    .exec(http("scn.Scenario1Name")
      .post("/myProject-ws/myProjectWebService")
      .headers(headers_0)
      .body(RawFileBody("File_0000_request.txt")))

  setUp(scn.inject(atOnceUsers(users))).protocols(httpProtocol)

How can I inject the user index into myVar variable in the request body ?

Upvotes: 1

Views: 1531

Answers (2)

Mateusz Sobczak
Mateusz Sobczak

Reputation: 1633

You need read file like e.g. val customSeparatorFeeder = separatedValues(pathToFile, separator).queue circular

after scenario("Scenario1Name") you need to add .feed(customSeparatorFeeder)

you can read more about it here https://docs.gatling.io/reference/script/core/session/feeders/

Upvotes: 0

slim
slim

Reputation: 469

finally, i used a function that return a dynamic reference (id) and I call it from my scenario.

def getDynamicId(): String = {
  val formatter = new SimpleDateFormat("yyyyMMddHHmmss.SSS")
  val result = "PM".concat(formatter.format(Calendar.getInstance().getTime()))
  result
} 

//[...]

scenario("ScenarioName")
  .exec(session => session.set("myVar", getDynamicId)) 

// [...]

.body(ElFileBody("BodyFile_0000_request.txt")))

And in the body file, I have the variable ${myVar}

Upvotes: 1

Related Questions