【发布时间】:2019-09-09 21:47:50
【问题描述】:
我将 Gatling 与 JDBC 馈送器一起使用,并希望根据先前请求的响应动态地将参数添加到 JDBC 馈送器的 where 子句。这是我的示例,我正在尝试创建一个用户,然后让提要使用从创建用户请求返回的 userId 获取用户生成的 UUID,然后使用 UUID 发布一些数据。
val dbConnectionString = "jdbc:mysql://localhost:3306/user"
val sqlQuery = "SELECT user_uuid FROM users where user_id = '${userId}'"
val sqlUserName = "dbUser"
val sqlPassword = "dbPassword"
val sqlQueryFeeder = jdbcFeeder(dbConnectionString, sqlUserName, sqlPassword, sqlQuery)
val uuidPayload = """{"userUUID":"${user_uuid}"}"""
val MyScenario = scenario("MyScenario").exec(
(pause(1, 2))
.exec(http("SubmitFormThatCreatesUserData")
.post(USER_CREATE_URL)
.body(StringBody("""{"username":"test@test.com"}""")).asJson
.header("Accept", "application/json")
.check(status.is(200))
.check(jsonPath("$..data.userId").exists.saveAs("userId")))
.feed(sqlQueryFeeder)
.exec(http("SubmitStuffWithUUID")
.post(myUUIDPostURL)
.body(uuidPayload).asJson
.header("Accept", "application/json")
.check(status.is(200)))
)
我已验证以下内容:
1) 用户数据确实在表单帖子中正确插入数据库 2) userId 从该表单帖子返回 3) userId 正确保存为 Gatling 会话变量 4) 如果我硬编码用户 id 变量,SQL 查询将正确执行
我遇到的问题是,当我在 JDBC 馈送器的 where 子句中有 Gatling ${userId} 参数时,它似乎没有使用 userId 变量,我收到一条错误消息 java.lang.IllegalArgumentException: requirement failed: Feeder must not be empty。当我用硬编码的 userId 替换 ${userId} 时,一切都按预期工作。我只想知道如何在我的 JDBC 馈送器的 where 子句中使用 userId 会话参数。
【问题讨论】:
标签: gatling scala-gatling