You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kw...@apache.org on 2014/08/13 08:45:32 UTC
svn commit: r1617668 - in /qpid/trunk/qpid/java/bdbstore:
src/main/java/org/apache/qpid/server/store/berkeleydb/replication/
systests/src/test/java/org/apache/qpid/server/store/berkeleydb/
systests/src/test/java/org/apache/qpid/server/store/berkeleydb/...
Author: kwall
Date: Wed Aug 13 06:45:31 2014
New Revision: 1617668
URL: http://svn.apache.org/r1617668
Log:
QPID-5991: [Java System Tests] Rename tests to have better structure; Remove some duplication between tests
Added:
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostRestTest.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java
- copied, changed from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
Removed:
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterWhiteboxTest.java
qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java
Modified:
qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
Modified: qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java?rev=1617668&r1=1617667&r2=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java (original)
+++ qpid/trunk/qpid/java/bdbstore/src/main/java/org/apache/qpid/server/store/berkeleydb/replication/ReplicatedEnvironmentFacade.java Wed Aug 13 06:45:31 2014
@@ -95,7 +95,7 @@ import org.apache.qpid.server.util.Daemo
public class ReplicatedEnvironmentFacade implements EnvironmentFacade, StateChangeListener
{
public static final String MASTER_TRANSFER_TIMEOUT_PROPERTY_NAME = "qpid.bdb.ha.master_transfer_interval";
- public static final String DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME = "qpid.bdb.ha.db_ping_socket_timeout";
+ public static final String DB_PING_SOCKET_TIMEOUT_PROPERTY_NAME = "qpid.bdb.replication.db_ping_socket_timeout";
public static final String REMOTE_NODE_MONITOR_INTERVAL_PROPERTY_NAME = "qpid.bdb.ha.remote_node_monitor_interval";
private static final Logger LOGGER = Logger.getLogger(ReplicatedEnvironmentFacade.class);
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostNodeRestTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostNodeRestTest.java Wed Aug 13 06:45:31 2014
@@ -18,7 +18,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import java.io.File;
import java.io.IOException;
@@ -39,7 +39,6 @@ import org.apache.qpid.server.model.Remo
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.virtualhost.berkeleydb.BDBHAVirtualHost;
import org.apache.qpid.server.virtualhostnode.AbstractVirtualHostNode;
import org.apache.qpid.server.virtualhostnode.berkeleydb.BDBHARemoteReplicationNode;
@@ -330,7 +329,7 @@ public class BDBHAVirtualHostNodeRestTes
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);
+ String bluePrint = GroupCreator.getBlueprint("localhost", _node1HaPort, _node2HaPort, _node3HaPort);
context.put(AbstractVirtualHostNode.VIRTUALHOST_BLUEPRINT_CONTEXT_VAR, bluePrint);
return nodeData;
}
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostRestTest.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostRestTest.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostRestTest.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/BDBHAVirtualHostRestTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/BDBHAVirtualHostRestTest.java Wed Aug 13 06:45:31 2014
@@ -18,7 +18,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import static org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHost.LOCAL_TRANSACTION_SYNCHRONIZATION_POLICY;
import static org.apache.qpid.server.virtualhost.berkeleydb.BDBHAVirtualHost.REMOTE_TRANSACTION_SYNCHRONIZATION_POLICY;
@@ -34,7 +34,6 @@ import javax.servlet.http.HttpServletRes
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;
@@ -60,7 +59,7 @@ public class BDBHAVirtualHostRestTest ex
_storeBaseDir = new File(TMP_FOLDER, "store-" + _hostName + "-" + System.currentTimeMillis());
_nodeHaPort = getNextAvailable(getRestTestHelper().getHttpPort() + 1);
_virtualhostUrl = "virtualhost/" + _nodeName + "/" + _hostName;
- _bluePrint = HATestClusterCreator.getBlueprint("localhost", _nodeHaPort);
+ _bluePrint = GroupCreator.getBlueprint("localhost", _nodeHaPort);
super.setUp();
}
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HATestClusterCreator.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/GroupCreator.java Wed Aug 13 06:45:31 2014
@@ -17,7 +17,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import java.io.File;
import java.io.IOException;
@@ -46,6 +46,7 @@ import org.apache.commons.lang.StringUti
import org.apache.log4j.Logger;
import org.apache.qpid.client.AMQConnection;
import org.apache.qpid.client.AMQConnectionURL;
+import org.apache.qpid.jms.ConnectionURL;
import org.apache.qpid.server.management.plugin.HttpManagement;
import org.apache.qpid.server.model.Plugin;
import org.apache.qpid.server.model.Port;
@@ -67,9 +68,9 @@ import org.junit.Assert;
import com.sleepycat.je.rep.ReplicationConfig;
-public class HATestClusterCreator
+public class GroupCreator
{
- protected static final Logger LOGGER = Logger.getLogger(HATestClusterCreator.class);
+ protected static final Logger LOGGER = Logger.getLogger(GroupCreator.class);
private static final String MANY_BROKER_URL_FORMAT = "amqp://guest:guest@/%s?brokerlist='%s'&failover='roundrobin?cyclecount='%d''";
private static final String BROKER_PORTION_FORMAT = "tcp://localhost:%d?connectdelay='%d',retries='%d'";
@@ -94,7 +95,7 @@ public class HATestClusterCreator
private int _bdbHelperPort;
private int _primaryBrokerPort;
- public HATestClusterCreator(QpidBrokerTestCase testcase, String virtualHostName, int numberOfNodes)
+ public GroupCreator(QpidBrokerTestCase testcase, String virtualHostName, int numberOfNodes)
{
_testcase = testcase;
_virtualHostName = virtualHostName;
@@ -291,7 +292,12 @@ public class HATestClusterCreator
return new HashSet<Integer>(_brokerPortToBdbPortMap.values());
}
- public AMQConnectionURL getConnectionUrlForAllClusterNodes() throws Exception
+ public ConnectionURL getConnectionUrlForAllClusterNodes() throws Exception
+ {
+ return getConnectionUrlForAllClusterNodes(FAILOVER_CONNECTDELAY, FAILOVER_RETRIES, FAILOVER_CYCLECOUNT);
+ }
+
+ public ConnectionURL getConnectionUrlForAllClusterNodes(int connectDelay, int retries, final int cyclecount) throws Exception
{
final StringBuilder brokerList = new StringBuilder();
@@ -299,14 +305,14 @@ public class HATestClusterCreator
{
int brokerPortNumber = itr.next();
- brokerList.append(String.format(BROKER_PORTION_FORMAT, brokerPortNumber, FAILOVER_CONNECTDELAY, FAILOVER_RETRIES));
+ brokerList.append(String.format(BROKER_PORTION_FORMAT, brokerPortNumber, connectDelay, retries));
if (itr.hasNext())
{
brokerList.append(";");
}
}
- return new AMQConnectionURL(String.format(MANY_BROKER_URL_FORMAT, _virtualHostName, brokerList, FAILOVER_CYCLECOUNT));
+ return new AMQConnectionURL(String.format(MANY_BROKER_URL_FORMAT, _virtualHostName, brokerList, cyclecount));
}
public AMQConnectionURL getConnectionUrlForSingleNodeWithoutRetry(final int brokerPortNumber) throws URLSyntaxException
@@ -434,7 +440,7 @@ public class HATestClusterCreator
int status = restHelper.submitRequest(url, "PUT", attributeMap);
if (status != 200)
{
- throw new Exception("Unexpected http status when updating " + getNodeNameForBrokerPort(remoteNodePort) + " attribute's : " + status);
+ throw new Exception("Unexpected http status when updating " + getNodeNameForBrokerPort(remoteNodePort) + " attribute(s) : " + status);
}
}
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterManagementTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/JMXManagementTest.java Wed Aug 13 06:45:31 2014
@@ -17,7 +17,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import static com.sleepycat.je.rep.ReplicatedEnvironment.State.DETACHED;
import static com.sleepycat.je.rep.ReplicatedEnvironment.State.MASTER;
@@ -52,11 +52,11 @@ import org.junit.Assert;
/**
* System test verifying the ability to control a cluster via the Management API.
*
- * @see HAClusterBlackboxTest
+ * @see MultiNodeTest
*/
-public class HAClusterManagementTest extends QpidBrokerTestCase
+public class JMXManagementTest extends QpidBrokerTestCase
{
- protected static final Logger LOGGER = Logger.getLogger(HAClusterManagementTest.class);
+ protected static final Logger LOGGER = Logger.getLogger(JMXManagementTest.class);
private static final Set<String> NON_MASTER_STATES = new HashSet<String>(Arrays.asList(REPLICA.toString(), DETACHED.toString(), UNKNOWN.toString()));;
private static final String VIRTUAL_HOST = "test";
@@ -64,7 +64,7 @@ public class HAClusterManagementTest ext
private static final String MANAGED_OBJECT_QUERY = "org.apache.qpid:type=BDBHAMessageStore,name=" + ObjectName.quote(VIRTUAL_HOST);
private static final int NUMBER_OF_NODES = 4;
- private final HATestClusterCreator _clusterCreator = new HATestClusterCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
+ private final GroupCreator _clusterCreator = new GroupCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
private final JMXTestUtils _jmxUtils = new JMXTestUtils(this);
private ConnectionURL _brokerFailoverUrl;
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterBlackboxTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/MultiNodeTest.java Wed Aug 13 06:45:31 2014
@@ -17,17 +17,20 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import java.io.File;
import java.util.Collections;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import javax.jms.Connection;
+import javax.jms.Destination;
+import javax.jms.JMSException;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
import javax.jms.Session;
import org.apache.log4j.Logger;
@@ -41,20 +44,23 @@ import org.apache.qpid.test.utils.TestUt
/**
* The HA black box tests test the BDB cluster as a opaque unit. Client connects to
* the cluster via a failover url
- *
- * @see HAClusterWhiteboxTest
*/
-public class HAClusterBlackboxTest extends QpidBrokerTestCase
+public class MultiNodeTest extends QpidBrokerTestCase
{
- protected static final Logger LOGGER = Logger.getLogger(HAClusterBlackboxTest.class);
+ protected static final Logger LOGGER = Logger.getLogger(MultiNodeTest.class);
private static final String VIRTUAL_HOST = "test";
private static final int NUMBER_OF_NODES = 3;
- private final HATestClusterCreator _clusterCreator = new HATestClusterCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
+ private final GroupCreator _groupCreator = new GroupCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
private FailoverAwaitingListener _failoverListener;
- private ConnectionURL _brokerFailoverUrl;
+
+ /** Used when expectation is client will (re)-connect */
+ private ConnectionURL _positiveFailoverUrl;
+
+ /** Used when expectation is client will not (re)-connect */
+ private ConnectionURL _negativeFailoverUrl;
@Override
protected void setUp() throws Exception
@@ -66,11 +72,12 @@ public class HAClusterBlackboxTest exten
setSystemProperty("java.util.logging.config.file", "etc" + File.separator + "log.properties");
- _clusterCreator.configureClusterNodes();
+ _groupCreator.configureClusterNodes();
- _brokerFailoverUrl = _clusterCreator.getConnectionUrlForAllClusterNodes();
+ _positiveFailoverUrl = _groupCreator.getConnectionUrlForAllClusterNodes();
+ _negativeFailoverUrl = _groupCreator.getConnectionUrlForAllClusterNodes(200, 0, 2);
- _clusterCreator.startCluster();
+ _groupCreator.startCluster();
_failoverListener = new FailoverAwaitingListener();
super.setUp();
@@ -84,14 +91,14 @@ public class HAClusterBlackboxTest exten
public void testLossOfMasterNodeCausesClientToFailover() throws Exception
{
- final Connection connection = getConnection(_brokerFailoverUrl);
+ final Connection connection = getConnection(_positiveFailoverUrl);
((AMQConnection)connection).setConnectionListener(_failoverListener);
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
LOGGER.info("Active connection port " + activeBrokerPort);
- _clusterCreator.stopNode(activeBrokerPort);
+ _groupCreator.stopNode(activeBrokerPort);
LOGGER.info("Node is stopped");
_failoverListener.awaitFailoverCompletion(20000);
LOGGER.info("Listener has finished");
@@ -101,103 +108,175 @@ public class HAClusterBlackboxTest exten
public void testLossOfReplicaNodeDoesNotCauseClientToFailover() throws Exception
{
- LOGGER.info("Connecting to " + _brokerFailoverUrl);
- final Connection connection = getConnection(_brokerFailoverUrl);
- LOGGER.info("Got connection to cluster");
+ final Connection connection = getConnection(_positiveFailoverUrl);
((AMQConnection)connection).setConnectionListener(_failoverListener);
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
LOGGER.info("Active connection port " + activeBrokerPort);
- final int inactiveBrokerPort = _clusterCreator.getPortNumberOfAnInactiveBroker(connection);
+ final int inactiveBrokerPort = _groupCreator.getPortNumberOfAnInactiveBroker(connection);
LOGGER.info("Stopping inactive broker on port " + inactiveBrokerPort);
- _clusterCreator.stopNode(inactiveBrokerPort);
+ _groupCreator.stopNode(inactiveBrokerPort);
_failoverListener.assertNoFailoverCompletionWithin(2000);
- // any op to ensure connection remains
- connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ assertProducingConsuming(connection);
+ }
+
+ public void testLossOfQuorumCausesClientDisconnection() throws Exception
+ {
+ final Connection connection = getConnection(_negativeFailoverUrl);
+
+ ((AMQConnection)connection).setConnectionListener(_failoverListener);
+
+ Set<Integer> ports = _groupCreator.getBrokerPortNumbersForNodes();
+
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
+ ports.remove(activeBrokerPort);
+
+ // Stop all other nodes
+ for (Integer p : ports)
+ {
+ _groupCreator.stopNode(p);
+ }
+
+ try
+ {
+ Session session = connection.createSession(true, Session.SESSION_TRANSACTED);
+ Destination destination = session.createQueue(getTestQueueName());
+ session.createConsumer(destination).close();
+ fail("Exception not thrown - creating durable queue should fail without quorum");
+ }
+ catch(JMSException jms)
+ {
+ // PASS
+ }
+
+ // New connections should now fail as vhost will be unavailable
+ try
+ {
+ getConnection(_negativeFailoverUrl);
+ fail("Exception not thrown");
+ }
+ catch (JMSException je)
+ {
+ // PASS
+ }
+ }
+
+ public void testPersistentMessagesAvailableAfterFailover() throws Exception
+ {
+ final Connection connection = getConnection(_positiveFailoverUrl);
+
+ ((AMQConnection)connection).setConnectionListener(_failoverListener);
+
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
+
+ Session producingSession = connection.createSession(true, Session.SESSION_TRANSACTED);
+ Destination queue = producingSession.createQueue(getTestQueueName());
+ producingSession.createConsumer(queue).close();
+ sendMessage(producingSession, queue, 10);
+
+ _groupCreator.stopNode(activeBrokerPort);
+ LOGGER.info("Old master (broker port " + activeBrokerPort + ") is stopped");
+
+ _failoverListener.awaitFailoverCompletion(20000);
+ LOGGER.info("Failover has finished");
+
+ final int activeBrokerPortAfterFailover = _groupCreator.getBrokerPortNumberFromConnection(connection);
+ LOGGER.info("New master (broker port " + activeBrokerPort + ") after failover");
+
+ Session consumingSession = connection.createSession(true, Session.SESSION_TRANSACTED);
+ MessageConsumer consumer = consumingSession.createConsumer(queue);
+
+ connection.start();
+ for(int i = 0; i < 10; i++)
+ {
+ Message m = consumer.receive(RECEIVE_TIMEOUT);
+ assertNotNull("Message " + i + " is not received", m);
+ assertEquals("Unexpected message received", i, m.getIntProperty(INDEX));
+ }
+ consumingSession.commit();
}
public void testTransferMasterFromLocalNode() throws Exception
{
- final Connection connection = getConnection(_brokerFailoverUrl);
+ final Connection connection = getConnection(_positiveFailoverUrl);
((AMQConnection)connection).setConnectionListener(_failoverListener);
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
LOGGER.info("Active connection port " + activeBrokerPort);
- final int inactiveBrokerPort = _clusterCreator.getPortNumberOfAnInactiveBroker(connection);
+ final int inactiveBrokerPort = _groupCreator.getPortNumberOfAnInactiveBroker(connection);
LOGGER.info("Update role attribute on inactive broker on port " + inactiveBrokerPort);
- Map<String, Object> attributes = _clusterCreator.getNodeAttributes(inactiveBrokerPort);
+ Map<String, Object> attributes = _groupCreator.getNodeAttributes(inactiveBrokerPort);
assertEquals("Inactive broker has unexpected role", "REPLICA", attributes.get(BDBHAVirtualHostNode.ROLE));
- _clusterCreator.setNodeAttributes(inactiveBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.ROLE, "MASTER"));
+ _groupCreator.setNodeAttributes(inactiveBrokerPort,
+ Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.ROLE, "MASTER"));
_failoverListener.awaitFailoverCompletion(20000);
LOGGER.info("Listener has finished");
- attributes = _clusterCreator.getNodeAttributes(inactiveBrokerPort);
+ attributes = _groupCreator.getNodeAttributes(inactiveBrokerPort);
assertEquals("Inactive broker has unexpected role", "MASTER", attributes.get(BDBHAVirtualHostNode.ROLE));
assertProducingConsuming(connection);
- _clusterCreator.awaitNodeToAttainRole(activeBrokerPort, "REPLICA");
+ _groupCreator.awaitNodeToAttainRole(activeBrokerPort, "REPLICA");
}
public void testTransferMasterFromRemoteNode() throws Exception
{
- final Connection connection = getConnection(_brokerFailoverUrl);
+ final Connection connection = getConnection(_positiveFailoverUrl);
((AMQConnection)connection).setConnectionListener(_failoverListener);
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
LOGGER.info("Active connection port " + activeBrokerPort);
- final int inactiveBrokerPort = _clusterCreator.getPortNumberOfAnInactiveBroker(connection);
+ final int inactiveBrokerPort = _groupCreator.getPortNumberOfAnInactiveBroker(connection);
LOGGER.info("Update role attribute on inactive broker on port " + inactiveBrokerPort);
- _clusterCreator.awaitNodeToAttainRole(activeBrokerPort, inactiveBrokerPort, "REPLICA");
- Map<String, Object> attributes = _clusterCreator.getNodeAttributes(activeBrokerPort, inactiveBrokerPort);
+ _groupCreator.awaitNodeToAttainRole(activeBrokerPort, inactiveBrokerPort, "REPLICA");
+ Map<String, Object> attributes = _groupCreator.getNodeAttributes(activeBrokerPort, inactiveBrokerPort);
assertEquals("Inactive broker has unexpected role", "REPLICA", attributes.get(BDBHAVirtualHostNode.ROLE));
- _clusterCreator.setNodeAttributes(activeBrokerPort, inactiveBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.ROLE, "MASTER"));
+ _groupCreator.setNodeAttributes(activeBrokerPort, inactiveBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.ROLE, "MASTER"));
_failoverListener.awaitFailoverCompletion(20000);
LOGGER.info("Listener has finished");
- attributes = _clusterCreator.getNodeAttributes(inactiveBrokerPort);
+ attributes = _groupCreator.getNodeAttributes(inactiveBrokerPort);
assertEquals("Inactive broker has unexpected role", "MASTER", attributes.get(BDBHAVirtualHostNode.ROLE));
assertProducingConsuming(connection);
- _clusterCreator.awaitNodeToAttainRole(activeBrokerPort, "REPLICA");
+ _groupCreator.awaitNodeToAttainRole(activeBrokerPort, "REPLICA");
}
public void testQuorumOverride() throws Exception
{
- final Connection connection = getConnection(_brokerFailoverUrl);
-
- ((AMQConnection)connection).setConnectionListener(_failoverListener);
+ final Connection connection = getConnection(_positiveFailoverUrl);
- Set<Integer> ports = _clusterCreator.getBrokerPortNumbersForNodes();
+ Set<Integer> ports = _groupCreator.getBrokerPortNumbersForNodes();
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
ports.remove(activeBrokerPort);
// Stop all other nodes
for (Integer p : ports)
{
- _clusterCreator.stopNode(p);
+ _groupCreator.stopNode(p);
}
- Map<String, Object> attributes = _clusterCreator.getNodeAttributes(activeBrokerPort);
+ Map<String, Object> attributes = _groupCreator.getNodeAttributes(activeBrokerPort);
assertEquals("Broker has unexpected quorum override", new Integer(0), attributes.get(BDBHAVirtualHostNode.QUORUM_OVERRIDE));
- _clusterCreator.setNodeAttributes(activeBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.QUORUM_OVERRIDE, 1));
+ _groupCreator.setNodeAttributes(activeBrokerPort, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.QUORUM_OVERRIDE, 1));
- attributes = _clusterCreator.getNodeAttributes(activeBrokerPort);
+ attributes = _groupCreator.getNodeAttributes(activeBrokerPort);
assertEquals("Broker has unexpected quorum override", new Integer(1), attributes.get(BDBHAVirtualHostNode.QUORUM_OVERRIDE));
assertProducingConsuming(connection);
@@ -205,24 +284,24 @@ public class HAClusterBlackboxTest exten
public void testPriority() throws Exception
{
- final Connection connection = getConnection(_brokerFailoverUrl);
+ final Connection connection = getConnection(_positiveFailoverUrl);
((AMQConnection)connection).setConnectionListener(_failoverListener);
- final int activeBrokerPort = _clusterCreator.getBrokerPortNumberFromConnection(connection);
+ final int activeBrokerPort = _groupCreator.getBrokerPortNumberFromConnection(connection);
LOGGER.info("Active connection port " + activeBrokerPort);
int priority = 1;
Integer highestPriorityBrokerPort = null;
- Set<Integer> ports = _clusterCreator.getBrokerPortNumbersForNodes();
+ Set<Integer> ports = _groupCreator.getBrokerPortNumbersForNodes();
for (Integer port : ports)
{
if (activeBrokerPort != port.intValue())
{
priority = priority + 1;
highestPriorityBrokerPort = port;
- _clusterCreator.setNodeAttributes(port, port, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.PRIORITY, priority));
- Map<String, Object> attributes = _clusterCreator.getNodeAttributes(port, port);
+ _groupCreator.setNodeAttributes(port, port, Collections.<String, Object>singletonMap(BDBHAVirtualHostNode.PRIORITY, priority));
+ Map<String, Object> attributes = _groupCreator.getNodeAttributes(port, port);
assertEquals("Broker has unexpected priority", priority, attributes.get(BDBHAVirtualHostNode.PRIORITY));
}
}
@@ -230,12 +309,12 @@ public class HAClusterBlackboxTest exten
LOGGER.info("Broker on port " + highestPriorityBrokerPort + " has the highest priority of " + priority);
LOGGER.info("Shutting down the MASTER");
- _clusterCreator.stopNode(activeBrokerPort);
+ _groupCreator.stopNode(activeBrokerPort);
_failoverListener.awaitFailoverCompletion(20000);
LOGGER.info("Listener has finished");
- Map<String, Object> attributes = _clusterCreator.getNodeAttributes(highestPriorityBrokerPort, highestPriorityBrokerPort);
+ Map<String, Object> attributes = _groupCreator.getNodeAttributes(highestPriorityBrokerPort, highestPriorityBrokerPort);
assertEquals("Inactive broker has unexpected role", "MASTER", attributes.get(BDBHAVirtualHostNode.ROLE));
assertProducingConsuming(connection);
Copied: qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java (from r1617628, qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java)
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java?p2=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java&p1=qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java&r1=1617628&r2=1617668&rev=1617668&view=diff
==============================================================================
--- qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/HAClusterTwoNodeTest.java (original)
+++ qpid/trunk/qpid/java/bdbstore/systests/src/test/java/org/apache/qpid/server/store/berkeleydb/replication/TwoNodeTest.java Wed Aug 13 06:45:31 2014
@@ -17,7 +17,7 @@
* under the License.
*
*/
-package org.apache.qpid.server.store.berkeleydb;
+package org.apache.qpid.server.store.berkeleydb.replication;
import java.io.File;
@@ -30,14 +30,14 @@ import org.apache.qpid.server.store.berk
import org.apache.qpid.test.utils.JMXTestUtils;
import org.apache.qpid.test.utils.QpidBrokerTestCase;
-public class HAClusterTwoNodeTest extends QpidBrokerTestCase
+public class TwoNodeTest extends QpidBrokerTestCase
{
private static final String VIRTUAL_HOST = "test";
private static final String MANAGED_OBJECT_QUERY = "org.apache.qpid:type=BDBHAMessageStore,name=" + ObjectName.quote(VIRTUAL_HOST);
private static final int NUMBER_OF_NODES = 2;
- private final HATestClusterCreator _clusterCreator = new HATestClusterCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
+ private final GroupCreator _groupCreator = new GroupCreator(this, VIRTUAL_HOST, NUMBER_OF_NODES);
private final JMXTestUtils _jmxUtils = new JMXTestUtils(this);
private ConnectionURL _brokerFailoverUrl;
@@ -75,21 +75,21 @@ public class HAClusterTwoNodeTest extend
private void startCluster(boolean designedPrimary) throws Exception
{
setSystemProperty("java.util.logging.config.file", "etc" + File.separator + "log.properties");
- _clusterCreator.configureClusterNodes();
- _clusterCreator.setDesignatedPrimaryOnFirstBroker(designedPrimary);
- _brokerFailoverUrl = _clusterCreator.getConnectionUrlForAllClusterNodes();
- _clusterCreator.startCluster();
+ _groupCreator.configureClusterNodes();
+ _groupCreator.setDesignatedPrimaryOnFirstBroker(designedPrimary);
+ _brokerFailoverUrl = _groupCreator.getConnectionUrlForAllClusterNodes();
+ _groupCreator.startCluster();
}
public void testMasterDesignatedPrimaryCanBeRestartedWithoutReplica() throws Exception
{
startCluster(true);
final Connection initialConnection = getConnection(_brokerFailoverUrl);
- int masterPort = _clusterCreator.getBrokerPortNumberFromConnection(initialConnection);
+ int masterPort = _groupCreator.getBrokerPortNumberFromConnection(initialConnection);
assertProducingConsuming(initialConnection);
initialConnection.close();
- _clusterCreator.stopCluster();
- _clusterCreator.startNode(masterPort);
+ _groupCreator.stopCluster();
+ _groupCreator.startNode(masterPort);
final Connection secondConnection = getConnection(_brokerFailoverUrl);
assertProducingConsuming(secondConnection);
secondConnection.close();
@@ -101,8 +101,8 @@ public class HAClusterTwoNodeTest extend
final Connection initialConnection = getConnection(_brokerFailoverUrl);
assertProducingConsuming(initialConnection);
initialConnection.close();
- _clusterCreator.stopCluster();
- _clusterCreator.startClusterParallel();
+ _groupCreator.stopCluster();
+ _groupCreator.startClusterParallel();
final Connection secondConnection = getConnection(_brokerFailoverUrl);
assertProducingConsuming(secondConnection);
secondConnection.close();
@@ -111,7 +111,7 @@ public class HAClusterTwoNodeTest extend
public void testDesignatedPrimaryContinuesAfterSecondaryStopped() throws Exception
{
startCluster(true);
- _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
+ _groupCreator.stopNode(_groupCreator.getBrokerPortNumberOfSecondaryNode());
final Connection connection = getConnection(_brokerFailoverUrl);
assertNotNull("Expected to get a valid connection to primary", connection);
assertProducingConsuming(connection);
@@ -120,7 +120,7 @@ public class HAClusterTwoNodeTest extend
public void testPersistentOperationsFailOnNonDesignatedPrimaryAfterSecondaryStopped() throws Exception
{
startCluster(false);
- _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
+ _groupCreator.stopNode(_groupCreator.getBrokerPortNumberOfSecondaryNode());
try
{
@@ -139,7 +139,7 @@ public class HAClusterTwoNodeTest extend
public void testSecondaryDoesNotBecomePrimaryWhenDesignatedPrimaryStopped() throws Exception
{
startCluster(true);
- _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfPrimary());
+ _groupCreator.stopNode(_groupCreator.getBrokerPortNumberOfPrimary());
try
{
@@ -155,18 +155,18 @@ public class HAClusterTwoNodeTest extend
public void testInitialDesignatedPrimaryStateOfNodes() throws Exception
{
startCluster(true);
- final ManagedBDBHAMessageStore primaryStoreBean = getStoreBeanForNodeAtBrokerPort(_clusterCreator.getBrokerPortNumberOfPrimary());
+ final ManagedBDBHAMessageStore primaryStoreBean = getStoreBeanForNodeAtBrokerPort(_groupCreator.getBrokerPortNumberOfPrimary());
assertTrue("Expected primary node to be set as designated primary", primaryStoreBean.getDesignatedPrimary());
- final ManagedBDBHAMessageStore secondaryStoreBean = getStoreBeanForNodeAtBrokerPort(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
+ final ManagedBDBHAMessageStore secondaryStoreBean = getStoreBeanForNodeAtBrokerPort(_groupCreator.getBrokerPortNumberOfSecondaryNode());
assertFalse("Expected secondary node to NOT be set as designated primary", secondaryStoreBean.getDesignatedPrimary());
}
public void testSecondaryDesignatedAsPrimaryAfterOriginalPrimaryStopped() throws Exception
{
startCluster(true);
- final ManagedBDBHAMessageStore storeBean = getStoreBeanForNodeAtBrokerPort(_clusterCreator.getBrokerPortNumberOfSecondaryNode());
- _clusterCreator.stopNode(_clusterCreator.getBrokerPortNumberOfPrimary());
+ final ManagedBDBHAMessageStore storeBean = getStoreBeanForNodeAtBrokerPort(_groupCreator.getBrokerPortNumberOfSecondaryNode());
+ _groupCreator.stopNode(_groupCreator.getBrokerPortNumberOfPrimary());
assertFalse("Expected node to NOT be set as designated primary", storeBean.getDesignatedPrimary());
storeBean.setDesignatedPrimary(true);
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org