繁体   English   中英

如何打印 Gatling JMS 请求回复

[英]How to print Gatling JMS request reply

我是加特林世界的新手,我尝试使用加特林 JMS 支持将消息发送到 TIBCO EMS(企业消息服务)。 我能够发送消息,但我不知道如何打印请求回复。

对于 http 请求,我只是在 logback-test.xml 这一行中取消注释:

<logger name="io.gatling.http.engine.response" level="TRACE" />

这是我的 gatling JMS 设置:

object GetEMSConn {


  val jndiBasedConnectionFactory = jmsJndiConnectionFactory
    .connectionFactoryName("FACTORY_NAME")
    .url("tibjmsnaming://JNDI-A.company-name")
    .credentials("anonymous", "xxx")
    .contextFactory("com.tibco.tibjms.naming.TibjmsInitialContextFactory")

  val jmsProtocol = jms
    .connectionFactory(jndiBasedConnectionFactory)
    //    .matchByCorrelationId
    .matchByMessageId
    .useNonPersistentDeliveryMode
    //    .usePersistentDeliveryMode
    .credentials("credentials", "password")
    .listenerThreadCount(1)
    .replyTimeout(1000.seconds)
}
object JMSScenario {

  val feedData = csv("testData/data.csv").circular

val jmsScenario = scenario("JMS DSL test")
    .repeat(5) {
      feed(feedCID)
        .exec(jms("My test")
          .requestReply
          .queue("MY_QUEUE")
          .textMessage("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope</soapenv:Body>\n</soapenv:Envelope>")
          .jmsType("SoapAction")
        )
    }
}
class JMSSimulation extends Simulation {

  private val jmsEx = JMSScenario.jmsScenario
    .inject(
      atOnceUsers(1)
    ).protocols(GetEMSConn.jmsProtocol)

setUp(
    jmsEx
  )
    .maxDuration(10.seconds)
    .assertions(global.responseTime.max.lt(5000))
}

当我运行上面的代码时,我只得到这个:

Simulation com.simulations.JMSSimulation started...

================================================================================
2022-04-06 12:17:03                                           0s elapsed
---- Requests ------------------------------------------------------------------
> Global                                                   (OK=5      KO=0     )
> My test                                                  (OK=5      KO=0     )

---- JMS DSL test --------------------------------------------------------------
[##########################################################################]100%
          waiting: 0      / active: 0      / done: 1     
================================================================================

Simulation com.simulations.JMSSimulation completed in 0 seconds
Parsing log file(s)...
Parsing log file(s) done
Generating reports...

================================================================================
---- Global Information --------------------------------------------------------
> request count                                          5 (OK=5      KO=0     )
> min response time                                     20 (OK=20     KO=-     )
> max response time                                     46 (OK=46     KO=-     )
> mean response time                                    28 (OK=28     KO=-     )
> std deviation                                          9 (OK=9      KO=-     )
> response time 50th percentile                         24 (OK=24     KO=-     )
> response time 75th percentile                         28 (OK=28     KO=-     )
> response time 95th percentile                         42 (OK=42     KO=-     )
> response time 99th percentile                         45 (OK=45     KO=-     )
> mean requests/sec                                      5 (OK=5      KO=-     )
---- Response Time Distribution ------------------------------------------------
> t < 800 ms                                             5 (100%)
> 800 ms < t < 1200 ms                                   0 (  0%)
> t > 1200 ms                                            0 (  0%)
> failed                                                 0 (  0%)
================================================================================

我还尝试使用simpleCheck()方法进行检查:

object JMSScenario {

  val feedData = csv("testData/data.csv").circular

val jmsScenario = scenario("JMS DSL test")
    .repeat(5) {
      feed(feedCID)
        .exec(jms("My test")
          .requestReply
          .queue("MY_QUEUE")
          .textMessage("<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope</soapenv:Body>\n</soapenv:Envelope>")
          .jmsType("SoapAction")
          .check(simpleCheck(checkBodyTextCorrect))
        )
    }

  def checkBodyTextCorrect(m: Message) = {
    // this assumes that the service just does an "uppercase" transform on the text
    print("in check \n")
    m match {
      case tm: TextMessage => tm.getText == "<"
      case _ => false
    }
  }
}

但是当我检查时,它只是没有通过测试,我不明白为什么......

---- Requests ------------------------------------------------------------------
> Global                                                   (OK=0      KO=5     )
> My test                                                  (OK=0      KO=5     )
---- Errors --------------------------------------------------------------------
> JMS check failed                                                    5 (100.0%)

谁能帮我提供有关如何打印请求回复的信息? :)

我找到了解决方案:

src/test/resources/logback-test.xml下一行:

<logger name="io.gatling.jms" level="TRACE"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM