Gatling - 根据请求更改馈线中使用的 SSL 证书?
Gatling - change SSL cert used in feeder per request?
是否可以在 Gatling 中为每个请求使用不同证书的馈线?
考虑测试:
- 对于许多用户,每个用户都有一个用于 HTTPS 连接的个人唯一证书,
- 对于每个用户,使用该用户的证书发送一个请求。
示例实现:
val feeder = Array(
Map("data" -> data(user1_data),
"gatling.http.ssl.trustStore.file" -> "/tmp/test-data/rb.jks",
"gatling.http.ssl.trustStore.password" -> "password",
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user1.jks",
"gatling.http.ssl.keyStore.password" -> "password"),
Map("data" -> data(user2_data),
"gatling.http.ssl.trustStore.file" -> "/tmp/test-data/rb.jks",
"gatling.http.ssl.trustStore.password" -> "password",
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user2.jks",
"gatling.http.ssl.keyStore.password" -> "password")
)
...
val scn = scenario.exec(reportableTest(
repeat(feeder.length) {
feed(feeder)
.exec(http("test user personal data")
.post(user_url)
.headers(user_headers)
.body(StringBody("${data}")).asJSON
.check(
status.is(201),
header("Content-type").is("application/json"),
)
}))
我确实在场景设置中调用了:.disableClientSharing。
奇怪的是,似乎只有第一个
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user1.jks",
处理完毕。下一个不是(即使我创建了另一个 reportableTest)。我只是更改了顺序以查看实际上在两个请求中都使用了第一个 "userX.jks" 。
这是正常行为吗?
这是一个错误吗?
在 Gatling 的 Google 组上回答:可以为每个虚拟用户设置 SSL 配置,而不是每个请求。
是否可以在 Gatling 中为每个请求使用不同证书的馈线?
考虑测试:
- 对于许多用户,每个用户都有一个用于 HTTPS 连接的个人唯一证书,
- 对于每个用户,使用该用户的证书发送一个请求。
示例实现:
val feeder = Array(
Map("data" -> data(user1_data),
"gatling.http.ssl.trustStore.file" -> "/tmp/test-data/rb.jks",
"gatling.http.ssl.trustStore.password" -> "password",
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user1.jks",
"gatling.http.ssl.keyStore.password" -> "password"),
Map("data" -> data(user2_data),
"gatling.http.ssl.trustStore.file" -> "/tmp/test-data/rb.jks",
"gatling.http.ssl.trustStore.password" -> "password",
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user2.jks",
"gatling.http.ssl.keyStore.password" -> "password")
)
...
val scn = scenario.exec(reportableTest(
repeat(feeder.length) {
feed(feeder)
.exec(http("test user personal data")
.post(user_url)
.headers(user_headers)
.body(StringBody("${data}")).asJSON
.check(
status.is(201),
header("Content-type").is("application/json"),
)
}))
我确实在场景设置中调用了:.disableClientSharing。
奇怪的是,似乎只有第一个
"gatling.http.ssl.keyStore.file" -> "/tmp/test-data/user1.jks",
处理完毕。下一个不是(即使我创建了另一个 reportableTest)。我只是更改了顺序以查看实际上在两个请求中都使用了第一个 "userX.jks" 。
这是正常行为吗? 这是一个错误吗?
在 Gatling 的 Google 组上回答:可以为每个虚拟用户设置 SSL 配置,而不是每个请求。