use of com.navercorp.test.pinpoint.plugin.activemq.MessageReceiveHandler in project pinpoint by naver.
the class ActiveMQClientITBase method testTopicPoll.
@Test
public void testTopicPoll() throws Exception {
// Given
final String testTopicName = "TestPollTopic";
final ActiveMQTopic testTopic = new ActiveMQTopic(testTopicName);
final String testMessage = "Hello World for Topic!";
// create producer
final ActiveMQSession producerSession = ActiveMQClientITHelper.createSession(getProducerBrokerName(), getProducerBrokerUrl());
final MessageProducer producer = new MessageProducerBuilder(producerSession, testTopic).waitTillStarted().build();
final TextMessage expectedTextMessage = producerSession.createTextMessage(testMessage);
// create 2 consumers
final ActiveMQSession consumer1Session = ActiveMQClientITHelper.createSession(getConsumerBrokerName(), getConsumerBrokerUrl());
final MessageConsumer consumer1 = new MessageConsumerBuilder(consumer1Session, testTopic).waitTillStarted().build();
final MessageReceiveHandler messageReceiveHandler1 = new MessageReceiveHandler();
final PollingMessageReceiver pollingMessageReceiver1 = new PollingMessageReceiver(consumer1, messageReceiveHandler1);
final ActiveMQSession consumer2Session = ActiveMQClientITHelper.createSession(getConsumerBrokerName(), getConsumerBrokerUrl());
final MessageConsumer consumer2 = new MessageConsumerBuilder(consumer2Session, testTopic).waitTillStarted().build();
final MessageReceiveHandler messageReceiveHandler2 = new MessageReceiveHandler();
final PollingMessageReceiver pollingMessageReceiver2 = new PollingMessageReceiver(consumer2, messageReceiveHandler2);
// When
pollingMessageReceiver1.start();
pollingMessageReceiver2.start();
producer.send(expectedTextMessage);
messageReceiveHandler1.await(5000L);
messageReceiveHandler2.await(5000L);
pollingMessageReceiver1.stop();
pollingMessageReceiver2.stop();
// Then
assertNoConsumerError(pollingMessageReceiver1.getException());
assertNoConsumerError(pollingMessageReceiver2.getException());
PluginTestVerifier verifier = PluginTestVerifierHolder.getInstance();
verifier.printCache();
// Wait till all traces are recorded (consumer traces are recorded from another thread)
verifier.awaitTraceCount(11, 100, 5000);
verifier.verifyTraceCount(11);
verifyProducerSendEvent(verifier, testTopic, producerSession);
verifyConsumerConsumeEvent(verifier, testTopic, consumer1Session);
verifyConsumerConsumeEvent(verifier, testTopic, consumer2Session);
ExpectedTrace asyncTrace = event(ServiceType.ASYNC.getName(), "Asynchronous Invocation");
Method handleMessageMethod = MessageReceiveHandler.class.getDeclaredMethod("handleMessage", Message.class);
ExpectedTrace handleMessageTrace = event(ServiceType.INTERNAL_METHOD.getName(), handleMessageMethod);
Method printMessageMethod = MessagePrinter.class.getDeclaredMethod("printMessage", Message.class);
ExpectedTrace printMessageTrace = event(ServiceType.INTERNAL_METHOD.getName(), printMessageMethod);
for (int i = 0; i < 2; ++i) {
verifier.verifyDiscreteTrace(asyncTrace, handleMessageTrace, printMessageTrace);
}
verifier.verifyTraceCount(0);
}
use of com.navercorp.test.pinpoint.plugin.activemq.MessageReceiveHandler in project pinpoint by naver.
the class ActiveMQClientITBase method testQueuePoll.
@Test
public void testQueuePoll() throws Exception {
// Given
final String testQueueName = "TestPollQueue";
final ActiveMQQueue testQueue = new ActiveMQQueue(testQueueName);
final String testMessage = "Hello World for Queue!";
// create producer
final ActiveMQSession producerSession = ActiveMQClientITHelper.createSession(getProducerBrokerName(), getProducerBrokerUrl());
final MessageProducer producer = new MessageProducerBuilder(producerSession, testQueue).waitTillStarted().build();
final TextMessage expectedTextMessage = producerSession.createTextMessage(testMessage);
// create consumer
final ActiveMQSession consumerSession = ActiveMQClientITHelper.createSession(getConsumerBrokerName(), getConsumerBrokerUrl());
final MessageConsumer consumer = new MessageConsumerBuilder(consumerSession, testQueue).waitTillStarted().build();
final MessageReceiveHandler messageReceiveHandler = new MessageReceiveHandler();
final PollingMessageReceiver pollingMessageReceiver = new PollingMessageReceiver(consumer, messageReceiveHandler);
// When
pollingMessageReceiver.start();
producer.send(expectedTextMessage);
messageReceiveHandler.await(5000L);
pollingMessageReceiver.stop();
// Then
assertNoConsumerError(pollingMessageReceiver.getException());
PluginTestVerifier verifier = PluginTestVerifierHolder.getInstance();
verifier.printCache();
// Wait till all traces are recorded (consumer traces are recorded from another thread)
verifier.awaitTraceCount(6, 100, 5000);
verifier.verifyTraceCount(6);
verifyProducerSendEvent(verifier, testQueue, producerSession);
verifyConsumerConsumeEvent(verifier, testQueue, consumerSession);
verifier.verifyTrace(event(ServiceType.ASYNC.getName(), "Asynchronous Invocation"));
Method handleMessageMethod = MessageReceiveHandler.class.getDeclaredMethod("handleMessage", Message.class);
verifier.verifyTrace(event(ServiceType.INTERNAL_METHOD.getName(), handleMessageMethod));
Method printMessageMethod = MessagePrinter.class.getDeclaredMethod("printMessage", Message.class);
verifier.verifyTrace(event(ServiceType.INTERNAL_METHOD.getName(), printMessageMethod));
verifier.verifyTraceCount(0);
}
Aggregations