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