Gatling - отличный инструмент для тестирования нагрузки, но DSL как-то меня озадачивает. Проблема в том, что у меня уже есть пользовательские классы запросов и моделей, и я хочу создать своего рода «мост» для переноса существующих классов в DSL.Gatling 2 как измерить DSL
Вот пример:
exec {
val request = new GetIdRequest()
request.setCountry("US")
request // There is an implicit conversion
.check(status.is(200), bodyString.saveAs("ids"))
}.exec {
session =>
val ids = new ObjectMapper().readValue(session("ids").as[String], classOf[IdList])
val request = new GetObjectRequest()
val request.setId(id(0))
request // There is an implicit conversion
.check(status.is(200), bodyString.saveAs("object"))
session
}
где неявное преобразование просто преобразует request
к http(...).get(url)...
Это, очевидно, не работает,
- сессия неизменен, поэтому " объект "не сохраняется в сеансе
request
в с econdexec
не выполняется, потому что она не прошла вexec
непосредственно
Так как я могу достичь желаемого эффекта? Есть ли пример, который я могу принять, или мне нужно реализовать свой собственный ActionBuilder
(я не хочу этого делать, поскольку это будет похоже на запись другого протокола)? Благодаря
Update 1
Это решение, которое я придумал.
Я создал этот метод
def createHttp(name: String, req: Session => HttpRequest): HttpRequestBuilder = {
http(name)
.get {
session => req(session).getUri
}
.header("Content-Type", "application/json")
.header("Authorization", {
session =>
val r = req(session)
Authorization.create("GET", r.getUri, appId, appKey)
})
}
переводчика Тогда мне просто нужно передать в функции, которая создает HttpRequest
Благодарим вас за ответ. Я нашел способ устранить пробел, передав параметры типа 'Session => MyRequest' методу транслятора, который переводит это в выражение. Это работает очень хорошо. – stackoverflower