2

我正在我的 ElasticSearch 索引上编写一堆负载测试。我需要在负载测试中设置和拆除我的索引。为此我写了这段代码

  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

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

4

1 回答 1

3

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

于 2018-08-14T17:44:35.150 回答