Author: rajith
Date: Fri Mar 11 01:02:44 2011
New Revision: 1080417

URL: http://svn.apache.org/viewvc?rev=1080417&view=rev
Log:
QPID-2732
Refactored the test a bit and added a test for default reliability modes for 
Topics and Queues.

Modified:
    
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java

Modified: 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java?rev=1080417&r1=1080416&r2=1080417&view=diff
==============================================================================
--- 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
 (original)
+++ 
qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/test/client/destination/AddressBasedDestinationTest.java
 Fri Mar 11 01:02:44 2011
@@ -905,12 +905,13 @@ public class AddressBasedDestinationTest
     }
     
     /**
-     * Test Goals : 1. Tests if the client sets the correct accept mode for 
unreliable
+     * Test Goals : 1. Test if the client sets the correct accept mode for 
unreliable
      *                and at-least-once.
-     *             2. Tests if an exception is thrown if exactly-once is used.
-     *             3. Tests if an exception is thrown if at-least-once is used 
with topics.
+     *             2. Test default reliability modes for Queues and Topics.
+     *             3. Test if an exception is thrown if exactly-once is used.
+     *             4. Test if an exception is thrown if at-least-once is used 
with topics.
      * 
-     * Test Strategy: For goal #1
+     * Test Strategy: For goal #1 & #2
      *                For unreliable and at-least-once the test tries to 
receives messages
      *                in client_ack mode but does not ack the messages.
      *                It will then close the session, recreate a new session
@@ -919,61 +920,25 @@ public class AddressBasedDestinationTest
      *                For at-least-once the messages should be put back onto 
the queue.    
      * 
      */
+   
     public void testReliabilityOptions() throws Exception
     {
-        Session jmsSession = 
_connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
-        MessageConsumer cons;
-        MessageProducer prod;
-        
         String addr1 = "ADDR:testQueue1;{create: always, delete : receiver, 
link : {reliability : unreliable}}";
-        AMQDestination  dest = new AMQAnyDestination(addr1);
-        cons = jmsSession.createConsumer(dest);
-        prod = jmsSession.createProducer(dest);
-        
-        prod.send(jmsSession.createTextMessage("A"));
-        prod.send(jmsSession.createTextMessage("B"));
-        
-        // We are only receiving one message, but both messages should be 
taken off the queue.
-        Message msg = cons.receive(1000);
-        assertNotNull(msg);
-        assertEquals("A",((TextMessage)msg).getText());
-        
-        jmsSession.close();
-        jmsSession = 
_connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
-        long queueDepth = ((AMQSession) jmsSession).getQueueDepth(dest);       
 
-        assertEquals(0,queueDepth);        
-        cons.close();
-        prod.close();
+        acceptModeTest(addr1,0);
         
         String addr2 = "ADDR:testQueue2;{create: always, delete : receiver, 
link : {reliability : at-least-once}}";
-        dest = new AMQAnyDestination(addr2);
-        cons = jmsSession.createConsumer(dest);
-        prod = jmsSession.createProducer(dest);
-        
-        // We are receiving both messages but both should be put back into the 
queue
-        // bcos we don't ack them.
-        prod.send(jmsSession.createTextMessage("A"));
-        prod.send(jmsSession.createTextMessage("B"));
-        
-        msg = cons.receive(1000);
-        assertNotNull(msg);
-        assertEquals("A",((TextMessage)msg).getText());
-        
-        msg = cons.receive(1000);
-        assertNotNull(msg);
-        assertEquals("B",((TextMessage)msg).getText());
-        
-        jmsSession.close();
-        jmsSession = 
_connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
-        queueDepth = ((AMQSession) jmsSession).getQueueDepth(dest);
-        assertEquals(2,queueDepth); 
-        cons.close();
-        prod.close();
+        acceptModeTest(addr2,2);
+        
+        // Default accept-mode for topics
+        acceptModeTest("ADDR:amq.topic/test",0);        
+        
+        // Default accept-mode for queues
+        acceptModeTest("ADDR:testQueue1;{create: always}",2);
                
         String addr3 = "ADDR:testQueue2;{create: always, delete : receiver, 
link : {reliability : exactly-once}}";        
         try
         {
-            dest = new AMQAnyDestination(addr3);
+            AMQAnyDestination dest = new AMQAnyDestination(addr3);
             fail("An exception should be thrown indicating it's an unsupported 
type");
         }
         catch(Exception e)
@@ -984,8 +949,9 @@ public class AddressBasedDestinationTest
         String addr4 = "ADDR:amq.topic/test;{link : {reliability : 
at-least-once}}";        
         try
         {
-            dest = new AMQAnyDestination(addr4);
-            cons = jmsSession.createConsumer(dest);
+            AMQAnyDestination dest = new AMQAnyDestination(addr4);
+            Session ssn = 
_connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
+            MessageConsumer cons = ssn.createConsumer(dest);
             fail("An exception should be thrown indicating it's an unsupported 
combination");
         }
         catch(Exception e)
@@ -993,4 +959,34 @@ public class AddressBasedDestinationTest
             assertTrue(e.getCause().getMessage().contains("AT-LEAST-ONCE is 
not yet supported for Topics"));
         }
     }
+    
+    private void acceptModeTest(String address, int expectedQueueDepth) throws 
Exception
+    {
+        Session ssn = 
_connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
+        MessageConsumer cons;
+        MessageProducer prod;
+        
+        AMQDestination  dest = new AMQAnyDestination(address);
+        cons = ssn.createConsumer(dest);
+        prod = ssn.createProducer(dest);
+        
+        for (int i=0; i < expectedQueueDepth; i++)
+        {
+            prod.send(ssn.createTextMessage("Msg" + i));
+        }
+        
+        for (int i=0; i < expectedQueueDepth; i++)
+        {
+            Message msg = cons.receive(1000);
+            assertNotNull(msg);
+            assertEquals("Msg" + i,((TextMessage)msg).getText());
+        }
+        
+        ssn.close();
+        ssn = _connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);
+        long queueDepth = ((AMQSession) ssn).getQueueDepth(dest);        
+        assertEquals(expectedQueueDepth,queueDepth);        
+        cons.close();
+        prod.close();        
+    }
 }



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to