[jboss-cvs] JBoss Messaging SVN: r1740 - branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Dec 9 13:17:17 EST 2006
Author: timfox
Date: 2006-12-09 13:17:15 -0500 (Sat, 09 Dec 2006)
New Revision: 1740
Modified:
branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java
branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/SimpleClusteringTest.java
Log:
More test tweaks
Modified: branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java
===================================================================
--- branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java 2006-12-09 17:37:56 UTC (rev 1739)
+++ branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java 2006-12-09 18:17:15 UTC (rev 1740)
@@ -26,10 +26,13 @@
import javax.jms.Connection;
import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
import javax.jms.TextMessage;
import org.jboss.jms.client.JBossConnection;
import org.jboss.jms.client.JBossConnectionFactory;
+import org.jboss.jms.client.delegate.ClientConnectionDelegate;
import org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate;
import org.jboss.jms.client.delegate.ClusteredClientConnectionFactoryDelegate;
import org.jboss.jms.client.delegate.DelegateSupport;
@@ -241,8 +244,6 @@
assertEquals(cf3.getServerId(), ((Integer)failoverMap.get(new Integer(cf2.getServerId()))).intValue());
assertEquals(cf1.getServerId(), ((Integer)failoverMap.get(new Integer(cf3.getServerId()))).intValue());
-
- assertEquals(2, ((Integer)failoverMap.get(new Integer(1))).intValue());
}
//Now cleanly stop one of the servers
@@ -419,7 +420,124 @@
public void testSimpleFailover() throws Exception
{
+ JBossConnectionFactory factory = (JBossConnectionFactory )ic0.lookup("/ConnectionFactory");
+ ClusteredClientConnectionFactoryDelegate delegate =
+ (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
+
+ assertEquals(3, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+
+ ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
+
+ ClientConnectionFactoryDelegate cf1 = delegates[0];
+
+ ClientConnectionFactoryDelegate cf2 = delegates[1];
+
+ int server0Id = cf1.getServerId();
+
+ int server1Id = cf2.getServerId();
+
+ Map failoverMap = delegate.getFailoverMap();
+
+ int server0FailoverId = ((Integer)failoverMap.get(new Integer(server0Id))).intValue();
+
+ // server 0 should failover onto server 1
+
+ assertEquals(server1Id, server0FailoverId);
+
+ Connection conn = null;
+
+ try
+ {
+
+ //Send a message into a queue on server 0
+
+ conn = factory.createConnection();
+
+ JBossConnection jbc = (JBossConnection)conn;
+
+ ClientConnectionDelegate del = (ClientConnectionDelegate)jbc.getDelegate();
+
+ ConnectionState state = (ConnectionState)del.getState();
+
+ int initialServerID = state.getServerID();
+
+ assertEquals(0, initialServerID);
+
+
+
+ Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);
+
+ MessageProducer prod = sess.createProducer(queue0);
+
+ final int NUM_MESSAGES = 100;
+
+ for (int i = 0; i < NUM_MESSAGES; i++)
+ {
+ TextMessage tm = sess.createTextMessage("message:" + i);
+
+ prod.send(tm);
+ }
+
+ //So now, messages should be in queue0 on server 0
+ //So we now kill server 0
+ //Which should cause transparent failover of connection conn onto server 1
+
+ log.info("************ KILLING (CRASHING) SERVER 0");
+
+ ServerManagement.getServer(0).destroy();
+
+ log.info("killed server, now waiting");
+
+ Thread.sleep(3000);
+
+ log.info("done wait");
+
+ state = (ConnectionState)del.getState();
+
+ int finalServerID = state.getServerID();
+
+ log.info("final server id= " + finalServerID);
+
+ //server id should now be 1
+
+ assertEquals(1, finalServerID);
+
+ log.info("here 2");
+
+ //I should now be able to create a consumer on the same connection and consume the messages
+
+ MessageConsumer cons = sess.createConsumer(queue0);
+
+ conn.start();
+
+ log.info("here 3");
+
+ for (int i = 0; i < NUM_MESSAGES; i++)
+ {
+ TextMessage tm = (TextMessage)cons.receive(1000);
+
+ assertNotNull(tm);
+
+ assertEquals("message:" + i, tm.getText());
+ }
+ log.info("here 4");
+ }
+ finally
+ {
+ if (conn != null)
+ {
+ try
+ {
+ conn.close();
+ }
+ catch (Exception e)
+ {
+ //Ignore
+ }
+ }
+ }
+
}
Modified: branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/SimpleClusteringTest.java
===================================================================
--- branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/SimpleClusteringTest.java 2006-12-09 17:37:56 UTC (rev 1739)
+++ branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/SimpleClusteringTest.java 2006-12-09 18:17:15 UTC (rev 1740)
@@ -100,6 +100,11 @@
ServerManagement.start("all", 0);
}
+
+ public void testKill() throws Exception
+ {
+ ServerManagement.getServer(0).destroy();
+ }
More information about the jboss-cvs-commits
mailing list