当前位置: 首页 > 知识库问答 >
问题:

未执行HTTP请求前后的Gatling

督德明
2023-03-14

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

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

共有2个答案

徐星阑
2023-03-14

您可以使用在库中添加的jar,例如okhttp。例如:

import okhttp3.{OkHttpClient,Request}     
before {
    println("Simulation is about to start!")


    val request = new Request.Builder().url("http://computer-database.gatling.io").build
    val response = new OkHttpClient().newCall(request).execute()

    println(response.body().string())
    if (response != null) response.close()

    println("Simulation initialized!")
  }

Gatling使用导入io.gatling.http.client.HttpClient。如果没有添加lib,您应该可以使用这个。

文增
2023-03-14

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

 类似资料:
  • 我有一个对服务器的Authenticate post调用,如下所示: 用这样的尸体: 我总是必须在Postman中执行两次这个Authenticate调用,以正确填充我的全局var“安全令牌”,并在此后的下一次调用中使用该令牌进行身份验证,因此,似乎预请求脚本实际上是在脚本之后运行的,或者是预请求脚本中设置的全局var对当前请求不容易可用? 我做错了什么? 以下是预先请求的SRIPT:

  • 我正在尝试设置Azure Application Insights以监视Azure App Services中承载的ASP.NET Core Web App和Web API的以下指标的性能计数器: null 我相当肯定Application Insights的配置是正确的,因为我可以看到门户中显示的其他度量。是不是有什么原因,这些特定的度量似乎没有出现?我甚至尝试使用一个默认的ASP.NET核心模

  • 这个请求在postman中工作得非常好,所以我认为它与cors相关,并安装了fastify-cors,但我仍然得到同样的错误。 有人有什么建议如何解决这个问题吗?

  • 在一些请求中,我们会做一些日志的推送、用户数据的统计等和返回给终端数据无关的操作。而这些操作,即使你用异步非阻塞的方式,在终端看来,也是会影响速度的。这个和我们的原则:终端请求,需要用最快的速度返回给终端,是冲突的。 这时候,最理想的是,获取完给终端返回的数据后,就断开连接,后面的日志和统计等动作,在断开连接后,后台继续完成即可。 怎么做到呢?我们先看其中的一种方法: local response

  • 问题内容: 我有这个代理地址: 如何使用cURL之类的来执行HTTP请求,但指定网络的代理地址? 问题答案: 一般方式: 然后,您可以通过来自(许多)应用程序的代理进行连接。 并且,按照下面的注释,对于https:

  • 问题内容: 我想要的是从具有HTTP(例如jQuery的AJAX)请求的API到外部api的对象。我该如何开始?我曾对Google先生进行过调查,但找不到任何帮助。 我开始怀疑这是否可能?在这篇文章中,Laravel4发出了从控制器到外部url的发布请求,并发出了看起来可以完成的数据。但是没有示例,也没有任何来源可以找到一些文档。 请帮帮我吗? 问题答案: 看看Guzzle