package org.skyscreamer.nevado.jms.facilities;
import junit.framework.Assert;
import org.junit.Test;
import org.skyscreamer.nevado.jms.AbstractJMSTest;
import org.skyscreamer.nevado.jms.NevadoMessageConsumer;
import org.skyscreamer.nevado.jms.NevadoSession;
import org.skyscreamer.nevado.jms.message.NevadoMessage;
import org.skyscreamer.nevado.jms.util.RandomData;
import javax.jms.*;
import java.util.Enumeration;
/**
* Test Nevado implementation of queue browser
*
* @author Carter Page <carter@skyscreamer.org>
*/
public class QueueBrowserTest extends AbstractJMSTest {
private static final int NUM_MESSAGES = 5;
@Test
public void nop() { /* Remove after enabling tests */ }
// @Test - TODO - QueueBrowser deferred
public void testQueueBrowser() throws JMSException, InterruptedException {
NevadoSession session = createSession();
TextMessage[] msgs = new TextMessage[NUM_MESSAGES];
for(int i = 0 ; i < NUM_MESSAGES ; ++i) {
msgs[i] = session.createTextMessage(RandomData.readString());
}
Queue testQueue = session.createTemporaryQueue();
MessageProducer producer = session.createProducer(testQueue);
for(int i = 0 ; i < NUM_MESSAGES ; ++i) {
producer.send(msgs[i]);
Thread.sleep(200);
}
QueueBrowser browser = session.createBrowser(testQueue);
Enumeration e = browser.getEnumeration();
for(int i = 0 ; e.hasMoreElements() ; ++i )
{
NevadoMessage msg = (NevadoMessage)e.nextElement();
Assert.assertEquals("Message " + i, msgs[i], msg);
++i;
}
NevadoMessageConsumer consumer = session.createConsumer(testQueue);
for(int i = 0 ; i < NUM_MESSAGES ; ++i) {
NevadoMessage msg = consumer.receiveNoWait();
Assert.assertEquals(msgs[i], msg);
}
}
// @Test - TODO - QueueBrowser deferred
public void testBrowseEmptyQueue() throws JMSException {
NevadoSession session = createSession();
Queue testQueue = session.createTemporaryQueue();
QueueBrowser browser = session.createBrowser(testQueue);
Assert.assertFalse(browser.getEnumeration().hasMoreElements());
}
// @Test(expected = IllegalStateException.class) - TODO - QueueBrowser deferred
public void testAcknowledgeBrowsedMessage() throws JMSException {
NevadoSession session = createSession();
Queue testQueue = session.createTemporaryQueue();
MessageProducer producer = session.createProducer(testQueue);
producer.send(session.createMessage());
QueueBrowser browser = session.createBrowser(testQueue);
Assert.assertTrue(browser.getEnumeration().hasMoreElements());
((NevadoMessage)browser.getEnumeration().nextElement()).acknowledge();
}
}