[jboss-cvs] JBoss Messaging SVN: r2450 - in trunk/tests/src/org/jboss/test/messaging/jms/clustering: base and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 26 18:06:41 EST 2007


Author: clebert.suconic at jboss.com
Date: 2007-02-26 18:06:40 -0500 (Mon, 26 Feb 2007)
New Revision: 2450

Modified:
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/MergeQueueTest.java
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/base/ClusteringTestBase.java
Log:
Fixing test (race condition on failover)

Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/MergeQueueTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/MergeQueueTest.java	2007-02-26 19:25:34 UTC (rev 2449)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/MergeQueueTest.java	2007-02-26 23:06:40 UTC (rev 2450)
@@ -15,6 +15,7 @@
 import javax.jms.TextMessage;
 
 import org.jboss.jms.client.JBossConnection;
+import org.jboss.jms.client.FailoverEvent;
 import org.jboss.test.messaging.jms.clustering.base.ClusteringTestBase;
 import org.jboss.test.messaging.tools.ServerManagement;
 
@@ -355,8 +356,7 @@
          
          
          //Now kill the server
-    
-         ServerManagement.killAndWait(1);
+         waitForFailoverComplete(1, conn1);
 
          //Messages should all be available on node 0
          
@@ -392,7 +392,6 @@
          }
       }
    }
-   
    // Fil consumer
    
    /*
@@ -602,9 +601,9 @@
          cons1 = null;
                  
          //Now kill the server
-    
-         ServerManagement.killAndWait(1);
 
+         waitForFailoverComplete(1, conn1);
+
          //Messages should all be available on node 0
          
          conn0.start();

Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/base/ClusteringTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/base/ClusteringTestBase.java	2007-02-26 19:25:34 UTC (rev 2449)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/base/ClusteringTestBase.java	2007-02-26 23:06:40 UTC (rev 2450)
@@ -182,6 +182,46 @@
       }
    }
 
+
+   protected void waitForFailoverComplete(int serverID, Connection conn1)
+      throws Exception
+   {
+
+      assertEquals(serverID, ((JBossConnection)conn1).getServerID());
+
+      // register a failover listener
+      SimpleFailoverListener failoverListener = new SimpleFailoverListener();
+      ((JBossConnection)conn1).registerFailoverListener(failoverListener);
+
+      log.debug("killing node " + serverID + " ....");
+
+      ServerManagement.kill(serverID);
+
+      log.info("########");
+      log.info("######## KILLED NODE " + serverID);
+      log.info("########");
+
+      // wait for the client-side failover to complete
+
+      while(true)
+         {
+            FailoverEvent event = failoverListener.getEvent(120000);
+         if (event != null && FailoverEvent.FAILOVER_COMPLETED == event.getType())
+         {
+            break;
+         }
+         if (event == null)
+         {
+            fail("Did not get expected FAILOVER_COMPLETED event");
+         }
+      }
+
+      // failover complete
+      log.info("failover completed");
+   }
+
+
+
    /**
     * Lookup for the connection with the right serverID. I'm using this method to find the proper
     * serverId so I won't relay on loadBalancing policies on testcases.




More information about the jboss-cvs-commits mailing list