[jboss-cvs] JBoss Messaging SVN: r1711 - branches/Branch_1_0/tests/src/org/jboss/test/messaging/jms
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Dec 6 06:42:34 EST 2006
Author: juha at jboss.org
Date: 2006-12-06 06:42:33 -0500 (Wed, 06 Dec 2006)
New Revision: 1711
Modified:
branches/Branch_1_0/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
Log:
attempt to fix timing issue on QA machine
Modified: branches/Branch_1_0/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java
===================================================================
--- branches/Branch_1_0/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java 2006-12-06 02:07:06 UTC (rev 1710)
+++ branches/Branch_1_0/tests/src/org/jboss/test/messaging/jms/XARecoveryTest.java 2006-12-06 11:42:33 UTC (rev 1711)
@@ -21,28 +21,27 @@
*/
package org.jboss.test.messaging.jms;
-import javax.jms.Connection;
import javax.jms.Destination;
+import javax.jms.TextMessage;
import javax.jms.MessageConsumer;
+import javax.jms.Session;
+import javax.jms.Connection;
import javax.jms.MessageProducer;
-import javax.jms.Session;
-import javax.jms.TextMessage;
import javax.jms.XAConnection;
import javax.jms.XASession;
import javax.naming.InitialContext;
import javax.transaction.TransactionManager;
-import javax.transaction.UserTransaction;
+import javax.transaction.xa.Xid;
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;
+import org.jboss.tm.TransactionManagerLocator;
+import com.arjuna.ats.arjuna.common.Uid;
import com.arjuna.ats.jta.xa.XidImple;
-import com.arjuna.ats.arjuna.common.Uid;
/**
* @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
@@ -52,6 +51,9 @@
{
// Constants -----------------------------------------------------
+ private final static int MAX_TIMEOUT = 1000 * 60 /* seconds */;
+
+
// Static --------------------------------------------------------
// Attributes ----------------------------------------------------
@@ -99,8 +101,9 @@
// Public --------------------------------------------------------
-
+
+ /*
public void testJBossTSCoordinator() throws Exception
{
UserTransaction ut = com.arjuna.ats.jta.UserTransaction.userTransaction();
@@ -110,8 +113,111 @@
ut.commit();
}
+ */
+ public void testTransactionalDeliveryRecovery() throws Exception
+ {
+
+ XAConnection conn1 = cf.createXAConnection();
+
+ XAConnection conn2 = cf.createXAConnection();
+
+ XASession sess1 = conn1.createXASession();
+
+ XASession sess2 = conn2.createXASession();
+
+ 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("tm1");
+
+ prod1.send(tm1);
+
+ TextMessage tm2 = sess1.createTextMessage("tm2");
+
+ prod1.send(tm2);
+
+ res1.end(xid1, XAResource.TMSUCCESS);
+
+
+ res2.start(xid2, XAResource.TMNOFLAGS);
+
+ MessageProducer prod2 = sess2.createProducer(queue);
+
+ TextMessage tm3 = sess2.createTextMessage("tm3");
+
+ prod2.send(tm3);
+
+ TextMessage tm4 = sess2.createTextMessage("tm4");
+
+ prod2.send(tm4);
+
+ 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.receive(MAX_TIMEOUT);
+ assertNotNull(m1);
+ assertEquals("tm1", m1.getText());
+
+ TextMessage m2 = (TextMessage)cons.receive(MAX_TIMEOUT);
+ assertNotNull(m2);
+
+ assertEquals("tm2", m2.getText());
+
+ // TODO
+
+ conn3.close();
+
+ }
+
+
public void testMockCoordinatorRecovery() throws Exception
{
@@ -190,11 +296,11 @@
MessageConsumer cons = sessRec.createConsumer(queue);
conn3.start();
- TextMessage m1 = (TextMessage)cons.receiveNoWait();
+ TextMessage m1 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m1);
assertEquals("testing1", m1.getText());
- TextMessage m2 = (TextMessage)cons.receiveNoWait();
+ TextMessage m2 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m2);
assertEquals("testing2", m2.getText());
@@ -203,7 +309,6 @@
}
-
public void testMockCoordinatorRecoveryWithJBossTSXids() throws Exception
{
@@ -284,11 +389,11 @@
MessageConsumer cons = sessRec.createConsumer(queue);
conn3.start();
- TextMessage m1 = (TextMessage)cons.receiveNoWait();
+ TextMessage m1 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m1);
assertEquals("testing1", m1.getText());
- TextMessage m2 = (TextMessage)cons.receiveNoWait();
+ TextMessage m2 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m2);
assertEquals("testing2", m2.getText());
@@ -296,6 +401,7 @@
conn3.close();
}
+
/*
public void testMockCoordinatorRecovery3() throws Exception
{
@@ -374,11 +480,11 @@
MessageConsumer cons = sessRec.createConsumer(queue);
conn3.start();
- TextMessage m1 = (TextMessage)cons.receiveNoWait();
+ TextMessage m1 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m1);
assertEquals("testing1", m1.getText());
- TextMessage m2 = (TextMessage)cons.receiveNoWait();
+ TextMessage m2 = (TextMessage)cons.receive(MAX_TIMEOUT);
assertNotNull(m2);
assertEquals("testing2", m2.getText());
More information about the jboss-cvs-commits
mailing list