[jboss-cvs] JBoss Messaging SVN: r5953 - trunk/tests/src/org/jboss/messaging/tests/integration/xa.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Mon Mar 2 05:40:56 EST 2009
Author: ataylor
Date: 2009-03-02 05:40:56 -0500 (Mon, 02 Mar 2009)
New Revision: 5953
Modified:
trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
Log:
xa test
Modified: trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java 2009-02-28 22:11:52 UTC (rev 5952)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/xa/BasicXaTest.java 2009-03-02 10:40:56 UTC (rev 5953)
@@ -21,32 +21,37 @@
*/
package org.jboss.messaging.tests.integration.xa;
+import org.jboss.messaging.core.client.ClientConsumer;
import org.jboss.messaging.core.client.ClientMessage;
+import org.jboss.messaging.core.client.ClientProducer;
import org.jboss.messaging.core.client.ClientSession;
-import org.jboss.messaging.core.client.ClientProducer;
-import org.jboss.messaging.core.client.ClientConsumer;
import org.jboss.messaging.core.client.ClientSessionFactory;
-import org.jboss.messaging.core.transaction.impl.XidImpl;
+import org.jboss.messaging.core.client.MessageHandler;
+import org.jboss.messaging.core.config.Configuration;
+import org.jboss.messaging.core.exception.MessagingException;
import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.server.MessagingService;
import org.jboss.messaging.core.settings.impl.AddressSettings;
-import org.jboss.messaging.core.server.MessagingService;
-import org.jboss.messaging.core.config.Configuration;
-import org.jboss.messaging.core.exception.MessagingException;
+import org.jboss.messaging.core.transaction.impl.XidImpl;
+import org.jboss.messaging.jms.client.JBossMessage;
import org.jboss.messaging.tests.util.ServiceTestBase;
+import org.jboss.messaging.utils.SimpleString;
import org.jboss.messaging.utils.UUIDGenerator;
-import org.jboss.messaging.utils.SimpleString;
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
+import javax.transaction.xa.XAException;
+import java.util.HashMap;
import java.util.Map;
-import java.util.HashMap;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
/**
* @author <a href="mailto:andy.taylor at jboss.org">Andy Taylor</a>
*/
public class BasicXaTest extends ServiceTestBase
{
- private static Logger log = Logger.getLogger(BasicXaTest.class);
+ private static Logger log = Logger.getLogger(BasicXaTest.class);
private final Map<String, AddressSettings> addressSettings = new HashMap<String, AddressSettings>();
@@ -64,7 +69,7 @@
protected void setUp() throws Exception
{
super.setUp();
-
+
clearData();
addressSettings.clear();
configuration = createDefaultConfig();
@@ -201,4 +206,109 @@
assertNull(m);
}
+
+/* public void testReceiveRollback() throws Exception
+ {
+ ClientSession clientSession2 = sessionFactory.createSession(false, true, true);
+ ClientProducer clientProducer = clientSession2.createProducer(atestq);
+ for(int i = 0; i < 100; i++)
+ {
+ clientProducer.send(createTextMessage(clientSession2, "m" + i));
+ }
+ ClientSession[] clientSessions = new ClientSession[10];
+ ClientConsumer[] clientConsumers = new ClientConsumer[10];
+ TxMessageHandler[] handlers = new TxMessageHandler[10];
+ CountDownLatch latch = new CountDownLatch(10*10);
+ for (int i = 0; i < clientSessions.length; i++)
+ {
+ clientSessions[i] = sessionFactory.createSession(true, false, false);
+ clientConsumers[i] = clientSessions[i].createConsumer(atestq);
+ handlers[i] = new TxMessageHandler(clientSessions[i], i, latch);
+ clientConsumers[i].setMessageHandler(handlers[i]);
+ }
+ for (ClientSession session : clientSessions)
+ {
+ session.start();
+ }
+
+
+ latch.await(10, TimeUnit.SECONDS);
+ for (TxMessageHandler messageHandler : handlers)
+ {
+ assertFalse(messageHandler.failedToAck);
+ }
+ }
+
+ class TxMessageHandler implements MessageHandler
+ {
+ boolean failedToAck = false;
+
+ final ClientSession session;
+
+ private Xid xid;
+
+ private CountDownLatch latch;
+
+ public TxMessageHandler(ClientSession session, int id, CountDownLatch latch)
+ {
+ this.latch = latch;
+ this.session = session;
+ xid = new XidImpl(("xa" + id).getBytes(), 1, UUIDGenerator.getInstance().generateStringUUID().getBytes());
+ try
+ {
+ session.start(xid, XAResource.TMNOFLAGS);
+ }
+ catch (XAException e)
+ {
+ e.printStackTrace();
+ }
+ }
+
+ public void onMessage(final ClientMessage message)
+ {
+ JBossMessage jbm = JBossMessage.createMessage(message, session);
+
+ try
+ {
+ jbm.doBeforeReceive();
+ }
+ catch (Exception e)
+ {
+ log.error("Failed to prepare message for receipt", e);
+
+ return;
+ }
+
+
+ try
+ {
+ message.acknowledge();
+ }
+ catch (MessagingException e)
+ {
+ log.error("Failed to process message", e);
+ }
+ try
+ {
+ session.end(xid, XAResource.TMSUCCESS);
+ session.rollback(xid);
+ session.start(xid, XAResource.TMNOFLAGS);
+ }
+ catch (XAException e)
+ {
+ e.printStackTrace();
+ failedToAck = true;
+ try
+ {
+ session.close();
+ }
+ catch (MessagingException e1)
+ {
+ //
+ }
+ }
+ latch.countDown();
+
+ }
+ }*/
}
More information about the jboss-cvs-commits
mailing list