[jboss-cvs] JBoss Messaging SVN: r7914 - branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/server.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Dec 2 02:24:15 EST 2009


Author: gaohoward
Date: 2009-12-02 02:24:14 -0500 (Wed, 02 Dec 2009)
New Revision: 7914

Modified:
   branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/server/ServerPeerTest.java
Log:
JBMESSAGING-1772


Modified: branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/server/ServerPeerTest.java
===================================================================
--- branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/server/ServerPeerTest.java	2009-12-01 13:32:42 UTC (rev 7913)
+++ branches/Branch_1_4/tests/src/org/jboss/test/messaging/jms/server/ServerPeerTest.java	2009-12-02 07:24:14 UTC (rev 7914)
@@ -214,7 +214,6 @@
       assertEquals(on, defaultExpiry);
    }
    
-   
    public void testRetrievePreparedTransactions() throws Exception
    {
       if(!ServerManagement.isServerPeerStarted())
@@ -645,7 +644,330 @@
          
    }
 
+   //https://jira.jboss.org/jira/browse/JBMESSAGING-1772
+   public void testListPreparedTransactions() throws Exception
+   {
+      if(!ServerManagement.isServerPeerStarted())
+      {
+         ServerManagement.startServerPeer();
+      }
+      
+      XAConnectionFactory cf = (XAConnectionFactory)initialContext.lookup("/ConnectionFactory");
+      
+      ServerManagement.deployQueue("Queue");
 
+      Queue queue = (Queue)initialContext.lookup("/queue/Queue");
+      
+      XAConnection conn = null;
+      
+      try
+      {
+         conn = cf.createXAConnection();
+         
+         Xid xid1, xid2;
+         
+         {
+         
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid1 = new MessagingXid("list-blah1".getBytes(), 43, "list-blahblah1".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message-list");
+            
+            res.start(xid1, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid1, XAResource.TMSUCCESS);
+            
+            res.prepare(xid1);
+         
+         }
+         
+         {
+            
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid2 = new MessagingXid("list-blah2".getBytes(), 43, "list-blahblah2".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message1-list");
+            
+            res.start(xid2, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid2, XAResource.TMSUCCESS);
+            
+            res.prepare(xid2);
+         
+         }
+         
+         List txList = (List)ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                  "listPreparedTransactions", null, null);
+         
+         assertNotNull(txList);
+         
+         assertEquals(2, txList.size());
+         
+         String rxid1 = (String)txList.get(0);
+         
+         String rxid2 = (String)txList.get(1);
+         
+         //tx.getId() + " : " + txid.toString()
+         String txId1 = rxid1.substring(0, rxid1.indexOf(':'));
+         String txId2 = rxid2.substring(0, rxid2.indexOf(':'));
+         log.info("txId1: " + txId1 + " txId2: " + txId2);
+         
+         Long.valueOf(txId1.trim());
+         Long.valueOf(txId2.trim());
+         
+         String xidStr1 = rxid1.substring(rxid1.indexOf(':') + 2, (rxid1.length()));
+         String xidStr2 = rxid2.substring(rxid2.indexOf(':') + 2, (rxid2.length()));
+         log.info("xidStr1: " + xidStr1 + " xidStr2: " + xidStr2);
+         log.info("xid1: " + xid1.toString());
+         log.info("xid2: " + xid2.toString());
+         boolean ok = (xidStr1.trim().equals(xid1.toString()) && xidStr2.trim().equals(xid2.toString())) ||
+                      (xidStr2.trim().equals(xid1.toString()) && xidStr1.trim().equals(xid2.toString()));
+         
+         assertTrue(ok);
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+         
+         ServerManagement.undeployQueue("Queue");
+      }
+   }
+
+   //https://jira.jboss.org/jira/browse/JBMESSAGING-1772
+   public void testCommitPreparedTransaction() throws Exception
+   {
+      if(!ServerManagement.isServerPeerStarted())
+      {
+         ServerManagement.startServerPeer();
+      }
+      
+      XAConnectionFactory cf = (XAConnectionFactory)initialContext.lookup("/ConnectionFactory");
+      
+      ServerManagement.deployQueue("Queue");
+
+      Queue queue = (Queue)initialContext.lookup("/queue/Queue");
+      
+      XAConnection conn = null;
+      
+      try
+      {
+         conn = cf.createXAConnection();
+         
+         Xid xid1, xid2;
+         
+         {
+         
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid1 = new MessagingXid("list-blah1".getBytes(), 43, "list-blahblah1".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message-list");
+            
+            res.start(xid1, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid1, XAResource.TMSUCCESS);
+            
+            res.prepare(xid1);
+         
+         }
+         
+         {
+            
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid2 = new MessagingXid("list-blah2".getBytes(), 43, "list-blahblah2".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message1-list");
+            
+            res.start(xid2, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid2, XAResource.TMSUCCESS);
+            
+            res.prepare(xid2);
+         
+         }
+         
+         List txList = (List)ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                  "listPreparedTransactions", null, null);
+         
+         assertNotNull(txList);
+         
+         assertEquals(2, txList.size());
+         
+         String rxid1 = (String)txList.get(0);
+         
+         String rxid2 = (String)txList.get(1);
+         
+         //tx.getId() + " : " + txid.toString()
+         String txId1 = rxid1.substring(0, rxid1.indexOf(':'));
+         String txId2 = rxid2.substring(0, rxid2.indexOf(':'));
+         log.info("txId1: " + txId1 + " txId2: " + txId2);
+         
+         Long tx1 = Long.valueOf(txId1.trim());
+         Long.valueOf(txId2.trim());
+         
+         //now commit txId1
+         ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                                                     "commitPreparedTransaction", new Object[]{tx1}, new String[] {"java.lang.Long"});
+         
+         txList = (List)ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                                                     "listPreparedTransactions", null, null);
+         
+         assertEquals(1, txList.size());
+         
+         String txLeft = (String)txList.get(0);
+         assertEquals(0, txLeft.indexOf(txId2.trim()));
+         
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+         
+         ServerManagement.undeployQueue("Queue");
+      }
+   }
+
+   //https://jira.jboss.org/jira/browse/JBMESSAGING-1772
+   public void testRollbackPreparedTransaction() throws Exception
+   {
+      if(!ServerManagement.isServerPeerStarted())
+      {
+         ServerManagement.startServerPeer();
+      }
+      
+      XAConnectionFactory cf = (XAConnectionFactory)initialContext.lookup("/ConnectionFactory");
+      
+      ServerManagement.deployQueue("Queue");
+
+      Queue queue = (Queue)initialContext.lookup("/queue/Queue");
+      
+      XAConnection conn = null;
+      
+      try
+      {
+         conn = cf.createXAConnection();
+         
+         Xid xid1, xid2;
+         
+         {
+         
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid1 = new MessagingXid("list-blah1".getBytes(), 43, "list-blahblah1".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message-list");
+            
+            res.start(xid1, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid1, XAResource.TMSUCCESS);
+            
+            res.prepare(xid1);
+         
+         }
+         
+         {
+            
+            XASession sess = conn.createXASession();
+            
+            XAResource res = sess.getXAResource();
+            
+            MessageProducer prod = sess.createProducer(queue);
+            
+            xid2 = new MessagingXid("list-blah2".getBytes(), 43, "list-blahblah2".getBytes());
+                     
+            TextMessage tm = sess.createTextMessage("message1-list");
+            
+            res.start(xid2, XAResource.TMNOFLAGS);
+            
+            prod.send(tm);
+            
+            res.end(xid2, XAResource.TMSUCCESS);
+            
+            res.prepare(xid2);
+         
+         }
+         
+         List txList = (List)ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                  "listPreparedTransactions", null, null);
+         
+         assertNotNull(txList);
+         
+         assertEquals(2, txList.size());
+         
+         String rxid1 = (String)txList.get(0);
+         
+         String rxid2 = (String)txList.get(1);
+         
+         //tx.getId() + " : " + txid.toString()
+         String txId1 = rxid1.substring(0, rxid1.indexOf(':'));
+         String txId2 = rxid2.substring(0, rxid2.indexOf(':'));
+         log.info("txId1: " + txId1 + " txId2: " + txId2);
+         
+         Long tx1 = Long.valueOf(txId1.trim());
+         Long.valueOf(txId2.trim());
+         
+         //now rollback txId1
+         ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                                                     "rollbackPreparedTransaction", new Object[]{tx1}, new String[] {"java.lang.Long"});
+         
+         txList = (List)ServerManagement.invoke(ServerManagement.getServerPeerObjectName(), 
+                                                     "listPreparedTransactions", null, null);
+         
+         assertEquals(1, txList.size());
+         
+         String txLeft = (String)txList.get(0);
+         assertEquals(0, txLeft.indexOf(txId2.trim()));
+         
+      }
+      finally
+      {
+         if (conn != null)
+         {
+            conn.close();
+         }
+         
+         ServerManagement.undeployQueue("Queue");
+      }
+   }
+
    // Package protected ---------------------------------------------
    
    // Protected -----------------------------------------------------




More information about the jboss-cvs-commits mailing list