[jboss-cvs] JBoss Messaging SVN: r2029 - in trunk: src/main/org/jboss/messaging/core/message and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 23 21:35:46 EST 2007


Author: ovidiu.feodorov at jboss.com
Date: 2007-01-23 21:35:46 -0500 (Tue, 23 Jan 2007)
New Revision: 2029

Added:
   trunk/tests/src/org/jboss/test/messaging/jms/message/ExpiredMessageTest.java
Modified:
   trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
   trunk/src/main/org/jboss/messaging/core/message/RoutableSupport.java
   trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java
Log:
Extra logging and an extra message expiry tests, while investigating http://jira.jboss.com/jira/browse/JBMESSAGING-775


Modified: trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java
===================================================================
--- trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java	2007-01-24 01:03:06 UTC (rev 2028)
+++ trunk/src/main/org/jboss/jms/server/endpoint/ServerSessionEndpoint.java	2007-01-24 02:35:46 UTC (rev 2029)
@@ -736,11 +736,11 @@
    
    void expireDelivery(Delivery del, Queue expiryQueue) throws Throwable
    {
-      if (trace) { log.trace("Reference has expired: " + del.getReference()); }
+      if (trace) { log.trace(this + " detected expired message " + del.getReference()); }
       
       if (expiryQueue != null)
       {
-         if (trace) { log.trace("Sending to expiry queue"); }
+         if (trace) { log.trace(this + " sending expired message to expiry queue " + expiryQueue); }
          
          JBossMessage copy = makeCopyForDLQOrExpiry(true, del);
          
@@ -748,7 +748,7 @@
       }
       else
       {
-         log.warn("No expiry queue has been configured so removing the reference");
+         log.warn("No expiry queue has been configured so removing expired " +  del.getReference());
       }
    }
       

Modified: trunk/src/main/org/jboss/messaging/core/message/RoutableSupport.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/message/RoutableSupport.java	2007-01-24 01:03:06 UTC (rev 2028)
+++ trunk/src/main/org/jboss/messaging/core/message/RoutableSupport.java	2007-01-24 02:35:46 UTC (rev 2029)
@@ -284,10 +284,7 @@
       if (overtime >= 0)
       {
          // discard it
-         if (trace)
-         {
-            log.trace("Message " + messageID + " expired by " + overtime + " ms");
-         }
+         if (trace) { log.trace(this + " expired by " + overtime + " ms"); }
          
          return true;
       }

Added: trunk/tests/src/org/jboss/test/messaging/jms/message/ExpiredMessageTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/message/ExpiredMessageTest.java	                        (rev 0)
+++ trunk/tests/src/org/jboss/test/messaging/jms/message/ExpiredMessageTest.java	2007-01-24 02:35:46 UTC (rev 2029)
@@ -0,0 +1,104 @@
+/**
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.test.messaging.jms.message;
+
+import org.jboss.test.messaging.MessagingTestCase;
+import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.logging.Logger;
+
+import javax.naming.InitialContext;
+import javax.jms.ConnectionFactory;
+import javax.jms.Queue;
+import javax.jms.Connection;
+import javax.jms.Session;
+import javax.jms.MessageProducer;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+
+/**
+ * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
+ * @version <tt>$Revision$</tt>
+ * $Id$
+ */
+public class ExpiredMessageTest extends MessagingTestCase
+{
+   // Constants ------------------------------------------------------------------------------------
+
+   private static final Logger log = Logger.getLogger(ExpiredMessageTest.class);
+
+   // Static ---------------------------------------------------------------------------------------
+
+   // Attributes -----------------------------------------------------------------------------------
+
+   private InitialContext ic;
+
+   // Constructors ---------------------------------------------------------------------------------
+
+   public ExpiredMessageTest(String name)
+   {
+      super(name);
+   }
+
+   // Public ---------------------------------------------------------------------------------------
+
+   public void testSimpleExpiration() throws Exception
+   {
+      ConnectionFactory cf = (ConnectionFactory)ic.lookup("/ConnectionFactory");
+      Queue queue = (Queue)ic.lookup("/queue/expiredMessageTestQueue");
+
+      Connection conn = cf.createConnection();
+
+      Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      MessageProducer prod = session.createProducer(queue);
+      prod.setTimeToLive(1);
+
+      Message m = session.createTextMessage("This message will die");
+
+      prod.send(m);
+
+      // wait for the message to die
+
+      Thread.sleep(1000);
+
+      MessageConsumer cons = session.createConsumer(queue);
+
+      conn.start();
+
+      assertNull(cons.receive(3000));
+   }
+
+   // Package protected ----------------------------------------------------------------------------
+
+   // Protected ------------------------------------------------------------------------------------
+
+   protected void setUp() throws Exception
+   {
+      super.setUp();
+
+      ServerManagement.start("all");
+
+      ic = new InitialContext(ServerManagement.getJNDIEnvironment());
+
+      ServerManagement.deployQueue("expiredMessageTestQueue");
+
+      log.debug("setup done");
+   }
+
+   protected void tearDown() throws Exception
+   {
+      ServerManagement.undeployQueue("expiredMessageTestQueue");
+
+      ServerManagement.stop();
+
+      super.tearDown();
+   }
+
+   // Private --------------------------------------------------------------------------------------
+
+   // Inner classes --------------------------------------------------------------------------------
+}


Property changes on: trunk/tests/src/org/jboss/test/messaging/jms/message/ExpiredMessageTest.java
___________________________________________________________________
Name: svn:keywords
   + Id LastChangedDate Author Revision

Modified: trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java	2007-01-24 01:03:06 UTC (rev 2028)
+++ trunk/tests/src/org/jboss/test/messaging/jms/selector/SelectorTest.java	2007-01-24 02:35:46 UTC (rev 2029)
@@ -255,92 +255,94 @@
 
    // http://jira.jboss.org/jira/browse/JBMESSAGING-775
 
-//   public void testManyQueueWithExpired() throws Exception
-//   {
-//      String selector1 = "beatle = 'john'";
-//
-//      Connection conn = cf.createConnection();
-//      conn.start();
-//
-//      Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-//
-//      MessageProducer prod = sess.createProducer(queue);
-//
-//      for (int j = 0; j < 100; j++)
-//      {
-//         Message m = sess.createMessage();
-//
-//         m.setStringProperty("beatle", "john");
-//
-//         prod.setTimeToLive(0);
-//
-//         prod.send(m);
-//
-//         m = sess.createMessage();
-//
-//         m.setStringProperty("beatle", "john");
-//
-//         prod.setTimeToLive(1);
-//
-//         prod.send(m);
-//
-//         m = sess.createMessage();
-//
-//         m.setStringProperty("beatle", "kermit the frog");
-//
-//         prod.setTimeToLive(0);
-//
-//         prod.send(m);
-//
-//         m = sess.createMessage();
-//
-//         m.setStringProperty("beatle", "kermit the frog");
-//
-//         m.setJMSExpiration(System.currentTimeMillis());
-//
-//         prod.setTimeToLive(1);
-//
-//         prod.send(m);
-//      }
-//
-//      Thread.sleep(2000);
-//
-//      MessageConsumer cons1 = sess.createConsumer(queue, selector1);
-//
-//      for (int j = 0; j < 100; j++)
-//      {
-//         Message m = cons1.receive(1000);
-//
-//         assertNotNull(m);
-//
-//         assertEquals("john", m.getStringProperty("beatle"));
-//      }
-//
-//      Message m = cons1.receive(1000);
-//
-//      assertNull(m);
-//
-//      String selector2 = "beatle = 'kermit the frog'";
-//
-//      MessageConsumer cons2 = sess.createConsumer(queue, selector2);
-//
-//      for (int j = 0; j < 100; j++)
-//      {
-//         m = cons2.receive(1000);
-//
-//         assertNotNull(m);
-//
-//         assertEquals("kermit the frog", m.getStringProperty("beatle"));
-//      }
-//
-//      m = cons2.receive(1000);
-//
-//      assertNull(m);
-//
-//
-//      sess.close();
-//   }
+   public void testManyQueueWithExpired() throws Exception
+   {
+      String selector1 = "beatle = 'john'";
 
+      Connection conn = cf.createConnection();
+      conn.start();
+
+      Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+      int NUM_MESSAGES = 2;
+
+      MessageProducer prod = sess.createProducer(queue);
+
+      for (int j = 0; j < NUM_MESSAGES; j++)
+      {
+         Message m = sess.createMessage();
+
+         m.setStringProperty("beatle", "john");
+
+         prod.setTimeToLive(0);
+
+         prod.send(m);
+
+         m = sess.createMessage();
+
+         m.setStringProperty("beatle", "john");
+
+         prod.setTimeToLive(1);
+
+         prod.send(m);
+
+         m = sess.createMessage();
+
+         m.setStringProperty("beatle", "kermit the frog");
+
+         prod.setTimeToLive(0);
+
+         prod.send(m);
+
+         m = sess.createMessage();
+
+         m.setStringProperty("beatle", "kermit the frog");
+
+         m.setJMSExpiration(System.currentTimeMillis());
+
+         prod.setTimeToLive(1);
+
+         prod.send(m);
+      }
+
+      Thread.sleep(2000);
+
+      MessageConsumer cons1 = sess.createConsumer(queue, selector1);
+
+      for (int j = 0; j < NUM_MESSAGES; j++)
+      {
+         Message m = cons1.receive(1000);
+
+         assertNotNull(m);
+
+         assertEquals("john", m.getStringProperty("beatle"));
+      }
+
+      Message m = cons1.receive(1000);
+
+      assertNull(m);
+
+      String selector2 = "beatle = 'kermit the frog'";
+
+      MessageConsumer cons2 = sess.createConsumer(queue, selector2);
+
+      for (int j = 0; j < NUM_MESSAGES; j++)
+      {
+         m = cons2.receive(1000);
+
+         assertNotNull(m);
+
+         assertEquals("kermit the frog", m.getStringProperty("beatle"));
+      }
+
+      m = cons2.receive(1000);
+
+      assertNull(m);
+
+
+      sess.close();
+   }
+
    public void testManyRedeliveriesTopic() throws Exception
    {
       String selector1 = "beatle = 'john'";




More information about the jboss-cvs-commits mailing list