[jboss-svn-commits] JBL Code SVN: r30530 - labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Dec 8 05:47:23 EST 2009
Author: whitingjr
Date: 2009-12-08 05:47:22 -0500 (Tue, 08 Dec 2009)
New Revision: 30530
Modified:
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/MultiResourceTest.java
Log:
Fixed test case to include second resource in transaction. Added commit synchronization.
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/MultiResourceTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/MultiResourceTest.java 2009-12-08 10:46:31 UTC (rev 30529)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/MultiResourceTest.java 2009-12-08 10:47:22 UTC (rev 30530)
@@ -22,11 +22,16 @@
package org.jboss.jbossts.performance.resource;
+import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
+import javax.transaction.Synchronization;
+import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
+import org.hibernate.Transaction;
import org.hibernate.ejb.EntityManagerImpl;
import org.jboss.jbossts.performance.WarmedUpTest;
+import org.jboss.tm.TransactionLocal;
import org.testng.Assert;
import auction.dao.ejb3.persistence.UserDAOBeanMultiResource;
@@ -46,7 +51,13 @@
{
emA = (EntityManagerImpl) getEntityManagerFactory().createEntityManager();
emB = (EntityManagerImpl) getEntityManagerFactoryB().createEntityManager();
- emA.getSession().beginTransaction();
+ Transaction transaction =emA.getSession().beginTransaction();
+ TransactionLocal session = new TransactionLocal();
+ transaction.registerSynchronization(new SessionSynchronization(emA, transaction, true));
+
+ transaction.registerSynchronization(new SessionSynchronization( emB, transaction, true ) );
+
+ session.set(emB);
emB.joinTransaction();
/**
@@ -62,17 +73,20 @@
// Prepare a user object
User user = userDAO_A.findById(1l, false);
+ long time = System.currentTimeMillis();
if (this.isOptionalWriteEnabled)
{
- user.setFirstname("Ben");
+ user.setFirstname("Ben"+time);
userDAO_A.makePersistent(user);
}
// Don't forget to take the return value, this is basically a merge()
- userDAO_B.makePersistent(user);
+ User userB = userDAO_B.findById(1l, false);
+ userB.setFirstname("Ben"+time);
+ userDAO_B.makePersistent(userB);
emA.getSession().getTransaction().commit();
- Assert.assertFalse(emA.getSession().getTransaction().isActive());
-
+ Assert.assertFalse(emA.isOpen());
+ Assert.assertFalse(emB.isOpen());
}
catch (HibernateException e) {
Assert.fail(e.getMessage());
@@ -83,22 +97,32 @@
}
finally
{
- try
+ }
+ }
+
+ private static class SessionSynchronization implements Synchronization
+ {
+ private static final Logger logger = Logger.getLogger(SessionSynchronization.class);
+ private EntityManager manager;
+ private boolean closeAtTxCompletion;
+
+ public SessionSynchronization(EntityManager session, Transaction tx, boolean close)
+ {
+ this.manager = session;
+ closeAtTxCompletion = close;
+ }
+
+ public void beforeCompletion()
+ {
+ }
+
+ public void afterCompletion(int status)
+ {
+ if (closeAtTxCompletion)
{
- if (null != emA)
- {
- emA.close();
- }
- }
- finally {}
- try
- {
- if (null != emB)
- {
- emB.close();
- }
+ logger.debug("************** closing entity managersession **************");
+ manager.close();
}
- finally {}
}
}
More information about the jboss-svn-commits
mailing list