我是一家小公司的系统管理员,我正试图为我们的一个网络应用程序建立第一次gatling测试。我了解一些C和Java语法以及Regexes,但对Scala一无所知。
我正在尝试测试的应用程序在URL中有jsessionid (包括jvmRoute),而不是在cookie中设置。根据Stéphane Landelle 在这里写的,Gatling应该自动记录每个用户会话的jsessionid并重放它,但这似乎只有当jsessionid设置为Cookie时才有效。
我从测试用例中的URL中删除了实际记录的jsessionid,因为它在以后的任何尝试中都是无效的。当我运行测试时,Appserver生成一个新的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}""")...and它不编译。
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以便重用它呢?还是我在这里做错了事?任何帮助都是非常感谢的。
发布于 2014-09-17 11:47:06
如果Gatling遵循重定向(默认),将对着陆请求进行检查。为了获取jsessionid参数,可以禁用HttpProtocol中的跟踪重定向,或者使用currentLocationRegex检查。
那么,这个jsessionid路径参数仅用于第一页,还是所有这些页面上的参数?通常,它只在第一个页面上,直到servlet容器意识到您的浏览器支持cookie,并且可以使用它们进行会话跟踪。
你真的很确定你想让你的应用程序支持禁用的cookie(我的意思是,我们在2014年,为什么不也禁用javascript .)如果没有,则可能会禁用path参数会话跟踪。检查这条线是如何在Tomcat上完成的。
如果是的话,您必须将这个路径参数添加到每个url中。您可能希望为此定义一个方法,如:
def appendJSessionId(pathWithoutQuery: String) =
pathWithoutQuery + ";jsessionid=${jsessionid}"https://stackoverflow.com/questions/25888936
复制相似问题