Repository: qpid-broker-j
Updated Branches:
  refs/heads/master 0ec8be159 -> c82574b9a


QPID-8158: [Broker-J] [System Tests] Simplify GroupBrokerAdmin


Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/c82574b9
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/c82574b9
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/c82574b9

Branch: refs/heads/master
Commit: c82574b9a651dde1c8f07428212e0312a63e685d
Parents: ebf33b3
Author: Alex Rudyy <oru...@apache.org>
Authored: Thu Apr 12 00:58:20 2018 +0100
Committer: Alex Rudyy <oru...@apache.org>
Committed: Thu Apr 12 01:06:29 2018 +0100

----------------------------------------------------------------------
 .../replication/GroupBrokerAdmin.java           | 174 ++-----------------
 .../replication/GroupJmsTestBase.java           |  86 +++++++--
 .../berkeleydb/replication/MultiNodeTest.java   |   3 +-
 .../berkeleydb/replication/TwoNodeTest.java     |   2 -
 4 files changed, 88 insertions(+), 177 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/c82574b9/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupBrokerAdmin.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupBrokerAdmin.java
 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupBrokerAdmin.java
index c11666d..f82a9ad 100644
--- 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupBrokerAdmin.java
+++ 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupBrokerAdmin.java
@@ -23,7 +23,6 @@ package org.apache.qpid.server.store.berkeleydb.replication;
 import static 
org.apache.qpid.systests.admin.SpawnBrokerAdmin.SYSTEST_PROPERTY_SPAWN_BROKER_STARTUP_TIME;
 
 import java.lang.reflect.Method;
-import java.net.InetSocketAddress;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -49,7 +48,6 @@ import 
com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.sleepycat.je.rep.ReplicationConfig;
 
-import org.apache.qpid.server.plugin.PluggableService;
 import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode;
 import 
org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode;
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
@@ -59,14 +57,11 @@ import org.apache.qpid.systests.admin.SpawnBrokerAdmin;
 import org.apache.qpid.test.utils.PortHelper;
 import org.apache.qpid.tests.utils.BrokerAdmin;
 
-@SuppressWarnings("unused")
-@PluggableService
-public class GroupBrokerAdmin implements BrokerAdmin
+public class GroupBrokerAdmin
 {
     private static final int WAIT_LIMIT = 
Integer.getInteger("qpid.test.ha.await", 10000);
     private static final String AMQP_NODE_TYPE = 
"org.apache.qpid.VirtualHostNode";
     private static final String AMQP_REMOTE_NODE_TYPE = 
"org.apache.qpid.server.model.RemoteReplicationNode";
-    private static final String ROLE_UNKNOWN = "UNKNOWN";
     private static final String ROLE_MASTER = "MASTER";
     private static final String ROLE_REPLICA = "REPLICA";
     private static final String NODE_TYPE = "BDB_HA";
@@ -74,9 +69,7 @@ public class GroupBrokerAdmin implements BrokerAdmin
 
     private GroupMember[] _members;
     private ListeningExecutorService _executorService;
-    private Map<String, String> _lastKnownRoles = new ConcurrentHashMap<>();
 
-    @Override
     public void beforeTestClass(final Class testClass)
     {
         GroupConfig runBrokerAdmin = (GroupConfig) 
testClass.getAnnotation(GroupConfig.class);
@@ -112,20 +105,16 @@ public class GroupBrokerAdmin implements BrokerAdmin
         }
     }
 
-    @Override
     public void beforeTestMethod(final Class testClass, final Method method)
     {
-        _lastKnownRoles.clear();
         GroupMember first = _members[0];
         first.getAdmin().beforeTestMethod(_members[0].getName(), NODE_TYPE, 
_members[0].getNodeAttributes());
-        Object role = awaitNodeRoleReplicaOrMaster(first);
-        _lastKnownRoles.put(first.getName(), String.valueOf(role));
+        awaitNodeRoleReplicaOrMaster(first);
         ListenableFuture<Void> f;
         if (_members.length > 2)
         {
             f = invokeParallel(Arrays.stream(_members).skip(1).map(m -> 
(Callable<Void>) () -> {
                 m.getAdmin().beforeTestMethod(m.getName(), NODE_TYPE, 
m.getNodeAttributes());
-                _lastKnownRoles.put(m.getName(), ROLE_UNKNOWN);
                 return null;
             }).collect(Collectors.toList()));
         }
@@ -135,7 +124,6 @@ public class GroupBrokerAdmin implements BrokerAdmin
             {
                 _members[i].getAdmin()
                            .beforeTestMethod(_members[i].getName(), NODE_TYPE, 
_members[i].getNodeAttributes());
-                _lastKnownRoles.put(_members[i].getName(), ROLE_UNKNOWN);
             }
             f = Futures.immediateFuture(null);
         }
@@ -144,18 +132,14 @@ public class GroupBrokerAdmin implements BrokerAdmin
         awaitAllTransitionIntoReplicaOrMaster();
     }
 
-
-    @Override
     public void afterTestMethod(final Class testClass, final Method method)
     {
         awaitFuture(WAIT_LIMIT, invokeParallel(Arrays.stream(_members).map(m 
-> (Callable<Void>) () -> {
             m.getAdmin().afterTestMethod(testClass, method);
             return null;
         }).collect(Collectors.toList())));
-        _lastKnownRoles.clear();
     }
 
-    @Override
     public void afterTestClass(final Class testClass)
     {
         try
@@ -174,47 +158,9 @@ public class GroupBrokerAdmin implements BrokerAdmin
         }
     }
 
-    @Override
-    public InetSocketAddress getBrokerAddress(final PortType portType)
-    {
-        return getLastKnownMasterAdmin().getBrokerAddress(portType);
-    }
-
-    @Override
-    public void createQueue(final String queueName)
-    {
-        getLastKnownMasterAdmin().createQueue(queueName);
-    }
-
-    @Override
-    public void deleteQueue(final String queueName)
-    {
-        getLastKnownMasterAdmin().deleteQueue(queueName);
-    }
-
-    @Override
-    public void putMessageOnQueue(final String queueName, final String... 
messages)
-    {
-        getLastKnownMasterAdmin().putMessageOnQueue(queueName, messages);
-    }
-
-    @Override
-    public int getQueueDepthMessages(final String testQueueName)
-    {
-        return getLastKnownMasterAdmin().getQueueDepthMessages(testQueueName);
-    }
-
-    @Override
-    public boolean supportsRestart()
-    {
-        return getLastKnownMasterAdmin().supportsRestart();
-    }
-
-    @Override
     public ListenableFuture<Void> restart()
     {
         awaitFuture(WAIT_LIMIT, invokeParallel(Arrays.stream(_members).map(m 
-> (Callable<Void>) () -> {
-            _lastKnownRoles.put(m.getName(), ROLE_UNKNOWN);
             m.getAdmin().restart();
             return null;
         }).collect(Collectors.toList())));
@@ -223,64 +169,9 @@ public class GroupBrokerAdmin implements BrokerAdmin
         return Futures.immediateFuture(null);
     }
 
-    @Override
-    public boolean isSASLSupported()
-    {
-        return getLastKnownMasterAdmin().isSASLSupported();
-    }
-
-    @Override
-    public boolean isSASLMechanismSupported(final String mechanismName)
-    {
-        return 
getLastKnownMasterAdmin().isSASLMechanismSupported(mechanismName);
-    }
-
-    @Override
-    public boolean isWebSocketSupported()
-    {
-        return getLastKnownMasterAdmin().isWebSocketSupported();
-    }
-
-    @Override
-    public boolean isQueueDepthSupported()
-    {
-        return getLastKnownMasterAdmin().isQueueDepthSupported();
-    }
-
-    @Override
-    public boolean isManagementSupported()
-    {
-        return getLastKnownMasterAdmin().isManagementSupported();
-    }
-
-    @Override
-    public String getValidUsername()
-    {
-        return getLastKnownMasterAdmin().getValidUsername();
-    }
-
-    @Override
-    public String getValidPassword()
-    {
-        return getLastKnownMasterAdmin().getValidPassword();
-    }
-
-    @Override
-    public String getKind()
-    {
-        return KIND_BROKER_J;
-    }
-
-    @Override
-    public String getType()
-    {
-        return "BDB-HA";
-    }
-
     public void stop()
     {
         awaitFuture(WAIT_LIMIT, invokeParallel(Arrays.stream(_members).map(m 
-> (Callable<Void>) () -> {
-            _lastKnownRoles.put(m.getName(), ROLE_UNKNOWN);
             m.getAdmin().stop();
             return null;
         }).collect(Collectors.toList())));
@@ -288,20 +179,12 @@ public class GroupBrokerAdmin implements BrokerAdmin
 
     public void start()
     {
-        start(true);
-    }
-
-    public void start(boolean assertRoles)
-    {
         awaitFuture(WAIT_LIMIT, invokeParallel(Arrays.stream(_members).map(m 
-> (Callable<Void>) () -> {
             m.getAdmin().start();
             return null;
         }).collect(Collectors.toList())));
 
-        if (assertRoles)
-        {
-            awaitAllTransitionIntoReplicaOrMaster();
-        }
+        awaitAllTransitionIntoReplicaOrMaster();
     }
 
     public void startNode(final int amqpPort)
@@ -315,7 +198,6 @@ public class GroupBrokerAdmin implements BrokerAdmin
     {
         GroupMember member = getMemberByAmqpPort(amqpPort);
         member.getAdmin().stop();
-        _lastKnownRoles.put(member.getName(), ROLE_UNKNOWN);
     }
 
     public int[] getGroupAmqpPorts()
@@ -390,8 +272,7 @@ public class GroupBrokerAdmin implements BrokerAdmin
 
     public void awaitNodeRole(final int amqpPort, String... role)
     {
-        Object actualRole = awaitNodeToAttainAttributeValue(amqpPort, 
BDBHAVirtualHostNode.ROLE, (Object[]) role);
-        _lastKnownRoles.put(getMemberByAmqpPort(amqpPort).getName(), 
String.valueOf(actualRole));
+        awaitNodeToAttainAttributeValue(amqpPort, BDBHAVirtualHostNode.ROLE, 
(Object[]) role);
     }
 
     public Object awaitNodeToAttainAttributeValue(final int amqpPort,
@@ -451,11 +332,6 @@ public class GroupBrokerAdmin implements BrokerAdmin
         return member.getAdmin();
     }
 
-    private SpawnBrokerAdmin getLastKnownMasterAdmin()
-    {
-        return getLastKnownMaster().getAdmin();
-    }
-
     private GroupMember[] initializeGroupData(final String groupName, final 
SpawnBrokerAdmin[] admins)
     {
         PortHelper helper = new PortHelper();
@@ -496,7 +372,7 @@ public class GroupBrokerAdmin implements BrokerAdmin
             nodeAttributes.put(BDBHAVirtualHostNode.PERMITTED_NODES, 
permitted);
             nodeAttributes.put(BDBHAVirtualHostNode.CONTEXT, contextAsString);
             members[i] = new GroupMember(nodeName,
-                                         
admins[i].getBrokerAddress(PortType.AMQP).getPort(),
+                                         
admins[i].getBrokerAddress(BrokerAdmin.PortType.AMQP).getPort(),
                                          port,
                                          admins[i],
                                          nodeAttributes);
@@ -552,45 +428,29 @@ public class GroupBrokerAdmin implements BrokerAdmin
 
     private void awaitAllTransitionIntoReplicaOrMaster()
     {
+        Map<String, Object> roles = new ConcurrentHashMap<>();
         awaitFuture(WAIT_LIMIT, invokeParallel(Arrays.stream(_members).map(m 
-> (Callable<Void>) () -> {
-            awaitNodeRoleReplicaOrMaster(m);
+            Object role = awaitNodeRoleReplicaOrMaster(m);
+            roles.put(m.getName(), String.valueOf(role));
             return null;
         }).collect(Collectors.toList())));
 
-        if (_lastKnownRoles.values().stream().noneMatch(role -> 
ROLE_MASTER.equals(role) || ROLE_REPLICA.equals(role)))
+        if (roles.values().stream().noneMatch(role -> ROLE_MASTER.equals(role) 
|| ROLE_REPLICA.equals(role)))
         {
             throw new BrokerAdminException("Unexpected node roles " + 
Joiner.on(", ").withKeyValueSeparator(" -> ")
-                                                                            
.join(_lastKnownRoles));
+                                                                            
.join(roles));
         }
     }
 
     private Object awaitNodeRoleReplicaOrMaster(final GroupMember m)
     {
-        Object result = m.getAdmin().awaitAttributeValue(WAIT_LIMIT,
-                                                         true,
-                                                         m.getName(),
-                                                         AMQP_NODE_TYPE,
-                                                         
BDBHAVirtualHostNode.ROLE,
-                                                         ROLE_REPLICA,
-                                                         ROLE_MASTER);
-        _lastKnownRoles.put(m.getName(), String.valueOf(result));
-        return result;
-    }
-
-
-    private GroupMember getLastKnownMaster()
-    {
-        final Map.Entry<String, String> entry =
-                _lastKnownRoles.entrySet()
-                               .stream()
-                               .filter(e -> ROLE_MASTER.equals(e.getValue()))
-                               .findFirst()
-                               .orElseThrow(() -> new 
BrokerAdminException("Master node is not found"));
-
-        return Arrays.stream(_members)
-                     .filter(m -> entry.getKey().equals(m.getName()))
-                     .findFirst()
-                     .orElseThrow(() -> new BrokerAdminException("Master node 
is not found"));
+        return m.getAdmin().awaitAttributeValue(WAIT_LIMIT,
+                                                true,
+                                                m.getName(),
+                                                AMQP_NODE_TYPE,
+                                                BDBHAVirtualHostNode.ROLE,
+                                                ROLE_REPLICA,
+                                                ROLE_MASTER);
     }
 
     private String objectToJson(final Object object)

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/c82574b9/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupJmsTestBase.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupJmsTestBase.java
 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupJmsTestBase.java
index e209dd2..820c7ae 100644
--- 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupJmsTestBase.java
+++ 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupJmsTestBase.java
@@ -25,43 +25,97 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertThat;
 import static org.junit.Assume.assumeThat;
 
+import java.util.concurrent.atomic.AtomicReference;
+
 import javax.jms.Connection;
 import javax.jms.JMSException;
 import javax.jms.Queue;
 import javax.jms.Session;
 
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
 import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.rules.ExternalResource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import org.apache.qpid.systests.ConnectionBuilder;
 import org.apache.qpid.systests.JmsProvider;
-import org.apache.qpid.systests.JmsTestBase;
 import org.apache.qpid.systests.Utils;
-import org.apache.qpid.tests.utils.RunBrokerAdmin;
+import org.apache.qpid.test.utils.UnitTestBase;
 
-@RunBrokerAdmin(type = "BDB-HA")
-public class GroupJmsTestBase extends JmsTestBase
+public class GroupJmsTestBase extends UnitTestBase
 {
     private static final int FAILOVER_CYCLECOUNT = 40;
     private static final int FAILOVER_CONNECTDELAY = 1000;
     static final int SHORT_FAILOVER_CYCLECOUNT = 2;
     static final int SHORT_FAILOVER_CONNECTDELAY = 200;
 
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(GroupJmsTestBase.class);
+    private static JmsProvider _jmsProvider;
+    private static GroupBrokerAdmin _groupBrokerAdmin;
+    private static AtomicReference<Class<?>> _testClass = new 
AtomicReference<>();
+
     @BeforeClass
-    public static void verify()
+    public static void setUpTestBase()
     {
         assumeThat(System.getProperty("virtualhostnode.type", "BDB"), 
is(equalTo("BDB")));
+
+        _jmsProvider = Utils.getJmsProvider();
+    }
+
+    @AfterClass
+    public static void tearDownTestBase()
+    {
+        Class<?> testClass = _testClass.get();
+        if (testClass != null && _testClass.compareAndSet(testClass, null))
+        {
+            _groupBrokerAdmin.afterTestClass(testClass);
+        }
+    }
+
+    @Rule
+    public final ExternalResource resource = new ExternalResource()
+    {
+        @Override
+        protected void before()
+        {
+            if (_testClass.compareAndSet(null, 
GroupJmsTestBase.this.getClass() ))
+            {
+                _groupBrokerAdmin = new GroupBrokerAdmin();
+                
_groupBrokerAdmin.beforeTestClass(GroupJmsTestBase.this.getClass());
+            }
+        }
+
+        @Override
+        protected void after()
+        {
+
+        }
+    };
+
+    @Before
+    public void beforeTestMethod() throws Exception
+    {
+        _groupBrokerAdmin.beforeTestMethod(getClass(), 
getClass().getMethod(getTestName()));
+    }
+
+    @After
+    public void afterTestMethod() throws Exception
+    {
+        _groupBrokerAdmin.afterTestMethod(getClass(), 
getClass().getMethod(getTestName()));
     }
 
-    @Override
-    public GroupBrokerAdmin getBrokerAdmin()
+    GroupBrokerAdmin getBrokerAdmin()
     {
-        return (GroupBrokerAdmin) super.getBrokerAdmin();
+        return _groupBrokerAdmin;
     }
 
-    @Override
-    public ConnectionBuilder getConnectionBuilder()
+    ConnectionBuilder getConnectionBuilder()
     {
-        final ConnectionBuilder connectionBuilder = 
getJmsProvider().getConnectionBuilder()
+        final ConnectionBuilder connectionBuilder = 
_jmsProvider.getConnectionBuilder()
                                                                     
.setClientId(getTestName())
                                                                     
.setFailoverReconnectDelay(FAILOVER_CONNECTDELAY)
                                                                     
.setFailoverReconnectAttempts(FAILOVER_CYCLECOUNT)
@@ -84,7 +138,7 @@ public class GroupJmsTestBase extends JmsTestBase
         return connectionBuilder;
     }
 
-    protected void assertProduceConsume(final Queue queue) throws Exception
+    void assertProduceConsume(final Queue queue) throws Exception
     {
         final Connection connection = getConnectionBuilder().build();
         try
@@ -97,13 +151,13 @@ public class GroupJmsTestBase extends JmsTestBase
         }
     }
 
-
-    protected JmsProvider getJmsProvider()
+    JmsProvider getJmsProvider()
     {
-        return Utils.getJmsProvider();
+        return _jmsProvider;
     }
 
-    protected Queue createTestQueue(final Connection connection) throws 
JMSException
+
+    Queue createTestQueue(final Connection connection) throws JMSException
     {
         Session session = connection.createSession(false, 
Session.AUTO_ACKNOWLEDGE);
         try

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/c82574b9/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
index 0a3df8f..c2009b0 100644
--- 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
+++ 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
@@ -21,6 +21,7 @@ package org.apache.qpid.server.store.berkeleydb.replication;
 
 import static junit.framework.TestCase.assertEquals;
 import static org.apache.qpid.systests.Utils.INDEX;
+import static org.apache.qpid.systests.Utils.getReceiveTimeout;
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.nullValue;
@@ -77,9 +78,7 @@ import org.apache.qpid.systests.Utils;
 import org.apache.qpid.test.utils.PortHelper;
 import org.apache.qpid.test.utils.TestUtils;
 import org.apache.qpid.tests.utils.ConfigItem;
-import org.apache.qpid.tests.utils.RunBrokerAdmin;
 
-@RunBrokerAdmin(type = "BDB-HA")
 @GroupConfig(numberOfNodes = 3, groupName = "test")
 @ConfigItem(name = Broker.BROKER_FAIL_STARTUP_WITH_ERRORED_CHILD, value = 
"false")
 public class MultiNodeTest extends GroupJmsTestBase

http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/c82574b9/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
----------------------------------------------------------------------
diff --git 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
index 151592c..87585e7 100644
--- 
a/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
+++ 
b/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
@@ -34,9 +34,7 @@ import org.junit.Test;
 
 import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode;
 import org.apache.qpid.systests.Utils;
-import org.apache.qpid.tests.utils.RunBrokerAdmin;
 
-@RunBrokerAdmin(type = "BDB-HA")
 @GroupConfig(numberOfNodes = 2, groupName = "test")
 public class TwoNodeTest extends GroupJmsTestBase
 {


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

Reply via email to