[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