[jboss-cvs] JBoss Messaging SVN: r2956 - trunk/tests/src/org/jboss/test/messaging/jms/clustering.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Aug 6 11:17:20 EDT 2007


Author: timfox
Date: 2007-08-06 11:17:20 -0400 (Mon, 06 Aug 2007)
New Revision: 2956

Modified:
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/NewClusteringTestBase.java
Log:
clustering tests speedup


Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java	2007-08-06 14:22:18 UTC (rev 2955)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java	2007-08-06 15:17:20 UTC (rev 2956)
@@ -22,7 +22,6 @@
 
 package org.jboss.test.messaging.jms.clustering;
 
-import java.util.Map;
 import java.util.Set;
 
 import javax.jms.Connection;
@@ -34,9 +33,8 @@
 import javax.jms.TextMessage;
 import javax.jms.Topic;
 
+import org.jboss.jms.client.FailoverEvent;
 import org.jboss.jms.client.JBossConnection;
-import org.jboss.jms.client.JBossConnectionFactory;
-import org.jboss.jms.client.JBossMessageConsumer;
 import org.jboss.jms.client.JBossSession;
 import org.jboss.jms.client.delegate.ClientClusteredConnectionFactoryDelegate;
 import org.jboss.jms.client.delegate.ClientConnectionDelegate;
@@ -44,7 +42,6 @@
 import org.jboss.jms.client.delegate.ClientSessionDelegate;
 import org.jboss.jms.client.remoting.JMSRemotingConnection;
 import org.jboss.jms.client.state.ConnectionState;
-import org.jboss.jms.client.state.ConsumerState;
 import org.jboss.jms.client.state.SessionState;
 import org.jboss.jms.message.MessageProxy;
 import org.jboss.test.messaging.tools.ServerManagement;
@@ -58,7 +55,7 @@
  * $Id$
  *
  */
-public class HATest extends ClusteringTestBase
+public class HATest extends NewClusteringTestBase
 {
    
    // Constants -----------------------------------------------------
@@ -94,34 +91,28 @@
     */
    public void testCloseOnFailover() throws Exception
    {
-      JBossConnectionFactory factory = (JBossConnectionFactory) ic[0].lookup("/ClusteredConnectionFactory");
-
-      Connection conn1 = createConnectionOnServer(factory,0);
-      Connection conn2 = createConnectionOnServer(factory,1);
-      Connection conn3 = createConnectionOnServer(factory,2);
-
-      Connection[] conn = new Connection[]{conn1, conn2, conn3};
+      Connection conn1 = createConnectionOnServer(cf,0);
+      Connection conn2 = createConnectionOnServer(cf,1);
+      Connection conn3 = createConnectionOnServer(cf,2);
       
-      this.checkConnectionsDifferentServers(conn);
-
-      log.info("Connection delegate information after creation");
-
-      for (int i = 0; i < conn.length; i++)
-      {
-         log.info("conn" + i + ".serverid=" + getServerId(conn[i]) + " conn" + i + ".ObjectID=" +
-            getObjectId(conn[i]) + " locatorURL=" + getLocatorURL(conn[i]));
-      }
-
-      log.info("Killing server 1 and waiting 30 seconds for failover to kick in on client (from Lease)");
+      SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+      ((JBossConnection)conn2).registerFailoverListener(failoverListener);
+      
       ServerManagement.kill(1);
-      Thread.sleep(30000);
 
-      log.info("Connection delegate information after failover");
+      //wait for the client-side failover to complete
 
-      for (int i = 0; i < conn.length; i++)
+      while(true)
       {
-         log.info("conn" + i + ".serverid=" + getServerId(conn[i]) + " conn" + i + ".ObjectID=" +
-            getObjectId(conn[i]) + " locatorURL=" + getLocatorURL(conn[i]));
+         FailoverEvent event = failoverListener.getEvent(30000);
+         if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+         {
+            break;
+         }
+         if (event == null)
+         {
+            fail("Did not get expected FAILOVER_COMPLETED event");
+         }
       }
 
       ConnectionState state2 = getConnectionState(conn2);
@@ -143,8 +134,6 @@
       assertNotNull(state3.getRemotingConnection().getRemotingClient().getInvoker());
       assertTrue(state3.getRemotingConnection().getRemotingClient().getInvoker().isConnected());
 
-      log.info("Closing connection 3 now");
-
       // When I created the testcase this was failing, throwing exceptions. This was basically why
       // I created this testcase
       conn3.close();
@@ -156,14 +145,9 @@
     */
    public void testRoundRobinConnectionCreation() throws Exception
    {
-      JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
       ClientClusteredConnectionFactoryDelegate delegate =
-         (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
+         (ClientClusteredConnectionFactoryDelegate)cf.getDelegate();
 
-      log.info ("number of delegates = " + delegate.getDelegates().length);
-      log.info ("number of servers = " + ServerManagement.getServer(0).getNodeIDView().size());
-
       assertEquals(3, delegate.getDelegates().length);
 
       ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
@@ -192,15 +176,15 @@
 
       try
       {
-         conn1 = createConnectionOnServer(factory, 0);  //server 0
+         conn1 = createConnectionOnServer(cf, 0);  //server 0
 
-         conn2 = createConnectionOnServer(factory, 1);  //server 1
+         conn2 = createConnectionOnServer(cf, 1);  //server 1
 
-         conn3 = createConnectionOnServer(factory, 2);  //server 2
+         conn3 = createConnectionOnServer(cf, 2);  //server 2
 
-         conn4 = createConnectionOnServer(factory, 0);  //server 0
+         conn4 = createConnectionOnServer(cf, 0);  //server 0
 
-         conn5 = createConnectionOnServer(factory, 1);  //server 1
+         conn5 = createConnectionOnServer(cf, 1);  //server 1
 
          int serverID1 = getServerId(conn1);
 
@@ -212,16 +196,6 @@
 
          int serverID5 = getServerId(conn5);
 
-         log.info("server id 1: " + serverID1);
-
-         log.info("server id 2: " + serverID2);
-
-         log.info("server id 3: " + serverID3);
-
-         log.info("server id 4: " + serverID4);
-
-         log.info("server id 5: " + serverID5);
-
          assertEquals(0, serverID1);
 
          assertEquals(1, serverID2);
@@ -262,282 +236,19 @@
 
    }
 
-   /*
-    * Test that the failover mapping is created correctly and updated properly when nodes leave
-    * or join
-    */
-   public void testDefaultFailoverMap() throws Exception
-   {
-      {
-         JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
-         ClientClusteredConnectionFactoryDelegate delegate =
-            (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
-         assertEquals(3, ServerManagement.getServer(0).getNodeIDView().size());
-
-         ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-         ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
-
-         ClientConnectionFactoryDelegate cf2 = delegate.getDelegates()[1];
-
-         ClientConnectionFactoryDelegate cf3 = delegate.getDelegates()[2];
-
-         //The order here depends on the order the servers were started in
-
-         //If any servers get stopped and then started then the order will change
-
-         log.info("cf1 serverid=" + cf1.getServerID());
-
-         log.info("cf2 serverid=" + cf2.getServerID());
-
-         log.info("cf3 serverid=" + cf3.getServerID());
-
-
-         assertEquals(0, cf1.getServerID());
-
-         assertEquals(1, cf2.getServerID());
-
-         assertEquals(2, cf3.getServerID());
-
-         Map failoverMap = delegate.getFailoverMap();
-
-         assertEquals(3, delegates.length);
-
-         assertEquals(3, failoverMap.size());
-
-         // Default failover policy just chooses the node to the right
-
-         assertEquals(cf2.getServerID(), ((Integer)failoverMap.get(new Integer(cf1.getServerID()))).intValue());
-
-         assertEquals(cf3.getServerID(), ((Integer)failoverMap.get(new Integer(cf2.getServerID()))).intValue());
-
-         assertEquals(cf1.getServerID(), ((Integer)failoverMap.get(new Integer(cf3.getServerID()))).intValue());
-      }
-
-      //Now cleanly stop one of the servers
-
-      log.info("************** STOPPING SERVER 0");
-      ServerManagement.stop(0);
-      
-      Thread.sleep(5000);
-
-      log.info("server stopped");
-
-      assertEquals(2, ServerManagement.getServer(1).getNodeIDView().size());
-
-      {
-         //Lookup another connection factory
-
-         JBossConnectionFactory factory =  (JBossConnectionFactory )ic[1].lookup("/ClusteredConnectionFactory");
-
-         log.info("Got connection factory");
-
-         ClientClusteredConnectionFactoryDelegate delegate =
-            (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
-         ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-         Map failoverMap = delegate.getFailoverMap();
-
-         log.info("Got failover map");
-
-         assertEquals(2, delegates.length);
-
-         ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
-
-         ClientConnectionFactoryDelegate cf2 = delegate.getDelegates()[1];
-
-         //Order here depends on order servers were started in
-
-         log.info("cf1 serverid=" + cf1.getServerID());
-
-         log.info("cf2 serverid=" + cf2.getServerID());
-
-         assertEquals(1, cf1.getServerID());
-
-         assertEquals(2, cf2.getServerID());
-
-
-         assertEquals(2, failoverMap.size());
-
-         assertEquals(cf2.getServerID(), ((Integer)failoverMap.get(new Integer(cf1.getServerID()))).intValue());
-
-         assertEquals(cf1.getServerID(), ((Integer)failoverMap.get(new Integer(cf2.getServerID()))).intValue());
-      }
-
-      //Cleanly stop another server
-
-      log.info("Server 1 is started: " + ServerManagement.getServer(1).isServerPeerStarted());
-
-      ServerManagement.stop(1);
-      
-      Thread.sleep(5000);
-
-      assertEquals(1, ServerManagement.getServer(2).getNodeIDView().size());
-
-      {
-         //Lookup another connection factory
-
-         JBossConnectionFactory factory =  (JBossConnectionFactory )ic[2].lookup("/ClusteredConnectionFactory");
-
-         ClientClusteredConnectionFactoryDelegate delegate =
-            (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
-         ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-         Map failoverMap = delegate.getFailoverMap();
-
-         assertEquals(1, delegates.length);
-
-         ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
-
-         assertEquals(2, cf1.getServerID());
-
-
-         assertEquals(1, failoverMap.size());
-
-         assertEquals(cf1.getServerID(), ((Integer)failoverMap.get(new Integer(cf1.getServerID()))).intValue());
-      }
-
-      //Restart server 0
-
-      ServerManagement.start(0, "all");
-
-      {
-         JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
-         log.info("Got connection factory");
-
-         ClientClusteredConnectionFactoryDelegate delegate =
-            (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
-         ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-         Map failoverMap = delegate.getFailoverMap();
-
-         log.info("Got failover map");
-
-         assertEquals(2, delegates.length);
-
-         ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
-
-         ClientConnectionFactoryDelegate cf2 = delegate.getDelegates()[1];
-
-         log.info("cf1 serverid=" + cf1.getServerID());
-
-         log.info("cf2 serverid=" + cf2.getServerID());
-
-         assertEquals(0, cf1.getServerID());
-
-         assertEquals(2, cf2.getServerID());
-
-
-         assertEquals(2, failoverMap.size());
-
-         assertEquals(cf2.getServerID(), ((Integer)failoverMap.get(new Integer(cf1.getServerID()))).intValue());
-
-         assertEquals(cf1.getServerID(), ((Integer)failoverMap.get(new Integer(cf2.getServerID()))).intValue());
-      }
-
-
-      //Restart server 1
-
-      ServerManagement.start(1, "all");
-
-      {
-         JBossConnectionFactory factory =  (JBossConnectionFactory )ic[1].lookup("/ClusteredConnectionFactory");
-
-         log.info("Got connection factory");
-
-         ClientClusteredConnectionFactoryDelegate delegate =
-            (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
-         ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-         Map failoverMap = delegate.getFailoverMap();
-
-         log.info("Got failover map");
-
-         assertEquals(3, delegates.length);
-
-         ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
-
-         ClientConnectionFactoryDelegate cf2 = delegate.getDelegates()[1];
-
-         ClientConnectionFactoryDelegate cf3 = delegate.getDelegates()[2];
-
-         log.info("cf1 serverid=" + cf1.getServerID());
-
-         log.info("cf2 serverid=" + cf2.getServerID());
-
-         log.info("cf3 serverid=" + cf3.getServerID());
-
-         assertEquals(0, cf1.getServerID());
-
-         assertEquals(1, cf2.getServerID());
-
-         assertEquals(2, cf3.getServerID());
-
-
-         assertEquals(3, failoverMap.size());
-
-         assertEquals(cf2.getServerID(), ((Integer)failoverMap.get(new Integer(cf1.getServerID()))).intValue());
-
-         assertEquals(cf3.getServerID(), ((Integer)failoverMap.get(new Integer(cf2.getServerID()))).intValue());
-
-         assertEquals(cf1.getServerID(), ((Integer)failoverMap.get(new Integer(cf3.getServerID()))).intValue());
-      }
-   }
-
    public void testSimpleFailover() throws Exception
    {
-      JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
-      ClientClusteredConnectionFactoryDelegate delegate =
-         (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
       Set nodeIDView = ServerManagement.getServer(0).getNodeIDView();
       assertEquals(3, nodeIDView.size());
 
-      ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-      ClientConnectionFactoryDelegate cf1 = delegates[0];
-
-      ClientConnectionFactoryDelegate cf2 = delegates[1];
-
-      ClientConnectionFactoryDelegate cf3 = delegates[2];
-
-      int server0Id = cf1.getServerID();
-
-      int server1Id = cf2.getServerID();
-
-      int server2Id = cf3.getServerID();
-
-      log.info("server 0 id: " + server0Id);
-
-      log.info("server 1 id: " + server1Id);
-
-      log.info("server 2 id: " + server2Id);
-
-      Map failoverMap = delegate.getFailoverMap();
-
-      log.info(failoverMap.get(new Integer(server0Id)));
-      log.info(failoverMap.get(new Integer(server1Id)));
-      log.info(failoverMap.get(new Integer(server2Id)));
-
-      int server1FailoverId = ((Integer)failoverMap.get(new Integer(server1Id))).intValue();
-
-      // server 1 should failover onto server 2
-
-      assertEquals(server2Id, server1FailoverId);
-
       Connection conn = null;
 
       try
       {
-         conn = createConnectionOnServer(factory, 1);
+         conn = createConnectionOnServer(cf, 1);
+         
+         SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+         ((JBossConnection)conn).registerFailoverListener(failoverListener);
 
          assertEquals(1, getServerId(conn));
 
@@ -560,55 +271,39 @@
          //So we now kill server 1
          //Which should cause transparent failover of connection conn onto server 1
 
-         log.info("######");
-         log.info("###### KILLING (CRASHING) SERVER 1");
-         log.info("######");
-
          ServerManagement.kill(1);
 
-         long sleepTime = 10;
+         //wait for the client-side failover to complete
 
-         log.info("killed server, now waiting for " + sleepTime + " seconds");
+         while(true)
+         {
+            FailoverEvent event = failoverListener.getEvent(30000);
+            if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+            {
+               break;
+            }
+            if (event == null)
+            {
+               fail("Did not get expected FAILOVER_COMPLETED event");
+            }
+         }
 
-         // NOTE: the sleep time needs to be longer than the Remoting connector's lease period
-         Thread.sleep(sleepTime * 1000);
-
-         log.info("done wait");
-
-         int finalServerID = getServerId(conn);
-
-         log.info("final server id= " + finalServerID);
-
-         //server id should now be 2
-
-         assertEquals(2, finalServerID);
-
          conn.start();
 
          for (int i = 0; i < NUM_MESSAGES; i++)
          {
             TextMessage tm = (TextMessage)cons.receive(1000);
 
-            log.debug("message is " + tm);
-
             assertNotNull(tm);
 
             assertEquals("message:" + i, tm.getText());
          }
-         log.info("done");
       }
       finally
       {
          if (conn != null)
          {
-            try
-            {
-               conn.close();
-            }
-            catch (Exception e)
-            {
-               e.printStackTrace();
-            }
+            conn.close();
          }
 
          ServerManagement.start(1, "all");
@@ -618,61 +313,21 @@
 
    public void testFailoverWithUnackedMessagesClientAcknowledge() throws Exception
    {
-      JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
-      ClientClusteredConnectionFactoryDelegate delegate =
-         (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
       Set nodeIDView = ServerManagement.getServer(0).getNodeIDView();
       assertEquals(3, nodeIDView.size());
 
-      ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-      ClientConnectionFactoryDelegate cf1 = delegates[0];
-
-      ClientConnectionFactoryDelegate cf2 = delegates[1];
-
-      ClientConnectionFactoryDelegate cf3 = delegates[2];
-
-      int server0Id = cf1.getServerID();
-
-      int server1Id = cf2.getServerID();
-
-      int server2Id = cf3.getServerID();
-
-      log.info("server 0 id: " + server0Id);
-
-      log.info("server 1 id: " + server1Id);
-
-      log.info("server 2 id: " + server2Id);
-
-      assertEquals(0, server0Id);
-
-      assertEquals(1, server1Id);
-
-      assertEquals(2, server2Id);
-
-      Map failoverMap = delegate.getFailoverMap();
-
-      log.info(failoverMap.get(new Integer(server0Id)));
-      log.info(failoverMap.get(new Integer(server1Id)));
-      log.info(failoverMap.get(new Integer(server2Id)));
-
-      int server1FailoverId = ((Integer)failoverMap.get(new Integer(server1Id))).intValue();
-
-      // server 1 should failover onto server 2
-
-      assertEquals(server2Id, server1FailoverId);
-
       Connection conn = null;
 
       boolean killed = false;
 
       try
       {
-         conn = createConnectionOnServer(factory, 1);
+         conn = createConnectionOnServer(cf, 1);
 
          JBossConnection jbc = (JBossConnection)conn;
+         
+         SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+         ((JBossConnection)conn).registerFailoverListener(failoverListener);
 
          ClientConnectionDelegate del = (ClientConnectionDelegate)jbc.getDelegate();
 
@@ -715,40 +370,34 @@
          //So we now kill server 1
          //Which should cause transparent failover of connection conn onto server 2
 
-         log.info("here we go");
-         log.info("######");
-         log.info("###### KILLING (CRASHING) SERVER 1");
-         log.info("######");
-
          ServerManagement.kill(1);
 
          killed = true;
 
-         long sleepTime = 10;
+         // wait for the client-side failover to complete
 
-         log.info("killed server, now waiting for " + sleepTime + " seconds");
+         while(true)
+         {
+            FailoverEvent event = failoverListener.getEvent(30000);
+            if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+            {
+               break;
+            }
+            if (event == null)
+            {
+               fail("Did not get expected FAILOVER_COMPLETED event");
+            }
+         }
 
-         // NOTE: the sleep time needs to be longer than the Remoting connector's lease period
-         Thread.sleep(sleepTime * 1000);
 
-         log.info("done wait");
-
          state = (ConnectionState)del.getState();
 
          int finalServerID = state.getServerID();
 
-         log.info("final server id= " + finalServerID);
-
-         //server id should now be 2
-
-         assertEquals(server1FailoverId, finalServerID);
-
          conn.start();
 
          //Now should be able to consume the rest of the messages
 
-         log.info("here1");
-
          TextMessage tm = null;
 
          for (int i = NUM_MESSAGES / 2; i < NUM_MESSAGES; i++)
@@ -757,13 +406,9 @@
             
             assertNotNull(tm);
             
-         	log.info("receiving: " + tm.getText());         	
-            
-           // assertEquals("message:" + i, tm.getText());
+            assertEquals("message:" + i, tm.getText());
          }
 
-         log.info("here2");
-
          //Now should be able to acknowledge them
 
          tm.acknowledge();
@@ -771,15 +416,7 @@
          //Now check there are no more messages there
          sess.close();
 
-         sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-         cons = sess.createConsumer(queue[1]);
-
-         Message m = cons.receive(500);
-
-         assertNull(m);
-
-         log.info("got to end of test");
+         checkEmpty(queue[finalServerID], finalServerID);
       }
       finally
       {
@@ -807,46 +444,9 @@
      
    public void testFailoverWithUnackedMessagesTransactional() throws Exception
    {
-      JBossConnectionFactory factory =  (JBossConnectionFactory )ic[0].lookup("/ClusteredConnectionFactory");
-
-      ClientClusteredConnectionFactoryDelegate delegate =
-         (ClientClusteredConnectionFactoryDelegate)factory.getDelegate();
-
       Set nodeIDView = ServerManagement.getServer(0).getNodeIDView();
       assertEquals(3, nodeIDView.size());
-
-      ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
-
-      ClientConnectionFactoryDelegate cf1 = delegates[0];
-
-      ClientConnectionFactoryDelegate cf2 = delegates[1];
-
-      ClientConnectionFactoryDelegate cf3 = delegates[2];
-
-      int server0Id = cf1.getServerID();
-
-      int server1Id = cf2.getServerID();
-
-      int server2Id = cf3.getServerID();
-
-      log.info("server 0 id: " + server0Id);
-
-      log.info("server 1 id: " + server1Id);
-
-      log.info("server 2 id: " + server2Id);
-
-      Map failoverMap = delegate.getFailoverMap();
-
-      log.info(failoverMap.get(new Integer(server0Id)));
-      log.info(failoverMap.get(new Integer(server1Id)));
-      log.info(failoverMap.get(new Integer(server2Id)));
-
-      int server1FailoverId = ((Integer)failoverMap.get(new Integer(server1Id))).intValue();
-
-      // server 1 should failover onto server 2
-
-      assertEquals(server2Id, server1FailoverId);
-
+     
       Connection conn = null;
 
       boolean killed = false;
@@ -855,7 +455,10 @@
       {
          //Get a connection on server 1
 
-         conn = createConnectionOnServer(factory, 1);
+         conn = createConnectionOnServer(cf, 1);
+         
+         SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+         ((JBossConnection)conn).registerFailoverListener(failoverListener);
 
          JBossConnection jbc = (JBossConnection)conn;
 
@@ -900,58 +503,45 @@
 
          //So now, messages should be in queue[1] on server 1
          //So we now kill server 1
-         //Which should cause transparent failover of connection conn onto server 1
-
-         log.info("######");
-         log.info("###### KILLING (CRASHING) SERVER 1");
-         log.info("######");
-
+         //Which should cause transparent failover of connection conn onto server 2
+         
          ServerManagement.kill(1);
 
          killed = true;
 
-         log.info("killed server, now waiting");
+         //       wait for the client-side failover to complete
 
-         long sleepTime = 10;
-
-         log.info("killed server, now waiting for " + sleepTime + " seconds");
-
-         // NOTE: the sleep time needs to be longer than the Remoting connector's lease period
-         Thread.sleep(sleepTime * 1000);
-
-         log.info("done wait");
-
+         while(true)
+         {
+            FailoverEvent event = failoverListener.getEvent(30000);
+            if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+            {
+               break;
+            }
+            if (event == null)
+            {
+               fail("Did not get expected FAILOVER_COMPLETED event");
+            }
+         }
          state = (ConnectionState)del.getState();
 
          int finalServerID = state.getServerID();
 
-         log.info("final server id= " + finalServerID);
-
-         //server id should now be 2
-
-         assertEquals(server1FailoverId, finalServerID);
-
          conn.start();
 
          //Now should be able to consume the rest of the messages
 
-         log.info("here1");
-
          TextMessage tm = null;
 
          for (int i = NUM_MESSAGES / 2; i < NUM_MESSAGES; i++)
          {
             tm = (TextMessage)cons.receive(5000);
 
-            log.debug("message is " + tm.getText());
-
             assertNotNull(tm);
 
             assertEquals("message:" + i, tm.getText());
          }
 
-         log.info("here2");
-
          //Now should be able to commit them
 
          sess.commit();
@@ -959,15 +549,7 @@
          //Now check there are no more messages there
          sess.close();
 
-         sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
-
-         cons = sess.createConsumer(queue[1]);
-
-         Message m = cons.receive(500);
-
-         assertNull(m);
-
-         log.info("got to end of test");
+         checkEmpty(queue[1], finalServerID);
       }
       finally
       {
@@ -993,38 +575,27 @@
 
    public void testTopicSubscriber() throws Exception
    {
-      log.info("++testTopicSubscriber");
-
-      log.info(">>Lookup Queue");
-      
       Destination destination = (Destination) topic[1];
 
       JBossConnection conn = (JBossConnection)createConnectionOnServer(cf, 1);
+      
+      SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+      ((JBossConnection)conn).registerFailoverListener(failoverListener);
 
+
       conn.setClientID("testClient");
       conn.start();
 
       try
       {
-
          JBossSession session = (JBossSession) conn.createSession(true, Session.SESSION_TRANSACTED);
          ClientSessionDelegate clientSessionDelegate = (ClientSessionDelegate) session.getDelegate();
          SessionState sessionState = (SessionState) clientSessionDelegate.getState();
 
          MessageConsumer consumerHA = session.createDurableSubscriber((Topic) destination, "T1");
-         JBossMessageConsumer jbossConsumerHA = (JBossMessageConsumer) consumerHA;
 
-         org.jboss.jms.client.delegate.ClientConsumerDelegate clientDelegate =
-            (org.jboss.jms.client.delegate.ClientConsumerDelegate) jbossConsumerHA.getDelegate();
-         ConsumerState consumerState = (ConsumerState) clientDelegate.getState();
-
-         log.info("subscriptionName=" + consumerState.getSubscriptionName());
-
-         log.info(">>Creating Producer");
          MessageProducer producer = session.createProducer(destination);
-         log.info(">>creating Message");
          Message message = session.createTextMessage("Hello Before");
-         log.info(">>sending Message");
          producer.send(message);
          session.commit();
 
@@ -1041,22 +612,30 @@
 
          JMSRemotingConnection originalRemoting = delegate.getRemotingConnection();
 
-         ServerManagement.kill(1);
+         // wait for the client-side failover to complete
 
-         Thread.sleep(10000);
+         while(true)
+         {
+            FailoverEvent event = failoverListener.getEvent(30000);
+            if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+            {
+               break;
+            }
+            if (event == null)
+            {
+               fail("Did not get expected FAILOVER_COMPLETED event");
+            }
+         }
          // if failover happened, this object was replaced
          assertNotSame(originalRemoting, delegate.getRemotingConnection());
 
          message = session.createTextMessage("Hello After");
-         log.info(">>Sending new message");
          producer.send(message);
 
          assertEquals(txID, sessionState.getCurrentTxId());
-         log.info(">>Final commit");
-
+ 
          session.commit();
 
-         log.info("Calling alternate receiver");
          receiveMessage("consumerHA", consumerHA, true, false);
          receiveMessage("consumerHA", consumerHA, true, false);
          receiveMessage("consumerHA", consumerHA, true, true);
@@ -1081,24 +660,8 @@
       nodeCount = 3;
 
       super.setUp();
-
-      log.debug("setup done");
    }
    
-   protected void tearDown() throws Exception
-   {
-      super.tearDown();
-      
-      for (int i = 0; i < nodeCount; i++)
-      {
-         if (ServerManagement.isStarted(i))
-         {
-            ServerManagement.log(ServerManagement.INFO, "Undeploying Server " + i, i);
-            ServerManagement.stop(i);
-         }
-      }
-   }
-   
    // Private -------------------------------------------------------
 
    private void receiveMessage(String text, MessageConsumer consumer, boolean shouldAssert, boolean shouldBeNull) throws Exception

Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/NewClusteringTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/NewClusteringTestBase.java	2007-08-06 14:22:18 UTC (rev 2955)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/NewClusteringTestBase.java	2007-08-06 15:17:20 UTC (rev 2956)
@@ -198,8 +198,7 @@
 	      ServerManagement.getServer(i).resetAllSuckers();
       }
       
-      cf = (JBossConnectionFactory)ic[0].lookup("/ClusteredConnectionFactory");  
-      log.info("Looked up new clustered connection factory");      
+      cf = (JBossConnectionFactory)ic[0].lookup("/ClusteredConnectionFactory");    
    }
    
    protected void tearDown() throws Exception




More information about the jboss-cvs-commits mailing list