You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2015/06/16 10:19:07 UTC

svn commit: r1685728 - in /qpid/java/trunk: client/src/test/java/org/apache/qpid/client/ client/src/test/java/org/apache/qpid/jndi/ client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/ common/src/main/java/org/apache/qpid/url/

Author: kwall
Date: Tue Jun 16 08:19:06 2015
New Revision: 1685728

URL: http://svn.apache.org/r1685728
Log:
[QPID-6593] : [Java Client] Improve unit tests relating to binding urls before next change

Added:
    qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/BindingURLTest.java
Removed:
    qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/DestinationURLTest.java
Modified:
    qpid/java/trunk/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
    qpid/java/trunk/client/src/test/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactoryTest.java
    qpid/java/trunk/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java

Modified: qpid/java/trunk/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java?rev=1685728&r1=1685727&r2=1685728&view=diff
==============================================================================
--- qpid/java/trunk/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java (original)
+++ qpid/java/trunk/client/src/test/java/org/apache/qpid/client/AMQDestinationTest.java Tue Jun 16 08:19:06 2015
@@ -33,7 +33,6 @@ import javax.jms.Destination;
 import javax.jms.Queue;
 import javax.jms.Topic;
 
-import junit.framework.TestCase;
 import org.apache.qpid.test.utils.QpidTestCase;
 
 public class AMQDestinationTest extends QpidTestCase
@@ -163,6 +162,39 @@ public class AMQDestinationTest extends
         assertEmptyNodeBindings(new AMQAnyDestination("ADDR:testDest3; {node: {type: topic}}"));
     }
 
+    public void testSimple_BURL() throws Exception
+    {
+        AMQQueue queue = new AMQQueue("BURL:direct://amq.direct/test-route/Foo");
+
+        assertEquals("direct", queue.getExchangeClass());
+        assertEquals("amq.direct", queue.getExchangeName());
+        assertEquals("Foo", queue.getQueueName());
+        assertEquals(queue.getQueueName(), queue.getRoutingKey());
+        assertFalse(queue.isDurable());
+    }
+
+    public void testAnonymousExchange_BURL() throws Exception
+    {
+        AMQQueue queue = new AMQQueue("BURL:direct:///Foo?durable='true'");
+
+        assertEquals("direct", queue.getExchangeClass());
+        assertEquals("", queue.getExchangeName());
+        assertEquals("Foo", queue.getQueueName());
+        assertEquals(queue.getQueueName(), queue.getRoutingKey());
+        assertTrue(queue.isDurable());
+    }
+
+    public void testNonDurableExchange_BURL() throws Exception
+    {
+        AMQQueue queue = new AMQQueue("BURL:direct://mynondurableexch//Foo?exchangeautodelete='true'");
+
+        assertEquals("direct", queue.getExchangeClass());
+        assertEquals("mynondurableexch", queue.getExchangeName());
+        assertEquals("Foo", queue.getQueueName());
+        assertEquals("Foo", queue.getRoutingKey());
+        assertTrue(queue.isExchangeAutoDelete());
+    }
+
     public void testSerializeAMQQueue_BURL() throws Exception
     {
         Queue queue = new AMQQueue("BURL:direct://amq.direct/test-route/Foo?routingkey='Foo'");

Modified: qpid/java/trunk/client/src/test/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactoryTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/test/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactoryTest.java?rev=1685728&r1=1685727&r2=1685728&view=diff
==============================================================================
--- qpid/java/trunk/client/src/test/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactoryTest.java (original)
+++ qpid/java/trunk/client/src/test/java/org/apache/qpid/jndi/PropertiesFileInitialContextFactoryTest.java Tue Jun 16 08:19:06 2015
@@ -105,7 +105,7 @@ public class PropertiesFileInitialContex
     {
         Properties properties = new Properties();
         properties.put("connectionfactory.qpidConnectionfactory", CONNECTION_URL);
-        properties.put("destination.topicExchange", "destName");
+        properties.put("destination.topicExchange", "ADDR:destName");
 
         File f = File.createTempFile(getTestName(), ".properties");
         try
@@ -114,7 +114,6 @@ public class PropertiesFileInitialContex
             properties.store(fos, null);
             fos.close();
 
-            setTestSystemProperty(ClientProperties.DEST_SYNTAX, "ADDR");
             setTestSystemProperty(InitialContext.INITIAL_CONTEXT_FACTORY, "org.apache.qpid.jndi.PropertiesFileInitialContextFactory");
             setTestSystemProperty(InitialContext.PROVIDER_URL,  f.toURI().toURL().toString());
 

Added: qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/BindingURLTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/BindingURLTest.java?rev=1685728&view=auto
==============================================================================
--- qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/BindingURLTest.java (added)
+++ qpid/java/trunk/client/src/test/java/org/apache/qpid/test/unit/client/destinationurl/BindingURLTest.java Tue Jun 16 08:19:06 2015
@@ -0,0 +1,274 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+package org.apache.qpid.test.unit.client.destinationurl;
+
+import org.apache.qpid.test.utils.QpidTestCase;
+
+import org.apache.qpid.url.AMQBindingURL;
+import org.apache.qpid.url.BindingURL;
+
+import java.net.URISyntaxException;
+
+public class BindingURLTest extends QpidTestCase
+{
+
+    public void testFullURL() throws Exception
+    {
+        String url = "exchange.Class://exchangeName/Destination/Queue";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchange.Class", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("Destination", burl.getDestinationName());
+        assertEquals("Queue", burl.getQueueName());
+        assertEquals(1, burl.getBindingKeys().length);
+        assertEquals("Destination", burl.getRoutingKey());
+    }
+
+    public void testDestinationAbsent() throws Exception
+    {
+        String url = "exchangeClass://exchangeName//Queue";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("Queue", burl.getQueueName());
+    }
+
+    public void testQueueAbsent() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("Destination", burl.getDestinationName());
+        assertEquals("", burl.getQueueName());
+    }
+
+    public void testDestinationAndQueueAbsent() throws Exception
+    {
+        String url = "exchangeClass://exchangeName//";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("", burl.getQueueName());
+    }
+
+    public void testQueueOnly() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Queue?option='x'";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals("exchangeClass://exchangeName//Queue?option='x'", burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("Queue", burl.getQueueName());
+    }
+
+
+    public void testQueueWithOption() throws Exception
+    {
+        String url = "exchangeClass://exchangeName//Queue?option='value'";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("Queue", burl.getQueueName());
+        assertEquals("value", burl.getOption("option"));
+    }
+
+    public void testRoutingKey() throws Exception
+    {
+        String url = "exchangeClass://exchangeName//Queue?routingkey='Queue1'";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("Queue1", burl.getRoutingKey());
+        assertEquals("Queue", burl.getQueueName());
+    }
+
+    public void testWithSingleOption() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/?option='value'";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("Destination", burl.getDestinationName());
+        assertEquals("", burl.getQueueName());
+        assertEquals("value", burl.getOption("option"));
+    }
+
+    public void testWithMultipleOptions() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/?option='value',option2='value2'";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("exchangeName", burl.getExchangeName());
+        assertEquals("Destination", burl.getDestinationName());
+        assertEquals("", burl.getQueueName());
+        assertEquals("value", burl.getOption("option"));
+        assertEquals("value2", burl.getOption("option2"));
+    }
+
+    public void testRoutingKeyDefaulting_NonDirectExchangeClass() throws Exception
+    {
+
+        String url = "exchangeClass://exchangeName/Destination/Queue";
+
+        BindingURL dest = new AMQBindingURL(url);
+
+        assertEquals("exchangeClass", dest.getExchangeClass());
+        assertEquals("exchangeName", dest.getExchangeName());
+        assertEquals("Destination", dest.getDestinationName());
+        assertEquals("Queue", dest.getQueueName());
+        assertEquals(dest.getDestinationName(), dest.getRoutingKey());
+
+    }
+
+    public void testRoutingKeyDefaulting_DirectExchangeClass() throws Exception
+    {
+        String url = "direct://exchangeName/Destination/Queue";
+
+        BindingURL dest = new AMQBindingURL(url);
+
+        assertEquals("direct", dest.getExchangeClass());
+        assertEquals("exchangeName", dest.getExchangeName());
+        assertEquals("Destination", dest.getDestinationName());
+        assertEquals("Queue", dest.getQueueName());
+        assertEquals(dest.getQueueName(), dest.getRoutingKey());
+
+    }
+
+    public void testSingleBindingKeys() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/?bindingkey='key'";
+
+        BindingURL dest = new AMQBindingURL(url);
+
+        assertEquals("exchangeClass", dest.getExchangeClass());
+        assertEquals("exchangeName", dest.getExchangeName());
+        assertEquals("Destination", dest.getDestinationName());
+        assertEquals("", dest.getQueueName());
+        assertEquals(1, dest.getBindingKeys().length);
+        assertEquals("key", dest.getBindingKeys()[0]);
+    }
+
+    public void testMultipleBindingKeys() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/?bindingkey='key1',bindingkey='key2'";
+
+        BindingURL dest = new AMQBindingURL(url);
+
+        assertEquals("exchangeClass", dest.getExchangeClass());
+        assertEquals("exchangeName", dest.getExchangeName());
+        assertEquals("Destination", dest.getDestinationName());
+        assertEquals("", dest.getQueueName());
+        assertEquals(2, dest.getBindingKeys().length);
+        assertEquals("key1", dest.getBindingKeys()[0]);
+        assertEquals("key2", dest.getBindingKeys()[1]);
+    }
+
+    public void testAnonymousExchange() throws Exception
+    {
+        String url = "exchangeClass:////Queue";
+
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals(url, burl.toString());
+
+        assertEquals("exchangeClass", burl.getExchangeClass());
+        assertEquals("", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("Queue", burl.getQueueName());
+    }
+
+    // You can only specify only a routing key or binding key, but not both.
+    public void testRoutingKeyAndBindingKeyAreMutuallyExclusive() throws Exception
+    {
+        String url = "exchangeClass://exchangeName/Destination/?bindingkey='key1',routingkey='key2'";
+        try
+        {
+            new AMQBindingURL(url);
+            fail("Exception not thrown");
+        }
+        catch(URISyntaxException e)
+        {
+            // PASS
+        }
+    }
+
+    public void testBareNameTreatedAsQueue() throws Exception
+    {
+        String url = "IBMPerfQueue1?durable='true'";
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals("direct:////IBMPerfQueue1?durable='true'", burl.toString());
+
+        assertEquals("direct", burl.getExchangeClass());
+        assertEquals("", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("IBMPerfQueue1", burl.getQueueName());
+        assertEquals("IBMPerfQueue1", burl.getRoutingKey());
+        assertEquals("IBMPerfQueue1", burl.getBindingKeys()[0]);
+    }
+
+    public void testBareNameContainingSlashesTreatedAsQueueWithOddName() throws Exception
+    {
+        String url = "/a/b/c/d";
+        BindingURL burl = new AMQBindingURL(url);
+
+        assertEquals("direct://///a/b/c/d", burl.toString());
+
+        assertEquals("direct", burl.getExchangeClass());
+        assertEquals("", burl.getExchangeName());
+        assertEquals("", burl.getDestinationName());
+        assertEquals("/a/b/c/d", burl.getQueueName());
+        assertEquals("/a/b/c/d", burl.getRoutingKey());
+        assertEquals("/a/b/c/d", burl.getBindingKeys()[0]);
+    }
+
+}

Modified: qpid/java/trunk/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java?rev=1685728&r1=1685727&r2=1685728&view=diff
==============================================================================
--- qpid/java/trunk/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java (original)
+++ qpid/java/trunk/common/src/main/java/org/apache/qpid/url/AMQBindingURL.java Tue Jun 16 08:19:06 2015
@@ -33,7 +33,7 @@ public class AMQBindingURL implements Bi
 {
     private static final Logger _logger = LoggerFactory.getLogger(AMQBindingURL.class);
 
-    private String _url;
+    private final String _url;
     private String _exchangeClass = ExchangeDefaults.DIRECT_EXCHANGE_CLASS;
     private String _exchangeName = "";
     private String _destinationName = "";
@@ -184,6 +184,7 @@ public class AMQBindingURL implements Bi
         setOption(OPTION_ROUTING_KEY, key);
     }
 
+    @Override
     public String toString()
     {
         StringBuilder sb = new StringBuilder();



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org