[jboss-cvs] JBoss Messaging SVN: r5239 - in branches/Branch_JBMESSAGING_1416: tests/src/org/jboss/test/messaging/jms and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Nov 3 03:24:56 EST 2008


Author: gaohoward
Date: 2008-11-03 03:24:55 -0500 (Mon, 03 Nov 2008)
New Revision: 5239

Modified:
   branches/Branch_JBMESSAGING_1416/src/main/org/jboss/jms/client/state/ProducerState.java
   branches/Branch_JBMESSAGING_1416/tests/src/org/jboss/test/messaging/jms/OrderingGroupMiscTest.java
Log:
JBMESSAGING-1416


Modified: branches/Branch_JBMESSAGING_1416/src/main/org/jboss/jms/client/state/ProducerState.java
===================================================================
--- branches/Branch_JBMESSAGING_1416/src/main/org/jboss/jms/client/state/ProducerState.java	2008-11-03 07:02:03 UTC (rev 5238)
+++ branches/Branch_JBMESSAGING_1416/src/main/org/jboss/jms/client/state/ProducerState.java	2008-11-03 08:24:55 UTC (rev 5239)
@@ -191,7 +191,7 @@
    //let the session reset the ordering group
    public void disableOrderingGroup()
    {
-      if (!isOrderingGroupEnabled)
+      if (isOrderingGroupEnabled)
       {
          setOrderingGroupEnabled(false);
          parent.removeOrderingGroup(orderingGroupName);

Modified: branches/Branch_JBMESSAGING_1416/tests/src/org/jboss/test/messaging/jms/OrderingGroupMiscTest.java
===================================================================
--- branches/Branch_JBMESSAGING_1416/tests/src/org/jboss/test/messaging/jms/OrderingGroupMiscTest.java	2008-11-03 07:02:03 UTC (rev 5238)
+++ branches/Branch_JBMESSAGING_1416/tests/src/org/jboss/test/messaging/jms/OrderingGroupMiscTest.java	2008-11-03 08:24:55 UTC (rev 5239)
@@ -315,6 +315,165 @@
       }
    }
 
+
+   /*
+    * Send 10 ordering messages with default priority and 
+    * then disable ordering, then send 1 message with high
+    * priority. Make sure the last message is received first
+    * and the other is received later but ordered.
+    */
+   public void testOrderingGroupOnOff() throws Exception
+   {
+      Connection conn = null;
+      
+      try
+      {     
+         conn = cf.createConnection();
+   
+         Session producerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         JBossMessageProducer producer = (JBossMessageProducer)producerSess.createProducer(queue1);
+         
+         conn.start();
+
+         
+         TextMessage tmNormal1 = producerSess.createTextMessage("NoOrdering-1");
+         producer.send(tmNormal1, DeliveryMode.PERSISTENT, 6, Message.DEFAULT_TIME_TO_LIVE);
+         TextMessage tmNormal2 = producerSess.createTextMessage("NoOrdering-2");
+         producer.send(tmNormal2, DeliveryMode.PERSISTENT, 7, Message.DEFAULT_TIME_TO_LIVE);
+
+         producer.enableOrderingGroup(null);
+         //sending out ordering messages with priorities ranging from 0 to 5;
+         for (int i = 0; i < 10; i++)
+         {
+            TextMessage tm = producerSess.createTextMessage("Ordering" + i);
+            producer.send(tm, DeliveryMode.PERSISTENT, i%6, Message.DEFAULT_TIME_TO_LIVE);
+         }
+         
+         producer.disableOrderingGroup();
+         
+         TextMessage tmNormal3 = producerSess.createTextMessage("NoOrdering-3");
+         producer.send(tmNormal3, DeliveryMode.PERSISTENT, 8, Message.DEFAULT_TIME_TO_LIVE);
+         TextMessage tmNormal4 = producerSess.createTextMessage("NoOrdering-4");
+         producer.send(tmNormal4, DeliveryMode.PERSISTENT, 9, Message.DEFAULT_TIME_TO_LIVE);
+   
+         Session consumerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         MessageConsumer consumer = consumerSess.createConsumer(queue1);
+
+         TextMessage rmNormal = (TextMessage)consumer.receive(1000);
+         assertNotNull(rmNormal);
+         assertEquals("NoOrdering-4", rmNormal.getText());
+
+         rmNormal = (TextMessage)consumer.receive(1000);
+         assertNotNull(rmNormal);
+         assertEquals("NoOrdering-3", rmNormal.getText());
+
+         rmNormal = (TextMessage)consumer.receive(1000);
+         assertNotNull(rmNormal);
+         assertEquals("NoOrdering-2", rmNormal.getText());
+
+         rmNormal = (TextMessage)consumer.receive(1000);
+         assertNotNull(rmNormal);
+         assertEquals("NoOrdering-1", rmNormal.getText());
+         
+         for (int i = 0; i < 10; i++)
+         {
+            TextMessage rm = (TextMessage)consumer.receive(1000);
+            assertNotNull(rm);
+            assertEquals("Ordering" + i, rm.getText());
+            rm.acknowledge();
+         }
+         
+         assertNull(consumer.receive(1000));
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+      }
+   }
+   
+   /*
+    * create 100 ordering groups, each sending 100 messages
+    * make sure the order of each group is guaranteed.
+    */
+   public void testMultipleOrderingGroups() throws Exception
+   {
+      Connection conn = null;
+      
+      try
+      {     
+         conn = cf.createConnection();
+   
+         Session producerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         JBossMessageProducer producer = (JBossMessageProducer)producerSess.createProducer(queue1);
+         producer.enableOrderingGroup(null);
+   
+         Session consumerSess = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
+         MessageConsumer consumer = consumerSess.createConsumer(queue1);
+         conn.start();
+   
+         final int NUM_MSG = 100;
+         
+         //Send some messages
+         for (int i = 0; i < 100; ++i)
+         {
+            TextMessage tm = producerSess.createTextMessage("ordering" + i);
+            producer.send(tm);
+         }
+         
+         assertRemainingMessages(NUM_MSG);
+   
+         log.trace("Sent messages");
+   
+         int count = 0;
+         while (true)
+         {
+            Message m = consumer.receive(400);
+            if (m == null) break;
+            count++;
+         }
+         
+         assertRemainingMessages(NUM_MSG);
+   
+         log.trace("Received " + count +  " messages");
+
+         //if ordering group, count should be 1.
+         assertEquals(1, count);
+   
+         consumerSess.recover();
+         
+         assertRemainingMessages(NUM_MSG);
+   
+         log.trace("Session recover called");
+   
+         TextMessage m = null;
+   
+         int i = 0;
+         for (; i < 100; ++i)
+         {
+            m = (TextMessage)consumer.receive();
+            log.trace("Received message " + i);
+            m.acknowledge();
+            assertTrue(m.getText().equals("ordering" + i));
+         }
+         
+         assertRemainingMessages(0);
+   
+         // make sure I don't receive anything else
+   
+         checkEmpty(queue1);
+   
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+      }
+   }
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------
@@ -333,13 +492,4 @@
    }
    
    // Inner classes -------------------------------------------------
-   class MessageListenerForSelector implements MessageListener
-   {
-
-      public void onMessage(Message rmsg)
-      {
-         recvMsgs.add((TextMessage)rmsg);
-      }
-      
-   }
 }




More information about the jboss-cvs-commits mailing list