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