diff options
| author | Alex Rudyy <orudyy@apache.org> | 2014-08-06 12:21:59 +0000 |
|---|---|---|
| committer | Alex Rudyy <orudyy@apache.org> | 2014-08-06 12:21:59 +0000 |
| commit | 1f2d3541f070cedbda87e3df6ee692edbcdf9381 (patch) | |
| tree | 0142e6a7babc1f00b87c805f567d6338a653986f /qpid/java/bdbstore/systests | |
| parent | 90c8a29045f18554fd4c2da5ad01dd00af11cae7 (diff) | |
| download | qpid-python-1f2d3541f070cedbda87e3df6ee692edbcdf9381.tar.gz | |
QPID-5967: Intruder node detection must be mandatory and should validate all necessary arguments
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1616186 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/bdbstore/systests')
3 files changed, 65 insertions, 7 deletions
diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java index cfa9557977..1e7c79f7da 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java @@ -41,6 +41,7 @@ import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade; 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.systest.rest.Asserts; @@ -77,6 +78,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase _node2HaPort = getNextAvailable(_node1HaPort + 1); _node3HaPort = getNextAvailable(_node2HaPort + 1); + } @Override @@ -302,7 +304,7 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase assertEquals("Unexpected response code for virtual host node " + nodeName + " creation request", 201, responseCode); } - private Map<String, Object> createNodeAttributeMap(String nodeName, int nodePort, int helperPort) + private Map<String, Object> createNodeAttributeMap(String nodeName, int nodePort, int helperPort) throws Exception { Map<String, Object> nodeData = new HashMap<String, Object>(); nodeData.put(BDBHAVirtualHostNode.NAME, nodeName); @@ -311,6 +313,11 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase 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<String,String> context = new HashMap<>(); + nodeData.put(BDBHAVirtualHostNode.CONTEXT, context); + String bluePrint = HATestClusterCreator.getBlueprint("localhost", _node1HaPort, _node2HaPort, _node3HaPort); + context.put(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, bluePrint); return nodeData; } @@ -431,4 +438,6 @@ public class BDBHAVirtualHostNodeRestTest extends QpidRestTestCase assertNotNull("Could not find new master", newMasterData); return newMasterData; } + + } diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java index e5d631b452..334544e334 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java @@ -35,6 +35,7 @@ import org.apache.qpid.server.model.State; import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.VirtualHostNode; import org.apache.qpid.server.store.berkeleydb.replication.ReplicatedEnvironmentFacade; +import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.systest.rest.Asserts; import org.apache.qpid.systest.rest.QpidRestTestCase; @@ -48,6 +49,7 @@ public class BDBHAVirtualHostRestTest extends QpidRestTestCase private int _nodeHaPort; private Object _nodeName; private String _virtualhostUrl; + private String _bluePrint; @Override public void setUp() throws Exception @@ -58,6 +60,7 @@ public class BDBHAVirtualHostRestTest extends QpidRestTestCase _storeBaseDir = new File(TMP_FOLDER, "store-" + _hostName + "-" + System.currentTimeMillis()); _nodeHaPort = getNextAvailable(getRestTestHelper().getHttpPort() + 1); _virtualhostUrl = "virtualhost/" + _nodeName + "/" + _hostName; + _bluePrint = HATestClusterCreator.getBlueprint("localhost", _nodeHaPort); super.setUp(); } @@ -93,6 +96,11 @@ public class BDBHAVirtualHostRestTest extends QpidRestTestCase nodeAttributes.put(BDBHAVirtualHostNode.GROUP_NAME, _hostName); nodeAttributes.put(BDBHAVirtualHostNode.ADDRESS, "localhost:" + _nodeHaPort); nodeAttributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, "localhost:" + _nodeHaPort); + nodeAttributes.put(BDBHAVirtualHostNode.HELPER_NODE_NAME, _nodeName); + Map<String, String> context = new HashMap<String,String>(); + context.put(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, _bluePrint); + + nodeAttributes.put(BDBHAVirtualHostNode.CONTEXT, context); config.addObjectConfiguration(VirtualHostNode.class, nodeAttributes); } diff --git a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java index 209a5145e2..ebc32b482a 100644 --- a/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java +++ b/qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java @@ -21,8 +21,10 @@ package org.apache.qpid.server.store.berkeleydb; import java.io.File; import java.io.IOException; +import java.io.StringWriter; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -47,8 +49,11 @@ import org.apache.qpid.client.AMQConnectionURL; import org.apache.qpid.server.management.plugin.HttpManagement; import org.apache.qpid.server.model.Plugin; import org.apache.qpid.server.model.Port; +import org.apache.qpid.server.model.VirtualHost; import org.apache.qpid.server.model.VirtualHostNode; -import org.apache.qpid.server.virtualhostnode.JsonVirtualHostNode; +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.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNode; import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHAVirtualHostNodeImpl; @@ -56,6 +61,8 @@ import org.apache.qpid.systest.rest.RestTestHelper; import org.apache.qpid.test.utils.QpidBrokerTestCase; import org.apache.qpid.test.utils.TestBrokerConfiguration; import org.apache.qpid.url.URLSyntaxException; +import org.codehaus.jackson.map.ObjectMapper; +import org.codehaus.jackson.map.SerializationConfig; import org.junit.Assert; import com.sleepycat.je.rep.ReplicationConfig; @@ -101,11 +108,22 @@ public class HATestClusterCreator { int brokerPort = _testcase.findFreePort(); + int[] bdbPorts = new int[_numberOfNodes]; for (int i = 0; i < _numberOfNodes; i++) { int bdbPort = _testcase.getNextAvailable(brokerPort + 1); + bdbPorts[i] = bdbPort; _brokerPortToBdbPortMap.put(brokerPort, bdbPort); + brokerPort = _testcase.getNextAvailable(bdbPort + 1); + } + + String bluePrintJson = getBlueprint(_ipAddressOfBroker, bdbPorts); + String helperName = null; + for (Map.Entry<Integer,Integer> entry: _brokerPortToBdbPortMap.entrySet()) + { + brokerPort = entry.getKey(); + int bdbPort = entry.getValue(); LOGGER.debug("Cluster broker port " + brokerPort + ", bdb replication port " + bdbPort); if (_bdbHelperPort == 0) { @@ -113,6 +131,10 @@ public class HATestClusterCreator } String nodeName = getNodeNameForNodeAt(bdbPort); + if (helperName == null) + { + helperName = nodeName; + } Map<String, Object> virtualHostNodeAttributes = new HashMap<String, Object>(); virtualHostNodeAttributes.put(BDBHAVirtualHostNode.STORE_PATH, System.getProperty("QPID_WORK") + File.separator + brokerPort); @@ -121,11 +143,13 @@ public class HATestClusterCreator virtualHostNodeAttributes.put(BDBHAVirtualHostNode.ADDRESS, getNodeHostPortForNodeAt(bdbPort)); virtualHostNodeAttributes.put(BDBHAVirtualHostNode.HELPER_ADDRESS, getHelperHostPort()); virtualHostNodeAttributes.put(BDBHAVirtualHostNode.TYPE, BDBHAVirtualHostNodeImpl.VIRTUAL_HOST_NODE_TYPE); + virtualHostNodeAttributes.put(BDBHAVirtualHostNode.HELPER_NODE_NAME, helperName); - Map<String, String> repSettings = new HashMap<>(); - repSettings.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s"); - repSettings.put(ReplicationConfig.ELECTIONS_PRIMARY_RETRIES, "0"); - virtualHostNodeAttributes.put(BDBHAVirtualHostNode.CONTEXT, repSettings); + Map<String, String> context = new HashMap<>(); + context.put(ReplicationConfig.INSUFFICIENT_REPLICAS_TIMEOUT, "2 s"); + context.put(ReplicationConfig.ELECTIONS_PRIMARY_RETRIES, "0"); + context.put(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, bluePrintJson); + virtualHostNodeAttributes.put(BDBHAVirtualHostNode.CONTEXT, context); TestBrokerConfiguration brokerConfiguration = _testcase.getBrokerConfiguration(brokerPort); brokerConfiguration.addJmxManagementConfiguration(); @@ -134,7 +158,6 @@ public class HATestClusterCreator brokerConfiguration.setObjectAttribute(Port.class, TestBrokerConfiguration.ENTRY_NAME_HTTP_PORT, Port.PORT, _testcase.getHttpManagementPort(brokerPort)); brokerConfiguration.setObjectAttributes(VirtualHostNode.class, _virtualHostName, virtualHostNodeAttributes); - brokerPort = _testcase.getNextAvailable(bdbPort + 1); } _primaryBrokerPort = getPrimaryBrokerPort(); } @@ -485,4 +508,22 @@ public class HATestClusterCreator helper.setUsernameAndPassword("webadmin", "webadmin"); return helper; } + + public static String getBlueprint(String hostName, int... ports) throws Exception + { + List<String> permittedNodes = new ArrayList<String>(); + for (int port:ports) + { + permittedNodes.add(hostName + ":" + 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(); + mapper.configure(SerializationConfig.Feature.INDENT_OUTPUT, true); + mapper.writeValue(writer, bluePrint); + return writer.toString(); + } } |
