[jboss-svn-commits] JBL Code SVN: r37680 - labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Oct 27 04:17:38 EDT 2011


Author: tomjenkinson
Date: 2011-10-27 04:17:37 -0400 (Thu, 27 Oct 2011)
New Revision: 37680

Modified:
   labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java
Log:
JBTM-895 check that timed out subordinates are removed from the reaper

Modified: labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java	2011-10-26 23:11:53 UTC (rev 37679)
+++ labs/jbosstm/branches/JBOSSTS_4_15_0_Final/atsintegration/tests/classes/com/arjuna/ats/jta/distributed/SimpleIsolatedServers.java	2011-10-27 08:17:37 UTC (rev 37680)
@@ -788,7 +788,51 @@
 		assertTrue(getLocalServer("2000").getCompletionCounter().getRollbackCount() == 1);
 		assertTrue(getLocalServer("1000").getCompletionCounter().getRollbackCount() == 2);
 	}
+	
+	
+	@Test
+	public void testTransactionReaperIsCleanedUp() throws Exception {
+		tearDown();
+		setup();
+		int rootTimeout = 5;
+		LocalServer originalServer = getLocalServer("1000");
+		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+		Thread.currentThread().setContextClassLoader(originalServer.getClass().getClassLoader());
+		TransactionManager transactionManager = originalServer.getTransactionManager();
+		transactionManager.setTransactionTimeout(rootTimeout);
+		transactionManager.begin();
+		Transaction originalTransaction = transactionManager.getTransaction();
+		Xid currentXid = originalServer.getCurrentXid();
+		originalServer.storeRootTransaction();
+		originalTransaction.enlistResource(new TestResource(originalServer.getCompletionCounter(), originalServer.getNodeName(), false));
+		XAResource proxyXAResource = originalServer.generateProxyXAResource(lookupProvider, "2000");
+		int subordinateTimeout = (int) (originalServer.getTimeLeftBeforeTransactionTimeout() / 1000);
+		transactionManager.suspend();
 
+		// Migrate a transaction
+		LocalServer currentServer = getLocalServer("2000");
+		ClassLoader parentsClassLoader = Thread.currentThread().getContextClassLoader();
+		Thread.currentThread().setContextClassLoader(currentServer.getClass().getClassLoader());
+		currentServer.getAndResumeTransaction(subordinateTimeout, currentXid, 2000);
+		currentServer.getTransactionManager().getTransaction()
+				.enlistResource(new TestResource(currentServer.getCompletionCounter(), currentServer.getNodeName(), false));
+		currentServer.getTransactionManager().suspend();
+		Thread.currentThread().setContextClassLoader(parentsClassLoader);
+
+		// Complete the transaction at the original server
+		transactionManager.resume(originalTransaction);
+		originalTransaction.enlistResource(proxyXAResource);
+		originalServer.removeRootTransaction(currentXid);
+		transactionManager.commit();
+		Thread.currentThread().setContextClassLoader(classLoader);
+		assertTrue(getLocalServer("2000").getCompletionCounter().getCommitCount() == 1);
+		assertTrue(getLocalServer("1000").getCompletionCounter().getCommitCount() == 2);
+		assertTrue(getLocalServer("2000").getCompletionCounter().getRollbackCount() == 0);
+		assertTrue(getLocalServer("1000").getCompletionCounter().getRollbackCount() == 0);
+		
+		Thread.currentThread().sleep((subordinateTimeout + 4) * 1000);
+	}
+
 	private void doRecursiveTransactionalWork(int startingTimeout, List<String> nodesToFlowTo, boolean commit, boolean rollbackOnlyOnLastNode) throws Exception {
 		tearDown();
 		setup();



More information about the jboss-svn-commits mailing list