加特林执行程序超出场景范围 - 不调用 POST 请求

2023-12-11

我正在尝试编写加特林性能测试,我正在使用before and after加特林模拟的块,用于针对服务发出一次性 HTTP POST 请求。

 class MyTest extends Simulation {
      
      // Some code here
      // and definitions
      
      val myScenario = scenario("Vary number of ...")
        .exec(PublishMessageRoundRobin(pConfigTest, testTitle + "-" + numX, numY))
    
      // extract the nodes  
      val nodes : Array[String]  = endpoints.split(endpointDelimiter)  
      
      //
      // create consumers with desired configurations at endpoint prior to scenario run
      // then start them
      //
      before {
          var endpoint = ""
                
          //
          // TODO: based on run parameter, decide if we should pre-run producers
          // 
          for( elt <- 1 to numX ) {
            endpoint = "http://" + nodes(elt-1) + cEndpoint + setConfig      
            CallSet( myobj, endpoint )
            endpoint = "http://" + nodes(elt-1) + cEndpoint + start  
            CallStart( myobj, endpoint )        
          }
      }
      
      if (testMode == "debug") {
        setUp(
          myScenario.inject(
            atOnceUsers(1)
          )
        ).protocols(httpConf)    
      } else if (testMode == "open") {
        setUp(
          myScenario.inject(       
            rampConcurrentUsers(20) to (200) during (durationInMinutes minutes),
          )
        ).protocols(httpConf)
      }
       
       // stop all consumers
       after {
           var endpoint = ""
           for( elt <- 1 to numX ) {
               endpoint = "http://" + nodes(elt-1) + cEndpoint + stop  
               CallStop(myobj, endpoint)
           }
       }
    
    }

由于某种原因,CallStart、CallStop 和 CallSet 未发出 POST 请求。 调用的唯一 POST 请求是场景中定义的请求PublishMessageRoundRobin它调用 exec 并针对端点创建 post。

它们的定义方式非常相似,这是其中之一

def CallStop(consumerConfig : ConsumerConfig, stopEndpoint : String ) = { 
      
      val jsonBody = consumerConfig.asJson
      val valuedJsonBody = Printer.noSpaces.copy(dropNullValues = true).print(jsonBody)
      println(valuedJsonBody)        
      println("stopEndpoint-" + stopEndpoint) 

      exec(http("StopConsumer-" + stopEndpoint)    
      .post(stopEndpoint)    
      .header(HttpHeaderNames.ContentType, HttpHeaderValues.ApplicationJson)
      .body(StringBody(valuedJsonBody))
      .check(status.is(200))
      .check(bodyString.saveAs("serverResponse"))
      )    
    .exec { session =>
      println("server_response: " + session("serverResponse").as[String])
      session
    }
  }

我看到上面的 println 语句,但没有 POST 请求。有人可以帮助解释发生了什么事吗?

EDIT我是 Gatting 和 Scala 的新手,所以我不知道如何调试或设置断点。似乎它默默地失败了,这与我有关。


基于this- 加特林 DSL 无法在钩子内工作。我希望有一个警告或其他东西,不要在这上面浪费时间。

我必须在不使用 Gatting DSL 的情况下执行实际的 POST 请求,如下所示。

 def CallStop(consumerConfig : ConsumerConfig, stopEndpoint : String ) = { 
          
          val jsonBody = consumerConfig.asJson
          val valuedJsonBody = Printer.noSpaces.copy(dropNullValues = true).print(jsonBody)
          println(valuedJsonBody)        
          println("stopEndpoint:" + stopEndpoint) 
    
          val post = new HttpPost(stopEndpoint)
          post.setHeader("Content-type", "application/json")
          post.setEntity(new StringEntity(valuedJsonBody))
          // send the post request
          val client = new DefaultHttpClient
          val response = client.execute(post)
    
          println("Response:" + response)
      }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加特林执行程序超出场景范围 - 不调用 POST 请求 的相关文章

  • 加特林不在会话中存储值

    我在加特林中使用会话来存储值 如下所示 exec session gt val id Instant now toEpochMilli toString scala util Random nextInt 1000 toString ses
  • 加特林如何在两个场景之间传递价值?

    我的脚本中有两个场景 我想将 CreateId 的值传递给第二个场景 我在第一个场景中保存了 CreateId 错误说 未定义名为 CreateId 的属性 jsonPath id find 0 exists 什么也没找到 场景 1 val
  • 加特林执行程序超出场景范围 - 不调用 POST 请求

    我正在尝试编写加特林性能测试 我正在使用before and after加特林模拟的块 用于针对服务发出一次性 HTTP POST 请求 class MyTest extends Simulation Some code here and
  • RampUsersPerSec 函数的真正作用是什么?

    我发现加特林文档对特定功能有点不清楚 rampUsersPerSec 在给定持续时间内每秒注入随机数量的用户 rate1 至 rate2 期间 dur 单位 从起始速率1注入用户 目标速率2 在给定持续时间内以每秒用户数定义 例如 在 10
  • 从独立应用程序运行加特林的正确方法是什么

    我需要从主应用程序启动加特林模拟 用例如下 应用程序读取规范 并根据该规范生成测试用例 测试用例被转换为加特林场景 这些场景在加特林模拟中运行 到目前为止 我设法通过 sbt 插件做到这一点 然而 如果我们想在其他上下文中重用我正在开发的工
  • 为什么增加 Nginx 中的worker_connections 会使应用程序在node.js 集群中变慢?

    我正在将我的应用程序转换为 Node js 集群 我希望它能够提高我的应用程序的性能 目前 我正在将该应用程序部署到 2 个 EC2 t2 medium 实例 我有 Nginx 作为代理和 ELB 这是我的 Express 集群应用程序 从
  • Ga特林 - 在simulation.log或控制台中记录请求正文

    我想看看我在脚本中发送的帖子正文中有什么内容 事实上 我想查看请求 请求正文和响应 通过查看文档和论坛 我发现我可以取消注释 logback test xml 中的一行 如下所示
  • 加特林 scala 扩展失败,无法找到证据参数的隐式值

    尝试使用一种简洁的扩展方法来运行 gatling 3 0 2 我之前已经在 gatling 2 2 x 中多次使用过该方法 implicit class Extensions val scenario ScenarioBuilder ext
  • Spring Boot中增加Tomcat的连接超时

    如何增加超时 以便在处理响应之前 请求不会超时 Spring Boot 中的 Tomcat 设置 server tomcat max connections 2000 server tomcat max threads 200 server
  • 加特林使一个场景在一系列场景中运行一次

    我有一个场景 我必须执行某些步骤 但我不希望用户多次登录 所以我链接了这些场景 但登录仍然发生多次 有没有办法限制部分链只运行一次 class CreateUserSimulation extends Simulation val logi
  • Ga特林 j.n.ConnectException:地址已在使用中

    当使用 Ga特林运行模拟时 我遇到以下异常 j n ConnectException 地址已在使用中 没有更多信息 当测试的服务器无法响应或超时时是否会发生这种情况 我想确保这是服务器抛出的异常 而不是客户端抛出的异常 我在 Windows
  • 加特林 websocket 场景中的状态检查

    我有一个加特林场景 我订阅了一个 websocket 并想要检查传入消息的内部一致性 例如 通过 websocket 发送的消息是
  • 如何使用加特林检查 If 方法?

    记录在案here https gatling io docs current cheat sheet 加特林checkIf方法用于条件检查 它不可用于ScenarioBuilder的流畅 API 但我可以在CheckSupport班级 我在
  • 使用 Gattle 向 ActiveMQ 发布消息

    我一直在使用Gatling将消息发布到 ActiveMq 服务器 我明白了 java lang SecurityException 无效的用户名 null 或空 不过我使用有效的用户名和密码 这是我的测试代码 抛出了异常 任何有关如何解决此
  • 调试会话

    作为性能测试的一部分 我需要调试会话等 如果我删除 则会运行相同的代码session gt 当我添加它时 它说模拟期间没有发送任何请求 因为它没有发送任何请求 val scn1 scenario LaunchAction exec sess
  • 加特林 - 顺序执行场景

    当我运行如下代码时 setUp scenario1 inject constantUsersPerSec 1 during 1 second scenario2 inject constantUsersPerSec 1 during 1 s
  • 没有 pom.xml 的 Jenkins 的加特林插件

    有没有人尝试过使用加特林插件 https wiki jenkins ci org display JENKINS Gatling Plugin对于詹金斯 但没有maven 我没有 Maven 项目 但我使用终端 bash 脚本 中的 Gad
  • 解析返回给 Gattle 的 Json 响应

    我正在尝试解析服务器返回给加特林的 json 响应 我的服务器响应是 SessionAttribute Session GetServices 3491823964710285818 0 Map gatling http cache eta
  • 加特林负载测试期间编译错误

    我正在尝试编写一个模拟 并且希望能够运行该模拟 我在尝试 mvn gatling execute 时遇到错误 我的 pom 有以下依赖项
  • 从会话中读取数据时如何发出加特林捕获请求?

    根据加特林文档 http gatling io docs 2 1 7 session session api html 我可以在执行场景时使用会话属性 但是 每次我在场景中使用函数文字访问会话时 都会遇到以下异常 error java la

随机推荐