Гатлинг Оценить язык выражений

Гатлинг анализирует значения параметров строк и превращает их в функции, которые будут вычислять результат на основе данных, хранящихся в сеансе, когда они будут оцениваться.

Документация по Gatling

Есть ли способ сделать это вручную в exec?

У меня есть несколько шаблонов тела запроса, которые используют атрибуты EL, отправленный запрос будет отличаться в зависимости от фидера.

Код, который у меня сейчас есть, такой:

// Body itself contains attributes say ${uuid}
val body1 = Source.fromResource("body1.json")
val body2 = Source.fromResource("body2.json")

val scn: ScenarioBuilder = scenario("Dynamic body")
    .feed(feeder)
    .exec(session => {
      if(session("requestType").as[String].equals("first"))
        session.set("request", body1)
      else 
        session.set("request", body2)
      session
    }
    .exec(http("Http Call")
      .post(url)
      .body(StringBody("${request}")) 
// This won't evaluate the nested attribute and body will remain ${uuid} instead of an actual UUID
    )

Я ожидаю, что не будет способа оценить вложенные атрибуты EL, но есть ли способ вручную оценить его с помощью переменных сеанса? Что-то в духе

.exec(session => {
    val evaluatedBody = merge(body1, session)
    session("request", evaluatedBody)
    session
})

Я видел, как ELCompiler упоминается в некоторых других вопросах, но не уверен, откуда его импортировать и как использовать его со значениями сеанса.


person Isaac N    schedule 22.06.2021    source источник


Ответы (1)


Вы должны использовать ElFileBody, который принимает путь к файлу параметр, который может быть функцией.

val scn = scenario("Dynamic body")
    .feed(feeder)
    .exec(http("Http Call")
      .post(url)
      .body(
        ElFileBody(session =>
            session("requestType").as[String] match {
              case "first" => "body1.json"
              case _       => "body2.json"
            }
        )
      )
    )
person Stéphane LANDELLE    schedule 22.06.2021
comment
Это было именно то, что я искал, хотя было бы здорово, если бы вы также могли добавить, как сделать то же самое, если ввод был переменной строкой (содержащей атрибуты) вместо файла - person Isaac N; 23.06.2021