You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by lq...@apache.org on 2017/08/23 15:36:47 UTC
[2/4] qpid-broker-j git commit: QPID-7896: [Java System Tests] Create
system tests testing end-to-end message conversion
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transaction/TransactionalTransferTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transaction/TransactionalTransferTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transaction/TransactionalTransferTest.java
index 6fe0b55..64094aa 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transaction/TransactionalTransferTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transaction/TransactionalTransferTest.java
@@ -46,15 +46,15 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.ReceiverSettleMode;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
import org.apache.qpid.server.protocol.v1_0.type.transport.Transfer;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
import org.apache.qpid.tests.protocol.v1_0.InteractionTransactionalState;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.Utils;
-public class TransactionalTransferTest extends ProtocolTestBase
+public class TransactionalTransferTest extends BrokerAdminUsingTestBase
{
private static final String TEST_MESSAGE_CONTENT = "testMessageContent";
private InetSocketAddress _brokerAddress;
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
index 3b8f03b..619e5d9 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/ProtocolHeaderTest.java
@@ -27,13 +27,12 @@ import java.nio.charset.StandardCharsets;
import org.junit.Test;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
-import org.apache.qpid.tests.protocol.v1_0.HeaderResponse;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
-public class ProtocolHeaderTest extends ProtocolTestBase
+public class ProtocolHeaderTest extends BrokerAdminUsingTestBase
{
@Test
@SpecificationTest(section = "2.2",
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
index 56d9eb1..b3f57c1 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/connection/OpenTest.java
@@ -38,14 +38,14 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.ConnectionError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
-public class OpenTest extends ProtocolTestBase
+public class OpenTest extends BrokerAdminUsingTestBase
{
@Test
@SpecificationTest(section = "1.3.4",
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
index eb17d2b..0e33f3a 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/AttachTest.java
@@ -38,12 +38,12 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
-public class AttachTest extends ProtocolTestBase
+public class AttachTest extends BrokerAdminUsingTestBase
{
@Test
@SpecificationTest(section = "1.3.4",
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
index 52b5011..a5537f0 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/FlowTest.java
@@ -39,13 +39,13 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.Flow;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.Utils;
-public class FlowTest extends ProtocolTestBase
+public class FlowTest extends BrokerAdminUsingTestBase
{
@Test
@SpecificationTest(section = "1.3.4",
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
index 6124ae9..5769255 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/link/ResumeDeliveriesTest.java
@@ -67,15 +67,15 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.ReceiverSettleMode;
import org.apache.qpid.server.protocol.v1_0.type.transport.Role;
import org.apache.qpid.server.protocol.v1_0.type.transport.SenderSettleMode;
import org.apache.qpid.server.protocol.v1_0.type.transport.Transfer;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.Response;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
import org.apache.qpid.tests.protocol.v1_0.Utils;
-public class ResumeDeliveriesTest extends ProtocolTestBase
+public class ResumeDeliveriesTest extends BrokerAdminUsingTestBase
{
private static final int MIN_MAX_FRAME_SIZE = 512;
private static final String TEST_MESSAGE_CONTENT = "foo";
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
index bc89d96..cf12b05 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/security/sasl/SaslTest.java
@@ -45,13 +45,13 @@ import org.apache.qpid.server.protocol.v1_0.type.security.SaslChallenge;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslCode;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslMechanisms;
import org.apache.qpid.server.protocol.v1_0.type.security.SaslOutcome;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
import org.apache.qpid.tests.protocol.v1_0.Interaction;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
-public class SaslTest extends ProtocolTestBase
+public class SaslTest extends BrokerAdminUsingTestBase
{
private static final Symbol CRAM_MD5 = Symbol.getSymbol("CRAM-MD5");
private static final Symbol PLAIN = Symbol.getSymbol("PLAIN");
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
----------------------------------------------------------------------
diff --git a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
index e3f83f6..352fd19 100644
--- a/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
+++ b/systests/protocol-tests-amqp-1-0/src/test/java/org/apache/qpid/tests/protocol/v1_0/transport/session/BeginTest.java
@@ -36,12 +36,12 @@ import org.apache.qpid.server.protocol.v1_0.type.transport.Begin;
import org.apache.qpid.server.protocol.v1_0.type.transport.Close;
import org.apache.qpid.server.protocol.v1_0.type.transport.ConnectionError;
import org.apache.qpid.server.protocol.v1_0.type.transport.Open;
-import org.apache.qpid.tests.protocol.v1_0.BrokerAdmin;
+import org.apache.qpid.tests.utils.BrokerAdmin;
import org.apache.qpid.tests.protocol.v1_0.FrameTransport;
-import org.apache.qpid.tests.protocol.v1_0.ProtocolTestBase;
+import org.apache.qpid.tests.utils.BrokerAdminUsingTestBase;
import org.apache.qpid.tests.protocol.v1_0.SpecificationTest;
-public class BeginTest extends ProtocolTestBase
+public class BeginTest extends BrokerAdminUsingTestBase
{
@Test
@SpecificationTest(section = "1.3.4",
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/pom.xml
----------------------------------------------------------------------
diff --git a/systests/systests-utils/pom.xml b/systests/systests-utils/pom.xml
new file mode 100644
index 0000000..1e42dd4
--- /dev/null
+++ b/systests/systests-utils/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ ~
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <parent>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-systests-parent</artifactId>
+ <version>7.0.0-SNAPSHOT</version>
+ <relativePath>../../qpid-systests-parent/pom.xml</relativePath>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>qpid-systests-utils</artifactId>
+ <name>Apache Qpid System Test Utils</name>
+ <description>Utility classes for Apache Qpid system tests</description>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-codegen</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-test-utils</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-plugins-logging-logback</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.qpid</groupId>
+ <artifactId>qpid-broker-plugins-memory-store</artifactId>
+ </dependency>
+
+
+ <dependency>
+ <groupId>com.google.guava</groupId>
+ <artifactId>guava</artifactId>
+ </dependency>
+ </dependencies>
+
+</project>
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdmin.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdmin.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdmin.java
new file mode 100644
index 0000000..6875460
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdmin.java
@@ -0,0 +1,66 @@
+/*
+ * 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.tests.utils;
+
+import java.lang.reflect.Method;
+import java.net.InetSocketAddress;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+import org.apache.qpid.server.plugin.Pluggable;
+
+public interface BrokerAdmin extends Pluggable
+{
+ String TEST_QUEUE_NAME = "testQueue";
+ Long RESTART_TIMEOUT = Long.getLong("brokerAdmin.restart_timeout", 10000);
+
+ void beforeTestClass(final Class testClass);
+ void beforeTestMethod(final Class testClass, final Method method);
+ void afterTestMethod(final Class testClass, final Method method);
+ void afterTestClass(final Class testClass);
+
+ InetSocketAddress getBrokerAddress(PortType portType);
+
+ void createQueue(String queueName);
+ void deleteQueue(String queueName);
+ void putMessageOnQueue(String queueName, String... messages);
+ int getQueueDepthMessages(String testQueueName);
+
+ boolean supportsRestart();
+ ListenableFuture<Void> restart();
+
+ boolean isSASLSupported();
+ boolean isSASLMechanismSupported(String mechanismName);
+ boolean isWebSocketSupported();
+ boolean isQueueDepthSupported();
+
+ String getValidUsername();
+ String getValidPassword();
+
+
+
+ enum PortType
+ {
+ ANONYMOUS_AMQP,
+ ANONYMOUS_AMQPWS,
+ AMQP
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminFactory.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminFactory.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminFactory.java
new file mode 100644
index 0000000..64d4eff
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminFactory.java
@@ -0,0 +1,39 @@
+/*
+ * 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.tests.utils;
+
+import java.util.Map;
+
+import org.apache.qpid.server.plugin.QpidServiceLoader;
+
+public class BrokerAdminFactory
+{
+ BrokerAdmin createInstance(String type)
+ {
+ Map<String, BrokerAdmin> adminFacades = new QpidServiceLoader().getInstancesByType(BrokerAdmin.class);
+ BrokerAdmin brokerAdmin = adminFacades.get(type);
+ if (brokerAdmin == null)
+ {
+ throw new RuntimeException(String.format("Could not find BrokerAdmin implementation of type '%s'", type));
+ }
+ return brokerAdmin;
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminUsingTestBase.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminUsingTestBase.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminUsingTestBase.java
new file mode 100644
index 0000000..73149af
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/BrokerAdminUsingTestBase.java
@@ -0,0 +1,43 @@
+/*
+ * 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.tests.utils;
+
+import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@RunWith(QpidTestRunner.class)
+public abstract class BrokerAdminUsingTestBase
+{
+ private static final Logger LOGGER = LoggerFactory.getLogger(BrokerAdminUsingTestBase.class);
+
+ private BrokerAdmin _brokerAdmin;
+
+ public void init(final BrokerAdmin brokerAdmin)
+ {
+ _brokerAdmin = brokerAdmin;
+ }
+
+ public BrokerAdmin getBrokerAdmin()
+ {
+ return _brokerAdmin;
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/EmbeddedBrokerPerClassAdminImpl.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/EmbeddedBrokerPerClassAdminImpl.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/EmbeddedBrokerPerClassAdminImpl.java
new file mode 100644
index 0000000..68f0ab4
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/EmbeddedBrokerPerClassAdminImpl.java
@@ -0,0 +1,508 @@
+/*
+ * 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.tests.utils;
+
+import java.io.File;
+import java.lang.reflect.Method;
+import java.net.InetSocketAddress;
+import java.nio.file.Files;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
+
+import ch.qos.logback.classic.LoggerContext;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.SystemLauncher;
+import org.apache.qpid.server.SystemLauncherListener;
+import org.apache.qpid.server.logging.logback.LogbackLoggingSystemLauncherListener;
+import org.apache.qpid.server.model.ConfiguredObject;
+import org.apache.qpid.server.model.Container;
+import org.apache.qpid.server.model.Exchange;
+import org.apache.qpid.server.model.IllegalStateTransitionException;
+import org.apache.qpid.server.model.ManageableMessage;
+import org.apache.qpid.server.model.NotFoundException;
+import org.apache.qpid.server.model.Port;
+import org.apache.qpid.server.model.Queue;
+import org.apache.qpid.server.model.SystemConfig;
+import org.apache.qpid.server.model.VirtualHostNode;
+import org.apache.qpid.server.plugin.PluggableService;
+import org.apache.qpid.server.store.MemoryConfigurationStore;
+import org.apache.qpid.server.util.FileUtils;
+import org.apache.qpid.server.virtualhost.QueueManagingVirtualHost;
+import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode;
+import org.apache.qpid.test.utils.LogbackPropertyValueDiscriminator;
+
+@SuppressWarnings("unused")
+@PluggableService
+public class EmbeddedBrokerPerClassAdminImpl implements BrokerAdmin
+{
+ private static final Logger LOGGER = LoggerFactory.getLogger(EmbeddedBrokerPerClassAdminImpl.class);
+ private final Map<String, Integer> _ports = new HashMap<>();
+ private SystemLauncher _systemLauncher;
+ private Container<?> _broker;
+ private VirtualHostNode<?> _currentVirtualHostNode;
+ private String _currentWorkDirectory;
+ private boolean _isPersistentStore;
+
+ @Override
+ public void beforeTestClass(final Class testClass)
+ {
+ setClassQualifiedTestName(testClass.getName());
+ LOGGER.info("========================= starting broker for test class : " + testClass.getSimpleName());
+ try
+ {
+ String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date(System.currentTimeMillis()));
+ _currentWorkDirectory = Files.createTempDirectory(String.format("qpid-work-%s-%s-", timestamp, testClass.getSimpleName())).toString();
+
+ Map<String,String> context = new HashMap<>();
+ context.put("qpid.work_dir", _currentWorkDirectory);
+ context.put("qpid.port.protocol_handshake_timeout", "1000000");
+
+ Map<String,Object> systemConfigAttributes = new HashMap<>();
+ //systemConfigAttributes.put(SystemConfig.INITIAL_CONFIGURATION_LOCATION, "classpath:config-protocol-tests.json");
+ systemConfigAttributes.put(ConfiguredObject.CONTEXT, context);
+ systemConfigAttributes.put(ConfiguredObject.TYPE, System.getProperty("broker.config-store-type", "JSON"));
+ systemConfigAttributes.put(SystemConfig.STARTUP_LOGGED_TO_SYSTEM_OUT, Boolean.FALSE);
+
+ if (Thread.getDefaultUncaughtExceptionHandler() == null)
+ {
+ Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler());
+ }
+
+ LOGGER.info("Starting internal broker (same JVM)");
+
+ List<SystemLauncherListener> systemLauncherListeners = new ArrayList<>();
+ systemLauncherListeners.add(new LogbackLoggingSystemLauncherListener());
+ systemLauncherListeners.add(new ShutdownLoggingSystemLauncherListener());
+ systemLauncherListeners.add(new PortExtractingLauncherListener());
+ _systemLauncher = new SystemLauncher(systemLauncherListeners.toArray(new SystemLauncherListener[systemLauncherListeners.size()]));
+
+ _systemLauncher.startup(systemConfigAttributes);
+ }
+ catch (Exception e)
+ {
+ throw new RuntimeException("Failed to start broker for test class", e);
+ }
+ }
+
+ @Override
+ public void beforeTestMethod(final Class testClass, final Method method)
+ {
+ LOGGER.info("========================= prepare test environment for test : " + testClass.getSimpleName() + "#" + method.getName());
+
+ final String virtualHostNodeName = testClass.getSimpleName() + "_" + method.getName();
+ final String storeType = System.getProperty("virtualhostnode.type");
+ _isPersistentStore = !"Memory".equals(storeType);
+
+ String storeDir = null;
+ if (System.getProperty("profile", "").startsWith("java-dby-mem"))
+ {
+ storeDir = ":memory:";
+ }
+ else if (!MemoryConfigurationStore.TYPE.equals(storeType))
+ {
+ storeDir = "${qpid.work_dir}" + File.separator + virtualHostNodeName;
+ }
+
+ String blueprint = System.getProperty("virtualhostnode.context.blueprint");
+
+ Map<String, Object> attributes = new HashMap<>();
+ attributes.put(VirtualHostNode.NAME, virtualHostNodeName);
+ attributes.put(VirtualHostNode.TYPE, storeType);
+ attributes.put(VirtualHostNode.CONTEXT, Collections.singletonMap("virtualhostBlueprint", blueprint));
+ attributes.put(VirtualHostNode.DEFAULT_VIRTUAL_HOST_NODE, true);
+ attributes.put(VirtualHostNode.VIRTUALHOST_INITIAL_CONFIGURATION, blueprint);
+ if (storeDir != null)
+ {
+ attributes.put(JsonVirtualHostNode.STORE_PATH, storeDir);
+ }
+
+ _currentVirtualHostNode = _broker.createChild(VirtualHostNode.class, attributes);
+
+ LOGGER.info("========================= executing test : " + testClass.getSimpleName() + "#" + method.getName());
+ setClassQualifiedTestName(testClass.getName() + "." + method.getName());
+ LOGGER.info("========================= start executing test : " + testClass.getSimpleName() + "#" + method.getName());
+ }
+
+ @Override
+ public void afterTestMethod(final Class testClass, final Method method)
+ {
+ LOGGER.info("========================= stop executing test : " + testClass.getSimpleName() + "#" + method.getName());
+ setClassQualifiedTestName(testClass.getName());
+ LOGGER.info("========================= cleaning up test environment for test : " + testClass.getSimpleName() + "#" + method.getName());
+ if (Boolean.getBoolean("broker.clean.between.tests"))
+ {
+ _currentVirtualHostNode.delete();
+ }
+ else
+ {
+ _currentVirtualHostNode.setAttributes(Collections.singletonMap(VirtualHostNode.DEFAULT_VIRTUAL_HOST_NODE,
+ false));
+ }
+ setClassQualifiedTestName(testClass.getName());
+ LOGGER.info("========================= cleaning done for test : " + testClass.getSimpleName() + "#" + method.getName());
+ }
+
+ @Override
+ public void afterTestClass(final Class testClass)
+ {
+ LOGGER.info("========================= stopping broker for test class: " + testClass.getSimpleName());
+ _systemLauncher.shutdown();
+ _ports.clear();
+ if (Boolean.getBoolean("broker.clean.between.tests"))
+ {
+ FileUtils.delete(new File(_currentWorkDirectory), true);
+ }
+ LOGGER.info("========================= stopping broker done for test class : " + testClass.getSimpleName());
+ setClassQualifiedTestName(null);
+ }
+
+ @Override
+ public InetSocketAddress getBrokerAddress(final PortType portType)
+ {
+ Integer port = _ports.get(portType.name());
+ if (port == null)
+ {
+ throw new IllegalStateException(String.format("Could not find port with name '%s' on the Broker", portType.name()));
+ }
+ return new InetSocketAddress(port);
+ }
+
+ @Override
+ public void createQueue(final String queueName)
+ {
+ final Map<String, Object> attributes = new HashMap<>();
+ attributes.put(Queue.NAME, queueName);
+ attributes.put(Queue.TYPE, "standard");
+ final Queue queue = _currentVirtualHostNode.getVirtualHost().createChild(Queue.class, attributes);
+ final Exchange exchange = _currentVirtualHostNode.getVirtualHost().getChildByName(Exchange.class, "amq.direct");
+ exchange.bind(queueName, queueName, Collections.emptyMap(), false);
+ }
+
+ @Override
+ public void deleteQueue(final String queueName)
+ {
+ getQueue(queueName).delete();
+ }
+
+ @Override
+ public void putMessageOnQueue(final String queueName, final String... messages)
+ {
+ for (String message : messages)
+ {
+ ((QueueManagingVirtualHost<?>) _currentVirtualHostNode.getVirtualHost()).publishMessage(new ManageableMessage()
+ {
+ @Override
+ public String getAddress()
+ {
+ return queueName;
+ }
+
+ @Override
+ public boolean isPersistent()
+ {
+ return false;
+ }
+
+ @Override
+ public Date getExpiration()
+ {
+ return null;
+ }
+
+ @Override
+ public String getCorrelationId()
+ {
+ return null;
+ }
+
+ @Override
+ public String getAppId()
+ {
+ return null;
+ }
+
+ @Override
+ public String getMessageId()
+ {
+ return null;
+ }
+
+ @Override
+ public String getMimeType()
+ {
+ return "text/plain";
+ }
+
+ @Override
+ public String getEncoding()
+ {
+ return null;
+ }
+
+ @Override
+ public int getPriority()
+ {
+ return 0;
+ }
+
+ @Override
+ public Date getNotValidBefore()
+ {
+ return null;
+ }
+
+ @Override
+ public String getReplyTo()
+ {
+ return null;
+ }
+
+ @Override
+ public Map<String, Object> getHeaders()
+ {
+ return null;
+ }
+
+ @Override
+ public Object getContent()
+ {
+ return message;
+ }
+
+ @Override
+ public String getContentTransferEncoding()
+ {
+ return null;
+ }
+ });
+ }
+
+ }
+
+ @Override
+ public int getQueueDepthMessages(final String testQueueName)
+ {
+ Queue queue = _currentVirtualHostNode.getVirtualHost().getChildByName(Queue.class, testQueueName);
+ return queue.getQueueDepthMessages();
+ }
+
+ @Override
+ public boolean supportsRestart()
+ {
+ return _isPersistentStore;
+ }
+
+ @Override
+ public ListenableFuture<Void> restart()
+ {
+ try
+ {
+ LOGGER.info("Stopping VirtualHostNode for restart");
+ _currentVirtualHostNode.stop();
+ LOGGER.info("Starting VirtualHostNode for restart");
+ _currentVirtualHostNode.start();
+ LOGGER.info("Restarting VirtualHostNode completed");
+ }
+ catch (Exception e)
+ {
+ return Futures.immediateFailedFuture(e);
+ }
+ return Futures.immediateFuture(null);
+ }
+
+ @Override
+ public boolean isSASLSupported()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isSASLMechanismSupported(final String mechanismName)
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isWebSocketSupported()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isQueueDepthSupported()
+ {
+ return true;
+ }
+
+ @Override
+ public String getValidUsername()
+ {
+ return "guest";
+ }
+
+ @Override
+ public String getValidPassword()
+ {
+ return "guest";
+ }
+
+ @Override
+ public String getType()
+ {
+ return "EMBEDDED_BROKER_PER_CLASS";
+ }
+
+ private Queue getQueue(final String queueName)
+ {
+ Collection<Queue> queues = _currentVirtualHostNode.getVirtualHost().getChildren(Queue.class);
+ for (Queue queue : queues)
+ {
+ if (queue.getName().equals(queueName))
+ {
+ return queue;
+ }
+ }
+ throw new NotFoundException(String.format("Queue '%s' not found", queueName));
+ }
+
+ private void setClassQualifiedTestName(final String name)
+ {
+ final LoggerContext loggerContext = ((ch.qos.logback.classic.Logger) LOGGER).getLoggerContext();
+ loggerContext.putProperty(LogbackPropertyValueDiscriminator.CLASS_QUALIFIED_TEST_NAME, name);
+ }
+
+ private class PortExtractingLauncherListener implements SystemLauncherListener
+ {
+ private SystemConfig<?> _systemConfig;
+
+ @Override
+ public void beforeStartup()
+ {
+
+ }
+
+ @Override
+ public void errorOnStartup(final RuntimeException e)
+ {
+
+ }
+
+ @Override
+ public void afterStartup()
+ {
+
+ if (_systemConfig == null)
+ {
+ throw new IllegalStateException("System config is required");
+ }
+
+ _broker = _systemConfig.getContainer();
+ Collection<Port> ports = _broker.getChildren(Port.class);
+ for (Port port : ports)
+ {
+ _ports.put(port.getName(), port.getBoundPort());
+ }
+ }
+
+ @Override
+ public void onContainerResolve(final SystemConfig<?> systemConfig)
+ {
+ _systemConfig = systemConfig;
+ }
+
+ @Override
+ public void onContainerClose(final SystemConfig<?> systemConfig)
+ {
+
+ }
+
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+
+ }
+
+ @Override
+ public void exceptionOnShutdown(final Exception e)
+ {
+
+ }
+ }
+
+
+ private static class UncaughtExceptionHandler implements Thread.UncaughtExceptionHandler
+ {
+ private final AtomicInteger _count = new AtomicInteger(0);
+
+ @Override
+ public void uncaughtException(final Thread t, final Throwable e)
+ {
+ System.err.print("Thread terminated due to uncaught exception");
+ e.printStackTrace();
+
+ LOGGER.error("Uncaught exception from thread {}", t.getName(), e);
+ _count.getAndIncrement();
+ }
+
+ public int getAndResetCount()
+ {
+ int count;
+ do
+ {
+ count = _count.get();
+ }
+ while (!_count.compareAndSet(count, 0));
+ return count;
+ }
+ }
+
+ private class ShutdownLoggingSystemLauncherListener extends SystemLauncherListener.DefaultSystemLauncherListener
+ {
+ @Override
+ public void onShutdown(final int exitCode)
+ {
+ _systemLauncher = null;
+ }
+
+ @Override
+ public void exceptionOnShutdown(final Exception e)
+ {
+ if (e instanceof IllegalStateException
+ || e instanceof IllegalStateTransitionException)
+ {
+ System.out.println(
+ "IllegalStateException occurred on broker shutdown in test ");
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
new file mode 100644
index 0000000..e935067
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/ExternalQpidBrokerAdminImpl.java
@@ -0,0 +1,157 @@
+/*
+ * 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.tests.utils;
+
+import java.lang.reflect.Method;
+import java.net.InetSocketAddress;
+
+import com.google.common.util.concurrent.ListenableFuture;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import org.apache.qpid.server.plugin.PluggableService;
+
+@SuppressWarnings("unused")
+@PluggableService
+public class ExternalQpidBrokerAdminImpl implements BrokerAdmin
+{
+ private static final Logger LOGGER = LoggerFactory.getLogger(ExternalQpidBrokerAdminImpl.class);
+
+ @Override
+ public void beforeTestClass(final Class testClass)
+ {
+ LOGGER.debug("beforeTestClass");
+ }
+
+ @Override
+ public void beforeTestMethod(final Class testClass, final Method method)
+ {
+ LOGGER.debug("beforeTestMethod");
+ }
+
+ @Override
+ public void afterTestMethod(final Class testClass, final Method method)
+ {
+ LOGGER.debug("afterTestMethod");
+ }
+
+ @Override
+ public void afterTestClass(final Class testClass)
+ {
+ LOGGER.debug("afterTestClass");
+ }
+
+ @Override
+ public InetSocketAddress getBrokerAddress(final PortType portType)
+ {
+ Integer port;
+ switch (portType)
+ {
+ case AMQP:
+ port = Integer.getInteger("qpid.tests.protocol.broker.external.port.standard");
+ break;
+ case ANONYMOUS_AMQP:
+ port = Integer.getInteger("qpid.tests.protocol.broker.external.port.anonymous");
+ break;
+ default:
+ throw new IllegalArgumentException(String.format("Unknown port type '%s'", portType));
+ }
+ return new InetSocketAddress(port);
+ }
+
+ @Override
+ public void createQueue(final String queueName)
+ {
+ LOGGER.debug(String.format("creation of queue '%s' requested", queueName));
+ }
+
+ @Override
+ public void deleteQueue(final String queueName)
+ {
+ LOGGER.debug(String.format("deletion of queue '%s' requested", queueName));
+ }
+
+ @Override
+ public void putMessageOnQueue(final String queueName, final String... messages)
+ {
+ LOGGER.debug(String.format("puting of %d messages on queue '%s' requested", messages.length, queueName));
+ }
+
+ @Override
+ public int getQueueDepthMessages(final String testQueueName)
+ {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
+ public boolean supportsRestart()
+ {
+ return false;
+ }
+
+ @Override
+ public ListenableFuture<Void> restart()
+ {
+ throw new UnsupportedOperationException("External Qpid Broker does not support restart.");
+ }
+
+ @Override
+ public boolean isSASLSupported()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isWebSocketSupported()
+ {
+ return true;
+ }
+
+ @Override
+ public boolean isQueueDepthSupported()
+ {
+ return false;
+ }
+
+ @Override
+ public boolean isSASLMechanismSupported(final String mechanismName)
+ {
+ return true;
+ }
+
+ @Override
+ public String getValidUsername()
+ {
+ return "guest";
+ }
+
+ @Override
+ public String getValidPassword()
+ {
+ return "guest";
+ }
+
+ @Override
+ public String getType()
+ {
+ return "EXTERNAL_BROKER";
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a7e4a716/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/QpidTestRunner.java
----------------------------------------------------------------------
diff --git a/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/QpidTestRunner.java b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/QpidTestRunner.java
new file mode 100644
index 0000000..02cec34
--- /dev/null
+++ b/systests/systests-utils/src/main/java/org/apache/qpid/tests/utils/QpidTestRunner.java
@@ -0,0 +1,76 @@
+/*
+ * 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.tests.utils;
+
+import org.junit.runner.notification.RunNotifier;
+import org.junit.runners.BlockJUnit4ClassRunner;
+import org.junit.runners.model.FrameworkMethod;
+import org.junit.runners.model.InitializationError;
+
+public class QpidTestRunner extends BlockJUnit4ClassRunner
+{
+ private final BrokerAdmin _brokerAdmin;
+ private final Class _testClass;
+
+ public QpidTestRunner(final Class<?> klass) throws InitializationError
+ {
+ super(klass);
+ _testClass = klass;
+ _brokerAdmin = (new BrokerAdminFactory()).createInstance("EMBEDDED_BROKER_PER_CLASS");
+ }
+
+ @Override
+ protected Object createTest() throws Exception
+ {
+ Object test = super.createTest();
+ BrokerAdminUsingTestBase qpidTest = ((BrokerAdminUsingTestBase) test);
+ qpidTest.init(_brokerAdmin);
+ return test;
+ }
+
+ @Override
+ public void run(final RunNotifier notifier)
+ {
+ _brokerAdmin.beforeTestClass(_testClass);
+ try
+ {
+ super.run(notifier);
+ }
+ finally
+ {
+ _brokerAdmin.afterTestClass(_testClass);
+ }
+ }
+
+ @Override
+ protected void runChild(final FrameworkMethod method, final RunNotifier notifier)
+ {
+ _brokerAdmin.beforeTestMethod(_testClass, method.getMethod());
+ try
+ {
+ super.runChild(method, notifier);
+ }
+ finally
+ {
+ _brokerAdmin.afterTestMethod(_testClass, method.getMethod());
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org