未执行HTTP请求之前和之后的加特林

时间:2018-08-14 17:21:34

标签: gatling scala-gatling

我在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

轻松删除索引

运行模拟时。它运行成功。但我可以看到测试索引仍然存在。

1 个答案:

答案 0 :(得分:1)

您不能在beforeafter内使用Gatling DSL,或者更精确地说,您可以使用,但它不能按预期工作。加特林DLS方法不执行用于创建ScenarioBuilder对象的任何操作(它更像是配置而不是可执行代码),然后可以将其传递给setUp方法来执行(也不能直接)。但是在beforeafter方法中,您使用普通的Scala,因此,如果在其中放置scenario方法,您将只创建一个从未使用过的新ScenarioBuilder对象。因此,如果您想通过这些方法运行一些API调用,则不必使用一些http客户端。