[jboss-cvs] JBoss Messaging SVN: r1727 - in branches/Branch_Client_Failover_Experiment: src/main/org/jboss/messaging/core/plugin/postoffice/cluster tests tests/src/org/jboss/test/messaging/jms/clustering
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Dec 8 08:22:21 EST 2006
Author: timfox
Date: 2006-12-08 08:22:15 -0500 (Fri, 08 Dec 2006)
New Revision: 1727
Modified:
branches/Branch_Client_Failover_Experiment/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java
branches/Branch_Client_Failover_Experiment/tests/build.xml
branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java
Log:
A couple of HA tests
Modified: branches/Branch_Client_Failover_Experiment/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java
===================================================================
--- branches/Branch_Client_Failover_Experiment/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java 2006-12-08 12:44:52 UTC (rev 1726)
+++ branches/Branch_Client_Failover_Experiment/src/main/org/jboss/messaging/core/plugin/postoffice/cluster/DefaultClusteredPostOffice.java 2006-12-08 13:22:15 UTC (rev 1727)
@@ -710,7 +710,7 @@
if (m == null)
{
- m = new HashMap();
+ m = new LinkedHashMap();
replicatedData.put(key, m);
}
Modified: branches/Branch_Client_Failover_Experiment/tests/build.xml
===================================================================
--- branches/Branch_Client_Failover_Experiment/tests/build.xml 2006-12-08 12:44:52 UTC (rev 1726)
+++ branches/Branch_Client_Failover_Experiment/tests/build.xml 2006-12-08 13:22:15 UTC (rev 1727)
@@ -715,10 +715,7 @@
haltonerror="${junit.batchtest.haltonerror}">
<formatter type="plain" usefile="${junit.formatter.usefile}"/>
<fileset dir="${build.tests.classes}">
- <include name="**/jms/clustering/ManualClusteringTest.class"/>
- <!--
- <include name="**/jms/clustering/SimpleClusteringTest.class"/>
- -->
+ <include name="**/jms/clustering/*Test.class"/>
</fileset>
</batchtest>
</junit>
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-08 12:44:52 UTC (rev 1726)
+++ branches/Branch_Client_Failover_Experiment/tests/src/org/jboss/test/messaging/jms/clustering/HATest.java 2006-12-08 13:22:15 UTC (rev 1727)
@@ -22,31 +22,30 @@
package org.jboss.test.messaging.jms.clustering;
-import javax.jms.Destination;
-import javax.jms.Message;
+import javax.jms.Connection;
import javax.jms.MessageConsumer;
-import javax.jms.MessageProducer;
-import javax.jms.Session;
import javax.jms.TextMessage;
-import javax.jms.Topic;
+
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.ClientConnectionDelegate;
-import org.jboss.jms.client.delegate.ClientSessionDelegate;
+import org.jboss.jms.client.delegate.ClientConnectionFactoryDelegate;
import org.jboss.jms.client.delegate.ClusteredClientConnectionFactoryDelegate;
-import org.jboss.jms.client.state.ConsumerState;
-import org.jboss.jms.client.state.SessionState;
+import org.jboss.jms.client.delegate.DelegateSupport;
+import org.jboss.jms.client.state.ConnectionState;
import org.jboss.jms.message.MessageProxy;
+import org.jboss.test.messaging.jms.clustering.base.ClusteringTestBase;
import org.jboss.test.messaging.tools.ServerManagement;
-import org.jboss.test.messaging.jms.clustering.base.ClusteringTestBase;
/**
+ *
+ * A HATest
+ *
* @author <a href="mailto:clebert.suconic at jboss.org">Clebert Suconic</a>
- * @version <tt>$Revision:$</tt>
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ * @version <tt>$Revision: 1.1 $</tt>
*
- * $Id:$
+ * $Id$
+ *
*/
public class HATest extends ClusteringTestBase
{
@@ -65,146 +64,299 @@
}
// Public --------------------------------------------------------
-
- public void testConnectionFactoryConnect() throws Exception
+
+ /*
+ * Test that connections created using a clustered connection factory are created round robin on
+ * different servers
+ */
+ public void testRoundRobinConnectionCreation() throws Exception
{
+ JBossConnectionFactory factory = (JBossConnectionFactory )ic1.lookup("/ConnectionFactory");
+
+ ClusteredClientConnectionFactoryDelegate delegate =
+ (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
+
+ log.info ("number of delegates = " + delegate.getDelegates().length);
+ log.info ("number of servers = " + ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+
+ assertEquals(3, delegate.getDelegates().length);
+
+ ClientConnectionFactoryDelegate cf1 = delegate.getDelegates()[0];
+
+ ClientConnectionFactoryDelegate cf2 = delegate.getDelegates()[1];
+
+ ClientConnectionFactoryDelegate cf3 = delegate.getDelegates()[2];
+
+ assertEquals(0, cf1.getServerId());
+
+ assertEquals(1, cf2.getServerId());
+
+ assertEquals(2, cf3.getServerId());
+
+ assertEquals(3, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+
+ Connection conn1 = null;
+
+ Connection conn2 = null;
+
+ Connection conn3 = null;
+
+ Connection conn4 = null;
+
+ Connection conn5 = null;
+
try
+ {
+ conn1 = factory.createConnection();
+
+ conn2 = factory.createConnection();
+
+ conn3 = factory.createConnection();
+
+ conn4 = factory.createConnection();
+
+ conn5 = factory.createConnection();
+
+ ConnectionState state1 = (ConnectionState)(((DelegateSupport)((JBossConnection)conn1).getDelegate()).getState());
+
+ ConnectionState state2 = (ConnectionState)(((DelegateSupport)((JBossConnection)conn2).getDelegate()).getState());
+
+ ConnectionState state3 = (ConnectionState)(((DelegateSupport)((JBossConnection)conn3).getDelegate()).getState());
+
+ ConnectionState state4 = (ConnectionState)(((DelegateSupport)((JBossConnection)conn4).getDelegate()).getState());
+
+ ConnectionState state5 = (ConnectionState)(((DelegateSupport)((JBossConnection)conn5).getDelegate()).getState());
+
+ int serverID1 = state1.getServerID();
+
+ int serverID2 = state2.getServerID();
+
+ int serverID3 = state3.getServerID();
+
+ int serverID4 = state4.getServerID();
+
+ int serverID5 = state5.getServerID();
+
+ 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);
+
+ assertEquals(2, serverID3);
+
+ assertEquals(0, serverID4);
+
+ assertEquals(1, serverID5);
+ }
+ finally
{
- JBossConnectionFactory factory = (JBossConnectionFactory )ic2.lookup("/ConnectionFactory");
- ClusteredClientConnectionFactoryDelegate delegate =
- (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
- log.info ("number of delegates = " + delegate.getDelegates().length);
- log.info ("number of servers = " + ServerManagement.getServer(0).getNumberOfNodesOnCluster());
-
- delegate.init();
-
- for (int i = 0; i < 3; i++)
+ if (conn1 != null)
{
- int failNode = delegate.getDelegates()[0].getFailoverNode(i);
- log.info("Failover node for server" + i + " = " + failNode);
- log.info("InvokerLocator for server " + i + " = " + delegate.getDelegates()[i].getServerLocatorURI());
-
- assertEquals("Server1 should have the same failoverMapping",
- failNode, delegate.getDelegates()[1].getFailoverNode(i));
- assertEquals("Server2 should have the same failoverMapping",
- failNode, delegate.getDelegates()[2].getFailoverNode(i));
+ conn1.close();
}
-
- assertEquals(3, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
- assertEquals(3, delegate.getDelegates().length);
-
-
- ServerManagement.log(ServerManagement.INFO,"Stopping server 2 as part of testConnectionFactoryConnect");
- ServerManagement.stop(2,true);
-
- ServerManagement.log(ServerManagement.INFO,"##### Looking up ConnectionFactory at testConnectionFactoryConnect");
-
- factory = (JBossConnectionFactory )ic2.lookup("/ConnectionFactory");
- delegate = (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
-
- assertEquals(2, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
- assertEquals(2, delegate.getDelegates().length);
+
+ if (conn2 != null)
+ {
+ conn2.close();
+ }
+
+ if (conn3 != null)
+ {
+ conn3.close();
+ }
+
+ if (conn4 != null)
+ {
+ conn4.close();
+ }
+
+ if (conn5 != null)
+ {
+ conn5.close();
+ }
}
- finally
- {
- ServerManagement.start("all", 2);
- }
-
-
+
}
-
-
- public void testTopicSubscriber() throws Exception
+
+ /*
+ * Test that the failover mapping is created correctly
+ */
+ public void testDefaultFailoverMap() throws Exception
{
- try
- {
- log.info("++testTopicSubscriber");
+ JBossConnectionFactory factory = (JBossConnectionFactory )ic1.lookup("/ConnectionFactory");
+
+ ClusteredClientConnectionFactoryDelegate delegate =
+ (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
+ assertEquals(3, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+
+ ClientConnectionFactoryDelegate[] delegates = delegate.getDelegates();
+
+ int[] failoverIndexes = delegate.getFailoverIndexes();
+
+ assertEquals(3, delegates.length);
+
+ assertEquals(3, failoverIndexes.length);
+
+ // Default failover policy just chooses the node to the right
+
+ assertEquals(1, failoverIndexes[0]);
+
+ assertEquals(2, failoverIndexes[1]);
+
+ assertEquals(0, failoverIndexes[2]);
+
+ }
+
- JBossConnectionFactory jbcf1 = (JBossConnectionFactory)cf;
- assertTrue(jbcf1.getDelegate() instanceof ClusteredClientConnectionFactoryDelegate);
+// public void testConnectionFactoryConnect() throws Exception
+// {
+// try
+// {
+// JBossConnectionFactory factory = (JBossConnectionFactory )ic2.lookup("/ConnectionFactory");
+// ClusteredClientConnectionFactoryDelegate delegate =
+// (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
+// log.info ("number of delegates = " + delegate.getDelegates().length);
+// log.info ("number of servers = " + ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+//
+// delegate.init();
+//
+// for (int i = 0; i < 3; i++)
+// {
+// int failNode = delegate.getDelegates()[0].getFailoverNode(i);
+// log.info("Failover node for server" + i + " = " + failNode);
+// log.info("InvokerLocator for server " + i + " = " + delegate.getDelegates()[i].getServerLocatorURI());
+//
+// assertEquals("Server1 should have the same failoverMapping",
+// failNode, delegate.getDelegates()[1].getFailoverNode(i));
+// assertEquals("Server2 should have the same failoverMapping",
+// failNode, delegate.getDelegates()[2].getFailoverNode(i));
+// }
+//
+// assertEquals(3, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+// assertEquals(3, delegate.getDelegates().length);
+//
+//
+// ServerManagement.log(ServerManagement.INFO,"Stopping server 2 as part of testConnectionFactoryConnect");
+// ServerManagement.stop(2,true);
+//
+// ServerManagement.log(ServerManagement.INFO,"##### Looking up ConnectionFactory at testConnectionFactoryConnect");
+//
+// factory = (JBossConnectionFactory )ic2.lookup("/ConnectionFactory");
+// delegate = (ClusteredClientConnectionFactoryDelegate)factory.getDelegate();
+//
+// assertEquals(2, ServerManagement.getServer(0).getNumberOfNodesOnCluster());
+// assertEquals(2, delegate.getDelegates().length);
+// }
+// finally
+// {
+// ServerManagement.start("all", 2);
+// }
+//
+//
+// }
- log.info(">>Lookup Queue");
- Destination destination = (Destination) ic2.lookup("topic/testDistributedTopic");
- log.info("Creating connection server1");
- JBossConnection conn = (JBossConnection) cf.createConnection();
- conn.setClientID("testClient");
- conn.start();
+// public void testTopicSubscriber() throws Exception
+// {
+// try
+// {
+// log.info("++testTopicSubscriber");
+//
+//
+// JBossConnectionFactory jbcf1 = (JBossConnectionFactory)cf;
+// assertTrue(jbcf1.getDelegate() instanceof ClusteredClientConnectionFactoryDelegate);
+//
+// log.info(">>Lookup Queue");
+// Destination destination = (Destination) ic2.lookup("topic/testDistributedTopic");
+//
+// log.info("Creating connection server1");
+// JBossConnection conn = (JBossConnection) cf.createConnection();
+// conn.setClientID("testClient");
+// conn.start();
+//
+// JBossSession session = (JBossSession) conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
+// 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();
+//
+// receiveMessage("consumerHA", consumerHA, true, false);
+//
+// session.commit();
+// //if (true) return;
+//
+// Object txID = sessionState.getCurrentTxId();
+//
+// producer.send(session.createTextMessage("Hello again before failover"));
+//
+// ClientConnectionDelegate delegate = (ClientConnectionDelegate) conn.getDelegate();
+//
+// ServerManagement.stop(0, false);
+//
+// Thread.sleep(25000);
+//
+// //System.out.println("Kill server1"); Thread.sleep(10000);
+//
+// message = session.createTextMessage("Hello After");
+// log.info(">>Sending new message");
+// producer.send(message);
+//
+// assertEquals(txID, sessionState.getCurrentTxId());
+// System.out.println("TransactionID on client = " + txID);
+// log.info(">>Final commit");
+//
+// /* JBossConnection connSecondServer = (JBossConnection)this.factoryServer2.createConnection();
+// connSecondServer.start();
+// JBossSession sessionSecondServer = (JBossSession)connSecondServer.createSession(false,Session.AUTO_ACKNOWLEDGE);
+// MessageConsumer consumerSecondServer = sessionSecondServer.createConsumer(destination); */
+//
+// session.commit();
+//
+// /* receiveMessage("consumerSecondServer",consumerSecondServer,true,false);
+// receiveMessage("consumerSecondServer",consumerSecondServer,true,false);
+// receiveMessage("consumerSecondServer",consumerSecondServer,true,true); */
+//
+// log.info("Calling alternate receiver");
+// receiveMessage("consumerHA", consumerHA, true, false);
+// receiveMessage("consumerHA", consumerHA, true, false);
+// receiveMessage("consumerHA", consumerHA, true, true);
+//
+//
+// session.commit();
+//
+// }
+// finally
+// {
+// // restart the server as it was probably stopped (tearDown will need that)
+// ServerManagement.start("all", 0);
+// }
+// }
- JBossSession session = (JBossSession) conn.createSession(true, Session.AUTO_ACKNOWLEDGE);
- 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();
-
- receiveMessage("consumerHA", consumerHA, true, false);
-
- session.commit();
- //if (true) return;
-
- Object txID = sessionState.getCurrentTxId();
-
- producer.send(session.createTextMessage("Hello again before failover"));
-
- ClientConnectionDelegate delegate = (ClientConnectionDelegate) conn.getDelegate();
-
- ServerManagement.stop(0, false);
-
- Thread.sleep(25000);
-
- //System.out.println("Kill server1"); Thread.sleep(10000);
-
- message = session.createTextMessage("Hello After");
- log.info(">>Sending new message");
- producer.send(message);
-
- assertEquals(txID, sessionState.getCurrentTxId());
- System.out.println("TransactionID on client = " + txID);
- log.info(">>Final commit");
-
- /* JBossConnection connSecondServer = (JBossConnection)this.factoryServer2.createConnection();
- connSecondServer.start();
- JBossSession sessionSecondServer = (JBossSession)connSecondServer.createSession(false,Session.AUTO_ACKNOWLEDGE);
- MessageConsumer consumerSecondServer = sessionSecondServer.createConsumer(destination); */
-
- session.commit();
-
- /* receiveMessage("consumerSecondServer",consumerSecondServer,true,false);
- receiveMessage("consumerSecondServer",consumerSecondServer,true,false);
- receiveMessage("consumerSecondServer",consumerSecondServer,true,true); */
-
- log.info("Calling alternate receiver");
- receiveMessage("consumerHA", consumerHA, true, false);
- receiveMessage("consumerHA", consumerHA, true, false);
- receiveMessage("consumerHA", consumerHA, true, true);
-
-
- session.commit();
-
- }
- finally
- {
- // restart the server as it was probably stopped (tearDown will need that)
- ServerManagement.start("all", 0);
- }
- }
-
//
// public void testQueueHA() throws Exception
// {
More information about the jboss-cvs-commits
mailing list