summaryrefslogtreecommitdiff
path: root/qpid/java/bdbstore/systests
diff options
context:
space:
mode:
authorAlex Rudyy <orudyy@apache.org>2014-08-06 12:21:59 +0000
committerAlex Rudyy <orudyy@apache.org>2014-08-06 12:21:59 +0000
commit1f2d3541f070cedbda87e3df6ee692edbcdf9381 (patch)
tree0142e6a7babc1f00b87c805f567d6338a653986f /qpid/java/bdbstore/systests
parent90c8a29045f18554fd4c2da5ad01dd00af11cae7 (diff)
downloadqpid-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')
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java11
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java8
-rw-r--r--qpid/java/bdbstore/systests/src/main/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java53
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();
+ }
}