package org.skyscreamer.nevado.jms.destination; import junit.framework.Assert; import org.junit.Test; import org.skyscreamer.nevado.jms.*; import org.skyscreamer.nevado.jms.util.RandomData; import javax.jms.*; /** * Test basic topic calls. * * @author Carter Page <carter@skyscreamer.org> */ public class TopicSubscriberTest extends AbstractJMSTest { @Test public void testTopics() throws JMSException, InterruptedException { NevadoSession session = createSession(); NevadoTopic testTopic = new NevadoTopic("testTopic"); NevadoMessageProducer producer = session.createProducer(testTopic); NevadoMessageConsumer consumer1 = session.createConsumer(testTopic); NevadoMessageConsumer consumer2 = session.createConsumer(testTopic); TextMessage testMessage = session.createTextMessage(RandomData.readString()); producer.send(testMessage); TextMessage msgOut1 = (TextMessage)consumer1.receive(1000); TextMessage msgOut2 = (TextMessage)consumer2.receive(1000); Assert.assertEquals(testMessage.getText(), msgOut1.getText()); Assert.assertEquals(testMessage.getText(), msgOut2.getText()); producer.close(); consumer1.close(); consumer2.close(); getConnection().deleteTopic(testTopic); } @Test public void testNoLocal() throws JMSException { getConnection().close(); // Don't use the provided connection NevadoConnection conn1 = createConnection(getConnectionFactory()); conn1.start(); NevadoConnection conn2 = createConnection(getConnectionFactory()); conn2.start(); NevadoSession session1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE); NevadoSession session2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE); NevadoTopic testTopic = new NevadoTopic("testTopic"); NevadoMessageProducer producer1 = session1.createProducer(testTopic); NevadoMessageProducer producer2 = session2.createProducer(testTopic); NevadoMessageConsumer consumer1 = session1.createConsumer(testTopic, null, true); NevadoMessageConsumer consumer2 = session2.createConsumer(testTopic, null, true); NevadoMessageConsumer consumer3 = session2.createConsumer(testTopic, null, false); TextMessage testMessage1 = session1.createTextMessage(RandomData.readString()); producer1.send(testMessage1); TextMessage testMessage2 = session2.createTextMessage(RandomData.readString()); producer2.send(testMessage2); Assert.assertEquals(testMessage2, (TextMessage)consumer1.receive(1000)); Assert.assertNull((TextMessage)consumer1.receive(200)); Assert.assertEquals(testMessage1, (TextMessage)consumer2.receive(1000)); Assert.assertNull((TextMessage)consumer2.receive(200)); TextMessage msgOut1 = (TextMessage)consumer3.receive(1000); TextMessage msgOut2 = (TextMessage)consumer3.receive(1000); compareTextMessages(new TextMessage[] {testMessage1, testMessage2}, new TextMessage[] {msgOut1, msgOut2}); conn1.close(); conn2.close(); } }