Я новичок в тестировании с Gatling и JMS. В течение долгого времени я буду искать Гатлинга, чтобы просто иметь слушателя JMS, ожидающего, пока сообщение JMS будет помещено в очередь от нашего AUT, но сейчас я просто играю в песочнице, чтобы попытаться справиться с обработкой JMS Гатлинга. , Я смотрел на различные примеры, которые бросал в меня гугл, и лучшее, что я придумал, таково:
package jmspublisher
import io.gatling.core.Predef._
import io.gatling.jms.Predef._
import javax.jms._
import scala.concurrent.duration._
class WebProducer extends Simulation{
// create a ConnectionFactory for ActiveMQ
// search the documentation of your JMS broker
val connectionFactory =
new org.apache.activemq.ActiveMQConnectionFactory("tcp://localhost:61616")
val jmsUsername:String="admin"
val jmsPwd:String="admin"
val jmsConfig = jms
.connectionFactory(connectionFactory)
.usePersistentDeliveryMode
.matchByCorrelationId
val scn = scenario("JMS DSL test").repeat(1) {
exec(jms("req reply testing").requestReply
.queue("jmstestq")
.replyQueue("repQueue")
.textMessage("hello from gatling jms dsl")
.jmsType("textMessage")
.check(simpleCheck(checkBodyTextCorrect)))
}
setUp(scn.inject(atOnceUsers(1))).protocols(jmsConfig)
def checkBodyTextCorrect(m: Message) = {
print ("here")
print (m);
// this assumes that the service just does an "uppercase" transform on the text
m match {
case tm: TextMessage => tm.getText == "HELLO FROM GATLING JMS DSL"
case _ => false
}
}
}
В консоли activeMQ я вижу, как создаются две очереди, сообщение ставится в очередь на jmstestq
, и repQueue
имеет один прослушиватель, подключенный во время выполнения - но, похоже, repQueue
никогда не получает сообщение от jmstestq
, и поэтому ответ никогда не принимается, и проверка никогда не происходит .
Я уверен, что упускаю что-то простое - но что это?!