[英]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.