[jboss-svn-commits] JBL Code SVN: r30986 - 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
Fri Jan 8 12:22:58 EST 2010
Author: whitingjr
Date: 2010-01-08 12:22:57 -0500 (Fri, 08 Jan 2010)
New Revision: 30986
Modified:
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java
Log:
Modified slightly to fail gracefully.
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java 2010-01-08 17:22:05 UTC (rev 30985)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java 2010-01-08 17:22:57 UTC (rev 30986)
@@ -1,6 +1,7 @@
package org.jboss.jbossts.performance.resource;
- import java.util.concurrent.CyclicBarrier;
+ import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.CyclicBarrier;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
@@ -33,7 +34,7 @@
private final static Logger logger = Logger.getLogger(SynchronizeTask.class);
private final CyclicBarrier completionBarrier;
private final Long threadId;
-
+ private final CountDownLatch latch;
public SynchronizeTask(final EntityManagerFactory factoryA, final EntityManagerFactory factoryB, final int count, final CyclicBarrier barrier, final int id, final boolean isWEnabled)
{
this.emfA = factoryA;
@@ -42,12 +43,26 @@
this.completionBarrier = barrier;
this.threadId = new Long(id);
this.isOptionalWriteEnabled = isWEnabled;
+ this.latch = null;
}
+
+ public SynchronizeTask(final EntityManagerFactory factoryA, final EntityManagerFactory factoryB, final int count, final CyclicBarrier barrier, final int id, final boolean isWEnabled, final CountDownLatch countDown)
+ {
+ this.emfA = factoryA;
+ this.emfB = factoryB;
+ this.recurseCount = count;
+ this.completionBarrier = barrier;
+ this.threadId = new Long(id);
+ this.isOptionalWriteEnabled = isWEnabled;
+ this.latch = countDown;
+ }
@Override
public void run()
{
try
- {
+ {/* use the barrier to wait for all concurrent threads, when finished decrement the latch and fall out of
+ method. Means the profiler does not
+ */
this.completionBarrier.await();// await all threads ready to start
recurse(this.recurseCount);
if (!this.completionBarrier.isBroken())
@@ -58,69 +73,61 @@
catch (Exception e)
{
logger.error(e.getMessage(), e);
+ this.completionBarrier.reset();
+ Assert.fail(e.getMessage());
}
+ finally
+ {
+
+ //this.latch.countDown();
+ }
}
public void task()
+ throws Exception
{
EntityManagerImpl emA = null;
EntityManagerImpl emB = null;
- try
- {
- 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 ) );
-
- //emB.joinTransaction();
+ 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 ) );
+
+ //emB.joinTransaction();
- /**
- * A read
- * A [write]
- * B write
- */
- UserDAOBeanMultiResource userDAO_A = new UserDAOBeanMultiResource();
- userDAO_A.setEntityManagerA(emA);
- UserDAOBeanMultiResource userDAO_B = new UserDAOBeanMultiResource ();
- userDAO_B.setEntityManagerB(emB);
-
- // Prepare a user object
- User user = userDAO_A.findById(this.threadId, false);
-
- long time = System.currentTimeMillis();
- session.set(emA);
- if (this.isOptionalWriteEnabled)
- {
- user.setFirstname("Ben"+time);
- }
- session.set(emB);
- // Don't forget to take the return value, this is basically a merge()
- User userB = userDAO_B.findById(this.threadId, false);
- userB.setFirstname("Ben"+time);
- emA.flush();
- emB.flush();
-
- emA.getSession().getTransaction().commit();
- Assert.assertFalse(emA.isOpen());
- Assert.assertFalse(emB.isOpen());
- }
- catch (HibernateException e) {
- Assert.fail(e.getMessage());
- this.completionBarrier.reset();
- throw e;
- }
- catch (PersistenceException pe)
+ /**
+ * A read
+ * A [write]
+ * B write
+ */
+ UserDAOBeanMultiResource userDAO_A = new UserDAOBeanMultiResource();
+ userDAO_A.setEntityManagerA(emA);
+ UserDAOBeanMultiResource userDAO_B = new UserDAOBeanMultiResource ();
+ userDAO_B.setEntityManagerB(emB);
+
+ // Prepare a user object
+ //User user = userDAO_A.findById(this.threadId, false);
+ User user = findUsingResourceA(userDAO_A);
+
+ long time = System.currentTimeMillis();
+ session.set(emA);
+ if (this.isOptionalWriteEnabled)
{
- Assert.fail(pe.getMessage());
- this.completionBarrier.reset();
- throw pe;
+ user.setFirstname("Ben"+time);
}
- finally
- {
- }
+ session.set(emB);
+ // Don't forget to take the return value, this is basically a merge()
+ User userB = findUsingResourceB(userDAO_B);
+ userB.setFirstname("Ben"+time);
+ resourceAFlush(emA);
+ resourceBFlush(emB);
+ //emA.flush();
+ //emB.flush();
+
+ emA.getSession().getTransaction().commit();
}
/**
* Run the test sequentially.
@@ -182,4 +189,26 @@
}
}
+ /**
+ * This method exists purely for the profiler to separate resource duration
+ *
+ */
+ private void resourceAFlush(EntityManager entityManager)
+ {
+ entityManager.flush();
+ }
+ private void resourceBFlush(EntityManager entityManager)
+ {
+ entityManager.flush();
+ }
+ private User findUsingResourceA(UserDAOBeanMultiResource daoBean)
+ {
+ return daoBean.findById(this.threadId, false);
+ }
+ private User findUsingResourceB(final UserDAOBeanMultiResource daoBean)
+ {
+ return daoBean.findById(this.threadId, false);
+ }
+
+
}
More information about the jboss-svn-commits
mailing list