【问题标题】:Gatling Before and After HTTP requests not getting executedGatling 之前和之后 HTTP 请求没有被执行
【发布时间】:2018-08-14 17:21:34
【问题描述】:

我正在我的 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轻松删除索引

当我运行我的模拟时。它运行成功。但是我可以看到测试索引还在。

【问题讨论】:

    标签: gatling scala-gatling


    【解决方案1】:

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

    【讨论】:

    • 但是如何添加我的库依赖项?假设我想使用 http 客户端库(如 sttp)来发出请求?我没有从 SBT 执行 Gatling。我只是在用户文件中创建一个“.scala”文件。
    • 嗯,我会尝试将一些 JAR 放到 gatlings /lib 目录中,希望它能够进入类路径,也许正在寻找默认的类路径,尝试设置我自己的类路径等。但老实说它设置简单的 sbt 项目会快得多。
    • 这很难。现在我们知道加特林使用哪个版本的 Scala 了吗?因为下载jar的时候。我必须选择正确的 scala 版本对吗?
    • 这取决于包的版本,/lib 中有 Scala 库 jar,文件名中有版本。但是有什么特别的理由不使用 SBT 吗?
    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 2021-12-11
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多