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 2017/01/16 08:58:25 UTC

svn commit: r1778992 [1/3] - in /qpid/java/trunk: bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ systests/qpid-systests-jms_2.0/ systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connect...

Author: kwall
Date: Mon Jan 16 08:58:24 2017
New Revision: 1778992

URL: http://svn.apache.org/viewvc?rev=1778992&view=rev
Log:
QPID-7609: [System Tests] Refactor QBTC to remove 0-x client classes from the public interface (return values, formal params and checked exceptions)

This allows QBTC to be used without the 0-x client JARs being present on the classpath.
Reduce the variety of ways that system tests create test connections.

Some tests that were apparently passing under the 1.0 profile were previously creating 0-9/0-10 connections.
These have been added to the exclusions.

Added:
    qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AmqpManagementFacade.java
    qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/JmsProvider.java
    qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClient0xProvider.java
    qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClientProvider.java
Modified:
    qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java
    qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
    qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
    qpid/java/trunk/systests/qpid-systests-jms_2.0/pom.xml
    qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connection/ConnectionTest.java
    qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/deliverydelay/DeliveryDelayTest.java
    qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/SessionCreateTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/connection/ExistingSocketTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/MultipleBrokersFailoverTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/ssl/SSLTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/BrokerStartupTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/logging/ChannelLoggingTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/logging/ConnectionLoggingTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/logging/QueueLoggingTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/queue/ArrivalTimeFilterTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/queue/DeepQueueConsumeWithSelector.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/queue/EnsureNondestructiveConsumersTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/queue/MultipleTransactedBatchProducerTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/queue/ProducerFlowControlTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/security/acl/AbstractACLTestCase.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/security/auth/manager/ExternalAuthenticationTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/server/stats/StatisticsReportingTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/MessageCompressionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/messageencryption/MessageEncryptionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/systest/rest/ExportImportMessagesRestTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/ConsumerFlowControlTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/DupsOkTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/QueueBrowserAutoAckTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/message/JMSDestinationTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/message/JMSXUserIDTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/message/MessageToStringTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/client/queue/QueueReceiverTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/BytesMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/InvalidDestinationTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/LargeMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/MapMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/MultipleConnectionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/ObjectMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/PubSubTwoConnectionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/SessionStartTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/basic/TextMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionStartTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/connection/ConnectionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/client/message/ObjectMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/close/TopicPublisherCloseTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/ct/DurableSubscriberTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/message/JMSPropertiesTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/message/StreamMessageTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/topic/TopicSessionTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/transacted/TransactedTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/unit/xa/FaultTest.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/test/utils/FailoverBaseCase.java
    qpid/java/trunk/systests/src/test/java/org/apache/qpid/transport/ConnectionEstablishmentTest.java
    qpid/java/trunk/test-profiles/Java10Excludes

Modified: qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java (original)
+++ qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java Mon Jan 16 08:58:24 2017
@@ -51,8 +51,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.client.AMQConnection;
-import org.apache.qpid.client.AMQConnectionURL;
-import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.server.model.Port;
 import org.apache.qpid.server.model.VirtualHost;
 import org.apache.qpid.server.model.VirtualHostNode;
@@ -283,12 +281,12 @@ public class GroupCreator
         return ports;
     }
 
-    public ConnectionURL getConnectionUrlForAllClusterNodes() throws Exception
+    public String getConnectionUrlForAllClusterNodes() throws Exception
     {
         return  getConnectionUrlForAllClusterNodes(FAILOVER_CONNECTDELAY, FAILOVER_RETRIES, FAILOVER_CYCLECOUNT);
     }
 
-    public ConnectionURL getConnectionUrlForAllClusterNodes(int connectDelay, int retries, final int cyclecount) throws Exception
+    public String getConnectionUrlForAllClusterNodes(int connectDelay, int retries, final int cyclecount) throws Exception
     {
         final StringBuilder brokerList = new StringBuilder();
 
@@ -303,7 +301,7 @@ public class GroupCreator
             }
         }
 
-        return new AMQConnectionURL(String.format(MANY_BROKER_URL_FORMAT, _virtualHostName, brokerList, cyclecount));
+        return String.format(MANY_BROKER_URL_FORMAT, _virtualHostName, brokerList, cyclecount);
     }
 
     public String getGroupName()
@@ -356,7 +354,7 @@ public class GroupCreator
 
     public String getIpAddressOfBrokerHost()
     {
-        String brokerHost = _testcase.getBrokerDetailsFromDefaultConnectionUrl().getHost();
+        String brokerHost = "localhost";
         try
         {
             return InetAddress.getByName(brokerHost).getHostAddress();

Modified: qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java (original)
+++ qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java Mon Jan 16 08:58:24 2017
@@ -53,7 +53,6 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.client.AMQConnection;
 import org.apache.qpid.jms.ConnectionListener;
-import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.server.model.Broker;
 import org.apache.qpid.server.model.State;
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
@@ -74,10 +73,10 @@ public class MultiNodeTest extends QpidB
     private FailoverAwaitingListener _failoverListener;
 
     /** Used when expectation is client will (re)-connect */
-    private ConnectionURL _positiveFailoverUrl;
+    private String _positiveFailoverUrl;
 
     /** Used when expectation is client will not (re)-connect */
-    private ConnectionURL _negativeFailoverUrl;
+    private String _negativeFailoverUrl;
 
     @Override
     protected void setUp() throws Exception
@@ -463,7 +462,7 @@ public class MultiNodeTest extends QpidB
         ExecutorService executorService = Executors.newFixedThreadPool(connectionNumber + NUMBER_OF_NODES -1);
         try
         {
-            ConnectionURL connectionUrl = _groupCreator.getConnectionUrlForAllClusterNodes(100, 0, 100);
+            String connectionUrl = _groupCreator.getConnectionUrlForAllClusterNodes(100, 0, 100);
 
             final Connection consumerConnection = getConnection(connectionUrl);
             consumerConnection.start();

Modified: qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java (original)
+++ qpid/java/trunk/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java Mon Jan 16 08:58:24 2017
@@ -26,7 +26,6 @@ import java.util.Map;
 import javax.jms.Connection;
 import javax.jms.JMSException;
 
-import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 
@@ -39,10 +38,10 @@ public class TwoNodeTest extends QpidBro
     private GroupCreator _groupCreator;
 
     /** Used when expectation is client will not (re)-connect */
-    private ConnectionURL _positiveFailoverUrl;
+    private String _positiveFailoverUrl;
 
     /** Used when expectation is client will not (re)-connect */
-    private ConnectionURL _negativeFailoverUrl;
+    private String _negativeFailoverUrl;
 
     @Override
     protected void setUp() throws Exception

Modified: qpid/java/trunk/systests/qpid-systests-jms_2.0/pom.xml
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/qpid-systests-jms_2.0/pom.xml?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/qpid-systests-jms_2.0/pom.xml (original)
+++ qpid/java/trunk/systests/qpid-systests-jms_2.0/pom.xml Mon Jan 16 08:58:24 2017
@@ -46,14 +46,10 @@
           <groupId>org.apache.geronimo.specs</groupId>
           <artifactId>geronimo-jms_1.1_spec</artifactId>
         </exclusion>
-        <!--
-        TODO: QBTC method signature references the old client:
-         QpidBrokerTestCase.getConnection(org.apache.qpid.jms.ConnectionURL)
         <exclusion>
           <groupId>org.apache.qpid</groupId>
           <artifactId>qpid-client</artifactId>
         </exclusion>
-        -->
       </exclusions>
     </dependency>
 

Modified: qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connection/ConnectionTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connection/ConnectionTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connection/ConnectionTest.java (original)
+++ qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/connection/ConnectionTest.java Mon Jan 16 08:58:24 2017
@@ -21,8 +21,6 @@
 package org.apache.qpid.systests.jms_2_0.connection;
 
 import javax.jms.Connection;
-import javax.jms.Destination;
-import javax.jms.Session;
 
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 
@@ -32,5 +30,6 @@ public class ConnectionTest extends Qpid
     {
         Connection con = getConnection();
         assertNotNull(con);
+
     }
 }

Modified: qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/deliverydelay/DeliveryDelayTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/deliverydelay/DeliveryDelayTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/deliverydelay/DeliveryDelayTest.java (original)
+++ qpid/java/trunk/systests/qpid-systests-jms_2.0/src/test/java/org/apache/qpid/systests/jms_2_0/deliverydelay/DeliveryDelayTest.java Mon Jan 16 08:58:24 2017
@@ -155,7 +155,10 @@ public class DeliveryDelayTest extends Q
         {
             Map<String, Object> attributes = new HashMap<>();
             attributes.put(org.apache.qpid.server.model.Queue.HOLD_ON_PUBLISH_ENABLED, holdsOnPublish);
-            createEntityUsingAmqpManagement(queueName, session, "org.apache.qpid.Queue", attributes);
+            createEntityUsingAmqpManagement(queueName,
+                                            session,
+                                            "org.apache.qpid.Queue",
+                                            attributes);
             return session.createQueue(queueName);
         }
     }
@@ -166,7 +169,10 @@ public class DeliveryDelayTest extends Q
         {
             Map<String, Object> attributes = new HashMap<>();
             attributes.put(org.apache.qpid.server.model.Exchange.UNROUTABLE_MESSAGE_BEHAVIOUR, "REJECT");
-            createEntityUsingAmqpManagement(exchangeName, session, "org.apache.qpid.FanoutExchange", attributes);
+            createEntityUsingAmqpManagement(exchangeName,
+                                            session,
+                                            "org.apache.qpid.FanoutExchange",
+                                            attributes);
             return session.createQueue(exchangeName);
         }
     }
@@ -180,7 +186,11 @@ public class DeliveryDelayTest extends Q
             final Map<String, Object> arguments = new HashMap<>();
             arguments.put("destination", queueName);
             arguments.put("bindingKey", queueName);
-            performOperationUsingAmqpManagement(exchangeName, "bind", session, "org.apache.qpid.FanoutExchange", arguments);
+            performOperationUsingAmqpManagement(exchangeName,
+                                                "bind",
+                                                session,
+                                                "org.apache.qpid.FanoutExchange",
+                                                arguments);
         }
     }
 

Added: qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AmqpManagementFacade.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AmqpManagementFacade.java?rev=1778992&view=auto
==============================================================================
--- qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AmqpManagementFacade.java (added)
+++ qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/AmqpManagementFacade.java Mon Jan 16 08:58:24 2017
@@ -0,0 +1,164 @@
+/*
+ * 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.utils;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Session;
+import javax.jms.TemporaryQueue;
+
+public class AmqpManagementFacade
+{
+    private final QpidBrokerTestCase _qpidBrokerTestCase;
+
+    public AmqpManagementFacade(QpidBrokerTestCase _qpidBrokerTestCase)
+    {
+        this._qpidBrokerTestCase = _qpidBrokerTestCase;
+    }
+
+    public void createEntityUsingAmqpManagement(final String name, final Session session, final String type)
+            throws JMSException
+    {
+        createEntityUsingAmqpManagement(name, session, type, Collections.<String, Object>emptyMap());
+    }
+
+    public void createEntityUsingAmqpManagement(final String name,
+                                                final Session session,
+                                                final String type,
+                                                Map<String, Object> attributes)
+            throws JMSException
+    {
+        MessageProducer producer = session.createProducer(session.createQueue(_qpidBrokerTestCase.isBroker10()
+                                                                                      ? "$management"
+                                                                                      : "ADDR:$management"));
+
+        MapMessage createMessage = session.createMapMessage();
+        createMessage.setStringProperty("type", type);
+        createMessage.setStringProperty("operation", "CREATE");
+        createMessage.setString("name", name);
+        createMessage.setString("object-path", name);
+        for (Map.Entry<String, Object> entry : attributes.entrySet())
+        {
+            createMessage.setObject(entry.getKey(), entry.getValue());
+        }
+        producer.send(createMessage);
+        if (session.getTransacted())
+        {
+            session.commit();
+        }
+    }
+
+    public void deleteEntityUsingAmqpManagement(final String name, final Session session, final String type)
+            throws JMSException
+    {
+        MessageProducer producer = session.createProducer(session.createQueue(_qpidBrokerTestCase.isBroker10()
+                                                                                      ? "$management"
+                                                                                      : "ADDR:$management"));
+
+        MapMessage createMessage = session.createMapMessage();
+        createMessage.setStringProperty("type", type);
+        createMessage.setStringProperty("operation", "DELETE");
+        createMessage.setStringProperty("index", "object-path");
+
+        createMessage.setStringProperty("key", name);
+        producer.send(createMessage);
+        if (session.getTransacted())
+        {
+            session.commit();
+        }
+    }
+
+    public void performOperationUsingAmqpManagement(final String name,
+                                                    final String operation,
+                                                    final Session session,
+                                                    final String type,
+                                                    Map<String, Object> arguments)
+            throws JMSException
+    {
+        MessageProducer producer = session.createProducer(session.createQueue(_qpidBrokerTestCase.isBroker10()
+                                                                                      ? "$management"
+                                                                                      : "ADDR:$management"));
+
+        MapMessage opMessage = session.createMapMessage();
+        opMessage.setStringProperty("type", type);
+        opMessage.setStringProperty("operation", operation);
+        opMessage.setStringProperty("index", "object-path");
+
+        opMessage.setStringProperty("key", name);
+        for (Map.Entry<String, Object> argument : arguments.entrySet())
+        {
+            opMessage.setObjectProperty(argument.getKey(), argument.getValue());
+        }
+
+        producer.send(opMessage);
+        if (session.getTransacted())
+        {
+            session.commit();
+        }
+    }
+
+    public List managementQueryObjects(final Session session, final String type) throws JMSException
+    {
+        MessageProducer producer = session.createProducer(session.createQueue("$management"));
+        final TemporaryQueue responseQ = session.createTemporaryQueue();
+        MessageConsumer consumer = session.createConsumer(responseQ);
+        MapMessage message = session.createMapMessage();
+        message.setStringProperty("identity", "self");
+        message.setStringProperty("type", "org.amqp.management");
+        message.setStringProperty("operation", "QUERY");
+        message.setStringProperty("entityType", type);
+        message.setString("attributeNames", "[]");
+        message.setJMSReplyTo(responseQ);
+
+        producer.send(message);
+
+        Message response = consumer.receive();
+        try
+        {
+            if (response instanceof MapMessage)
+            {
+                return (List) ((MapMessage) response).getObject("results");
+            }
+            else if (response instanceof ObjectMessage)
+            {
+                Object body = ((ObjectMessage) response).getObject();
+                if (body instanceof Map)
+                {
+                    return (List) ((Map) body).get("results");
+                }
+            }
+            throw new IllegalArgumentException("Cannot parse the results from a management query");
+        }
+        finally
+        {
+            consumer.close();
+            responseQ.delete();
+        }
+    }
+}
\ No newline at end of file

Added: qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/JmsProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/JmsProvider.java?rev=1778992&view=auto
==============================================================================
--- qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/JmsProvider.java (added)
+++ qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/JmsProvider.java Mon Jan 16 08:58:24 2017
@@ -0,0 +1,94 @@
+/*
+ * 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.utils;
+
+import java.net.URISyntaxException;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+
+public interface JmsProvider
+{
+
+    InitialContext getInitialContext() throws NamingException;
+
+    ConnectionFactory getConnectionFactory() throws NamingException;
+
+    ConnectionFactory getConnectionFactory(Map<String, String> options) throws NamingException;
+
+    ConnectionFactory getConnectionFactory(String factoryName) throws NamingException;
+
+    ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId) throws NamingException;
+
+    ConnectionFactory getConnectionFactory(String factoryName,
+                                           String vhost,
+                                           String clientId,
+                                           Map<String, String> options)
+                            throws NamingException;
+
+    Connection getConnection() throws JMSException, NamingException;
+
+    Connection getConnectionWithPrefetch(int prefetch) throws Exception;
+
+    Connection getConnectionWithOptions(Map<String, String> options) throws Exception;
+
+    Connection getConnectionWithOptions(String vhost, Map<String, String> options) throws Exception;
+
+    Connection getConnectionForVHost(String vhost)
+                                    throws Exception;
+
+    Connection getConnectionForVHost(String vhost, String username, String password)
+                                            throws Exception;
+
+    Connection getConnection(String urlString) throws Exception;
+
+    Connection getConnection(String username, String password) throws JMSException, NamingException;
+
+    Connection getConnectionWithSyncPublishing() throws Exception;
+
+    Connection getClientConnection(String username, String password, String id) throws Exception;
+
+    Queue getTestQueue(String testQueueName);
+
+    Queue getQueueFromName(Session session, String name) throws JMSException;
+
+    Queue createTestQueue(Session session, String queueName) throws JMSException;
+
+    Topic getTestTopic(String testQueueName);
+
+    Topic createTopic(Connection con, String topicName) throws JMSException;
+
+    Topic createTopicOnDirect(Connection con, String topicName) throws JMSException, URISyntaxException;
+
+    Topic createTopicOnFanout(Connection con, String topicName) throws JMSException, URISyntaxException;
+
+    long getQueueDepth(Connection con, Queue destination) throws Exception;
+
+    String getBrokerDetailsFromDefaultConnectionUrl();
+}

Modified: qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java (original)
+++ qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidBrokerTestCase.java Mon Jan 16 08:58:24 2017
@@ -22,11 +22,8 @@ import java.io.UnsupportedEncodingExcept
 import java.net.URISyntaxException;
 import java.net.URLEncoder;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashMap;
-import java.util.Hashtable;
 import java.util.Iterator;
-import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
@@ -44,19 +41,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.MDC;
 
-import org.apache.qpid.QpidException;
-import org.apache.qpid.client.AMQConnectionFactory;
-import org.apache.qpid.client.AMQConnectionURL;
-import org.apache.qpid.client.AMQDestination;
-import org.apache.qpid.client.AMQQueue;
-import org.apache.qpid.client.AMQSession;
-import org.apache.qpid.client.AMQTopic;
-import org.apache.qpid.client.BrokerDetails;
-import org.apache.qpid.exchange.ExchangeDefaults;
-import org.apache.qpid.jms.ConnectionURL;
 import org.apache.qpid.server.model.Protocol;
 import org.apache.qpid.server.store.MemoryConfigurationStore;
-import org.apache.qpid.url.URLSyntaxException;
 
 /**
  * Qpid base class for system testing test cases.
@@ -79,7 +65,6 @@ public class QpidBrokerTestCase extends
     protected static final String INDEX = "index";
     protected static final String CONTENT = "content";
     protected static final int DEFAULT_MESSAGE_SIZE = 1024;
-    private static final String DEFAULT_INITIAL_CONTEXT = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory";
     private static final String JAVA = "java";
     private static final String BROKER_LANGUAGE = System.getProperty("broker.language", JAVA);
     private static final BrokerHolder.BrokerType DEFAULT_BROKER_TYPE = BrokerHolder.BrokerType.valueOf(
@@ -90,28 +75,20 @@ public class QpidBrokerTestCase extends
             Protocol.valueOf("AMQP_" + System.getProperty("broker.version", "v0_9").substring(1));
     private static List<BrokerHolder> _brokerList = new ArrayList<>();
 
-    static
-    {
-        String initialContext = System.getProperty(Context.INITIAL_CONTEXT_FACTORY);
-
-        if (initialContext == null || initialContext.length() == 0)
-        {
-            System.setProperty(Context.INITIAL_CONTEXT_FACTORY, DEFAULT_INITIAL_CONTEXT);
-        }
-    }
-
     private final Map<String, String> _propertiesSetForBroker = new HashMap<>();
     private final List<Connection> _connections = new ArrayList<>();
-    protected ConnectionFactory _connectionFactory;
+    private final AmqpManagementFacade _managementFacade = new AmqpManagementFacade(this);
     private BrokerHolder _defaultBroker;
     private MessageType _messageType = MessageType.TEXT;
-    private Hashtable _initialContextEnvironment = new Hashtable();
+    private JmsProvider _jmsProvider;
 
     @Override
     public void runBare() throws Throwable
     {
         try
         {
+            _jmsProvider = isBroker10() ? new QpidJmsClientProvider(_managementFacade) : new QpidJmsClient0xProvider(_managementFacade);
+
             _defaultBroker = new BrokerHolderFactory().create(DEFAULT_BROKER_TYPE, DEFAULT_PORT, this);
             super.runBare();
         }
@@ -215,101 +192,6 @@ public class QpidBrokerTestCase extends
         getDefaultBroker().restart();
     }
 
-    /**
-     * we assume that the environment is correctly set
-     * i.e. -Djava.naming.provider.url="..//example010.properties"
-     *
-     * @return an initial context
-     * @throws NamingException if there is an error getting the context
-     */
-    public InitialContext getInitialContext() throws NamingException
-    {
-        return new InitialContext(_initialContextEnvironment);
-    }
-
-    /**
-     * Get the default connection factory for the currently used broker
-     * Default factory is "local"
-     *
-     * @return A connection factory
-     * @throws NamingException if there is an error getting the factory
-     */
-    public ConnectionFactory getConnectionFactory() throws NamingException
-    {
-        if (_connectionFactory == null)
-        {
-            if (Boolean.getBoolean(PROFILE_USE_SSL))
-            {
-                _connectionFactory = getConnectionFactory("default.ssl");
-            }
-            else
-            {
-                _connectionFactory = getConnectionFactory("default");
-            }
-        }
-        return _connectionFactory;
-    }
-
-    /**
-     * Get a connection factory for the currently used broker
-     *
-     * @param factoryName The factory name
-     * @return A connection factory
-     * @throws NamingException if there is an error getting the factory
-     */
-    public ConnectionFactory getConnectionFactory(String factoryName)
-            throws NamingException
-    {
-        return getConnectionFactory(factoryName, "test", "clientid");
-    }
-    public ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId)
-            throws NamingException
-    {
-        return getConnectionFactory(factoryName, vhost, clientId, Collections.<String, String>emptyMap());
-    }
-    public ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId, Map<String,String> options)
-            throws NamingException
-    {
-
-        if(isBroker10())
-        {
-            Map<String,String> actualOptions = new LinkedHashMap<>();
-            actualOptions.put("amqp.vhost", vhost);
-            actualOptions.put("jms.clientID", clientId);
-            actualOptions.put("jms.forceSyncSend", "true");
-            actualOptions.put("jms.populateJMSXUserID", "true");
-            actualOptions.putAll(options);
-            if("failover".equals(factoryName))
-            {
-                if(!actualOptions.containsKey("failover.maxReconnectAttempts"))
-                {
-                    actualOptions.put("failover.maxReconnectAttempts", "2");
-                }
-                final StringBuilder stem = new StringBuilder("failover:(amqp://localhost:")
-                                                  .append(System.getProperty("test.port"))
-                                                  .append(",amqp://localhost:")
-                                                  .append(System.getProperty("test.port.alt"))
-                                                  .append(")");
-                appendOptions(actualOptions, stem);
-
-                _initialContextEnvironment.put("property.connectionfactory.failover.remoteURI",
-                                               stem.toString());
-            }
-            else if("default".equals(factoryName))
-            {
-                final StringBuilder stem = new StringBuilder("amqp://localhost:").append(System.getProperty("test.port"));
-
-
-                appendOptions(actualOptions, stem);
-
-                _initialContextEnvironment.put("property.connectionfactory.default.remoteURI",
-                                               stem.toString());
-
-            }
-        }
-        return (ConnectionFactory) getInitialContext().lookup(factoryName);
-    }
-
     protected void appendOptions(final Map<String, String> actualOptions, final StringBuilder stem)
     {
         boolean first = true;
@@ -335,140 +217,108 @@ public class QpidBrokerTestCase extends
         }
     }
 
-    public Connection getConnection() throws JMSException, NamingException
+    public InitialContext getInitialContext() throws NamingException
     {
-        return getConnection(GUEST_USERNAME, GUEST_PASSWORD);
+        return _jmsProvider.getInitialContext();
     }
 
-    public Connection getConnectionWithPrefetch(int prefetch) throws JMSException, NamingException, URLSyntaxException
+    /**
+     * Get the default connection factory for the currently used broker
+     * Default factory is "local"
+     *
+     * @return A connection factory
+     * @throws NamingException if there is an error getting the factory
+     */
+    public ConnectionFactory getConnectionFactory() throws NamingException
     {
-        if(isBroker10())
-        {
-            String factoryName = Boolean.getBoolean(PROFILE_USE_SSL) ? "default.ssl" : "default";
-
-            final Map<String, String> options =
-                    Collections.singletonMap("jms.prefetchPolicy.all", String.valueOf(prefetch));
-            final ConnectionFactory connectionFactory = getConnectionFactory(factoryName, "test", "clientid", options);
-            return connectionFactory.createConnection(GUEST_USERNAME, GUEST_PASSWORD);
+        return _jmsProvider.getConnectionFactory();
+    }
 
-        }
-        else
-        {
-            return getConnectionWithOptions(Collections.singletonMap("maxprefetch", String.valueOf(prefetch)));
-        }
+    public ConnectionFactory getConnectionFactory(final Map<String, String> options) throws NamingException
+    {
+        return _jmsProvider.getConnectionFactory(options);
     }
 
-    public Connection getConnectionWithOptions(Map<String, String> options)
-            throws URLSyntaxException, NamingException, JMSException
+    public ConnectionFactory getConnectionFactory(String factoryName)
+            throws NamingException
     {
-        ConnectionURL curl = new AMQConnectionURL(((AMQConnectionFactory)getConnectionFactory()).getConnectionURLString());
-        for (Map.Entry<String, String> entry : options.entrySet())
-        {
-            curl.setOption(entry.getKey(), entry.getValue());
-        }
-        curl = new AMQConnectionURL(curl.toString());
+        return _jmsProvider.getConnectionFactory(factoryName);
+    }
 
-        curl.setUsername(GUEST_USERNAME);
-        curl.setPassword(GUEST_PASSWORD);
-        return getConnection(curl);
+    public ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId)
+            throws NamingException
+    {
+        return _jmsProvider.getConnectionFactory(factoryName, vhost, clientId);
     }
 
-    public Connection getConnectionForVHost(String vhost)
-            throws URLSyntaxException, NamingException, JMSException
+    public Connection getConnection() throws JMSException, NamingException
     {
-        return getConnectionForVHost(vhost, GUEST_USERNAME, GUEST_PASSWORD);
+        Connection connection = _jmsProvider.getConnection();
+        _connections.add(connection);
+        return connection;
     }
 
-    public Connection getConnectionForVHost(String vhost, String username, String password)
-            throws URLSyntaxException, NamingException, JMSException
+    public Connection getConnection(String username, String password) throws JMSException, NamingException
     {
+        Connection connection = _jmsProvider.getConnection(username, password);
+        _connections.add(connection);
+        return connection;
+    }
 
-        if(isBroker10())
-        {
-            return getConnectionFactory(Boolean.getBoolean(PROFILE_USE_SSL) ? "default.ssl" : "default", vhost, "clientId").createConnection(username, password);
-        }
-        else
-        {
-            ConnectionURL curl =
-                    new AMQConnectionURL(((AMQConnectionFactory) getConnectionFactory()).getConnectionURLString());
-            curl.setVirtualHost("/"+vhost);
-            curl = new AMQConnectionURL(curl.toString());
-
-            curl.setUsername(username);
-            curl.setPassword(password);
-            return getConnection(curl);
-        }
+    public Connection getConnectionWithPrefetch(int prefetch) throws Exception
+    {
+        Connection connection = _jmsProvider.getConnectionWithPrefetch(prefetch);
+        _connections.add(connection);
+        return connection;
     }
 
+    public Connection getConnectionWithOptions(Map<String, String> options) throws Exception
+    {
+        Connection connection = _jmsProvider.getConnectionWithOptions(options);
+        _connections.add(connection);
+        return connection;
+    }
 
-    public Connection getConnection(ConnectionURL url) throws JMSException
+    public Connection getConnectionWithOptions(String vhost, Map<String, String> options) throws Exception
     {
-        _logger.debug("get connection for " + url.getURL());
-        Connection connection = new AMQConnectionFactory(url).createConnection(url.getUsername(), url.getPassword());
 
+        Connection connection = _jmsProvider.getConnectionWithOptions(vhost, options);
         _connections.add(connection);
+        return connection;
+    }
 
+    public Connection getConnectionForVHost(String vhost) throws Exception
+    {
+        Connection connection = _jmsProvider.getConnectionForVHost(vhost);
+        _connections.add(connection);
         return connection;
     }
 
-    /**
-     * Get a connection (remote or in-VM)
-     *
-     * @param username The user name
-     * @param password The user password
-     * @return a newly created connection
-     * @throws JMSException NamingException if there is an error getting the connection
-     */
-    public Connection getConnection(String username, String password) throws JMSException, NamingException
+    public Connection getConnection(String urlString) throws Exception
     {
-        _logger.debug("get connection for username " + username);
-        Connection con = getConnectionFactory().createConnection(username, password);
-        //add the connection in the list of connections
-        _connections.add(con);
-        return con;
+        Connection connection = _jmsProvider.getConnection(urlString);
+        _connections.add(connection);
+        return connection;
     }
 
-    /**
-     * Return a Queue specific for this test.
-     * Uses getTestQueueName() as the name of the queue
-     */
     public Queue getTestQueue()
     {
-        return new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, getTestQueueName());
+        return _jmsProvider.getTestQueue(getTestQueueName());
     }
 
     public Queue getQueueFromName(Session session, String name) throws JMSException
     {
-        if(isBroker10())
-        {
-            return session.createQueue(name);
-        }
-        else
-        {
-            return session.createQueue("ADDR: '" + name + "'");
-        }
+        return _jmsProvider.getQueueFromName(session, name);
     }
 
     public Queue createTestQueue(Session session) throws JMSException
     {
-        return createTestQueue(session, getTestQueueName());
+        return _jmsProvider.createTestQueue(session, getTestQueueName());
     }
 
     public Queue createTestQueue(Session session, String queueName) throws JMSException
     {
-        if(isBroker10())
-        {
-            createEntityUsingAmqpManagement(queueName, session, "org.apache.qpid.Queue");
-
-            return session.createQueue(queueName);
-        }
-        else
-        {
-
-            AMQQueue amqQueue = new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, queueName);
-            session.createConsumer(amqQueue).close();
-            return amqQueue;
-        }
+        return _jmsProvider.createTestQueue(session, queueName);
     }
 
     /**
@@ -477,228 +327,62 @@ public class QpidBrokerTestCase extends
      */
     public Topic getTestTopic()
     {
-        return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, getTestQueueName());
+        return _jmsProvider.getTestTopic(getTestQueueName());
     }
 
     protected Topic createTopic(final Connection con, final String topicName) throws JMSException
     {
-        if(isBroker10())
-        {
-            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            createEntityUsingAmqpManagement(topicName, session, "org.apache.qpid.TopicExchange");
-
-            return session.createTopic(topicName);
-
-        }
-        else
-        {
-            return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, topicName);
-        }
+        return _jmsProvider.createTopic(con, topicName);
     }
 
     protected Topic createTopicOnDirect(final Connection con, String topicName) throws JMSException, URISyntaxException
     {
-        if(isBroker10())
-        {
-            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            return session.createTopic("amq.direct/"+topicName);
-        }
-        else
-        {
-            return new AMQTopic(
-                    "direct://amq.direct/"+topicName+"/"+topicName+"?routingkey='"+topicName+"',exclusive='true',autodelete='true'");
-        }
+        return _jmsProvider.createTopicOnDirect(con, topicName);
     }
 
-
     protected Topic createTopicOnFanout(final Connection con, String topicName) throws JMSException, URISyntaxException
     {
-        if(isBroker10())
-        {
-            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            return session.createTopic("amq.fanout/"+topicName);
-        }
-        else
-        {
-            return new AMQTopic(
-                    "fanout://amq.fanout/"+topicName+"/"+topicName+"?routingkey='"+topicName+"',exclusive='true',autodelete='true'");
-        }
+        return _jmsProvider.createTopicOnFanout(con, topicName);
     }
 
     protected void createEntityUsingAmqpManagement(final String name, final Session session, final String type)
             throws JMSException
     {
-        createEntityUsingAmqpManagement(name, session, type, Collections.<String,Object>emptyMap());
+        _managementFacade.createEntityUsingAmqpManagement(name, session, type);
     }
 
     protected void createEntityUsingAmqpManagement(final String name, final Session session, final String type, Map<String, Object> attributes)
             throws JMSException
     {
-        MessageProducer producer = session.createProducer(session.createQueue(isBroker10() ? "$management" : "ADDR:$management"));
 
-        MapMessage createMessage = session.createMapMessage();
-        createMessage.setStringProperty("type", type);
-        createMessage.setStringProperty("operation", "CREATE");
-        createMessage.setString("name", name);
-        createMessage.setString("object-path", name);
-        for(Map.Entry<String,Object> entry : attributes.entrySet())
-        {
-            createMessage.setObject(entry.getKey(), entry.getValue());
-        }
-        producer.send(createMessage);
-        if(session.getTransacted())
-        {
-            session.commit();
-        }
+        _managementFacade.createEntityUsingAmqpManagement(name, session, type, attributes);
     }
 
     protected void deleteEntityUsingAmqpManagement(final String name, final Session session, final String type)
             throws JMSException
     {
-        MessageProducer producer = session.createProducer(session.createQueue(isBroker10() ? "$management" : "ADDR:$management"));
 
-        MapMessage createMessage = session.createMapMessage();
-        createMessage.setStringProperty("type", type);
-        createMessage.setStringProperty("operation", "DELETE");
-        createMessage.setStringProperty("index", "object-path");
-
-        createMessage.setStringProperty("key", name);
-        producer.send(createMessage);
-        if(session.getTransacted())
-        {
-            session.commit();
-        }
+        _managementFacade.deleteEntityUsingAmqpManagement(name, session, type);
     }
 
     protected void performOperationUsingAmqpManagement(final String name, final String operation, final Session session, final String type, Map<String,Object> arguments)
             throws JMSException
     {
-        MessageProducer producer = session.createProducer(session.createQueue(isBroker10() ? "$management" : "ADDR:$management"));
-
-        MapMessage opMessage = session.createMapMessage();
-        opMessage.setStringProperty("type", type);
-        opMessage.setStringProperty("operation", operation);
-        opMessage.setStringProperty("index", "object-path");
-
-        opMessage.setStringProperty("key", name);
-        for(Map.Entry<String,Object> argument : arguments.entrySet())
-        {
-            opMessage.setObjectProperty(argument.getKey(), argument.getValue());
-        }
 
-        producer.send(opMessage);
-        if(session.getTransacted())
-        {
-            session.commit();
-        }
+        _managementFacade.performOperationUsingAmqpManagement(name, operation, session, type, arguments);
     }
 
-
     protected List managementQueryObjects(final Session session, final String type) throws JMSException
     {
-        MessageProducer producer = session.createProducer(session.createQueue("$management"));
-        final TemporaryQueue responseQ = session.createTemporaryQueue();
-        MessageConsumer consumer = session.createConsumer(responseQ);
-        MapMessage message = session.createMapMessage();
-        message.setStringProperty("identity", "self");
-        message.setStringProperty("type", "org.amqp.management");
-        message.setStringProperty("operation", "QUERY");
-        message.setStringProperty("entityType", type);
-        message.setString("attributeNames", "[]");
-        message.setJMSReplyTo(responseQ);
-
-        producer.send(message);
 
-        Message response = consumer.receive();
-        try
-        {
-            if (response instanceof MapMessage)
-            {
-                return (List) ((MapMessage) response).getObject("results");
-            }
-            else if (response instanceof ObjectMessage)
-            {
-                Object body = ((ObjectMessage) response).getObject();
-                if (body instanceof Map)
-                {
-                    return (List) ((Map) body).get("results");
-                }
-            }
-            throw new IllegalArgumentException("Cannot parse the results from a management query");
-        }
-        finally
-        {
-            consumer.close();
-            responseQ.delete();
-        }
+        return _managementFacade.managementQueryObjects(session, type);
     }
 
-    public long getQueueDepth(final Connection con, final Queue destination) throws JMSException, QpidException
+    public long getQueueDepth(final Connection con, final Queue destination) throws Exception
     {
-        if(isBroker10())
-        {
-            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            try
-            {
-
-                MessageProducer producer = session.createProducer(session.createQueue("$management"));
-                final TemporaryQueue responseQ = session.createTemporaryQueue();
-                MessageConsumer consumer = session.createConsumer(responseQ);
-                MapMessage message = session.createMapMessage();
-                message.setStringProperty("index", "object-path");
-                final String escapedName = destination.getQueueName().replaceAll("([/\\\\])", "\\\\$1");
-                message.setStringProperty("key", escapedName);
-                message.setStringProperty("type", "org.apache.qpid.Queue");
-                message.setStringProperty("operation", "getStatistics");
-                message.setStringProperty("statistics", "[\"queueDepthMessages\"]");
-
-                message.setJMSReplyTo(responseQ);
-
-                producer.send(message);
-
-                Message response = consumer.receive();
-                try
-                {
-                    if (response instanceof MapMessage)
-                    {
-                        return ((MapMessage) response).getLong("queueDepthMessages");
-                    }
-                    else if (response instanceof ObjectMessage)
-                    {
-                        Object body = ((ObjectMessage) response).getObject();
-                        if (body instanceof Map)
-                        {
-                            return Long.valueOf(((Map) body).get("queueDepthMessages").toString());
-                        }
-                    }
-                    throw new IllegalArgumentException("Cannot parse the results from a management operation");
-                }
-                finally
-                {
-                    consumer.close();
-                    responseQ.delete();
-                }
-            }
-            finally
-            {
-                session.close();
-            }
-        }
-        else
-        {
-            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
-            try
-            {
-                return ((AMQSession<?, ?>) session).getQueueDepth((AMQDestination) destination);
-            }
-            finally
-            {
-                session.close();
-            }
-        }
+        return _jmsProvider.getQueueDepth(con, destination);
     }
 
-
     /**
      * Send messages to the given destination.
      * <p/>
@@ -829,26 +513,9 @@ public class QpidBrokerTestCase extends
         return message;
     }
 
-    public BrokerDetails getBrokerDetailsFromDefaultConnectionUrl()
+    public String getBrokerDetailsFromDefaultConnectionUrl()
     {
-        try
-        {
-            if (((AMQConnectionFactory)getConnectionFactory()).getConnectionURL().getBrokerCount() > 0)
-            {
-                return ((AMQConnectionFactory)getConnectionFactory()).getConnectionURL().getBrokerDetails(0);
-            }
-            else
-            {
-                fail("No broker details are available.");
-            }
-        }
-        catch (NamingException e)
-        {
-            fail(e.getMessage());
-        }
-
-        //keep compiler happy
-        return null;
+        return _jmsProvider.getBrokerDetailsFromDefaultConnectionUrl();
     }
 
     /**
@@ -1053,37 +720,16 @@ public class QpidBrokerTestCase extends
         return BROKER_PERSISTENT;
     }
 
-    protected Connection getConnectionWithSyncPublishing() throws URLSyntaxException, NamingException, JMSException
+    protected Connection getConnectionWithSyncPublishing() throws Exception
     {
-        if(isBroker10())
-        {
-            return getConnection();
-        }
-        else
-        {
-            Map<String, String> options = new HashMap<>();
-            options.put(ConnectionURL.OPTIONS_SYNC_PUBLISH, "all");
-            return getConnectionWithOptions(options);
-        }
+        return _jmsProvider.getConnectionWithSyncPublishing();
     }
 
     protected Connection getClientConnection(String username, String password, String id)
-            throws JMSException, URLSyntaxException,
-                   QpidException, NamingException
+            throws Exception
     {
-        _logger.debug("get connection for id " + id);
-        Connection con;
-        if(isBroker10())
-        {
-            con = getConnectionFactory("default", "test", id).createConnection(username, password);
-        }
-        else
-        {
-            con = ((AMQConnectionFactory)getConnectionFactory()).createConnection(username, password, id);
-        }
         //add the connection in the list of connections
-        _connections.add(con);
-        return con;
+        return _jmsProvider.getClientConnection(username, password, id);
     }
 
     /**

Added: qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClient0xProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClient0xProvider.java?rev=1778992&view=auto
==============================================================================
--- qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClient0xProvider.java (added)
+++ qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClient0xProvider.java Mon Jan 16 08:58:24 2017
@@ -0,0 +1,309 @@
+/*
+ * 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.utils;
+
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.Topic;
+import javax.naming.Context;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import org.apache.qpid.client.AMQConnectionFactory;
+import org.apache.qpid.client.AMQConnectionURL;
+import org.apache.qpid.client.AMQDestination;
+import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.client.AMQSession;
+import org.apache.qpid.client.AMQTopic;
+import org.apache.qpid.exchange.ExchangeDefaults;
+import org.apache.qpid.jms.ConnectionURL;
+
+public class QpidJmsClient0xProvider implements JmsProvider
+{
+    private static final String DEFAULT_INITIAL_CONTEXT = "org.apache.qpid.jndi.PropertiesFileInitialContextFactory";
+    static
+    {
+        String initialContext = System.getProperty(Context.INITIAL_CONTEXT_FACTORY);
+
+        if (initialContext == null || initialContext.length() == 0)
+        {
+            System.setProperty(Context.INITIAL_CONTEXT_FACTORY, DEFAULT_INITIAL_CONTEXT);
+        }
+    }
+
+    private final Hashtable<Object, Object> _initialContextEnvironment = new Hashtable<>();
+    private final AmqpManagementFacade _managementFacade;
+
+    public QpidJmsClient0xProvider(AmqpManagementFacade managementFacade)
+    {
+        _managementFacade = managementFacade;
+    }
+
+    @Override
+    public InitialContext getInitialContext() throws NamingException
+    {
+        return new InitialContext(_initialContextEnvironment);
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory() throws NamingException
+    {
+        if (Boolean.getBoolean(QpidBrokerTestCase.PROFILE_USE_SSL))
+        {
+            return getConnectionFactory("default.ssl");
+        }
+        else
+        {
+            return getConnectionFactory("default");
+        }
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(final Map<String, String> options) throws NamingException
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName)
+            throws NamingException
+    {
+        return getConnectionFactory(factoryName, "test", "clientid");
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId)
+            throws NamingException
+    {
+        return getConnectionFactory(factoryName, vhost, clientId, Collections.<String, String>emptyMap());
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName,
+                                                  String vhost,
+                                                  String clientId,
+                                                  Map<String, String> options)
+            throws NamingException
+    {
+
+
+        return (ConnectionFactory) getInitialContext().lookup(factoryName);
+    }
+
+    @Override
+    public Connection getConnection() throws JMSException, NamingException
+    {
+        return getConnection(QpidBrokerTestCase.GUEST_USERNAME, QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+
+    @Override
+    public Connection getConnection(String username, String password) throws JMSException, NamingException
+    {
+        Connection con = getConnectionFactory().createConnection(username, password);
+        return con;
+    }
+
+    @Override
+    public Connection getClientConnection(String username, String password, String id)
+            throws Exception
+    {
+        Connection con = ((AMQConnectionFactory) getConnectionFactory()).createConnection(username,
+                                                                                          password,
+                                                                                          id);
+        return con;
+    }
+
+    @Override
+    public Connection getConnectionWithPrefetch(int prefetch) throws Exception
+    {
+        return getConnectionWithOptions(Collections.singletonMap("maxprefetch", String.valueOf(prefetch)));
+    }
+
+    @Override
+    public Connection getConnectionWithOptions(Map<String, String> options) throws Exception
+    {
+        return getConnectionWithOptions("test", options);
+    }
+
+    @Override
+    public Connection getConnectionWithOptions(String vhost, Map<String, String> options) throws Exception
+    {
+        ConnectionURL curl =
+                new AMQConnectionURL(((AMQConnectionFactory) getConnectionFactory()).getConnectionURLString());
+        for (Map.Entry<String, String> entry : options.entrySet())
+        {
+            curl.setOption(entry.getKey(), entry.getValue());
+        }
+
+        curl = new AMQConnectionURL(curl.toString());
+        curl.setUsername(QpidBrokerTestCase.GUEST_USERNAME);
+        curl.setPassword(QpidBrokerTestCase.GUEST_PASSWORD);
+        curl.setVirtualHost(vhost);
+        Connection connection = new AMQConnectionFactory(curl).createConnection(curl.getUsername(), curl.getPassword());
+
+        return connection;
+    }
+
+    @Override
+    public Connection getConnectionForVHost(String vhost)
+            throws Exception
+    {
+        return getConnectionForVHost(vhost, QpidBrokerTestCase.GUEST_USERNAME, QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+    @Override
+    public Connection getConnectionForVHost(String vhost, String username, String password)
+            throws Exception
+    {
+        ConnectionURL curl =
+                new AMQConnectionURL(((AMQConnectionFactory) getConnectionFactory()).getConnectionURLString());
+        curl.setVirtualHost("/" + vhost);
+        curl = new AMQConnectionURL(curl.toString());
+
+        curl.setUsername(username);
+        curl.setPassword(password);
+        Connection connection =
+                new AMQConnectionFactory(curl).createConnection(curl.getUsername(), curl.getPassword());
+
+        return connection;
+    }
+
+    @Override
+    public Connection getConnection(String urlString) throws Exception
+    {
+        ConnectionURL url = new AMQConnectionURL(urlString);
+        Connection connection = new AMQConnectionFactory(url).createConnection(url.getUsername(), url.getPassword());
+        return connection;
+    }
+
+    @Override
+    public Connection getConnectionWithSyncPublishing() throws Exception
+    {
+        Map<String, String> options = new HashMap<>();
+        options.put(ConnectionURL.OPTIONS_SYNC_PUBLISH, "all");
+        return getConnectionWithOptions(options);
+    }
+
+
+    @Override
+    public Queue getTestQueue(final String testQueueName)
+    {
+        return new AMQQueue(ExchangeDefaults.DIRECT_EXCHANGE_NAME, testQueueName);
+    }
+
+    @Override
+    public Queue getQueueFromName(Session session, String name) throws JMSException
+    {
+        return session.createQueue("ADDR: '" + name + "'");
+    }
+
+    @Override
+    public Queue createTestQueue(Session session, String queueName) throws JMSException
+    {
+
+        Queue amqQueue = getTestQueue(queueName);
+        session.createConsumer(amqQueue).close();
+        return amqQueue;
+    }
+
+    @Override
+    public Topic getTestTopic(final String testQueueName)
+    {
+        return new AMQTopic(ExchangeDefaults.TOPIC_EXCHANGE_NAME, testQueueName);
+    }
+
+    @Override
+    public Topic createTopic(final Connection con, final String topicName) throws JMSException
+    {
+        return getTestTopic(topicName);
+    }
+
+    @Override
+    public Topic createTopicOnDirect(final Connection con, String topicName) throws JMSException, URISyntaxException
+    {
+        return new AMQTopic(
+                "direct://amq.direct/"
+                + topicName
+                + "/"
+                + topicName
+                + "?routingkey='"
+                + topicName
+                + "',exclusive='true',autodelete='true'");
+    }
+
+    @Override
+    public Topic createTopicOnFanout(final Connection con, String topicName) throws JMSException, URISyntaxException
+    {
+        return new AMQTopic(
+                "fanout://amq.fanout/"
+                + topicName
+                + "/"
+                + topicName
+                + "?routingkey='"
+                + topicName
+                + "',exclusive='true',autodelete='true'");
+    }
+
+    @Override
+    public long getQueueDepth(final Connection con, final Queue destination) throws Exception
+    {
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+            return ((AMQSession<?, ?>) session).getQueueDepth((AMQDestination) destination);
+        }
+        finally
+        {
+            session.close();
+        }
+    }
+
+    public String getBrokerDetailsFromDefaultConnectionUrl()
+    {
+        try
+        {
+            AMQConnectionFactory factory = (AMQConnectionFactory) getConnectionFactory();
+            ConnectionURL connectionURL = factory.getConnectionURL();
+            if (connectionURL.getBrokerCount() > 0)
+            {
+                return connectionURL
+                              .getBrokerDetails(0)
+                              .toString();
+            }
+            else
+            {
+                throw new RuntimeException("No broker details are available.");
+            }
+        }
+        catch (NamingException e)
+        {
+            throw new RuntimeException("No broker details are available.", e);
+        }
+    }
+}
\ No newline at end of file

Added: qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClientProvider.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClientProvider.java?rev=1778992&view=auto
==============================================================================
--- qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClientProvider.java (added)
+++ qpid/java/trunk/systests/src/main/java/org/apache/qpid/test/utils/QpidJmsClientProvider.java Mon Jan 16 08:58:24 2017
@@ -0,0 +1,426 @@
+/*
+ * 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.utils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URISyntaxException;
+import java.net.URLEncoder;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Hashtable;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionFactory;
+import javax.jms.JMSException;
+import javax.jms.MapMessage;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.ObjectMessage;
+import javax.jms.Queue;
+import javax.jms.Session;
+import javax.jms.TemporaryQueue;
+import javax.jms.Topic;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+public class QpidJmsClientProvider implements JmsProvider
+{
+    private static final String CLIENTID = "clientid";
+    private final AmqpManagementFacade _managementFacade;
+    private final Hashtable<Object, Object> _initialContextEnvironment = new Hashtable<>();
+
+    public QpidJmsClientProvider(AmqpManagementFacade managementFacade)
+    {
+        _managementFacade = managementFacade;
+    }
+
+    @Override
+    public InitialContext getInitialContext() throws NamingException
+    {
+        return new InitialContext(_initialContextEnvironment);
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory() throws NamingException
+    {
+        return getConnectionFactory(Collections.<String, String>emptyMap());
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName) throws NamingException
+    {
+        return getConnectionFactory(factoryName, Collections.<String, String>emptyMap());
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(Map<String, String> options) throws NamingException
+    {
+
+        if (Boolean.getBoolean(QpidBrokerTestCase.PROFILE_USE_SSL))
+        {
+            return getConnectionFactory("default.ssl", options);
+        }
+        else
+        {
+            return getConnectionFactory("default", options);
+        }
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName, String vhost, String clientId) throws NamingException
+    {
+        return getConnectionFactory(factoryName, vhost, clientId, Collections.<String, String>emptyMap());
+    }
+
+    @Override
+    public ConnectionFactory getConnectionFactory(String factoryName,
+                                                  String vhost,
+                                                  String clientId,
+                                                  Map<String, String> options)
+            throws NamingException
+    {
+
+        Map<String, String> actualOptions = new LinkedHashMap<>();
+        actualOptions.put("amqp.vhost", vhost);
+        actualOptions.put("jms.clientID", clientId);
+        actualOptions.putAll(options);
+        return getConnectionFactory(factoryName, actualOptions);
+    }
+
+    private ConnectionFactory getConnectionFactory(final String factoryName, Map<String, String> options)
+            throws NamingException
+    {
+
+        if (!options.containsKey("amqp.vhost"))
+        {
+            options = new HashMap<>(options);
+            options.put("amqp.vhost", "test");
+        }
+        if (!options.containsKey("amqp.clientID"))
+        {
+            options = new HashMap<>(options);
+            options.put("jms.clientID", CLIENTID);
+        }
+        if (!options.containsKey("amqp.forceSyncSend"))
+        {
+            options = new HashMap<>(options);
+            options.put("jms.forceSyncSend", "true");
+        }
+        if (!options.containsKey("amqp.populateJMSXUserID"))
+        {
+            options = new HashMap<>(options);
+            options.put("jms.populateJMSXUserID", "true");
+        }
+
+
+        if ("failover".equals(factoryName))
+        {
+            if (!options.containsKey("failover.maxReconnectAttempts"))
+            {
+                options.put("failover.maxReconnectAttempts", "2");
+            }
+            final StringBuilder stem = new StringBuilder("failover:(amqp://localhost:")
+                    .append(System.getProperty("test.port"))
+                    .append(",amqp://localhost:")
+                    .append(System.getProperty("test.port.alt"))
+                    .append(")");
+            appendOptions(options, stem);
+
+            _initialContextEnvironment.put("property.connectionfactory.failover.remoteURI",
+                                           stem.toString());
+        }
+        else if ("default".equals(factoryName))
+        {
+            final StringBuilder stem =
+                    new StringBuilder("amqp://localhost:").append(System.getProperty("test.port"));
+
+            appendOptions(options, stem);
+
+            _initialContextEnvironment.put("property.connectionfactory.default.remoteURI", stem.toString());
+        }
+        else if ("default.ssl".equals(factoryName))
+        {
+
+            final StringBuilder stem = new StringBuilder("amqps://localhost:").append(String.valueOf(System.getProperty("test.port.ssl")));
+            appendOptions(options, stem);
+            _initialContextEnvironment.put("connectionfactory.default.ssl", stem.toString());
+        }
+        return (ConnectionFactory) getInitialContext().lookup(factoryName);
+    }
+
+    @Override
+    public Connection getConnection() throws JMSException, NamingException
+    {
+        return getConnection(QpidBrokerTestCase.GUEST_USERNAME, QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+
+    @Override
+    public Connection getConnection(String username, String password) throws JMSException, NamingException
+    {
+        Connection con = getConnectionFactory().createConnection(username, password);
+        return con;
+    }
+
+    @Override
+    public Connection getConnectionWithPrefetch(int prefetch) throws Exception
+    {
+        String factoryName = Boolean.getBoolean(QpidBrokerTestCase.PROFILE_USE_SSL) ? "default.ssl" : "default";
+
+        final Map<String, String> options =
+                Collections.singletonMap("jms.prefetchPolicy.all", String.valueOf(prefetch));
+        final ConnectionFactory connectionFactory = getConnectionFactory(factoryName, "test", "clientid", options);
+        return connectionFactory.createConnection(QpidBrokerTestCase.GUEST_USERNAME,
+                                                  QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+
+    @Override
+    public Connection getConnectionWithOptions(Map<String, String> options) throws Exception
+    {
+        return getConnectionWithOptions("test", options);
+    }
+
+    @Override
+    public Connection getConnectionWithOptions(String vhost, Map<String, String> options) throws Exception
+    {
+        return getConnectionFactory(Boolean.getBoolean(QpidBrokerTestCase.PROFILE_USE_SSL)
+                                            ? "default.ssl"
+                                            : "default",
+                                    vhost,
+                                    "clientId",
+                                    options).createConnection(QpidBrokerTestCase.GUEST_USERNAME,
+                                                              QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+
+    @Override
+    public Connection getConnectionForVHost(String vhost)
+            throws Exception
+    {
+        return getConnectionForVHost(vhost, QpidBrokerTestCase.GUEST_USERNAME, QpidBrokerTestCase.GUEST_PASSWORD);
+    }
+
+    @Override
+    public Connection getConnectionForVHost(String vhost, String username, String password)
+            throws Exception
+    {
+        return getConnectionFactory(Boolean.getBoolean(QpidBrokerTestCase.PROFILE_USE_SSL)
+                                            ? "default.ssl"
+                                            : "default", vhost, "clientId").createConnection(username, password);
+    }
+
+    @Override
+    public Connection getConnection(String urlString) throws Exception
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Queue getTestQueue(final String testQueueName)
+    {
+        Connection con = null;
+        try
+        {
+            con = getConnection();
+            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            return session.createQueue(testQueueName);
+        }
+        catch (JMSException | NamingException e)
+        {
+            throw new RuntimeException("Failed to create a test queue name : " + testQueueName, e);
+        }
+        finally
+        {
+            if (con != null)
+            {
+                try
+                {
+                    con.close();
+                }
+                catch (JMSException e)
+                {
+                }
+            }
+        }
+    }
+
+    @Override
+    public Queue getQueueFromName(Session session, String name) throws JMSException
+    {
+        return session.createQueue(name);
+    }
+
+    @Override
+    public Queue createTestQueue(Session session, String queueName) throws JMSException
+    {
+        _managementFacade.createEntityUsingAmqpManagement(queueName, session, "org.apache.qpid.Queue");
+
+        return session.createQueue(queueName);
+    }
+
+    @Override
+    public Topic getTestTopic(final String testTopicName)
+    {
+        Connection con = null;
+        try
+        {
+            con = getConnection();
+            Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+            return session.createTopic(testTopicName);
+        }
+        catch (JMSException | NamingException e)
+        {
+            throw new RuntimeException("Failed to create a test topic name : " + testTopicName, e);
+        }
+        finally
+        {
+            if (con != null)
+            {
+                try
+                {
+                    con.close();
+                }
+                catch (JMSException e)
+                {
+                }
+            }
+        }
+    }
+
+    @Override
+    public Topic createTopic(final Connection con, final String topicName) throws JMSException
+    {
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        _managementFacade.createEntityUsingAmqpManagement(topicName, session, "org.apache.qpid.TopicExchange");
+
+        return session.createTopic(topicName);
+    }
+
+    @Override
+    public Topic createTopicOnDirect(final Connection con, String topicName) throws JMSException, URISyntaxException
+    {
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        return session.createTopic("amq.direct/" + topicName);
+    }
+
+    @Override
+    public Topic createTopicOnFanout(final Connection con, String topicName) throws JMSException, URISyntaxException
+    {
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        return session.createTopic("amq.fanout/" + topicName);
+    }
+
+    @Override
+    public long getQueueDepth(final Connection con, final Queue destination) throws Exception
+    {
+        Session session = con.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+
+            MessageProducer producer = session.createProducer(session.createQueue("$management"));
+            final TemporaryQueue responseQ = session.createTemporaryQueue();
+            MessageConsumer consumer = session.createConsumer(responseQ);
+            MapMessage message = session.createMapMessage();
+            message.setStringProperty("index", "object-path");
+            final String escapedName = destination.getQueueName().replaceAll("([/\\\\])", "\\\\$1");
+            message.setStringProperty("key", escapedName);
+            message.setStringProperty("type", "org.apache.qpid.Queue");
+            message.setStringProperty("operation", "getStatistics");
+            message.setStringProperty("statistics", "[\"queueDepthMessages\"]");
+
+            message.setJMSReplyTo(responseQ);
+
+            producer.send(message);
+
+            Message response = consumer.receive();
+            try
+            {
+                if (response instanceof MapMessage)
+                {
+                    return ((MapMessage) response).getLong("queueDepthMessages");
+                }
+                else if (response instanceof ObjectMessage)
+                {
+                    Object body = ((ObjectMessage) response).getObject();
+                    if (body instanceof Map)
+                    {
+                        return Long.valueOf(((Map) body).get("queueDepthMessages").toString());
+                    }
+                }
+                throw new IllegalArgumentException("Cannot parse the results from a management operation");
+            }
+            finally
+            {
+                consumer.close();
+                responseQ.delete();
+            }
+        }
+        finally
+        {
+            session.close();
+        }
+    }
+
+    @Override
+    public Connection getConnectionWithSyncPublishing() throws Exception
+    {
+        return getConnection();
+    }
+
+    @Override
+    public Connection getClientConnection(String username, String password, String id)
+            throws Exception
+    {
+        return getConnectionFactory("default", "test", id).createConnection(username, password);
+    }
+
+    @Override
+    public String getBrokerDetailsFromDefaultConnectionUrl()
+    {
+        throw new UnsupportedOperationException();
+    }
+
+    private void appendOptions(final Map<String, String> actualOptions, final StringBuilder stem)
+    {
+        boolean first = true;
+        for(Map.Entry<String, String> option : actualOptions.entrySet())
+        {
+            if(first)
+            {
+                stem.append('?');
+                first = false;
+            }
+            else
+            {
+                stem.append('&');
+            }
+            try
+            {
+                stem.append(option.getKey()).append('=').append(URLEncoder.encode(option.getValue(), "UTF-8"));
+            }
+            catch (UnsupportedEncodingException e)
+            {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+}
\ No newline at end of file

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/HeartbeatTest.java Mon Jan 16 08:58:24 2017
@@ -61,7 +61,7 @@ public class HeartbeatTest extends QpidB
     public void testHeartbeatsEnabledUsingUrl() throws Exception
     {
         final String url = String.format(CONNECTION_URL_WITH_HEARTBEAT, getDefaultBroker().getAmqpPort(), 1);
-        AMQConnection conn = (AMQConnection) getConnection(new AMQConnectionURL(url));
+        AMQConnection conn = (AMQConnection) getConnection(url);
         conn.setHeartbeatListener(_listener);
         conn.start();
 
@@ -220,7 +220,7 @@ public class HeartbeatTest extends QpidB
 
             final CountDownLatch exceptionLatch = new CountDownLatch(1);
             final String url = String.format(CONNECTION_URL_WITH_HEARTBEAT,  tcpTunneler.getLocalPort(), 1);
-            AMQConnection conn = (AMQConnection) getConnection(new AMQConnectionURL(url));
+            AMQConnection conn = (AMQConnection) getConnection(url);
             conn.setHeartbeatListener(_listener);
             conn.setExceptionListener(new ExceptionListener()
             {

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/SessionCreateTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/SessionCreateTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/SessionCreateTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/SessionCreateTest.java Mon Jan 16 08:58:24 2017
@@ -42,7 +42,7 @@ public class SessionCreateTest extends Q
     public void testSessionCreationLimit() throws Exception
     {
         // Create Client
-        _clientConnection = getConnection("guest", "guest");
+        _clientConnection = getConnection();
 
         _clientConnection.start();
 

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/connection/ExistingSocketTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/connection/ExistingSocketTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/connection/ExistingSocketTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/connection/ExistingSocketTest.java Mon Jan 16 08:58:24 2017
@@ -26,7 +26,6 @@ import java.net.Socket;
 import javax.jms.Connection;
 import javax.jms.JMSException;
 
-import org.apache.qpid.client.AMQConnectionURL;
 import org.apache.qpid.configuration.ClientProperties;
 import org.apache.qpid.test.utils.QpidBrokerTestCase;
 import org.apache.qpid.transport.network.io.IoNetworkTransport;
@@ -47,7 +46,7 @@ public class ExistingSocketTest extends
 
             String url = String.format("amqp://guest:guest@/test?brokerlist='socket://%s'", SOCKET_NAME);
 
-            Connection conn = getConnection(new AMQConnectionURL(url));
+            Connection conn = getConnection(url);
             conn.createSession(true, javax.jms.Session.SESSION_TRANSACTED);
             conn.close();
         }
@@ -61,7 +60,7 @@ public class ExistingSocketTest extends
 
         try
         {
-            getConnection(new AMQConnectionURL(url));
+            getConnection(url);
         }
         catch (JMSException e)
         {

Modified: qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java
URL: http://svn.apache.org/viewvc/qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java?rev=1778992&r1=1778991&r2=1778992&view=diff
==============================================================================
--- qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java (original)
+++ qpid/java/trunk/systests/src/test/java/org/apache/qpid/client/failover/FailoverBehaviourTest.java Mon Jan 16 08:58:24 2017
@@ -1162,7 +1162,7 @@ public class FailoverBehaviourTest exten
 
     private AMQConnection createConnectionWithFailover(Map<String,String> connectionOptions) throws NamingException, JMSException, URLSyntaxException
     {
-        BrokerDetails origBrokerDetails =  ((AMQConnectionFactory)getConnectionFactory("default")).getConnectionURL().getBrokerDetails(0);
+        BrokerDetails origBrokerDetails =  ((AMQConnectionFactory) getConnectionFactory("default")).getConnectionURL().getBrokerDetails(0);
 
         String retries = "200";
         String connectdelay = "1000";



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