[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