我在ElasticSearch Index上编写了一堆负载测试。我需要在负载测试中设置和删除索引。为此,我编写了这段代码
before {
println("going to setup index")
scenario("SetupIndex")
.exec(
http("createindex")
.put("/test")
)
.inject(atOnceUsers(1))
.protocols(httpConf)
}
setUp(
scn
.inject(
constantUsersPerSec(10) during (60 seconds) randomized
)
.protocols(httpConf)
)
after {
scenario("DeleteIndex")
.exec(
http("deleteindex")
.delete("/test")
)
.inject(atOnceUsers(1))
.protocols(httpConf)
println("finished executing cleanup....")
}
我看到它打印“完成的执行清除”,但实际上并没有执行删除操作。我可以通过curl -XDELETE http://localhost:9200/test
运行模拟时。它运行成功。但我可以看到测试索引仍然存在。
答案 0 :(得分:1)
您不能在before
和after
内使用Gatling DSL,或者更精确地说,您可以使用,但它不能按预期工作。加特林DLS方法不执行用于创建ScenarioBuilder对象的任何操作(它更像是配置而不是可执行代码),然后可以将其传递给setUp
方法来执行(也不能直接)。但是在before
和after
方法中,您使用普通的Scala,因此,如果在其中放置scenario
方法,您将只创建一个从未使用过的新ScenarioBuilder对象。因此,如果您想通过这些方法运行一些API调用,则不必使用一些http客户端。