[jboss-cvs] jboss-ejb3/src/test/org/jboss/ejb3/test/mdb/unit ...
Bill DeCoste
bdecoste at jboss.com
Thu Jul 27 14:29:06 EDT 2006
User: bdecoste
Date: 06/07/27 14:29:06
Modified: src/test/org/jboss/ejb3/test/mdb/unit MDBUnitTestCase.java
Log:
DLQ tests
Revision Changes Path
1.16 +135 -1 jboss-ejb3/src/test/org/jboss/ejb3/test/mdb/unit/MDBUnitTestCase.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: MDBUnitTestCase.java
===================================================================
RCS file: /cvsroot/jboss/jboss-ejb3/src/test/org/jboss/ejb3/test/mdb/unit/MDBUnitTestCase.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- MDBUnitTestCase.java 24 Jul 2006 21:28:31 -0000 1.15
+++ MDBUnitTestCase.java 27 Jul 2006 18:29:06 -0000 1.16
@@ -21,19 +21,27 @@
*/
package org.jboss.ejb3.test.mdb.unit;
+import java.util.Enumeration;
+import java.util.List;
+
import javax.jms.MessageProducer;
import javax.jms.DeliveryMode;
import javax.jms.Queue;
+import javax.jms.QueueBrowser;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
+import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
+import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.jms.TopicConnection;
import javax.jms.TopicConnectionFactory;
import javax.jms.TopicSession;
+import javax.management.Attribute;
+import javax.management.ObjectName;
import javax.naming.InitialContext;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -45,13 +53,15 @@
import org.jboss.security.SecurityAssociation;
import org.jboss.security.SimplePrincipal;
import org.jboss.test.JBossTestCase;
+import org.jboss.util.collection.CollectionsUtil;
+
import junit.framework.Test;
/**
* Sample client for the jboss container.
*
* @author <a href="mailto:bill at burkecentral.com">Bill Burke</a>
- * @version $Id: MDBUnitTestCase.java,v 1.15 2006/07/24 21:28:31 bdecoste Exp $
+ * @version $Id: MDBUnitTestCase.java,v 1.16 2006/07/27 18:29:06 bdecoste Exp $
*/
public class MDBUnitTestCase
@@ -273,6 +283,130 @@
assertEquals(1, status.bmtQueueRan());
}
+ /**
+ * Test that expired messages are moved to a separate queue.
+ */
+ public void testExpiredMessagesMove() throws Exception
+ {
+ QueueConnection connection = null;
+ QueueSender sender = null;
+ QueueSession session = null;
+
+ QueueConnectionFactory factory = getQueueConnectionFactory();
+ connection = factory.createQueueConnection();
+ connection.start();
+ session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+
+ Queue queue = (Queue) getInitialContext().lookup("queue/expirytest");
+ sender = session.createSender(queue);
+
+ Queue dlq = (Queue)getInitialContext().lookup("queue/DLQ");
+
+ ObjectName dlqName = new ObjectName("jboss.mq.destination:service=Queue,name=DLQ");
+ getServer().invoke(dlqName, "removeAllMessages", null, null);
+
+ long now = System.currentTimeMillis();
+
+ TextMessage message = session.createTextMessage();
+ message.setStringProperty("foo", "bar");
+ message.setStringProperty("null", null);
+ String text = "expire on server";
+ message.setText(text);
+
+ sender.send(message, DeliveryMode.PERSISTENT, 4, 1);
+
+ Thread.sleep(1000);
+
+ assertSize(session, queue, 0);
+ assertSize(session, dlq, 1);
+
+ QueueReceiver receiver = session.createReceiver(dlq);
+ message = (TextMessage) receiver.receiveNoWait();
+ assertNotNull(message);
+ assertEquals("QUEUE.expirytest", message.getStringProperty("JBOSS_ORIG_DESTINATION"));
+ assertTrue(message.getLongProperty("JBOSS_ORIG_EXPIRATION") > now);
+ assertEquals(0L, message.getJMSExpiration());
+ assertEquals(text, message.getText());
+ assertEquals("bar", message.getStringProperty("foo"));
+ assertNull(message.getStringProperty("null"));
+
+ sender.close();
+ receiver.close();
+
+ session.close();
+ connection.close();
+ }
+
+ public void testDlqMaxResent() throws Exception
+ {
+ QueueConnection connection = null;
+ QueueSender sender = null;
+ QueueSession session = null;
+
+ QueueConnectionFactory factory = getQueueConnectionFactory();
+ connection = factory.createQueueConnection();
+ connection.start();
+ session = connection.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
+
+ Queue queue = (Queue) getInitialContext().lookup("queue/dlqtest");
+ sender = session.createSender(queue);
+
+ Queue dlq = (Queue)getInitialContext().lookup("queue/DLQ");
+
+ ObjectName dlqName = new ObjectName("jboss.mq.destination:service=Queue,name=DLQ");
+ getServer().invoke(dlqName, "removeAllMessages", null, null);
+
+ TextMessage message = session.createTextMessage();
+ message.setStringProperty("foo", "bar");
+ message.setStringProperty("null", null);
+ String text = "expire on server";
+ message.setText(text);
+
+ sender.send(message);
+
+ Thread.sleep(1000);
+
+ assertSize(session, queue, 0);
+ assertSize(session, dlq, 1);
+
+ QueueReceiver receiver = session.createReceiver(dlq);
+ message = (TextMessage) receiver.receiveNoWait();
+ assertNotNull(message);
+ assertEquals("QUEUE.dlqtest", message.getStringProperty("JBOSS_ORIG_DESTINATION"));
+ assertEquals(0L, message.getJMSExpiration());
+ assertEquals(text, message.getText());
+ assertEquals("bar", message.getStringProperty("foo"));
+ assertNull(message.getStringProperty("null"));
+
+ sender.close();
+ receiver.close();
+
+ session.close();
+ connection.close();
+ }
+
+ private List list(QueueSession session, Queue queue) throws Exception
+ {
+ QueueBrowser browser = session.createBrowser( queue );
+ Enumeration e = browser.getEnumeration();
+ List messages = CollectionsUtil.list(e);
+
+ browser.close();
+
+ return messages;
+ }
+
+ private int size(QueueSession session, Queue queue) throws Exception
+ {
+ List l = list(session, queue);
+ return l.size();
+ }
+
+ private void assertSize(QueueSession session, Queue queue, int size) throws Exception
+ {
+ assertEquals(size, size(session, queue));
+ }
+
protected QueueConnectionFactory getQueueConnectionFactory() throws Exception
{
try
More information about the jboss-cvs-commits
mailing list