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.*; import java.util.HashSet; import java.util.Set; /** * Test general behaviors from JMS 1.1, sec 5.1 * * @author Carter Page <carter@skyscreamer.org> */ public class GeneralQueueTest extends AbstractJMSTest { @Test public void testMixedMessages() throws JMSException { NevadoSession session = createSession(); Queue testQueue = createTempQueue(session); MessageProducer producer = session.createProducer(testQueue); Set<Message> messagesIn = new HashSet<Message>(); messagesIn.add(session.createBytesMessage()); messagesIn.add(session.createMapMessage()); messagesIn.add(session.createObjectMessage()); messagesIn.add(session.createStreamMessage()); messagesIn.add(session.createTextMessage()); for(Message message : messagesIn) { producer.send(message); } MessageConsumer consumer = session.createConsumer(testQueue); Set<Message> messagesOut = new HashSet<Message>(); for(int i = 0 ; i < messagesIn.size() ; ++i) { messagesOut.add(consumer.receive(1000)); } for(Message message : messagesIn) { Assert.assertTrue("Did not get message of type " + message.getClass().getName() + " back", messagesOut.contains(message)); } } @Test public void testCommonAndPTPAreSameImplementation() { Assert.assertTrue(ConnectionFactory.class.isAssignableFrom(NevadoConnectionFactory.class)); Assert.assertTrue(QueueConnectionFactory.class.isAssignableFrom(NevadoConnectionFactory.class)); Assert.assertTrue(Connection.class.isAssignableFrom(NevadoConnection.class)); Assert.assertTrue(QueueConnection.class.isAssignableFrom(NevadoQueueConnection.class)); Assert.assertTrue(NevadoConnection.class.isAssignableFrom(NevadoQueueConnection.class)); Assert.assertTrue(Queue.class.isAssignableFrom(NevadoQueue.class)); Assert.assertTrue(NevadoDestination.class.isAssignableFrom(NevadoQueue.class)); Assert.assertTrue(Destination.class.isAssignableFrom(NevadoDestination.class)); Assert.assertTrue(Session.class.isAssignableFrom(NevadoSession.class)); Assert.assertTrue(QueueSession.class.isAssignableFrom(NevadoQueueSession.class)); Assert.assertTrue(NevadoSession.class.isAssignableFrom(NevadoQueueSession.class)); Assert.assertTrue(MessageProducer.class.isAssignableFrom(NevadoMessageProducer.class)); Assert.assertTrue(QueueSender.class.isAssignableFrom(NevadoMessageProducer.class)); Assert.assertTrue(MessageConsumer.class.isAssignableFrom(NevadoMessageConsumer.class)); Assert.assertTrue(QueueReceiver.class.isAssignableFrom(NevadoMessageConsumer.class)); } @Test public void testQueueFacilities() throws JMSException { QueueConnectionFactory connectionFactory = new NevadoConnectionFactory(_sqsConnectorFactory); QueueConnection connection = createQueueConnection(connectionFactory); connection.start(); QueueSession session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); TemporaryQueue queue = session.createTemporaryQueue(); QueueSender sender = session.createSender(queue); QueueReceiver receiver = session.createReceiver(queue); TextMessage testMessage = session.createTextMessage(RandomData.readString()); sender.send(testMessage); Message msgOut = receiver.receive(1000); Assert.assertNotNull(msgOut); Assert.assertTrue(msgOut instanceof TextMessage); Assert.assertEquals(testMessage, (TextMessage)msgOut); connection.close(); } }