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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Feb 26 19:59:48 EST 2007


Author: timfox
Date: 2007-02-26 19:59:48 -0500 (Mon, 26 Feb 2007)
New Revision: 2453

Modified:
   trunk/tests/src/org/jboss/test/messaging/jms/clustering/MultipleFailoverTest.java
Log:
Added two server test



Modified: trunk/tests/src/org/jboss/test/messaging/jms/clustering/MultipleFailoverTest.java
===================================================================
--- trunk/tests/src/org/jboss/test/messaging/jms/clustering/MultipleFailoverTest.java	2007-02-27 00:43:45 UTC (rev 2452)
+++ trunk/tests/src/org/jboss/test/messaging/jms/clustering/MultipleFailoverTest.java	2007-02-27 00:59:48 UTC (rev 2453)
@@ -21,15 +21,20 @@
 */
 package org.jboss.test.messaging.jms.clustering;
 
-import org.jboss.test.messaging.jms.clustering.base.ClusteringTestBase;
-import org.jboss.test.messaging.tools.ServerManagement;
-
 import javax.jms.Connection;
+import javax.jms.DeliveryMode;
+import javax.jms.Message;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageListener;
+import javax.jms.MessageProducer;
 import javax.jms.Session;
 import javax.jms.TextMessage;
-import javax.jms.MessageProducer;
-import javax.jms.MessageConsumer;
 
+import org.jboss.test.messaging.jms.clustering.base.ClusteringTestBase;
+import org.jboss.test.messaging.tools.ServerManagement;
+
+import EDU.oswego.cs.dl.util.concurrent.Latch;
+
 /**
  * A test where we kill multiple nodes and make sure the failover works correctly in these condtions
  * too.
@@ -183,7 +188,147 @@
          }
       }
    }
+   
+   class Killer implements Runnable
+   { 
+      boolean failed;
+      
+      public void run()
+      {
+         try
+         {                                     
+            Thread.sleep(10000);
+               
+            log.info("Killing server 0");
+            ServerManagement.kill(0);
+            
+            Thread.sleep(10000);
+            
+            log.info("starting server 0");
+            ServerManagement.start(0, "all");
+            
+            Thread.sleep(10000);
+            
+            log.info("Killing server 1");
+            ServerManagement.kill(1);
+            
+            Thread.sleep(10000);
+            
+            log.info("Starting server 1");
+            ServerManagement.start(1, "all");
+            
+            Thread.sleep(10000);
+            
+            log.info("Killing server 0");
+            ServerManagement.kill(0);
+            
+            Thread.sleep(10000);
+            
+            log.info("Starting server 0");
+            ServerManagement.start(0, "all");
+            
+            Thread.sleep(10000);
+            
+            log.info("Killing server 1");
+            ServerManagement.kill(1);
+            
+            Thread.sleep(10000);
+            
+            log.info("Starting server 1");
+            ServerManagement.start(1, "all");
+            
+            Thread.sleep(10000);
+            
+            log.info("Killing server 0");
+            ServerManagement.kill(0);
+            
+            Thread.sleep(10000);
+            
+            log.info("Starting server 0");
+            ServerManagement.start(0, "all");
 
+         }
+         catch (Exception e)
+         {               
+            failed = true;
+         }
+      }
+      
+   }
+   
+   public void testFailoverFloodTwoServers() throws Exception
+   {
+      Connection conn = null;
+
+      try
+      {
+         conn = cf.createConnection();
+
+         Session sessSend = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+         Session sessCons = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+         MessageConsumer cons = sessCons.createConsumer(queue[0]);
+
+         Latch latch = new Latch();
+         
+         final int NUM_MESSAGES = 10000;         
+         
+         MessageListener list = new MyListener(latch, NUM_MESSAGES);
+
+         cons.setMessageListener(list);
+
+         conn.start();
+
+         MessageProducer prod = sessSend.createProducer(queue[0]);
+
+         prod.setDeliveryMode(DeliveryMode.PERSISTENT);
+
+         int count = 0;
+         
+         Thread t = new Thread(new Killer());
+         
+         t.start();
+
+         for (int i = 0; i < NUM_MESSAGES; i++)
+         {
+            TextMessage tm = sessSend.createTextMessage("message " + count);
+
+            prod.send(tm);
+            
+            Thread.sleep(250);
+
+            log.info("sent " + count);
+
+            count++;
+         }
+         
+         t.join();
+         
+         latch.acquire();
+      }
+      catch (Exception e)
+      {
+         log.error("Failed", e);
+         throw e;
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            log.info("closing connetion");
+            try
+            {
+               conn.close();
+            }
+            catch (Exception ignore)
+            {
+            }
+            log.info("closed connection");
+         }
+      }
+   }
+
    // Package protected ----------------------------------------------------------------------------
 
    // Protected ------------------------------------------------------------------------------------
@@ -206,4 +351,50 @@
 
    // Inner classes --------------------------------------------------------------------------------
 
+   class MyListener implements MessageListener
+   {
+      int count = 0;
+      
+      Latch latch;
+      
+      boolean failed;
+      
+      int num;
+      
+      MyListener(Latch latch, int num)
+      {
+         this.latch = latch;
+         
+         this.num = num;
+      }
+           
+      public void onMessage(Message msg)
+      {
+         try
+         {
+            TextMessage tm = (TextMessage)msg;
+            
+            log.info("Received message " + tm.getText());
+            
+            if (!tm.getText().equals("message " + count))
+            {
+               failed = true;
+               
+               latch.release();
+            }
+            
+            count++;
+            
+            if (count == num)
+            {
+               latch.release();
+            }
+         }
+         catch (Exception e)
+         {
+            log.error("Failed to receive", e);
+         }
+      }
+      
+   }
 }




More information about the jboss-cvs-commits mailing list