我们的系统有一个并发问题。这个主要发生在通过我们的API从外部系统进行突发加载的过程中,而且是无法手动重现的。
所以我想创建一个加特林测试来进行 1) 只要我想,随时可以复制它,并且 2) 检查我们是否已经解决了问题。
1) 我已经完成了第一点。我已经创建了两个请求,检查状态 201 而且我和很多用户一起运行它们。
2) 这个问题允许创建两个具有相同独特价值的资源。预期的行为是有一个资源被创建,其他资源的状态应该是失败的。409. 但我不知道我们如何能检查任何的请求,但至少一次,完整的。201 一败涂地 409.
我们可以对所有的请求进行一种后检查吗?
谢谢你
我不认为你可以通过对调用本身的检查来实现你所追求的目标,因为加特林用户对返回给其他用户的结果没有可见性,所以你无法知道成功的(201)请求是否已经被提出(短于使用检查变换器进行一些非常混乱的黑客攻击)。
但你可以使用模拟级别的断言来做到这一点.所以你有你的请求,在那里你断言你期待一个201的响应。
http("my request")
.get("myUrl")
.check(status.is(201))
在模拟中,除了一个请求外,这应该会导致所有这些请求失败,你可以使用断言来指定...。
setUp(
myScenario.inject(
...
)
)
.assertions(
details("my request").successfulRequests.count.is(1))
将已经看到的结果存储在全局的 ConcurrentHashMap 中,并在全局的 ConcurrentHashMap 中计算预期值。is
根据信息交换机制中的存在,在函数中进行检查(201代表缺失,409代表存在);