diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-08-27 12:55:50 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-08-27 12:55:50 +0000 |
| commit | 27d0b2eef38c2f14dd190f8be266e798b4b95b82 (patch) | |
| tree | 43e83bcdde7f130a6ad0a8183748b793644eec9b /qpid/java/bdbstore/src/test | |
| parent | 6c044b5802bc92d3a3738fb1cac9950c14fc2d83 (diff) | |
| download | qpid-python-27d0b2eef38c2f14dd190f8be266e798b4b95b82.tar.gz | |
QPID-6048: Move permitted nodes attribute into BDB HA VH in order to be able to identify the intruder node on node start-up
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1620882 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/src/test')
4 files changed, 24 insertions, 52 deletions
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 e69000ecd1..7b03539625 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 @@ -401,11 +401,9 @@ public class BDBHAVirtualHostNodeTest extends QpidTestCase }; node1.addChangeListener(listener); - BDBHAVirtualHost<?> host = (BDBHAVirtualHost<?>)node1.getVirtualHost(); - List<String> permittedNodes = new ArrayList<String>(); permittedNodes.add(helperAddress); - host.setAttributes(Collections.<String, Object>singletonMap(BDBHAVirtualHost.PERMITTED_NODES, permittedNodes)); + node1.setAttributes(Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.PERMITTED_NODES, permittedNodes)); assertTrue("Intruder protection was not triggered during expected timeout", stopLatch.await(10, TimeUnit.SECONDS)); diff --git a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java index 5ed533f1e5..fcc8842619 100644 --- a/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java +++ b/qpid/java/bdbstore/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacadeTest.java @@ -32,7 +32,6 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; import org.apache.log4j.Logger; -import org.apache.qpid.server.configuration.IllegalConfigurationException; import org.apache.qpid.server.store.berkeleydb.EnvironmentFacade; import org.apache.qpid.test.utils.QpidTestCase; import org.apache.qpid.test.utils.TestFileUtils; @@ -694,9 +693,10 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase ReplicationGroupListener listener = new NoopReplicationGroupListener() { @Override - public void onIntruderNode(ReplicationNode node) + public boolean onIntruderNode(ReplicationNode node) { intruderLatch.countDown(); + return true; } }; ReplicatedEnvironmentFacade firstNode = createMaster(listener); @@ -713,42 +713,6 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase assertTrue("Intruder node was not detected", intruderLatch.await(10, TimeUnit.SECONDS)); } - public void testIntruderNodeDetectionOnMasterAndReplicaNodes() throws Exception - { - final CountDownLatch intruderLatch = new CountDownLatch(2); - ReplicationGroupListener listener = new NoopReplicationGroupListener() - { - @Override - public void onIntruderNode(ReplicationNode node) - { - intruderLatch.countDown(); - } - }; - - ReplicatedEnvironmentFacade firstNode = createMaster(listener); - int replica1Port = getNextAvailable(TEST_NODE_PORT + 1); - String node2NodeHostPort = "localhost:" + replica1Port; - String nodeName2 = TEST_NODE_NAME + "_1"; - ReplicatedEnvironmentFacade secondNode = createReplica(nodeName2, node2NodeHostPort, listener); - - Set<String> permittedNodes = new HashSet<String>(); - permittedNodes.add("localhost:" + TEST_NODE_PORT); - permittedNodes.add(nodeName2); - firstNode.setPermittedNodes(permittedNodes); - - int counter = 0; - while(secondNode.getPermittedNodes().isEmpty() && counter < 100) - { - counter++; - Thread.sleep(50); - } - assertEquals("Permitted nodes are not set on a replica", permittedNodes, secondNode.getPermittedNodes()); - - int intruderPort = getNextAvailable(replica1Port+ 1); - createIntruder("intruder", "localhost:" + intruderPort); - assertTrue("Intruder node was not detected", intruderLatch.await(10, TimeUnit.SECONDS)); - } - private void createIntruder(String nodeName, String node1NodeHostPort) { File environmentPathFile = new File(_storePath, nodeName); @@ -872,9 +836,10 @@ public class ReplicatedEnvironmentFacadeTest extends QpidTestCase } @Override - public void onIntruderNode(ReplicationNode node) + public boolean onIntruderNode(ReplicationNode node) { LOGGER.warn("Intruder node " + node); + return true; } @Override 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 ea7d74090d..1937eefc0b 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 @@ -300,6 +300,7 @@ public class BDBHAVirtualHostNodeOperationalLoggingTest extends QpidTestCase reset(_eventLogger); + node2Attributes.put(BDBHAVirtualHostNode.PERMITTED_NODES, node1Attributes.get(BDBHAVirtualHostNode.PERMITTED_NODES)); node2 = (BDBHAVirtualHostNodeImpl)_helper.recoverHaVHN(node2.getId(), node2Attributes); _helper.assertNodeRole(node2, "REPLICA", "MASTER"); waitForNodeDetachedField(remoteNode, false); 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 41c6c9a71c..6f18878a1d 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 @@ -54,7 +54,6 @@ import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.store.ConfiguredObjectRecordImpl; import org.apache.qpid.server.store.UnresolvedConfiguredObject; import org.apache.qpid.server.util.BrokerTestHelper; -import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHost; import org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHostImpl; import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; import org.apache.qpid.test.utils.QpidTestCase; @@ -240,7 +239,8 @@ public class BDBHAVirtualHostNodeTestHelper iterationCounter++; } while(!inRole && iterationCounter<100); - assertTrue("Node " + node.getName() + " did not transit into role " + Arrays.toString(roleName), inRole); + assertTrue("Node " + node.getName() + " did not transit into role " + Arrays.toString(roleName) + + " Node role is " + node.getRole(), inRole); } public BDBHAVirtualHostNode<?> createAndStartHaVHN(Map<String, Object> attributes) throws InterruptedException @@ -280,6 +280,10 @@ public class BDBHAVirtualHostNodeTestHelper node1Attributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, helperAddress); node1Attributes.put(BDBHAVirtualHostNode.STORE_PATH, getMessageStorePath() + File.separator + nodeName); node1Attributes.put(BDBHAVirtualHostNode.HELPER_NODE_NAME, helperNodeNode); + if (address.equals(helperAddress)) + { + node1Attributes.put(BDBHAVirtualHostNode.PERMITTED_NODES, getPermittedNodes(ports)); + } Map<String, String> context = new HashMap<String, String>(); context.put(ReplicationConfig.REPLICA_ACK_TIMEOUT, "2 s"); @@ -287,7 +291,7 @@ public class BDBHAVirtualHostNodeTestHelper if (ports != null) { - String bluePrint = getBlueprint(ports); + String bluePrint = getBlueprint(); node1Attributes.put(AbstractVirtualHostNode.VIRTUALHOST_INITIAL_CONFIGURATION, bluePrint); } @@ -296,16 +300,10 @@ public class BDBHAVirtualHostNodeTestHelper return node1Attributes; } - public static String getBlueprint(int... ports) throws Exception + public static String getBlueprint() throws Exception { - List<String> permittedNodes = new ArrayList<String>(); - for (int port:ports) - { - permittedNodes.add("localhost:" + port); - } Map<String,Object> bluePrint = new HashMap<>(); bluePrint.put(VirtualHost.TYPE, BDBHAVirtualHostImpl.VIRTUAL_HOST_TYPE); - bluePrint.put(BDBHAVirtualHost.PERMITTED_NODES, permittedNodes); StringWriter writer = new StringWriter(); ObjectMapper mapper = new ObjectMapper(); @@ -314,6 +312,16 @@ public class BDBHAVirtualHostNodeTestHelper return writer.toString(); } + public static List<String> getPermittedNodes(int[] ports) + { + List<String> permittedNodes = new ArrayList<String>(); + for (int port:ports) + { + permittedNodes.add("localhost:" + port); + } + return permittedNodes; + } + public void awaitForVirtualhost(final VirtualHostNode<?> node, final int wait) { long endTime = System.currentTimeMillis() + wait; |
