[jboss-svn-commits] JBL Code SVN: r31306 - labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 29 11:03:56 EST 2010


Author: whitingjr
Date: 2010-01-29 11:03:56 -0500 (Fri, 29 Jan 2010)
New Revision: 31306

Modified:
   labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTest.java
Log:
Added code for jdbc test.

Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTest.java	2010-01-29 14:19:53 UTC (rev 31305)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTest.java	2010-01-29 16:03:56 UTC (rev 31306)
@@ -26,14 +26,24 @@
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.CyclicBarrier;
 
+import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
+import javax.transaction.Synchronization;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.NDC;
+import org.hibernate.Transaction;
+import org.hibernate.ejb.EntityManagerImpl;
+import org.jboss.ejb.plugins.cmp.jdbc2.FindByPrimaryKeyCommand;
 import org.jboss.jbossts.performance.MultiThreadedTest;
 import org.jboss.jbossts.performance.resource.SynchronizeTask;
+import org.jboss.jbossts.performance.resource.SynchronizeTask.SessionSynchronization;
+import org.jboss.tm.TransactionLocal;
 import org.testng.Assert;
 
+import auction.dao.ejb3.persistence.UserDAOBeanMultiResource;
+import auction.model.User;
+
 public class JDBCTest extends MultiThreadedTest
 {
    @Override
@@ -141,11 +151,77 @@
          }
       }
       public void task()
-      throws Exception
+         throws Exception
       {
+         String readSQL = String.format("select user0_.USER_ID as USER1_4_1_, user0_.CREATED as CREATED4_1_, user0_.DEFAULT_BILLING_DETAILS_ID as DEFAULT13_4_1_, user0_.EMAIL as EMAIL4_1_, user0_.FIRSTNAME as FIRSTNAME4_1_, user0_.HOME_CITY as HOME5_4_1_, user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE as HOME7_4_1_, user0_.LASTNAME as LASTNAME4_1_, user0_.PASSWD as PASSWD4_1_, user0_.RANK as RANK4_1_, user0_.USERNAME as USERNAME4_1_, user0_.OBJ_VERSION as OBJ12_4_1_, user0_1_.CITY as CITY5_1_, user0_1_.STREET as STREET5_1_, user0_1_.ZIPCODE as ZIPCODE5_1_, addressent1_.ADDRESS_ID as ADDRESS1_2_0_, addressent1_.CITY as CITY2_0_, addressent1_.STREET as STREET2_0_, addressent1_.OBJ_VERSION as OBJ4_2_0_, addressent1_.ZIPCODE as ZIPCODE2_0_ from USERS user0_ left outer join BILLING_ADDRESS user0_1_ on user0_.USER_ID=user0_1_.USER_ID left outer join ADDRESS addressent1_ on user0_.USER_ID=addressent1_.ADDRESS_ID where user0_.USER_ID=%1$d", this.threadId);
          
+         EntityManagerImpl emA = null;
+         EntityManagerImpl emB = null;
+         emA = (EntityManagerImpl) getEMFactoryA().createEntityManager();
+         emB = (EntityManagerImpl) getEMFactoryB().createEntityManager();
+         Transaction transaction =emA.getSession().beginTransaction();
+         TransactionLocal session = new TransactionLocal();
+         
+         transaction.registerSynchronization(new SessionSynchronization(emA, transaction, true));
+         transaction.registerSynchronization(new SessionSynchronization( emB, transaction, true  ) );
+         
+         User userA = findUsingResourceA(emA, readSQL);
+         User userB = findUsingResourceB(emA, readSQL);
+         long time = System.currentTimeMillis();
+         String writeSQL = String.format("update USERS set DEFAULT_BILLING_DETAILS_ID=?, EMAIL=?, FIRSTNAME=?, HOME_CITY=?, HOME_STREET=?, HOME_ZIPCODE=?, LASTNAME=?, PASSWD=?, RANK=?, USERNAME=?, OBJ_VERSION=? where USER_ID=? and OBJ_VERSION=?", null);
+         
+         
       }
-   
+      private void resourceAFlush(EntityManager entityManager)
+      {
+         entityManager.flush();
+      }
+      private void resourceBFlush(EntityManager entityManager)
+      {
+         entityManager.flush();
+      }
+      private User findUsingResourceA(final EntityManager em, final String sql)
+      {
+         return (User) em.createNativeQuery(sql).getSingleResult();
+      }
+      private User findUsingResourceB(final EntityManager em, final String sql)
+      {
+         return (User) em.createNativeQuery(sql).getSingleResult();
+      }
+      public EntityManagerFactory getEMFactoryA()
+      {
+         return this.emfA;
+      }
       
+      public EntityManagerFactory getEMFactoryB()
+      {
+         return this.emfB;
+      }
    }
+   
+   public class SessionSynchronization implements Synchronization
+   {
+      private 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)
+         {
+            logger.debug("************** closing entity managersession **************");
+            manager.close();
+         }
+      }
+   }
 }



More information about the jboss-svn-commits mailing list