Gatling,测试并发问题
Gatling, testing concurrency issues
我们的系统存在并发问题。这主要发生在我们的 API 从外部系统突发加载期间,并且无法手动重现。
所以我想创建一个加特林测试 1) 随时重现它 2) 检查我们是否已经解决问题。
1) 第一点我说完了。我已经创建了两个检查状态 201 的请求,并且我 运行 有很多用户。
2) 这个问题允许创建两个具有相同唯一值的资源。预期的行为是创建一个,其他的应该失败,状态为 409。但我不知道我们如何检查任何请求,但至少一次,完成 201 而所有其他请求都失败 409.
我们可以使用 Gatling 对所有请求进行某种 post 检查吗?
谢谢
我不认为你可以通过检查调用本身来实现你想要的,因为 gatling 用户看不到返回给其他用户的结果,所以你无法知道是否成功 (201 ) 已经提出请求(缺少一些使用检查转换器的非常混乱的黑客攻击)
但是您可以使用模拟级断言来执行此操作。
所以你有你的请求,你断言你期望 201 响应
http("my request")
.get("myUrl")
.check(status.is(201))
这应该会导致除其中一个请求之外的所有请求在模拟中失败,您可以使用断言指定...
setUp(
myScenario.inject(
...
)
)
.assertions(
details("my request").successfulRequests.count.is(1))
存储已在全局 ConcurrentHashMap 中看到的结果,并根据 CHM 中的存在情况(201 表示缺失或 409 表示存在)在 is
签入函数中计算预期值。
我们的系统存在并发问题。这主要发生在我们的 API 从外部系统突发加载期间,并且无法手动重现。
所以我想创建一个加特林测试 1) 随时重现它 2) 检查我们是否已经解决问题。
1) 第一点我说完了。我已经创建了两个检查状态 201 的请求,并且我 运行 有很多用户。
2) 这个问题允许创建两个具有相同唯一值的资源。预期的行为是创建一个,其他的应该失败,状态为 409。但我不知道我们如何检查任何请求,但至少一次,完成 201 而所有其他请求都失败 409.
我们可以使用 Gatling 对所有请求进行某种 post 检查吗?
谢谢
我不认为你可以通过检查调用本身来实现你想要的,因为 gatling 用户看不到返回给其他用户的结果,所以你无法知道是否成功 (201 ) 已经提出请求(缺少一些使用检查转换器的非常混乱的黑客攻击)
但是您可以使用模拟级断言来执行此操作。 所以你有你的请求,你断言你期望 201 响应
http("my request")
.get("myUrl")
.check(status.is(201))
这应该会导致除其中一个请求之外的所有请求在模拟中失败,您可以使用断言指定...
setUp(
myScenario.inject(
...
)
)
.assertions(
details("my request").successfulRequests.count.is(1))
存储已在全局 ConcurrentHashMap 中看到的结果,并根据 CHM 中的存在情况(201 表示缺失或 409 表示存在)在 is
签入函数中计算预期值。