[jboss-cvs] JBoss Messaging SVN: r1655 - branches/Branch_1_0_XARecovery/tests/src/org/jboss/test/messaging/jms

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Nov 29 20:55:04 EST 2006


Author: juha at jboss.org
Date: 2006-11-29 20:55:01 -0500 (Wed, 29 Nov 2006)
New Revision: 1655

Modified:
   branches/Branch_1_0_XARecovery/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
Log:
reenable the recovery test (sans JBossTS coordinator)

Modified: branches/Branch_1_0_XARecovery/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
===================================================================
--- branches/Branch_1_0_XARecovery/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java	2006-11-30 01:50:58 UTC (rev 1654)
+++ branches/Branch_1_0_XARecovery/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java	2006-11-30 01:55:01 UTC (rev 1655)
@@ -21,15 +21,24 @@
   */
 package org.jboss.test.messaging.jms;
 
+import javax.jms.Connection;
 import javax.jms.Destination;
+import javax.jms.MessageConsumer;
+import javax.jms.MessageProducer;
+import javax.jms.Session;
+import javax.jms.TextMessage;
+import javax.jms.XAConnection;
 import javax.jms.XASession;
-import javax.jms.XAConnection;
 import javax.naming.InitialContext;
+import javax.transaction.TransactionManager;
 import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
 
 import org.jboss.jms.client.JBossConnectionFactory;
+import org.jboss.messaging.core.tx.XidImpl;
 import org.jboss.test.messaging.MessagingTestCase;
 import org.jboss.test.messaging.tools.ServerManagement;
+import org.jboss.test.messaging.util.TransactionManagerLocator;
 
 /**
  * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -46,8 +55,10 @@
    protected InitialContext initialContext;
    
    protected JBossConnectionFactory cf;
-   protected Destination queue;   
+   protected Destination queue;
 
+   TransactionManager tm;
+
    // Constructors --------------------------------------------------
 
    public XARecoveryTest(String name)
@@ -67,7 +78,7 @@
       cf = (JBossConnectionFactory)initialContext.lookup("/ConnectionFactory");
       
       
-      //if (!ServerManagement.isRemote()) tm = TransactionManagerLocator.getInstance().locate();
+      if (!ServerManagement.isRemote()) tm = TransactionManagerLocator.getInstance().locate();
       
       ServerManagement.undeployQueue("Queue");
       ServerManagement.deployQueue("Queue");
@@ -85,17 +96,20 @@
 
    // Public --------------------------------------------------------
    
-   //TODO Re-enable when we complete XA Recovery
-   
-   public void testNoop()
+   /*
+   public void testJBossTSCoordinator() throws Exception
    {
-      
+      UserTransaction ut = com.arjuna.ats.jta.UserTransaction.userTransaction();
+
+      ut.begin();
+
+
+      ut.commit();
    }
-   
+   */
 
-   public void test1() throws Exception
+   public void testMockCoordinatorRecovery() throws Exception
    {
-      System.out.println("=========================Execute single test");
 
       XAConnection conn1 = cf.createXAConnection();
 
@@ -108,92 +122,83 @@
       XAResource res1 = sess1.getXAResource();
 
       XAResource res2 = sess2.getXAResource();
-//      
-//      //Pretend to be a transaction manager by interacting through the XAResources
-//      Xid xid1 = new XidImpl("bq1".getBytes(), 123, "gbtxid1".getBytes());
-//      Xid xid2 = new XidImpl("bq2".getBytes(), 124, "gbtxid2".getBytes());
-//      
-//      
-////    Send a message in each tx
-//      
-//      
-//      res1.start(xid1, XAResource.TMNOFLAGS);
-//      
-//      MessageProducer prod1 = sess1.createProducer(queue);
-//      
-//      TextMessage tm1 = sess1.createTextMessage("testing1");
-//      
-//      prod1.send(tm1);
-//      
-//      res1.end(xid1, XAResource.TMSUCCESS);
-//      
-//      
-//      
-//      
-//      res2.start(xid2, XAResource.TMNOFLAGS);
-//      
-//      MessageProducer prod2 = sess2.createProducer(queue);
-//      
-//      TextMessage tm2 = sess2.createTextMessage("testing2");
-//      
-//      prod2.send(tm2);
-//      
-//      res2.end(xid2, XAResource.TMSUCCESS);
-//      
-//      //prepare both txs
-//      
-//      
-//      res1.prepare(xid1);      
-//      res2.prepare(xid2);
-//      
-//      //Now "crash" the server
-//      
-//      ServerManagement.stopServerPeer();
-//
-//      ServerManagement.startServerPeer();
-//
-//      //Now lookup the recoverable in JNDI
-//      InitialContext ic = new InitialContext();
-//      JMSRecoverable recoverable = (JMSRecoverable)ic.lookup("/" +
-//            ServerPeer.RECOVERABLE_CTX_NAME + "/"+ ServerManagement.getServerPeer().getServerPeerID());
-//      
-//      XAResource res = recoverable.getResource();
-//      
-//      Xid[] xids = res.recover(XAResource.TMSTARTRSCAN);
-//      assertEquals(2, xids.length);
-//      
-//      Xid[] xids2 = res.recover(XAResource.TMENDRSCAN);
-//      assertEquals(0, xids2.length);
-//      
-//      assertTrue(xids[0].equals(xid1) || xids[1].equals(xid1));
-//      assertTrue(xids[0].equals(xid2) || xids[1].equals(xid2));
-//      
-//      res.commit(xid1, false);
-//      
-//      res.commit(xid2, false);
-//      
-//      recoverable.cleanUp();
-//      
-//      ServerManagement.deployQueue("Queue");
-//            
-//      Connection conn3 = cf.createConnection();
-//      
-//      Session sessRec = conn3.createSession(false, Session.AUTO_ACKNOWLEDGE);
-//      MessageConsumer cons = sessRec.createConsumer(queue);
-//      conn3.start();
-//      
-//      TextMessage m2 = (TextMessage)cons.receiveNoWait();
-//      assertNotNull(m2);
-//      assertEquals("testing1", m2.getText());
-//      
-//      
-//      TextMessage m3 = (TextMessage)cons.receiveNoWait();
-//      assertNotNull(m3);
-//      assertEquals("testing2", m3.getText());
-//      
-//      conn3.close();
-//
+
+      //Pretend to be a transaction manager by interacting through the XAResources
+      Xid xid1 = new XidImpl("bq1".getBytes(), 123, "gbtxid1".getBytes());
+      Xid xid2 = new XidImpl("bq2".getBytes(), 124, "gbtxid2".getBytes());
+
+      //    Send a message in each tx
+
+      res1.start(xid1, XAResource.TMNOFLAGS);
+
+      MessageProducer prod1 = sess1.createProducer(queue);
+
+      TextMessage tm1 = sess1.createTextMessage("testing1");
+
+      prod1.send(tm1);
+
+      res1.end(xid1, XAResource.TMSUCCESS);
+
+
+      res2.start(xid2, XAResource.TMNOFLAGS);
+
+      MessageProducer prod2 = sess2.createProducer(queue);
+
+      TextMessage tm2 = sess2.createTextMessage("testing2");
+
+      prod2.send(tm2);
+
+      res2.end(xid2, XAResource.TMSUCCESS);
+
+      //prepare both txs
+
+
+      res1.prepare(xid1);
+      res2.prepare(xid2);
+
+      //Now "crash" the server
+
+      ServerManagement.stopServerPeer();
+
+      ServerManagement.startServerPeer();
+
+
+      XAResource res = cf.createXAConnection().createXASession().getXAResource();
+
+      Xid[] xids = res.recover(XAResource.TMSTARTRSCAN);
+      assertEquals(2, xids.length);
+
+      Xid[] xids2 = res.recover(XAResource.TMENDRSCAN);
+      assertEquals(0, xids2.length);
+
+      assertTrue(xids[0].equals(xid1) || xids[1].equals(xid1));
+      assertTrue(xids[0].equals(xid2) || xids[1].equals(xid2));
+
+      res.commit(xid1, false);
+
+      res.commit(xid2, false);
+
+      ServerManagement.deployQueue("Queue");
+
+      Connection conn3 = cf.createConnection();
+
+      Session sessRec = conn3.createSession(false, Session.AUTO_ACKNOWLEDGE);
+      MessageConsumer cons = sessRec.createConsumer(queue);
+      conn3.start();
+
+      TextMessage m1 = (TextMessage)cons.receiveNoWait();
+      assertNotNull(m1);
+      assertEquals("testing1", m1.getText());
+
+      TextMessage m2 = (TextMessage)cons.receiveNoWait();
+      assertNotNull(m2);
+
+      assertEquals("testing2", m2.getText());
+
+      conn3.close();
+
    }
- 
+
+
 }
 




More information about the jboss-cvs-commits mailing list