[jboss-cvs] JBoss Messaging SVN: r6247 - trunk/tests/jms-tests/src/org/jboss/test/messaging/jms.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Mar 31 16:51:39 EDT 2009


Author: clebert.suconic at jboss.com
Date: 2009-03-31 16:51:39 -0400 (Tue, 31 Mar 2009)
New Revision: 6247

Modified:
   trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java
   trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java
Log:
Adding two jms tests
ACKTest - It was waiting on my workspace for a Tim Fox's commit
DurableTest - A condition I wanted to validate while I was working on examples and I realized there were not tests for it

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java	2009-03-31 20:04:44 UTC (rev 6246)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/AcknowledgementTest.java	2009-03-31 20:51:39 UTC (rev 6247)
@@ -1526,4 +1526,93 @@
       }
 
    }
+   
+   public void testTransactionalIgnoreACK() throws Exception
+   {
+      Connection conn = null;
+
+      try
+      {
+         conn = cf.createConnection();
+
+         Session producerSess = conn.createSession(true, Session.SESSION_TRANSACTED);
+         MessageProducer producer = producerSess.createProducer(queue1);
+
+         Session consumerSess = conn.createSession(true, Session.SESSION_TRANSACTED);
+         MessageConsumer consumer = consumerSess.createConsumer(queue1);
+         conn.start();
+
+         final int NUM_MESSAGES = 20;
+
+         // Send some messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            Message m = producerSess.createMessage();
+            m.acknowledge(); // This is invalid but should be ignored accordingly to the javadoc
+            producer.send(m);
+         }
+         
+         assertRemainingMessages(0);
+
+         producerSess.rollback();
+
+         // Send some messages
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            Message m = producerSess.createMessage();
+            m.acknowledge(); /// should be ignored
+            producer.send(m);
+         }
+         assertRemainingMessages(0);
+
+         producerSess.commit();
+
+         assertRemainingMessages(NUM_MESSAGES);
+
+
+         int count = 0;
+         while (true)
+         {
+            Message m = consumer.receive(200);
+            if (m == null)
+            {
+               break;
+            }
+            m.acknowledge();
+            count++;
+         }
+                  
+         assertRemainingMessages(NUM_MESSAGES);
+
+         assertEquals(count, NUM_MESSAGES);
+
+         consumerSess.rollback();
+
+         assertRemainingMessages(NUM_MESSAGES);
+
+         int i = 0;
+         for (; i < NUM_MESSAGES; i++)
+         {
+            consumer.receive();
+         }
+
+         assertRemainingMessages(NUM_MESSAGES);
+
+         // if I don't receive enough messages, the test will timeout
+
+         consumerSess.commit();
+
+         assertRemainingMessages(0);
+
+         checkEmpty(queue1);
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+      }
+   }
+   
 }

Modified: trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java
===================================================================
--- trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java	2009-03-31 20:04:44 UTC (rev 6246)
+++ trunk/tests/jms-tests/src/org/jboss/test/messaging/jms/DurableSubscriptionTest.java	2009-03-31 20:51:39 UTC (rev 6247)
@@ -457,7 +457,75 @@
          }
       }
    }
+   
+   
+   public void testNoLocal() throws Exception
+   {
+      internalTestNoLocal(true);
+      internalTestNoLocal(false);
+   }
+   
+   private void internalTestNoLocal(boolean noLocal) throws Exception
+   {
+      Connection conn1 = null;
+      Connection conn2 = null;
 
+      try
+      {
+         conn1 = cf.createConnection();
+         conn1.setClientID(".client.id.with.periods.");
+         
+         conn2 = cf.createConnection();
+         conn2.setClientID(".client.id.with.periods2.");
+
+         Session s1 = conn1.createSession(false, Session.AUTO_ACKNOWLEDGE);
+         Session s2 = conn2.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+         TopicSubscriber subscriber1 = s1.createDurableSubscriber(topic1, ".subscription.name.with.periods.", null, noLocal);
+         TopicSubscriber subscriber2 = s2.createDurableSubscriber(topic1, ".subscription.name.with.periods.", null, false);
+
+         
+         s1.createProducer(topic1).send(s1.createTextMessage("Subscription test"));
+
+         conn1.start();
+
+         Message m = subscriber1.receive(100L);
+
+         if (noLocal)
+         {
+            assertNull(m);
+         }
+         else
+         {
+            assertNotNull(m);
+         }
+         
+         conn2.start();
+         
+         m = subscriber2.receive(1000l);
+         
+         assertNotNull(m);
+         assertTrue(m instanceof TextMessage);
+
+         subscriber1.close();
+         subscriber2.close();
+
+         s1.unsubscribe(".subscription.name.with.periods.");
+         s2.unsubscribe(".subscription.name.with.periods.");
+      }
+      finally
+      {
+         if (conn1 != null)
+         {
+            conn1.close();
+         }
+         if (conn2 != null)
+         {
+            conn2.close();
+         }
+      }
+   }
+
    // Package protected ---------------------------------------------
 
    // Protected -----------------------------------------------------




More information about the jboss-cvs-commits mailing list