[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