[jboss-cvs] JBossAS SVN: r71624 - projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Wed Apr 2 11:38:16 EDT 2008
Author: bstansberry at jboss.com
Date: 2008-04-02 11:38:16 -0400 (Wed, 02 Apr 2008)
New Revision: 71624
Modified:
projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java
Log:
[EJBTHREE-1026] Add test of concurrent access by two transactions
Modified: projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java
===================================================================
--- projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java 2008-04-02 15:24:43 UTC (rev 71623)
+++ projects/ejb3/branches/cluster-dev/cache/src/test/java/org/jboss/ejb3/test/cache/integrated/TransactionalCacheUnitTestCase.java 2008-04-02 15:38:16 UTC (rev 71624)
@@ -22,6 +22,7 @@
package org.jboss.ejb3.test.cache.integrated;
import javax.ejb.NoSuchEJBException;
+import javax.transaction.Transaction;
import javax.transaction.TransactionManager;
import org.jboss.ejb3.cache.api.Cache;
@@ -202,4 +203,58 @@
}
}
}
+
+ public void testConcurrentTransactionalAccess() throws Exception
+ {
+ log.info("testConcurrentTransactionalAccess()");
+
+ Cache<MockBeanContext> cache = createCache();
+
+ tm.begin();
+
+ Object key = cache.create(null, null);
+ MockBeanContext object = cache.get(key);
+
+ assertNotNull(object);
+
+ Transaction tx1 = tm.suspend();
+
+ tm.begin();
+
+ try
+ {
+ cache.get(key);
+ fail("Ongoing transaction should have prevent get() by second tx");
+ }
+ catch (IllegalStateException good) {}
+
+ // tx1 calling finished isn't sufficient to release item
+ Transaction tx2 = tm.suspend();
+ tm.resume(tx1);
+
+ cache.finished(object);
+
+ tm.suspend();
+ tm.resume(tx2);
+
+ try
+ {
+ cache.get(key);
+ fail("Ongoing transaction should have prevent get() by second tx");
+ }
+ catch (IllegalStateException good) {}
+
+ // Committing tx1 releases the locks
+ tm.suspend();
+ tm.resume(tx1);
+ tm.commit();
+
+ tm.resume(tx2);
+ MockBeanContext object2 = cache.get(key);
+ assertSame(object, object2);
+
+ cache.finished(object2);
+
+ tm.commit();
+ }
}
More information about the jboss-cvs-commits
mailing list