You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/01/11 15:44:39 UTC

[1/3] qpid-jms-amqp-0-x git commit: QPID-8074: [JMS AMQP 0-x][System Tests] Copy client specofic test ConnectionTest from Broker-J sources

Repository: qpid-jms-amqp-0-x
Updated Branches:
  refs/heads/master 63c595372 -> a21316270


QPID-8074: [JMS AMQP 0-x][System Tests] Copy client specofic test ConnectionTest from Broker-J sources


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/commit/9374adf0
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/tree/9374adf0
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/diff/9374adf0

Branch: refs/heads/master
Commit: 9374adf037a790dab9e6beef50e3842c434fe551
Parents: 63c5953
Author: Alex Rudyy <or...@apache.org>
Authored: Thu Jan 11 11:41:44 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Thu Jan 11 11:41:44 2018 +0000

----------------------------------------------------------------------
 .../apache/qpid/systest/core/BrokerAdmin.java   |   3 +-
 .../core/brokerj/SpawnQpidBrokerAdmin.java      |   6 +
 .../qpid/systest/connection/ConnectionTest.java | 326 +++++++++++++++++++
 3 files changed, 334 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/9374adf0/systests/src/main/java/org/apache/qpid/systest/core/BrokerAdmin.java
----------------------------------------------------------------------
diff --git a/systests/src/main/java/org/apache/qpid/systest/core/BrokerAdmin.java b/systests/src/main/java/org/apache/qpid/systest/core/BrokerAdmin.java
index befba5f..136d3f0 100644
--- a/systests/src/main/java/org/apache/qpid/systest/core/BrokerAdmin.java
+++ b/systests/src/main/java/org/apache/qpid/systest/core/BrokerAdmin.java
@@ -43,10 +43,11 @@ public interface BrokerAdmin
 
     String getValidUsername();
     String getValidPassword();
+    String getVirtualHostName();
 
     String getType();
-    BrokerType getBrokerType();
 
+    BrokerType getBrokerType();
     Connection getConnection() throws JMSException;
     Connection getConnection(Map<String, String> options) throws JMSException;
 

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/9374adf0/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
----------------------------------------------------------------------
diff --git a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
index 8842e83..913b018 100644
--- a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
+++ b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
@@ -219,6 +219,12 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
     }
 
     @Override
+    public String getVirtualHostName()
+    {
+        return _virtualHostNodeName;
+    }
+
+    @Override
     public String getType()
     {
         return SpawnQpidBrokerAdmin.class.getSimpleName();

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/9374adf0/systests/src/test/java/org/apache/qpid/systest/connection/ConnectionTest.java
----------------------------------------------------------------------
diff --git a/systests/src/test/java/org/apache/qpid/systest/connection/ConnectionTest.java b/systests/src/test/java/org/apache/qpid/systest/connection/ConnectionTest.java
new file mode 100644
index 0000000..ce62831
--- /dev/null
+++ b/systests/src/test/java/org/apache/qpid/systest/connection/ConnectionTest.java
@@ -0,0 +1,326 @@
+/*
+ *
+ * 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.systest.connection;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.is;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.junit.Assume.assumeThat;
+
+import java.net.InetSocketAddress;
+import java.util.Enumeration;
+
+import javax.jms.Connection;
+import javax.jms.ConnectionMetaData;
+import javax.jms.QueueSession;
+import javax.jms.TopicSession;
+
+import org.junit.Test;
+
+import org.apache.qpid.QpidException;
+import org.apache.qpid.client.AMQConnection;
+import org.apache.qpid.client.AMQConnectionURL;
+import org.apache.qpid.client.AMQQueue;
+import org.apache.qpid.client.AMQSession;
+import org.apache.qpid.client.AMQTopic;
+import org.apache.qpid.configuration.ClientProperties;
+import org.apache.qpid.exchange.ExchangeDefaults;
+import org.apache.qpid.jms.Session;
+import org.apache.qpid.systest.core.BrokerAdmin;
+import org.apache.qpid.systest.core.JmsTestBase;
+
+public class ConnectionTest extends JmsTestBase
+{
+    private static final String BROKER_URL_TEMPLATE = "tcp://%s:%d?failover='nofailover'";
+    private static final String CONNECTION_URL_TEMPLATE = "amqp://%s:%s@%s/%s?brokerlist='%s'";
+    private static final String USER1 = "guest";
+    private static final String USER1_PASSWORD = "guest";
+    private static final String USER2 = "admin";
+    private static final String USER2_PASSWORD = "admin";
+
+    @Test
+    public void testDefaultExchanges() throws Exception
+    {
+        assumeThat("0-10 c++ broker doesn't implement wacky exchanges",
+                   getBrokerAdmin().getBrokerType(),
+                   is(equalTo(BrokerAdmin.BrokerType.BROKERJ)));
+
+        String connectionUrlTemplate = CONNECTION_URL_TEMPLATE
+                                       + "&defaultQueueExchange='test.direct'"
+                                       + "&defaultTopicExchange='test.topic'"
+                                       + "&temporaryQueueExchange='tmp.direct'"
+                                       + "&temporaryTopicExchange='tmp.topic'";
+        BrokerAdmin admin = getBrokerAdmin();
+        InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+        String brokerUrl = String.format(BROKER_URL_TEMPLATE, brokerAddress.getHostName(), brokerAddress.getPort());
+        String urlString = String.format(connectionUrlTemplate,
+                                         admin.getValidUsername(),
+                                         admin.getValidPassword(),
+                                         getTestName(),
+                                         admin.getVirtualHostName(),
+                                         brokerUrl);
+        AMQConnection conn = new AMQConnection(new AMQConnectionURL(urlString));
+        try
+        {
+
+            AMQSession sess = (AMQSession) conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            sess.declareExchange("test.direct", ExchangeDefaults.DIRECT_EXCHANGE_CLASS, false);
+
+            sess.declareExchange("tmp.direct", ExchangeDefaults.DIRECT_EXCHANGE_CLASS, false);
+
+            sess.declareExchange("tmp.topic", ExchangeDefaults.TOPIC_EXCHANGE_CLASS, false);
+
+            sess.declareExchange("test.topic", ExchangeDefaults.TOPIC_EXCHANGE_CLASS, false);
+
+            QueueSession queueSession = conn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            AMQQueue queue = (AMQQueue) queueSession.createQueue("MyQueue");
+
+            assertEquals(queue.getExchangeName(), "test.direct");
+
+            AMQQueue tempQueue = (AMQQueue) queueSession.createTemporaryQueue();
+
+            assertEquals(tempQueue.getExchangeName(), "tmp.direct");
+
+            queueSession.close();
+
+            TopicSession topicSession = conn.createTopicSession(false, Session.AUTO_ACKNOWLEDGE);
+
+            AMQTopic topic = (AMQTopic) topicSession.createTopic("silly.topic");
+
+            assertEquals(topic.getExchangeName(), "test.topic");
+
+            AMQTopic tempTopic = (AMQTopic) topicSession.createTemporaryTopic();
+
+            assertEquals(tempTopic.getExchangeName(), "tmp.topic");
+
+            topicSession.close();
+        }
+        finally
+        {
+            conn.close();
+        }
+    }
+
+    @Test
+    public void testClientIdIsPopulatedAutomatically() throws Exception
+    {
+        BrokerAdmin admin = getBrokerAdmin();
+        InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+        String brokerUrl = String.format(BROKER_URL_TEMPLATE, brokerAddress.getHostName(), brokerAddress.getPort());
+        Connection connection = new AMQConnection(brokerUrl,
+                                                  admin.getValidUsername(),
+                                                  admin.getValidPassword(),
+                                                  null,
+                                                  admin.getVirtualHostName());
+        try
+        {
+            assertNotNull(connection.getClientID());
+        }
+        finally
+        {
+            connection.close();
+        }
+        connection.close();
+    }
+
+    @Test
+    public void testUnsupportedSASLMechanism() throws Exception
+    {
+        BrokerAdmin admin = getBrokerAdmin();
+        InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+        String brokerUrl = String.format(BROKER_URL_TEMPLATE + "&sasl_mechs='%s'", brokerAddress.getHostName(),
+                                         brokerAddress.getPort(), "MY_MECH");
+
+        try
+        {
+            new AMQConnection(brokerUrl,
+                              admin.getValidUsername(),
+                              admin.getValidPassword(),
+                              null,
+                              admin.getVirtualHostName());
+            fail("The client should throw a ConnectionException stating the" +
+                 " broker does not support the SASL mech specified by the client");
+        }
+        catch (QpidException e)
+        {
+            if (getProtocol().equals("0-10"))
+            {
+                assertTrue("Unexpected exception message : " + e.getMessage(),
+                           e.getMessage().contains("Client and broker have no SASL mechanisms in common."));
+                assertTrue("Unexpected exception message : " + e.getMessage(),
+                           e.getMessage().contains("Client restricted itself to : MY_MECH"));
+            }
+            else
+            {
+                assertTrue("Unexpected exception message : " + e.getMessage(),
+                           e.getMessage().contains("No supported security mechanism found"));
+            }
+        }
+    }
+
+    /**
+     * Tests that when the same user connects twice with same clientid, the second connection
+     * fails if the clientid verification feature is enabled (which uses a dummy 0-10 Session
+     * with the clientid as its name to detect the previous usage of the clientid by the user)
+     */
+    @Test
+    public void testClientIDVerificationForSameUser() throws Exception
+    {
+        assumeThat("QPID-3396: 0-10 client specific behaviour",
+                   getProtocol(),
+                   is(equalTo("0-10")));
+
+        System.setProperty(ClientProperties.QPID_VERIFY_CLIENT_ID, "true");
+        try
+        {
+            BrokerAdmin admin = getBrokerAdmin();
+            InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+            String brokerUrl = String.format(BROKER_URL_TEMPLATE, brokerAddress.getHostName(), brokerAddress.getPort());
+            Connection con = new AMQConnection(brokerUrl,
+                                               admin.getValidUsername(),
+                                               admin.getValidPassword(),
+                                               "client_id",
+                                               admin.getVirtualHostName());
+            try
+            {
+
+                new AMQConnection(brokerUrl,
+                                  admin.getValidUsername(),
+                                  admin.getValidPassword(),
+                                  "client_id",
+                                  admin.getVirtualHostName());
+
+                fail("The client should throw a ConnectionException stating the" +
+                     " client ID is not unique");
+            }
+            catch (QpidException e)
+            {
+                assertTrue("Incorrect exception thrown: " + e.getMessage(),
+                           e.getMessage().contains("ClientID must be unique"));
+            }
+            finally
+            {
+                con.close();
+            }
+        }
+        finally
+        {
+            System.clearProperty(ClientProperties.QPID_VERIFY_CLIENT_ID);
+        }
+    }
+
+    /**
+     * Tests that when different users connects with same clientid, the second connection
+     * succeeds even though the clientid verification feature is enabled (which uses a dummy
+     * 0-10 Session with the clientid as its name; these are only verified unique on a
+     * per-principal basis)
+     */
+    @Test
+    public void testClientIDVerificationForDifferentUsers() throws Exception
+    {
+        System.setProperty(ClientProperties.QPID_VERIFY_CLIENT_ID, "true");
+        try
+        {
+            BrokerAdmin admin = getBrokerAdmin();
+            InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+            String brokerUrl = String.format(BROKER_URL_TEMPLATE, brokerAddress.getHostName(), brokerAddress.getPort());
+
+            String clientId = "client_id";
+            Connection con = new AMQConnection(brokerUrl, USER1, USER1_PASSWORD,
+                                               clientId, admin.getVirtualHostName());
+            try
+            {
+                Connection con2 = new AMQConnection(brokerUrl, USER2, USER2_PASSWORD,
+                                                    clientId, admin.getVirtualHostName());
+                try
+                {
+                    assertNotNull(con2.createSession(false, Session.AUTO_ACKNOWLEDGE));
+                }
+                finally
+                {
+                    con2.close();
+                }
+            }
+            finally
+            {
+                con.close();
+            }
+        }
+        finally
+        {
+            System.clearProperty(ClientProperties.QPID_VERIFY_CLIENT_ID);
+        }
+    }
+
+    @Test
+    public void testExceptionWhenUserPassIsRequired() throws Exception
+    {
+        assumeThat("QPID-3396: NPE is thrown on 0-8..0-10.",
+                   getProtocol(),
+                   is(equalTo("0-10")));
+
+        BrokerAdmin admin = getBrokerAdmin();
+        InetSocketAddress brokerAddress = admin.getBrokerAddress(BrokerAdmin.PortType.AMQP);
+        String brokerUrl = String.format(BROKER_URL_TEMPLATE, brokerAddress.getHostName(), brokerAddress.getPort())
+                           + "&sasl_mechs='PLAIN%2520CRAM-MD5'";
+        String urlString = String.format("amqp:///%s?brokerlist='%s'", admin.getVirtualHostName(), brokerUrl);
+        AMQConnection conn = null;
+        try
+        {
+            conn = new AMQConnection(urlString);
+            fail("Exception should be thrown as user name and password is required");
+        }
+        catch (Exception e)
+        {
+            if (!e.getMessage().contains("Username and Password is required for the selected mechanism"))
+            {
+                if (conn != null && !conn.isClosed())
+                {
+                    conn.close();
+                }
+                fail("Incorrect Exception thrown! The exception thrown is : " + e.getMessage());
+            }
+        }
+    }
+
+    @Test
+    public void testConnectionMetadata() throws Exception
+    {
+        Connection con = getConnection();
+        ConnectionMetaData metaData = con.getMetaData();
+        assertNotNull(metaData);
+
+        assertNotNull("Provider version unexpectedly null", metaData.getProviderVersion());
+        assertTrue("Provider version unexpectedly empty", metaData.getProviderVersion().length() > 0);
+
+        assertTrue("Provider major version has unexpected value", metaData.getProviderMajorVersion() > -1);
+        assertTrue("Provider minor version has unexpected value", metaData.getProviderMinorVersion() > -1);
+
+        Enumeration names = metaData.getJMSXPropertyNames();
+        assertNotNull("JMSXPropertyNames unexpectedly null", names);
+        assertTrue("JMSXPropertyNames should have at least one name", names.hasMoreElements());
+    }
+}


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


[2/3] qpid-jms-amqp-0-x git commit: QPID-8074: [JMS AMQP 0-x][System Tests] Run system tests as part of integration-test maven phase

Posted by or...@apache.org.
QPID-8074: [JMS AMQP 0-x][System Tests] Run system tests as part of integration-test maven phase

* Change surefire settings to run system tests as part of integration-test maven phase
* Change surefire settings to have separate working directories per amqp protocol
* Describe how to run system tests in README.txt
* Fix typos
* Miscellaneous minor improvements


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/commit/450005bf
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/tree/450005bf
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/diff/450005bf

Branch: refs/heads/master
Commit: 450005bf555c51e688e5c046f4a9684017a73a55
Parents: 9374adf
Author: Alex Rudyy <or...@apache.org>
Authored: Thu Jan 11 15:38:38 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Thu Jan 11 15:38:38 2018 +0000

----------------------------------------------------------------------
 README.txt                                      | 12 +++++++++
 systests/pom.xml                                | 28 ++++++++++++++------
 .../core/brokerj/SpawnQpidBrokerAdmin.java      | 27 ++++++++-----------
 .../core/brokerj/SpawnQpidBrokerAdminTest.java  | 11 +++-----
 4 files changed, 47 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/450005bf/README.txt
----------------------------------------------------------------------
diff --git a/README.txt b/README.txt
index 9766138..ad0f65b 100644
--- a/README.txt
+++ b/README.txt
@@ -18,6 +18,18 @@ Perform a subset of the tests
 
   mvn verify -Dtest=TestNamePattern* -DfailIfNoTests=false
 
+Execute system tests against Broker-J using Java 8 or above
+
+  mvn verify -Pbroker-j
+
+Execute system tests with AMQP 0-9-1 against Broker-J using Java 8 and above
+
+  mvn verify -Pbroker-j  -Dqpid.amqp.version=0-9-1
+
+Execute system tests against Broker-J using Java 7 and specifying a path to Java 8 executable to run the broker
+
+  mvn verify -Pbroker-j -Dqpid.systest.java8.executable=/usr/java/jdk1.8.0_121/bin/java
+
 Execute the unit tests and then produce the code coverage report
 
   mvn test jacoco:report

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/450005bf/systests/pom.xml
----------------------------------------------------------------------
diff --git a/systests/pom.xml b/systests/pom.xml
index 7d8cdc1..1ace38f 100644
--- a/systests/pom.xml
+++ b/systests/pom.xml
@@ -30,10 +30,6 @@
     <name>Apache Qpid JMS AMQP 0-x System Tests</name>
     <description>Apache Qpid JMS AMQP 0-x System Tests</description>
 
-    <properties>
-        <qpid.amqp.version>0-10</qpid.amqp.version>
-    </properties>
-
     <dependencies>
 
         <dependency>
@@ -120,11 +116,23 @@
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-surefire-plugin</artifactId>
                 <configuration>
+                    <skip>true</skip>
                     <systemPropertyVariables>
-                       <qpid.amqp.version>${qpid.amqp.version}</qpid.amqp.version>
                         <qpid.dest_syntax>BURL</qpid.dest_syntax>
                     </systemPropertyVariables>
                 </configuration>
+                <executions>
+                    <execution>
+                        <id>integration-test</id>
+                        <phase>integration-test</phase>
+                        <goals>
+                            <goal>test</goal>
+                        </goals>
+                        <configuration>
+                            <skip>false</skip>
+                        </configuration>
+                    </execution>
+                </executions>
             </plugin>
         </plugins>
     </build>
@@ -144,13 +152,15 @@
             For example, -Dqpid.amqp.version=0-9-1 can be set to test 0-9-1.
 
             Examples of running tests:
-             mvn test -Pbroker-j
-             mvn test -Pbroker-j -Dqpid.amqp.version=0-9-1 -Dqpid.systest.java8.executable=/usr/java/jdk1.8.0_121/bin/java
+             mvn verify -Pbroker-j
+             mvn verify -Pbroker-j -Dqpid.amqp.version=0-9-1 -Dqpid.systest.java8.executable=/usr/java/jdk1.8.0_121/bin/java
         -->
         <profile>
             <id>broker-j</id>
 
             <properties>
+                <qpid.amqp.version>0-10</qpid.amqp.version>
+                <surefire.working.directory>${project.build.directory}${file.separator}surefire-reports${file.separator}${qpid.amqp.version}</surefire.working.directory>
                 <qpid-broker-j-version>7.0.0</qpid-broker-j-version>
                 <qpid.systest.broker_admin>org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin</qpid.systest.broker_admin>
                 <qpid.systest.java8.executable>java</qpid.systest.java8.executable>
@@ -163,7 +173,9 @@
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-surefire-plugin</artifactId>
                         <configuration>
+                            <workingDirectory>${surefire.working.directory}</workingDirectory>
                             <systemPropertyVariables>
+                                <qpid.amqp.version>${qpid.amqp.version}</qpid.amqp.version>
                                 <qpid.systest.brokerj.dependencies>${qpid.systest.brokerj.dependencies}</qpid.systest.brokerj.dependencies>
                                 <qpid.systest.java8.executable>${qpid.systest.java8.executable}</qpid.systest.java8.executable>
                                 <qpid.systest.build.classpath.file>${project.build.directory}/qpid.build.classpath.txt</qpid.systest.build.classpath.file>
@@ -171,7 +183,7 @@
                                 <qpid.systest.broker_admin>${qpid.systest.broker_admin}</qpid.systest.broker_admin>
                                 <qpid.systest.virtualhostnode.type>JSON</qpid.systest.virtualhostnode.type>
                                 <qpid.systest.virtualhost.blueprint>${qpid.systest.virtualhost.blueprint}</qpid.systest.virtualhost.blueprint>
-                                <qpid.systest.logback.logs_dir>${project.basedir}${file.separator}target${file.separator}surefire-reports</qpid.systest.logback.logs_dir>
+                                <qpid.systest.logback.logs_dir>${surefire.working.directory}</qpid.systest.logback.logs_dir>
                                 <qpid.systest.broker.clean.between.tests>true</qpid.systest.broker.clean.between.tests>
                             </systemPropertyVariables>
                         </configuration>

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/450005bf/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
----------------------------------------------------------------------
diff --git a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
index 913b018..1569854 100644
--- a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
+++ b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
@@ -23,7 +23,6 @@ package org.apache.qpid.systest.core.brokerj;
 import static java.nio.charset.StandardCharsets.UTF_8;
 
 import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -74,8 +73,8 @@ import org.apache.qpid.systest.core.BrokerAdmin;
 import org.apache.qpid.systest.core.BrokerAdminException;
 import org.apache.qpid.systest.core.dependency.ClasspathQuery;
 import org.apache.qpid.systest.core.logback.LogbackPropertyValueDiscriminator;
-import org.apache.qpid.systest.core.util.FileUtils;
 import org.apache.qpid.systest.core.logback.LogbackSocketPortNumberDefiner;
+import org.apache.qpid.systest.core.util.FileUtils;
 import org.apache.qpid.systest.core.util.SystemUtils;
 
 public class SpawnQpidBrokerAdmin implements BrokerAdmin
@@ -89,13 +88,13 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
     private static final String SYSTEST_PROPERTY_BROKER_PROCESS = "qpid.systest.broker.process";
     private static final String SYSTEST_PROPERTY_SPAWN_BROKER_STARTUP_TIME = "qpid.systest.broker_startup_time";
     private static final String SYSTEST_PROPERTY_BROKER_CLEAN_BETWEEN_TESTS = "qpid.systest.broker.clean.between.tests";
+    private static final String SYSTEST_PROPERTY_JAVA_EXECUTABLE = "qpid.systest.java8.executable";
 
     static final String SYSTEST_PROPERTY_VIRTUALHOSTNODE_TYPE = "qpid.systest.virtualhostnode.type";
     static final String SYSTEST_PROPERTY_VIRTUALHOST_BLUEPRINT = "qpid.systest.virtualhost.blueprint";
     static final String SYSTEST_PROPERTY_INITIAL_CONFIGURATION_LOCATION = "qpid.systest.initialConfigurationLocation";
     static final String SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE = "qpid.systest.build.classpath.file";
-    static final String SYSTEST_PROPERTY_JAVA8_EXECUTABLE = "qpid.systest.java8.executable";
-    static final String SYSTEST_PROPERTY_BROKERJ_DEPENDECIES = "qpid.systest.brokerj.dependencies";
+    static final String SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES = "qpid.systest.brokerj.dependencies";
 
     private final static AtomicLong BROKER_INSTANCE_COUNTER = new AtomicLong();
 
@@ -305,7 +304,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         File file = new File(System.getProperty(SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE));
         if (!file.exists())
         {
-            String dependencies = System.getProperty(SYSTEST_PROPERTY_BROKERJ_DEPENDECIES);
+            String dependencies = System.getProperty(SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES);
             final ClasspathQuery classpathQuery = new ClasspathQuery(SpawnQpidBrokerAdmin.class,
                                                                      Arrays.asList(dependencies.split(",")));
             classpath = classpathQuery.getClasspath();
@@ -328,7 +327,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
             }
         }
 
-        jvmArguments.add(0, System.getProperty(SYSTEST_PROPERTY_JAVA8_EXECUTABLE, "/usr/bin/java"));
+        jvmArguments.add(0, System.getProperty(SYSTEST_PROPERTY_JAVA_EXECUTABLE, "java"));
         jvmArguments.add(1, "-cp");
         jvmArguments.add(2, classpath);
         jvmArguments.add("-Dqpid.systest.logback.socket.port="
@@ -587,7 +586,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         }
         catch (JMSException e)
         {
-            throw new BrokerAdminException(String.format("Cannot create virtual host %s", virtualHostNodeName), e);
+            throw new BrokerAdminException(String.format("Cannot create virtual host '%s'", virtualHostNodeName), e);
         }
     }
 
@@ -605,7 +604,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         }
         catch (AmqpManagementFacade.OperationUnsuccessfulException e)
         {
-            throw new BrokerAdminException(String.format("Cannot create test virtual host '%s'", virtualHostNodeName),
+            throw new BrokerAdminException(String.format("Cannot update test virtual host '%s'", virtualHostNodeName),
                                            e);
         }
         finally
@@ -757,23 +756,19 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
 
     private String dumpThreads()
     {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
         try
         {
             Process process = Runtime.getRuntime().exec("jstack " + _pid);
-            InputStream is = process.getInputStream();
-            byte[] buffer = new byte[1024];
-            int length;
-            while ((length = is.read(buffer)) != -1)
+            try (InputStream is = process.getInputStream())
             {
-                baos.write(buffer, 0, length);
+                return new String(ByteStreams.toByteArray(is));
             }
         }
-        catch (Exception e)
+        catch (IOException e)
         {
             LOGGER.error("Error whilst collecting thread dump for " + _pid, e);
         }
-        return new String(baos.toByteArray());
+        return "";
     }
 
 

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/450005bf/systests/src/test/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdminTest.java
----------------------------------------------------------------------
diff --git a/systests/src/test/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdminTest.java b/systests/src/test/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdminTest.java
index c4140a2..f33e714 100644
--- a/systests/src/test/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdminTest.java
+++ b/systests/src/test/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdminTest.java
@@ -20,19 +20,16 @@
  */
 package org.apache.qpid.systest.core.brokerj;
 
-import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_BROKERJ_DEPENDECIES;
+import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES;
 import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE;
 import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_INITIAL_CONFIGURATION_LOCATION;
-import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_JAVA8_EXECUTABLE;
 import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_VIRTUALHOST_BLUEPRINT;
 import static org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin.SYSTEST_PROPERTY_VIRTUALHOSTNODE_TYPE;
-import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.junit.Assert.fail;
 import static org.junit.Assume.assumeThat;
 
-import java.io.File;
 import java.util.Hashtable;
 
 import javax.jms.Connection;
@@ -270,9 +267,9 @@ public class SpawnQpidBrokerAdminTest
     {
         assumeThat(String.format("Broker-J classpath property (%s) is not set", SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE),
                    System.getProperty(SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE), is(notNullValue()));
-        assumeThat(String.format("Broker dependencies property (%s) is not set", SYSTEST_PROPERTY_BROKERJ_DEPENDECIES),
-                   System.getProperty(SYSTEST_PROPERTY_BROKERJ_DEPENDECIES), is(notNullValue()));
+        assumeThat(String.format("Broker dependencies property (%s) is not set", SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES),
+                   System.getProperty(SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES), is(notNullValue()));
         assumeThat(String.format("Broker-J initial configuration property (%s) is not set", SYSTEST_PROPERTY_INITIAL_CONFIGURATION_LOCATION),
                    System.getProperty(SYSTEST_PROPERTY_INITIAL_CONFIGURATION_LOCATION), is(notNullValue()));
     }
-}
\ No newline at end of file
+}


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


[3/3] qpid-jms-amqp-0-x git commit: QPID-8074: [JMS AMQP 0-x][System Tests] Segregate broker test logs with client test logs in the same log file

Posted by or...@apache.org.
QPID-8074: [JMS AMQP 0-x][System Tests] Segregate broker test logs with client test logs in the same log file


Project: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/commit/a2131627
Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/tree/a2131627
Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/diff/a2131627

Branch: refs/heads/master
Commit: a21316270ba311e75859bf874464e32fc1c0f351
Parents: 450005b
Author: Alex Rudyy <or...@apache.org>
Authored: Thu Jan 11 15:40:13 2018 +0000
Committer: Alex Rudyy <or...@apache.org>
Committed: Thu Jan 11 15:40:13 2018 +0000

----------------------------------------------------------------------
 systests/pom.xml                                |   3 +-
 .../core/brokerj/SpawnQpidBrokerAdmin.java      | 206 +++++++++++++++++--
 2 files changed, 187 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/a2131627/systests/pom.xml
----------------------------------------------------------------------
diff --git a/systests/pom.xml b/systests/pom.xml
index 1ace38f..25e65f0 100644
--- a/systests/pom.xml
+++ b/systests/pom.xml
@@ -161,6 +161,7 @@
             <properties>
                 <qpid.amqp.version>0-10</qpid.amqp.version>
                 <surefire.working.directory>${project.build.directory}${file.separator}surefire-reports${file.separator}${qpid.amqp.version}</surefire.working.directory>
+                <qpid.systest.broker.clean.between.tests>true</qpid.systest.broker.clean.between.tests>
                 <qpid-broker-j-version>7.0.0</qpid-broker-j-version>
                 <qpid.systest.broker_admin>org.apache.qpid.systest.core.brokerj.SpawnQpidBrokerAdmin</qpid.systest.broker_admin>
                 <qpid.systest.java8.executable>java</qpid.systest.java8.executable>
@@ -184,7 +185,7 @@
                                 <qpid.systest.virtualhostnode.type>JSON</qpid.systest.virtualhostnode.type>
                                 <qpid.systest.virtualhost.blueprint>${qpid.systest.virtualhost.blueprint}</qpid.systest.virtualhost.blueprint>
                                 <qpid.systest.logback.logs_dir>${surefire.working.directory}</qpid.systest.logback.logs_dir>
-                                <qpid.systest.broker.clean.between.tests>true</qpid.systest.broker.clean.between.tests>
+                                <qpid.systest.broker.clean.between.tests>${qpid.systest.broker.clean.between.tests}</qpid.systest.broker.clean.between.tests>
                             </systemPropertyVariables>
                         </configuration>
                     </plugin>

http://git-wip-us.apache.org/repos/asf/qpid-jms-amqp-0-x/blob/a2131627/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
----------------------------------------------------------------------
diff --git a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
index 1569854..5b54b57 100644
--- a/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
+++ b/systests/src/main/java/org/apache/qpid/systest/core/brokerj/SpawnQpidBrokerAdmin.java
@@ -48,7 +48,6 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
-import java.util.concurrent.atomic.AtomicLong;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -80,7 +79,7 @@ import org.apache.qpid.systest.core.util.SystemUtils;
 public class SpawnQpidBrokerAdmin implements BrokerAdmin
 {
     private static final Logger LOGGER = LoggerFactory.getLogger(SpawnQpidBrokerAdmin.class);
-    private static final String BROKER_LOG_PREFIX = "BROKER";
+    private static final String BROKER_LOG_PREFIX = "BRK";
     private static final String SYSTEST_PROPERTY_PREFIX = "qpid.systest.";
     private static final String SYSTEST_PROPERTY_BROKER_READY = "qpid.systest.broker.ready";
     private static final String SYSTEST_PROPERTY_BROKER_STOPPED = "qpid.systest.broker.stopped";
@@ -89,6 +88,16 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
     private static final String SYSTEST_PROPERTY_SPAWN_BROKER_STARTUP_TIME = "qpid.systest.broker_startup_time";
     private static final String SYSTEST_PROPERTY_BROKER_CLEAN_BETWEEN_TESTS = "qpid.systest.broker.clean.between.tests";
     private static final String SYSTEST_PROPERTY_JAVA_EXECUTABLE = "qpid.systest.java8.executable";
+    private static final String SYSTEST_PROPERTY_LOGBACK_CONTEXT = "qpid.systest.logback.context";
+    private static final String SYSTEST_PROPERTY_REMOTE_DEBUGGER = "qpid.systest.remote_debugger";
+    private static final String SYSTEST_PROPERTY_LOGBACK_ORIGIN = "qpid.systest.logback.origin";
+    private static final String SYSTEST_PROPERTY_LOGBACK_SOCKET_PORT = "qpid.systest.logback.socket.port";
+
+    private static final String BROKER_TYPE_LOGBACK_SOCKET_LOGGER =
+            "org.apache.qpid.server.logging.logback.BrokerLogbackSocketLogger";
+    private static final String BROKER_TYPE_NAME_AND_LEVEL_LOG_INCLUSION_RULE =
+            "org.apache.qpid.server.logging.logback.BrokerNameAndLevelLogInclusionRule";
+    private static final String BROKER_TYPE_VIRTUAL_HOST_NODE = "org.apache.qpid.VirtualHostNode";
 
     static final String SYSTEST_PROPERTY_VIRTUALHOSTNODE_TYPE = "qpid.systest.virtualhostnode.type";
     static final String SYSTEST_PROPERTY_VIRTUALHOST_BLUEPRINT = "qpid.systest.virtualhost.blueprint";
@@ -96,8 +105,6 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
     static final String SYSTEST_PROPERTY_BUILD_CLASSPATH_FILE = "qpid.systest.build.classpath.file";
     static final String SYSTEST_PROPERTY_BROKERJ_DEPENDENCIES = "qpid.systest.brokerj.dependencies";
 
-    private final static AtomicLong BROKER_INSTANCE_COUNTER = new AtomicLong();
-
     private volatile List<ListeningPort> _ports;
     private volatile Process _process;
     private volatile Integer _pid;
@@ -123,7 +130,9 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         createVirtualHost(virtualHostNodeName);
         _virtualHostNodeName = virtualHostNodeName;
         LOGGER.info("========================= executing test : {}#{}", testClass.getSimpleName(), method.getName());
-        setClassQualifiedTestName(testClass.getName() + "." + method.getName());
+        String qualifiedTestName = String.format("%s.%s", testClass.getName(), method.getName());
+        createBrokerSocketLoggerAndRulesAndDeleteOldLogger(method.getName() + "Logger", qualifiedTestName);
+        setClassQualifiedTestName(qualifiedTestName);
         LOGGER.info("========================= start executing test : {}#{}",
                     testClass.getSimpleName(),
                     method.getName());
@@ -136,7 +145,9 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         LOGGER.info("========================= stop executing test : {}#{}",
                     testClass.getSimpleName(),
                     method.getName());
-        setClassQualifiedTestName(testClass.getName());
+        String qualifiedTestName = testClass.getName();
+        createBrokerSocketLoggerAndRulesAndDeleteOldLogger(testClass.getSimpleName(), qualifiedTestName);
+        setClassQualifiedTestName(qualifiedTestName);
         LOGGER.info("========================= cleaning up test environment for test : {}#{}",
                     testClass.getSimpleName(),
                     method.getName());
@@ -171,8 +182,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
             case AMQP:
                 for (ListeningPort p : _ports)
                 {
-                    if (p.getProtocol() == null
-                        && (p.getTransport().contains("TCP") /*|| p.getTransport().contains("SSL") */))
+                    if (p.getProtocol() == null && (p.getTransport().contains("TCP")))
                     {
                         port = p.getPort();
                         break;
@@ -323,24 +333,24 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
             if (jvmProperty.startsWith(SYSTEST_PROPERTY_PREFIX)
                 || jvmProperty.equalsIgnoreCase("java.io.tmpdir"))
             {
-                jvmArguments.add("-D" + jvmProperty + "=" + jvmProperties.getProperty(jvmProperty));
+                jvmArguments.add(String.format("-D%s=%s", jvmProperty, jvmProperties.getProperty(jvmProperty)));
             }
         }
 
         jvmArguments.add(0, System.getProperty(SYSTEST_PROPERTY_JAVA_EXECUTABLE, "java"));
         jvmArguments.add(1, "-cp");
         jvmArguments.add(2, classpath);
-        jvmArguments.add("-Dqpid.systest.logback.socket.port="
-                         + LogbackSocketPortNumberDefiner.getLogbackSocketPortNumber());
-        jvmArguments.add("-Dqpid.systest.logback.logs_dir=" + System.getProperty("qpid.systest.logback.logs_dir",
-                                                                                 "${qpid.work_dir}"));
-        jvmArguments.add(String.format("-Dqpid.systest.logback.origin=%s-%d",
+        jvmArguments.add(String.format("-D%s=%d",
+                                       SYSTEST_PROPERTY_LOGBACK_SOCKET_PORT,
+                                       LogbackSocketPortNumberDefiner.getLogbackSocketPortNumber()));
+        jvmArguments.add(String.format("-D%s=%s-%s",
+                                       SYSTEST_PROPERTY_LOGBACK_ORIGIN,
                                        BROKER_LOG_PREFIX,
-                                       BROKER_INSTANCE_COUNTER.getAndIncrement()));
-        jvmArguments.add("-Dqpid.systest.logback.context=" + testClass.getName());
-        if (System.getProperty("qpid.systest.remote_debugger") != null)
+                                       testClass.getSimpleName()));
+        jvmArguments.add(String.format("-D%s=%s", SYSTEST_PROPERTY_LOGBACK_CONTEXT, testClass.getName()));
+        if (System.getProperty(SYSTEST_PROPERTY_REMOTE_DEBUGGER) != null)
         {
-            jvmArguments.add(System.getProperty("qpid.systest.remote_debugger"));
+            jvmArguments.add(System.getProperty(SYSTEST_PROPERTY_REMOTE_DEBUGGER));
         }
         jvmArguments.add("org.apache.qpid.server.Main");
         jvmArguments.add("-prop");
@@ -504,7 +514,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
                 try
                 {
                     new AmqpManagementFacade().createEntityUsingAmqpManagement(virtualHostNodeName,
-                                                                               "org.apache.qpid.VirtualHostNode",
+                                                                               BROKER_TYPE_VIRTUAL_HOST_NODE,
                                                                                attributes,
                                                                                session);
                 }
@@ -541,7 +551,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
                 try
                 {
                     new AmqpManagementFacade().deleteEntityUsingAmqpManagement(virtualHostNodeName,
-                                                                               "org.apache.qpid.VirtualHostNode",
+                                                                               BROKER_TYPE_VIRTUAL_HOST_NODE,
                                                                                session);
                 }
                 catch (AmqpManagementFacade.OperationUnsuccessfulException e)
@@ -598,7 +608,7 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         try
         {
             new AmqpManagementFacade().updateEntityUsingAmqpManagement(virtualHostNodeName,
-                                                                       "org.apache.qpid.VirtualHostNode",
+                                                                       BROKER_TYPE_VIRTUAL_HOST_NODE,
                                                                        attributes,
                                                                        session);
         }
@@ -613,6 +623,160 @@ public class SpawnQpidBrokerAdmin implements BrokerAdmin
         }
     }
 
+    private void createBrokerSocketLoggerAndRulesAndDeleteOldLogger(String loggerName, String classQualifiedTestName)
+    {
+        try
+        {
+            AmqpManagementFacade amqpManagementFacade = new AmqpManagementFacade();
+            Connection connection = createConnection("$management");
+            try
+            {
+                connection.start();
+
+                String oldLogger = findOldLogger(amqpManagementFacade, connection);
+                if (oldLogger != null)
+                {
+                    removeBrokerLogger(oldLogger, amqpManagementFacade, connection);
+                }
+
+                createBrokerSocketLogger(loggerName, classQualifiedTestName, amqpManagementFacade, connection);
+
+                createBrokerLoggerRule(loggerName, "Root", "ROOT", "INFO", amqpManagementFacade, connection);
+                createBrokerLoggerRule(loggerName,
+                                       "Qpid",
+                                       "org.apache.qpid.*",
+                                       "DEBUG",
+                                       amqpManagementFacade,
+                                       connection);
+                createBrokerLoggerRule(loggerName,
+                                       "Operational",
+                                       "qpid.message.*",
+                                       "INFO",
+                                       amqpManagementFacade,
+                                       connection);
+                createBrokerLoggerRule(loggerName,
+                                       "Statistics",
+                                       "qpid.statistics.*",
+                                       "INFO",
+                                       amqpManagementFacade,
+                                       connection);
+            }
+            finally
+            {
+                connection.close();
+            }
+        }
+        catch (JMSException e)
+        {
+            throw new BrokerAdminException(String.format("Cannot create broker socket logger and rules for '%s'",
+                                                         classQualifiedTestName), e);
+        }
+    }
+
+    private String findOldLogger(final AmqpManagementFacade amqpManagementFacade, final Connection connection)
+            throws JMSException
+    {
+        String oldLoggerName = null;
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+            List<Map<String, Object>> loggers =
+                    amqpManagementFacade.managementQueryObjects(BROKER_TYPE_LOGBACK_SOCKET_LOGGER,
+                                                                session);
+            for (Map<String, Object> logger : loggers)
+            {
+                if ("BrokerLogbackSocket".equals(logger.get("qpid-type")))
+                {
+                    if (oldLoggerName == null)
+                    {
+                        oldLoggerName = (String) logger.get("name");
+                    }
+                    else
+                    {
+                        throw new BrokerAdminException("More than one BrokerLogbackSocket is configured on Broker");
+                    }
+                }
+            }
+        }
+        finally
+        {
+            session.close();
+        }
+        return oldLoggerName;
+    }
+
+    private void removeBrokerLogger(final String loggerName,
+                                    final AmqpManagementFacade amqpManagementFacade,
+                                    final Connection connection) throws JMSException
+    {
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+            amqpManagementFacade.deleteEntityUsingAmqpManagement(loggerName,
+                                                                 BROKER_TYPE_LOGBACK_SOCKET_LOGGER,
+                                                                 session);
+        }
+        finally
+        {
+            session.close();
+        }
+    }
+
+    private void createBrokerSocketLogger(final String loggerName,
+                                          final String classQualifiedTestName,
+                                          final AmqpManagementFacade amqpManagementFacade, final Connection connection)
+            throws JMSException
+    {
+        Map<String, Object> attributes = new HashMap<>();
+        attributes.put("name", loggerName);
+        attributes.put("port", "${" + SYSTEST_PROPERTY_LOGBACK_SOCKET_PORT + "}");
+        attributes.put("type", "BrokerLogbackSocket");
+        attributes.put("qpid-type", "BrokerLogbackSocket");
+        attributes.put("contextProperties", "{\"classQualifiedTestName\" : \"" + classQualifiedTestName + "\"}");
+        attributes.put("mappedDiagnosticContext", "{\"origin\" : \"" + BROKER_LOG_PREFIX + "-" + loggerName + "\"}");
+
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+            amqpManagementFacade.createEntityUsingAmqpManagement(loggerName,
+                                                                 BROKER_TYPE_LOGBACK_SOCKET_LOGGER,
+                                                                 attributes,
+                                                                 session);
+        }
+        finally
+        {
+            session.close();
+        }
+    }
+
+    private void createBrokerLoggerRule(final String brokerLoggerName,
+                                        final String ruleName,
+                                        final String loggerName,
+                                        final String loggerLevel,
+                                        final AmqpManagementFacade amqpManagementFacade, final Connection connection)
+            throws JMSException
+    {
+        final Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+        try
+        {
+            final Map<String, Object> attributes = new HashMap<>();
+            attributes.put("name", ruleName);
+            attributes.put("type", "NameAndLevel");
+            attributes.put("qpid-type", "NameAndLevel");
+            attributes.put("object-path", brokerLoggerName);
+            attributes.put("loggerName", loggerName);
+            attributes.put("level", loggerLevel);
+            amqpManagementFacade.createEntityUsingAmqpManagement(ruleName,
+                                                                 BROKER_TYPE_NAME_AND_LEVEL_LOG_INCLUSION_RULE,
+                                                                 attributes,
+                                                                 session);
+        }
+        finally
+        {
+            session.close();
+        }
+    }
+
     void shutdown()
     {
         if (SystemUtils.isWindows())


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