You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by rg...@apache.org on 2006/12/15 15:12:25 UTC

svn commit: r487562 [2/2] - in /incubator/qpid/trunk/qpid/java: broker/src/main/java/org/apache/qpid/server/exchange/ broker/src/main/java/org/apache/qpid/server/handler/ broker/src/main/java/org/apache/qpid/server/state/ client/src/main/java/org/apach...

Modified: incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java?view=diff&rev=487562&r1=487561&r2=487562
==============================================================================
--- incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java (original)
+++ incubator/qpid/trunk/qpid/java/client/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java Fri Dec 15 06:12:24 2006
@@ -26,10 +26,8 @@
 import org.apache.qpid.client.AMQTopic;
 import org.apache.qpid.client.transport.TransportConnection;
 
-import javax.jms.TopicSession;
-import javax.jms.TextMessage;
-import javax.jms.TopicPublisher;
-import javax.jms.MessageConsumer;
+import javax.jms.*;
+
 
 /**
  * @author Apache Software Foundation
@@ -46,12 +44,126 @@
     {
         super.tearDown();
         TransportConnection.killAllVMBrokers();
+        //Thread.sleep(2000);
     }
 
-    public void testTextMessageCreation() throws Exception
+
+    public void testTopicSubscriptionUnsubscription() throws Exception
     {
         AMQTopic topic = new AMQTopic("MyTopic");
-        AMQConnection con = new AMQConnection("vm://:1", "guest", "guest", "test", "/test");
+        AMQConnection con = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test", "/test");
+        TopicSession session1 = con.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+        TopicSubscriber sub = session1.createDurableSubscriber(topic,"subscription0");
+        TopicPublisher publisher = session1.createPublisher(topic);
+
+        con.start();
+
+        TextMessage tm = session1.createTextMessage("Hello");
+        publisher.publish(tm);
+
+        tm = (TextMessage) sub.receive(2000);
+        assertNotNull(tm);
+
+        session1.unsubscribe("subscription0");
+
+        try
+        {
+            session1.unsubscribe("not a subscription");
+            fail("expected InvalidDestinationException when unsubscribing from unknown subscription");
+        }
+        catch(InvalidDestinationException e)
+        {
+            ; // PASS
+        }
+        catch(Exception e)
+        {
+            fail("expected InvalidDestinationException when unsubscribing from unknown subscription, got: " + e);
+        }
+
+        con.close();
+    }
+
+    public void testSubscriptionNameReuseForDifferentTopicSingleConnection() throws Exception
+    {
+        subscriptionNameReuseForDifferentTopic(false);
+    }
+
+    public void testSubscriptionNameReuseForDifferentTopicTwoConnections() throws Exception
+    {
+        subscriptionNameReuseForDifferentTopic(true);
+    }
+
+    private void subscriptionNameReuseForDifferentTopic(boolean shutdown) throws Exception
+    {
+        AMQTopic topic = new AMQTopic("MyTopic1" + String.valueOf(shutdown));
+        AMQTopic topic2 = new AMQTopic("MyOtherTopic1" + String.valueOf(shutdown));
+        AMQConnection con = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test", "/test");
+        TopicSession session1 = con.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+        TopicSubscriber sub = session1.createDurableSubscriber(topic, "subscription0");
+        TopicPublisher publisher = session1.createPublisher(null);
+
+        con.start();
+
+        publisher.publish(topic, session1.createTextMessage("hello"));
+        TextMessage m = (TextMessage) sub.receive(2000);
+        assertNotNull(m);
+
+        if (shutdown)
+        {
+            session1.close();
+            con.close();
+            con = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test", "/test");
+            con.start();
+            session1 = con.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+            publisher = session1.createPublisher(null);
+        }
+        TopicSubscriber sub2 = session1.createDurableSubscriber(topic2, "subscription0");
+        publisher.publish(topic, session1.createTextMessage("hello"));
+        if (!shutdown)
+        {
+            m = (TextMessage) sub.receive(2000);
+            assertNull(m);
+        }
+        publisher.publish(topic2, session1.createTextMessage("goodbye"));
+        m = (TextMessage) sub2.receive(2000);
+        assertNotNull(m);
+        assertEquals("goodbye", m.getText());
+        con.close();
+    }
+
+    public void testUnsubscriptionAfterConnectionClose() throws Exception
+    {
+        AMQTopic topic = new AMQTopic("MyTopic3");
+        AMQConnection con1 = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test", "/test");
+        TopicSession session1 = con1.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+        TopicPublisher publisher = session1.createPublisher(topic);
+
+        AMQConnection con2 = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test2", "/test");
+        TopicSession session2 = con2.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+        TopicSubscriber sub = session2.createDurableSubscriber(topic, "subscription0");
+
+        con2.start();
+
+        publisher.publish(session1.createTextMessage("Hello"));
+        TextMessage tm = (TextMessage) sub.receive(2000);
+        assertNotNull(tm);
+        con2.close();
+        publisher.publish(session1.createTextMessage("Hello2"));
+        con2 = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test2", "/test");
+        session2 = con2.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
+        sub = session2.createDurableSubscriber(topic, "subscription0");
+        con2.start();
+        tm = (TextMessage) sub.receive(2000);
+        assertNotNull(tm);
+        assertEquals("Hello2", tm.getText());
+        con1.close();
+        con2.close();
+    }
+
+    public void testTextMessageCreation() throws Exception
+    {
+        AMQTopic topic = new AMQTopic("MyTopic4");
+        AMQConnection con = new AMQConnection("vm://:1?retries='0'", "guest", "guest", "test", "/test");
         TopicSession session1 = con.createTopicSession(false, AMQSession.NO_ACKNOWLEDGE);
         TopicPublisher publisher = session1.createPublisher(topic);
         MessageConsumer consumer1 = session1.createConsumer(topic);
@@ -85,6 +197,7 @@
         tm = (TextMessage) consumer1.receive(2000);
         assertNotNull(tm);
         assertEquals("Empty string not returned", "", msgText);
+        con.close();
     }
 
     public static junit.framework.Test suite()