Testing Gatling,测试并发性问题

Testing Gatling,测试并发性问题,testing,concurrency,gatling,Testing,Concurrency,Gatling,我们的系统中存在并发问题。这种情况主要发生在通过我们的API从外部系统进行突发加载期间,无法手动复制 因此,我想创建一个Gatling测试,以1)随时复制它,并2)检查我们是否解决了这个问题 1)第一点我已经说完了。我创建了两个检查状态201的请求,并与许多用户一起运行它们 2)此问题允许创建具有相同唯一价值的两个资源。预期的行为是创建一个,其他行为应失败,状态为409。但我不知道如何检查任何请求,但至少一次,用201完成,而所有其他请求都用409失败 我们能对盖特林的所有请求进行一种事后检查吗

我们的系统中存在并发问题。这种情况主要发生在通过我们的API从外部系统进行突发加载期间,无法手动复制

因此,我想创建一个Gatling测试,以1)随时复制它,并2)检查我们是否解决了这个问题

1)第一点我已经说完了。我创建了两个检查状态201的请求,并与许多用户一起运行它们

2)此问题允许创建具有相同唯一价值的两个资源。预期的行为是创建一个,其他行为应失败,状态为409。但我不知道如何检查任何请求,但至少一次,用201完成,而所有其他请求都用409失败

我们能对盖特林的所有请求进行一种事后检查吗


谢谢

我认为你不能通过检查通话本身来达到你想要的效果,因为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
检入函数中的预期值