From 4d7d63621523d4ca43e7a41de0d37239ec5278e7 Mon Sep 17 00:00:00 2001 From: Keith Wall Date: Mon, 1 Sep 2014 13:41:33 +0000 Subject: QPID-6063: [Java Broker] Disambiguate the concept of a node being unreachable from a node awaiting election git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1621775 13f79535-47bb-0310-9956-ffa450edef68 --- .../jmx/BDBHAMessageStoreManagerMBean.java | 2 +- .../jmx/BDBHAMessageStoreManagerMBeanTest.java | 7 +-- .../berkeleydb/BDBHARemoteReplicationNode.java | 2 +- .../berkeleydb/BDBHARemoteReplicationNodeImpl.java | 37 +++++++------- .../berkeleydb/BDBHAVirtualHostNode.java | 4 +- .../berkeleydb/BDBHAVirtualHostNodeImpl.java | 44 ++++++++--------- .../virtualhostnode/berkeleydb/NodeRole.java | 56 ++++++++++++++++++++++ .../qpid/management/virtualhostnode/bdb_ha/show.js | 4 +- .../store/berkeleydb/BDBHAVirtualHostNodeTest.java | 31 ++++++------ .../berkeleydb/BDBHARemoteReplicationNodeTest.java | 2 +- ...BDBHAVirtualHostNodeOperationalLoggingTest.java | 22 ++++----- .../berkeleydb/BDBHAVirtualHostNodeTestHelper.java | 20 ++++---- .../replication/BDBHAVirtualHostNodeRestTest.java | 34 ++++++------- 13 files changed, 162 insertions(+), 103 deletions(-) create mode 100644 qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/NodeRole.java (limited to 'qpid/java') diff --git a/qpid/java/bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBean.java b/qpid/java/bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBean.java index 56a160aef2..1369a3e26a 100644 --- a/qpid/java/bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBean.java +++ b/qpid/java/bdbstore/jmx/src/main/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBean.java @@ -149,7 +149,7 @@ public class BDBHAMessageStoreManagerMBean extends AMQManagedObject implements M { try { - return _virtualHostNode.getRole(); + return _virtualHostNode.getRole().name(); } catch (RuntimeException e) { diff --git a/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBeanTest.java b/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBeanTest.java index 94f7bb3a84..4a5f3e3650 100644 --- a/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBeanTest.java +++ b/qpid/java/bdbstore/jmx/src/test/java/org/apache/qpid/server/store/berkeleydb/jmx/BDBHAMessageStoreManagerMBeanTest.java @@ -44,6 +44,7 @@ import org.apache.qpid.server.model.RemoteReplicationNode; import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHost; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; +import org.apache.qpid.server.virtualhostnode.berkeleydb.NodeRole; public class BDBHAMessageStoreManagerMBeanTest extends TestCase { @@ -53,7 +54,7 @@ public class BDBHAMessageStoreManagerMBeanTest extends TestCase private static final String TEST_NODE_HOST_PORT = "host:1234"; private static final String TEST_HELPER_HOST_PORT = "host:5678"; private static final String TEST_DURABILITY = "sync,sync,all"; - private static final String TEST_NODE_STATE = "MASTER"; + private static final NodeRole TEST_NODE_ROLE = NodeRole.MASTER; private static final boolean TEST_DESIGNATED_PRIMARY_FLAG = false; private BDBHAVirtualHostNode _virtualHostNode; @@ -133,9 +134,9 @@ public class BDBHAMessageStoreManagerMBeanTest extends TestCase public void testNodeState() throws Exception { - when(_virtualHostNode.getRole()).thenReturn(TEST_NODE_STATE); + when(_virtualHostNode.getRole()).thenReturn(TEST_NODE_ROLE); - assertEquals(TEST_NODE_STATE, _mBean.getAttribute(ManagedBDBHAMessageStore.ATTR_NODE_STATE)); + assertEquals(TEST_NODE_ROLE.name(), _mBean.getAttribute(ManagedBDBHAMessageStore.ATTR_NODE_STATE)); } public void testDesignatedPrimaryFlag() throws Exception diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNode.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNode.java index 10b2b13bc9..bb9f564d64 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNode.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNode.java @@ -42,7 +42,7 @@ public interface BDBHARemoteReplicationNode _state; private final boolean _isMonitor; private boolean _detached; private BDBHAVirtualHostNodeLogSubject _virtualHostNodeLogSubject; private GroupLogSubject _groupLogSubject; + private volatile NodeRole _lastKnownRole; public BDBHARemoteReplicationNodeImpl(BDBHAVirtualHostNode virtualHostNode, Map attributes, ReplicatedEnvironmentFacade replicatedEnvironmentFacade) { @@ -77,7 +73,11 @@ public class BDBHARemoteReplicationNodeImpl extends AbstractConfiguredObject(State.ACTIVE); + _state = new AtomicReference<>(State.ACTIVE); + + _role = NodeRole.UNREACHABLE; + _lastKnownRole = NodeRole.UNREACHABLE; + _isMonitor = (Boolean)attributes.get(MONITOR); } @@ -100,9 +100,9 @@ public class BDBHARemoteReplicationNodeImpl extends AbstractConfiguredObject)proxyForValidation).getRole())) + NodeRole newRole = (NodeRole) ((BDBHARemoteReplicationNode) proxyForValidation).getAttribute(ROLE); + if (NodeRole.MASTER != newRole) { - throw new IllegalArgumentException("Changing role to other value then " + MASTER.name() + " is unsupported"); + throw new IllegalArgumentException("Changing role to other value then " + NodeRole.MASTER + " is unsupported"); } } @@ -224,9 +225,9 @@ public class BDBHARemoteReplicationNodeImpl extends AbstractConfiguredObject> extends @ManagedAttribute(defaultValue = "0") int getQuorumOverride(); - @ManagedAttribute(persist = false, defaultValue = "UNKNOWN") - String getRole(); + @ManagedAttribute(persist = false, defaultValue = "WAITING") + NodeRole getRole(); @DerivedAttribute Long getLastKnownReplicationTransactionId(); diff --git a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java index fcb651181c..5b81e6eccf 100644 --- a/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java +++ b/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeImpl.java @@ -95,7 +95,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode _environmentFacade = new AtomicReference<>(); - private final AtomicReference _lastReplicatedEnvironmentState = new AtomicReference<>(ReplicatedEnvironment.State.UNKNOWN); + private final AtomicReference _lastReplicatedEnvironmentState = new AtomicReference<>(NodeRole.WAITING); private BDBHAVirtualHostNodeLogSubject _virtualHostNodeLogSubject; private GroupLogSubject _groupLogSubject; private String _virtualHostNodePrincipalName; @@ -123,7 +123,7 @@ public class BDBHAVirtualHostNodeImpl extends AbstractVirtualHostNode 0 ? value : "N/A";} } ], diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java index 7b03539625..acebaf55a0 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeTest.java @@ -50,6 +50,7 @@ import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationN import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNodeImpl; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeTestHelper; +import org.apache.qpid.server.virtualhostnode.berkeleydb.NodeRole; import org.apache.qpid.test.utils.QpidTestCase; public class BDBHAVirtualHostNodeTest extends QpidTestCase @@ -91,7 +92,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase BDBHAVirtualHostNode node = _helper.createHaVHN(attributes); node.start(); - _helper.assertNodeRole(node, "MASTER", "REPLICA"); + _helper.assertNodeRole(node, NodeRole.MASTER, NodeRole.REPLICA); assertEquals("Unexpected node state", State.ACTIVE, node.getState()); @@ -155,7 +156,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase assertEquals("Unexpected electable group override value after mutation", 1, environment.getRepMutableConfig().getElectableGroupSizeOverride()); assertNotNull("Join time should be set", node.getJoinTime()); - assertNotNull("Last known replication transaction idshould be set", node.getLastKnownReplicationTransactionId()); + assertNotNull("Last known replication transaction id should be set", node.getLastKnownReplicationTransactionId()); } public void testTransferMasterToSelf() throws Exception @@ -177,11 +178,11 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase Map node3Attributes = _helper.createNodeAttributes("node3", groupName, "localhost:" + node3PortNumber, helperAddress, nodeName); _helper.createAndStartHaVHN(node3Attributes); - BDBHAVirtualHostNode replica = _helper.awaitAndFindNodeInRole("REPLICA"); + BDBHAVirtualHostNode replica = _helper.awaitAndFindNodeInRole(NodeRole.REPLICA); - replica.setAttribute(BDBHAVirtualHostNode.ROLE, "REPLICA", "MASTER"); + replica.setAttribute(BDBHAVirtualHostNode.ROLE, replica.getRole(), NodeRole.MASTER); - _helper.assertNodeRole(replica, "MASTER"); + _helper.assertNodeRole(replica, NodeRole.MASTER); } public void testTransferMasterToRemoteReplica() throws Exception @@ -222,12 +223,12 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase assertTrue("Replication nodes have not been seen during 5s", remoteNodeLatch.await(5, TimeUnit.SECONDS)); BDBHARemoteReplicationNodeImpl replicaRemoteNode = (BDBHARemoteReplicationNodeImpl)lastSeenReplica.get(); - _helper.awaitForAttributeChange(replicaRemoteNode, BDBHARemoteReplicationNodeImpl.ROLE, "REPLICA"); + _helper.awaitForAttributeChange(replicaRemoteNode, BDBHARemoteReplicationNodeImpl.ROLE, NodeRole.REPLICA); - replicaRemoteNode.setAttributes(Collections.singletonMap(BDBHARemoteReplicationNode.ROLE, "MASTER")); + replicaRemoteNode.setAttributes(Collections.singletonMap(BDBHARemoteReplicationNode.ROLE, NodeRole.MASTER)); BDBHAVirtualHostNode replica = replicaRemoteNode.getName().equals(node2.getName())? node2 : node3; - _helper.assertNodeRole(replica, "MASTER"); + _helper.assertNodeRole(replica, NodeRole.MASTER); } public void testMutatingRoleWhenNotReplica_IsDisallowed() throws Exception @@ -239,11 +240,11 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, nodePortNumber); BDBHAVirtualHostNode node = _helper.createAndStartHaVHN(node1Attributes); - _helper.assertNodeRole(node, "MASTER"); + _helper.assertNodeRole(node, NodeRole.MASTER); try { - node.setAttributes(Collections.singletonMap(BDBHAVirtualHostNode.ROLE, "REPLICA")); + node.setAttributes(Collections.singletonMap(BDBHAVirtualHostNode.ROLE, NodeRole.REPLICA)); fail("Role mutation should fail"); } catch(IllegalStateException e) @@ -272,10 +273,10 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase Map node3Attributes = _helper.createNodeAttributes("node3", groupName, "localhost:" + node3PortNumber, helperAddress, nodeName); _helper.createAndStartHaVHN(node3Attributes); - BDBHAVirtualHostNode master = _helper.awaitAndFindNodeInRole("MASTER"); + BDBHAVirtualHostNode master = _helper.awaitAndFindNodeInRole(NodeRole.MASTER); _helper.awaitRemoteNodes(master, 2); - BDBHAVirtualHostNode replica = _helper.awaitAndFindNodeInRole("REPLICA"); + BDBHAVirtualHostNode replica = _helper.awaitAndFindNodeInRole(NodeRole.REPLICA); assertNotNull("Remote node " + replica.getName() + " is not found", _helper.findRemoteNode(master, replica.getName())); replica.delete(); @@ -297,7 +298,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase BDBHAVirtualHostNode node = _helper.createHaVHN(nodeAttributes); node.start(); - _helper.assertNodeRole(node, "MASTER", "REPLICA"); + _helper.assertNodeRole(node, NodeRole.MASTER, NodeRole.REPLICA); assertEquals("Unexpected node state", State.ACTIVE, node.getState()); _helper.awaitForVirtualhost(node,30000); @@ -324,7 +325,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase try { virtualHost.setAttributes(Collections.singletonMap(BDBHAVirtualHost.LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY, "INVALID")); - fail("Invalid syncronization policy is set"); + fail("Invalid synchronization policy is set"); } catch(IllegalArgumentException e) { @@ -334,7 +335,7 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase try { virtualHost.setAttributes(Collections.singletonMap(BDBHAVirtualHost.REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY, "INVALID")); - fail("Invalid syncronization policy is set"); + fail("Invalid synchronization policy is set"); } catch(IllegalArgumentException e) { diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeTest.java index 0d64d87aef..8522a39918 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHARemoteReplicationNodeTest.java @@ -82,7 +82,7 @@ public class BDBHARemoteReplicationNodeTest extends QpidTestCase String remoteReplicationName = getName(); BDBHARemoteReplicationNode remoteReplicationNode = createRemoteReplicationNode(remoteReplicationName); - remoteReplicationNode.setAttribute(BDBHARemoteReplicationNode.ROLE, "UNKNOWN", "MASTER"); + remoteReplicationNode.setAttribute(BDBHARemoteReplicationNode.ROLE, remoteReplicationNode.getRole(), NodeRole.MASTER); verify(_facade).transferMasterAsynchronously(remoteReplicationName); } diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java index 1937eefc0b..31af574ee5 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeOperationalLoggingTest.java @@ -76,7 +76,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); assertEquals("Unexpected VHN log subject", "[grp(/group)/vhn(/node1)] ", node1.getVirtualHostNodeLogSubject().getLogString()); assertEquals("Unexpected group log subject", "[grp(/group)] ", node1.getGroupLogSubject().getLogString()); @@ -85,7 +85,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase verify(_eventLogger).message(argThat(new LogSubjectMatcher(node1.getVirtualHostNodeLogSubject())), argThat(new LogMessageMatcher(expectedMessage, HighAvailabilityMessages.CREATED_LOG_HIERARCHY))); - expectedMessage = HighAvailabilityMessages.ROLE_CHANGED(node1.getName(), node1.getAddress(), "UNKNOWN", "MASTER").toString(); + expectedMessage = HighAvailabilityMessages.ROLE_CHANGED(node1.getName(), node1.getAddress(), NodeRole.WAITING.name(), NodeRole.MASTER.name()).toString(); verify(_eventLogger).message(argThat(new LogSubjectMatcher(node1.getGroupLogSubject())), argThat(new LogMessageMatcher(expectedMessage, HighAvailabilityMessages.ROLE_CHANGED_LOG_HIERARCHY))); } @@ -99,7 +99,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); reset(_eventLogger); @@ -120,7 +120,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); reset(_eventLogger); @@ -143,7 +143,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); reset(_eventLogger); @@ -166,7 +166,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); reset(_eventLogger); @@ -190,7 +190,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber, node2PortNumber); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); reset(_eventLogger); @@ -219,7 +219,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber, node2PortNumber); node1Attributes.put(BDBHAVirtualHostNode.DESIGNATED_PRIMARY, true); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); resetEventLogger(); @@ -251,7 +251,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber, node2PortNumber); node1Attributes.put(BDBHAVirtualHostNode.DESIGNATED_PRIMARY, true); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); Map node2Attributes = _helper.createNodeAttributes("node2", groupName, "localhost:" + node2PortNumber, helperAddress, nodeName); BDBHAVirtualHostNodeImpl node2 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node2Attributes); @@ -284,7 +284,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase Map node1Attributes = _helper.createNodeAttributes(nodeName, groupName, helperAddress, helperAddress, nodeName, node1PortNumber, node2PortNumber); node1Attributes.put(BDBHAVirtualHostNode.DESIGNATED_PRIMARY, true); BDBHAVirtualHostNodeImpl node1 = (BDBHAVirtualHostNodeImpl)_helper.createHaVHN(node1Attributes); - _helper.assertNodeRole(node1, "MASTER"); + _helper.assertNodeRole(node1, NodeRole.MASTER); resetEventLogger(); @@ -302,7 +302,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase node2Attributes.put(BDBHAVirtualHostNode.PERMITTED_NODES, node1Attributes.get(BDBHAVirtualHostNode.PERMITTED_NODES)); node2 = (BDBHAVirtualHostNodeImpl)_helper.recoverHaVHN(node2.getId(), node2Attributes); - _helper.assertNodeRole(node2, "REPLICA", "MASTER"); + _helper.assertNodeRole(node2, NodeRole.REPLICA, NodeRole.MASTER); waitForNodeDetachedField(remoteNode, false); final String expectedMessage = HighAvailabilityMessages.JOINED(node2.getName(), node2.getAddress()).toString(); diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeTestHelper.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeTestHelper.java index 6f18878a1d..0facfb0785 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeTestHelper.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/virtualhostnode/berkeleydb/BDBHAVirtualHostNodeTestHelper.java @@ -164,31 +164,31 @@ public class BDBHAVirtualHostNodeTestHelper assertEquals("Unexpected attribute " + name + " on " + object, expectedValue, object.getAttribute(name) ); } - public BDBHAVirtualHostNode awaitAndFindNodeInRole(String role) throws InterruptedException + public BDBHAVirtualHostNode awaitAndFindNodeInRole(NodeRole desiredRole) throws InterruptedException { BDBHAVirtualHostNode replica = null; int findReplicaCount = 0; while(replica == null) { - replica = findNodeInRole(role); + replica = findNodeInRole(desiredRole); if (replica == null) { Thread.sleep(100); } if (findReplicaCount > 50) { - fail("Could not find a node in replica role"); + fail("Could not find a node in role " + desiredRole); } findReplicaCount++; } return replica; } - public BDBHAVirtualHostNode findNodeInRole(String role) + public BDBHAVirtualHostNode findNodeInRole(NodeRole role) { for (BDBHAVirtualHostNode node : _nodes) { - if (role.equals(node.getRole())) + if (role == node.getRole()) { return node; } @@ -218,15 +218,15 @@ public class BDBHAVirtualHostNodeTestHelper return node; } - public void assertNodeRole(BDBHAVirtualHostNode node, String... roleName) throws InterruptedException + public void assertNodeRole(BDBHAVirtualHostNode node, NodeRole... roleName) throws InterruptedException { int iterationCounter = 0; boolean inRole =false; do { - for (String role : roleName) + for (NodeRole role : roleName) { - if (role.equals(node.getRole())) + if (role == node.getRole()) { inRole = true; break; @@ -252,7 +252,7 @@ public class BDBHAVirtualHostNodeTestHelper public BDBHAVirtualHostNode startNodeAndWait(BDBHAVirtualHostNode node) throws InterruptedException { node.start(); - assertNodeRole(node, "MASTER", "REPLICA"); + assertNodeRole(node, NodeRole.MASTER, NodeRole.REPLICA); assertEquals("Unexpected node state", State.ACTIVE, node.getState()); return node; } @@ -273,7 +273,7 @@ public class BDBHAVirtualHostNodeTestHelper { Map node1Attributes = new HashMap(); node1Attributes.put(BDBHAVirtualHostNode.ID, UUID.randomUUID()); - node1Attributes.put(BDBHAVirtualHostNode.TYPE, "BDB_HA"); + node1Attributes.put(BDBHAVirtualHostNode.TYPE, BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE); node1Attributes.put(BDBHAVirtualHostNode.NAME, nodeName); node1Attributes.put(BDBHAVirtualHostNode.GROUP_NAME, groupName); node1Attributes.put(BDBHAVirtualHostNode.ADDRESS, address); diff --git a/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java b/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java index fcbd210311..c0c1b23a34 100644 --- a/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java +++ b/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java @@ -43,6 +43,7 @@ import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHost; import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; +import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl; import org.apache.qpid.systest.rest.Asserts; import org.apache.qpid.systest.rest.QpidRestTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; @@ -124,7 +125,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase assertEquals("Node 1 observed from node 2 is in the wrong state", "UNAVAILABLE", remoteNode1.get(BDBHARemoteReplicationNode.STATE)); assertEquals("Node 1 observed from node 2 has the wrong role", - "UNKNOWN", remoteNode1.get(BDBHARemoteReplicationNode.ROLE)); + "UNREACHABLE", remoteNode1.get(BDBHARemoteReplicationNode.ROLE)); } @@ -170,8 +171,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase List> data = getRestTestHelper().getJsonAsList("replicationnode/" + NODE1); assertEquals("Unexpected number of remote nodes on " + NODE1, 2, data.size()); - int responseCode = getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, "DELETE"); - assertEquals("Unexpected response code on deletion of virtual host node " + NODE2, 200, responseCode); + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, "DELETE", HttpServletResponse.SC_OK); int counter = 0; while (data.size() != 1 && counter<50) @@ -195,23 +195,23 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase assertNode(NODE1, _node1HaPort, _node1HaPort, NODE1); assertRemoteNodes(NODE1, NODE2, NODE3); - // change priority to make Node2 a master - int responseCode = getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, "PUT", Collections.singletonMap(BDBHAVirtualHostNode.PRIORITY, 100)); - assertEquals("Unexpected response code on priority update of virtual host node " + NODE2, 200, responseCode); + // change priority to ensure that Node2 becomes a master + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, + "PUT", + Collections.singletonMap(BDBHAVirtualHostNode.PRIORITY, 100), + HttpServletResponse.SC_OK); List> data = getRestTestHelper().getJsonAsList("replicationnode/" + NODE2); assertEquals("Unexpected number of remote nodes on " + NODE2, 2, data.size()); // delete master - responseCode = getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE1, "DELETE"); - assertEquals("Unexpected response code on deletion of virtual host node " + NODE1, 200, responseCode); + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE1, "DELETE", HttpServletResponse.SC_OK); // wait for new master waitForAttributeChanged(_baseNodeRestUrl + NODE2 + "?depth=0", BDBHAVirtualHostNode.ROLE, "MASTER"); // delete remote node - responseCode = getRestTestHelper().submitRequest("replicationnode/" + NODE2 + "/" + NODE1, "DELETE"); - assertEquals("Unexpected response code on deletion of remote node " + NODE1, 200, responseCode); + getRestTestHelper().submitRequest("replicationnode/" + NODE2 + "/" + NODE1, "DELETE", HttpServletResponse.SC_OK); int counter = 0; while (data.size() != 1 && counter<50) @@ -233,7 +233,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase // add permitted node Map node3Data = createNodeAttributeMap(NODE3, _node3HaPort, _node1HaPort); - getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE3, "PUT", node3Data, 201); + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE3, "PUT", node3Data, HttpServletResponse.SC_CREATED); assertNode(NODE3, _node3HaPort, _node1HaPort, NODE1); assertRemoteNodes(NODE1, NODE3); @@ -241,7 +241,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase // try to add not permitted node Map nodeData = createNodeAttributeMap(NODE2, intruderPort, _node1HaPort); - getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, "PUT", nodeData, 409); + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE2, "PUT", nodeData, HttpServletResponse.SC_CONFLICT); assertRemoteNodes(NODE1, NODE3); } @@ -257,7 +257,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase // add permitted node Map node3Data = createNodeAttributeMap(NODE3, _node3HaPort, _node1HaPort); - getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE3, "PUT", node3Data, 201); + getRestTestHelper().submitRequest(_baseNodeRestUrl + NODE3, "PUT", node3Data, HttpServletResponse.SC_CREATED); assertNode(NODE3, _node3HaPort, _node1HaPort, NODE1); assertRemoteNodes(NODE1, NODE3); @@ -313,8 +313,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase { Map nodeData = createNodeAttributeMap(nodeName, nodePort, helperPort); - int responseCode = getRestTestHelper().submitRequest(_baseNodeRestUrl + nodeName, "PUT", nodeData); - assertEquals("Unexpected response code for virtual host node " + nodeName + " creation request", 201, responseCode); + getRestTestHelper().submitRequest(_baseNodeRestUrl + nodeName, "PUT", nodeData, HttpServletResponse.SC_CREATED); String hostExpectedState = nodePort == helperPort ? State.ACTIVE.name(): State.UNAVAILABLE.name(); waitForAttributeChanged("virtualhost/" + nodeName + "/" + _hostName, BDBHAVirtualHost.STATE, hostExpectedState); } @@ -323,11 +322,12 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase { Map nodeData = new HashMap(); nodeData.put(BDBHAVirtualHostNode.NAME, nodeName); - nodeData.put(BDBHAVirtualHostNode.TYPE, "BDB_HA"); + nodeData.put(BDBHAVirtualHostNode.TYPE, BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE); nodeData.put(BDBHAVirtualHostNode.GROUP_NAME, _hostName); nodeData.put(BDBHAVirtualHostNode.ADDRESS, "localhost:" + nodePort); nodeData.put(BDBHAVirtualHostNode.HELPER_ADDRESS, "localhost:" + helperPort); nodeData.put(BDBHAVirtualHostNode.HELPER_NODE_NAME, NODE1); + Map context = new HashMap<>(); nodeData.put(BDBHAVirtualHostNode.CONTEXT, context); if (nodePort == helperPort) @@ -347,7 +347,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase Map nodeData = getRestTestHelper().getJsonAsSingletonList(_baseNodeRestUrl + nodeName + "?depth=0"); assertEquals("Unexpected name", nodeName, nodeData.get(BDBHAVirtualHostNode.NAME)); - assertEquals("Unexpected type", "BDB_HA", nodeData.get(BDBHAVirtualHostNode.TYPE)); + assertEquals("Unexpected type", BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE, nodeData.get(BDBHAVirtualHostNode.TYPE)); assertEquals("Unexpected address", "localhost:" + nodePort, nodeData.get(BDBHAVirtualHostNode.ADDRESS)); assertEquals("Unexpected helper address", "localhost:" + nodeHelperPort, nodeData.get(BDBHAVirtualHostNode.HELPER_ADDRESS)); assertEquals("Unexpected group name", _hostName, nodeData.get(BDBHAVirtualHostNode.GROUP_NAME)); -- cgit v1.2.1