Я системный администратор небольшой компании, и я пытаюсь настроить первый тест с гатлингом для одного из наших веб-приложений. Я немного знаю синтаксис C и Java, а также регулярные выражения, но совсем не знаю Scala.
Приложение, которое я пытаюсь протестировать, имеет jsessionid (включая jvmRoute) в URL-адресе, а не в файле cookie. Согласно тому, что Стефан Ландель написал здесь, Гатлинг должен автоматически запишите jsessionid для каждого сеанса пользователя и воспроизведите его, но, похоже, это работает только тогда, когда jsessionid установлен как файл cookie.
Я удалил фактически записанный jsessionid из URL-адресов в тестовом случае, рассудив, что он не будет действителен при любых будущих попытках. Когда я запускаю тест, сервер приложений генерирует новый jsessionid, который затем не включается ни в какие будущие вызовы.
Из-за этого я пытаюсь очистить jsessionid от первоначального перенаправления и включить его в любой будущий URL-адрес. В первом ответе есть заголовок местоположения, который выглядит так:
Location https://URL/welcome.do;jsessionid=F97250BDC1576B5766CEFA56645EA3F4.node1
В настоящее время код выглядит так:
.exec(http("Open Page")
.get("""/?code=abcdef""")
.headers(headers_0)
// Test extract jsessionid from URL
.check(headerRegex("Location", "jsessionid=(.*)")).saveAs("jsess")
.exec(http("welcome.do")
.post("""/welcome.do;jsessionid=${jsess}""")
...и не компилируется.
12:15:14.198 [ERROR] i.g.a.ZincCompiler$ - FirstTest.scala:53: value saveAs is not a member of io.gatling.http.request.builder.HttpRequestBuilder
12:15:14.199 [ERROR] i.g.a.ZincCompiler$ - .check(headerRegex("Location", "jsessionid=(.*)")).saveAs("jsess")
12:15:14.200 [ERROR] i.g.a.ZincCompiler$ - ^
12:15:14.261 [ERROR] i.g.a.ZincCompiler$ - one error found
Если я передвину одну закрывающую скобку в конец:
.check(headerRegex("Location", "jsessionid=(.*)").saveAs("jsess"))
он компилируется, но не делает то, что нужно:
---- Errors --------------------------------------------------------------------
> No attribute named 'jsess' is defined 11 (78.57%)
> status.in(200,304,201,202,203,204,205,206,207,208,209), but ac 2 (14.29%)
tually found 404
> headerRegex((Location,jsessionid=(.*))).exists, found nothing 1 ( 7.14%)
================================================================================
Итак, как мне записать jsessionid, чтобы использовать его повторно? Или я делаю совершенно неправильно здесь? Любая помощь приветствуется.