package org.skyscreamer.nevado.jms.metadata;
import org.junit.Assert;
import org.junit.Test;
import org.skyscreamer.nevado.jms.AbstractJMSTest;
import org.skyscreamer.nevado.jms.NevadoSession;
import javax.jms.*;
/**
* Created by IntelliJ IDEA.
* User: Carter Page
* Date: 3/28/12
* Time: 8:37 AM
*/
public class JMSExpirationTest extends AbstractJMSTest {
@Test
public void testControl() throws JMSException {
Message msg = createSession().createMessage();
Message msgOut = sendAndReceive(msg);
Assert.assertEquals(0, msg.getJMSExpiration());
}
@Test
public void testSetExpiration() throws JMSException {
NevadoSession session = createSession();
Message msg = session.createMessage();
Queue tempQueue = createTempQueue(session);
MessageProducer msgProducer = session.createProducer(tempQueue);
msgProducer.setDisableMessageID(true);
long time = System.currentTimeMillis();
msgProducer.send(msg, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, 60000);
Assert.assertEquals(time + 60000, msg.getJMSExpiration(), 100);
Message msgOut = session.createConsumer(tempQueue).receive();
Assert.assertNotNull("Got null message back", msgOut);
msgOut.acknowledge();
Assert.assertEquals(time + 60000, msgOut.getJMSExpiration(), 100);
}
@Test
public void testExpire() throws JMSException, InterruptedException {
NevadoSession session = createSession();
Message msgToExpire = session.createMessage();
Message msgWithoutExpire = session.createMessage();
Queue tempQueue = createTempQueue(session);
MessageProducer msgProducer = session.createProducer(tempQueue);
msgProducer.send(msgToExpire, Message.DEFAULT_DELIVERY_MODE, Message.DEFAULT_PRIORITY, 10);
msgProducer.send(msgWithoutExpire);
Thread.sleep(10);
Message msgOut = session.createConsumer(tempQueue).receive();
Assert.assertNotNull("Got null message back", msgOut);
msgOut.acknowledge();
Assert.assertEquals("Should skip the expired message", msgWithoutExpire.getJMSMessageID(),
msgOut.getJMSMessageID());
}
}