[jboss-svn-commits] JBL Code SVN: r31776 - in labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java: org/jboss/jbossts/performance and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Feb 22 12:37:49 EST 2010
Author: whitingjr
Date: 2010-02-22 12:37:47 -0500 (Mon, 22 Feb 2010)
New Revision: 31776
Added:
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/JPAConfiguration.java
Modified:
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/auction/test/basic/ProfiledStateTransitions.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/MultiResourceTest.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/WarmedUpTest.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/ConcurrentTaskConfiguration.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/MultithreadedTestConfiguration.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTask.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTest.java
labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTask.java
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/resource/SynchronizeResourcesTest.java
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/task/RecursiveTask.java
Log:
Updated test framework. Created a JDBC test implementation.
Cleaned up the configuration objects.
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/auction/test/basic/ProfiledStateTransitions.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/auction/test/basic/ProfiledStateTransitions.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/auction/test/basic/ProfiledStateTransitions.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -39,6 +39,7 @@
import javax.persistence.ColumnResult;
import javax.persistence.EntityManagerFactory;
import javax.persistence.SqlResultSetMapping;
+import javax.sql.DataSource;
import javax.transaction.UserTransaction;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
@@ -98,6 +99,7 @@
import com.arjuna.ats.arjuna.common.arjPropertyManager;
import com.arjuna.ats.arjuna.coordinator.TxControl;
+import com.arjuna.ats.internal.jta.transaction.arjunacore.UserTransactionImple;
import com.arjuna.ats.jta.common.jtaPropertyManager;
@SqlResultSetMapping(name = "PriceSellerResult", columns =
{@ColumnResult(name = "IP"), @ColumnResult(name = "SID")
@@ -192,19 +194,13 @@
private SessionFactory getSessionFactory(String jndiName)
{
SessionFactory returnValue = null;
- try
+ Object sFactory = getJNDIObject(jndiName);
+
+ if (null != sFactory)
{
- logger.trace("Attempting to lookup session factory with jndi [" + jndiName + "]");
- returnValue = (SessionFactory) jndi.lookup(jndiName);
+ returnValue = (SessionFactory)sFactory;
}
- catch (NameNotFoundException nnfe)
- {
- logger.error(nnfe.getMessage(), nnfe);
- }
- catch (NamingException ne)
- {
- logger.error(ne.getMessage(), ne);
- }
+
return returnValue;
}
@@ -507,6 +503,22 @@
return (UserTransaction)jndi.lookup(JNDI_NAME_USERTX_B);
}
+ private UserTransaction getUserTransaction(final String jndiName)
+ {
+ UserTransaction returnValue = null;
+ Object object = getJNDIObject(jndiName);
+ if (null != object)
+ {
+ returnValue = (UserTransaction)object;
+ }
+ return returnValue;
+ }
+
+ public UserTransaction getUserTransactionA()
+ {
+ return getUserTransaction(JNDI_NAME_USERTX);
+ }
+
protected EntityManagerFactory getEntityManagerFactoryB() throws Exception{
return (EntityManagerFactory)jndi.lookup(JNDI_NAME_EMF_B);
}
@@ -541,6 +553,57 @@
}
pStatement.executeBatch();
}
+
+ private DataSource getDataSource(String jndiName)
+ {
+ DataSource returnValue = null;
+ Object object = getJNDIObject(jndiName);
+ if (null != object )
+ {
+ returnValue = (DataSource)object;
+ }
+ return returnValue;
+ }
+
+ private Object getJNDIObject(String jndiName)
+ {
+ Object returnValue = null;
+
+ try
+ {
+ logger.trace("Attempting to lookup DataSource with jndi [" + jndiName + "]");
+ returnValue = jndi.lookup(jndiName);
+ }
+ catch (NameNotFoundException nnfe)
+ {
+ logger.error(nnfe.getMessage(), nnfe);
+ }
+ catch (NamingException ne)
+ {
+ logger.error(ne.getMessage(), ne);
+ }
+
+ return returnValue;
+ }
+ /*
+ private XADataSource getXADataSource(String jndi)
+ {
+ XADataSource returnValue = null;
+ Object dataSource = getJNDIObject(jndi);
+
+ if (null != dataSource && dataSource.getClass().isInstance(XADataSource.class))
+ {
+ returnValue = (XADataSource)dataSource;
+ }
+ return returnValue;
+ }*/
+
+ public DataSource getDataSourceA()
+ {
+ return getDataSource(JNDI_DATASOURCE);
+ }
+ public DataSource getDataSourceB()
+ {
+ return getDataSource(this.JNDI_DATASOURCE_B);
+ }
}
-
-
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/MultiResourceTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/MultiResourceTest.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/MultiResourceTest.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -25,7 +25,7 @@
/**
* This object changes the default behaviour. Changing this here ensures the test framework
* sets up a 2nd resource with default table data and settings.
- * @author whitingjr
+ * @author Jeremy Whiting
*
*/
public abstract class MultiResourceTest extends WarmedUpTest
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/WarmedUpTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/WarmedUpTest.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/WarmedUpTest.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -40,7 +40,7 @@
* The purpose of this object is to run the test case several times to warm up
* the compiler.
*
- * @author whitingjr Jeremy Whiting
+ * @author Jeremy Whiting
*
*/
public abstract class WarmedUpTest extends ProfiledStateTransitions
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/ConcurrentTaskConfiguration.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/ConcurrentTaskConfiguration.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/ConcurrentTaskConfiguration.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -1,54 +1,34 @@
package org.jboss.jbossts.performance.configuration;
-import java.util.List;
import java.util.Stack;
-import java.util.concurrent.CyclicBarrier;
-import javax.persistence.EntityManagerFactory;
-
/**
* This object encapsulates the configuration for a test case task.
*
- * @author whitingjr
+ * @author Jeremy Whiting
*
*/
public class ConcurrentTaskConfiguration
{
- private final EntityManagerFactory emfactoryA;
- private final EntityManagerFactory emfactoryB;
private final int iterationCount;
- private final CyclicBarrier completionBarrier;
private final boolean isOptionalWriteEnabled;
private final Stack NDCstack;
- private final Long threadIdentity; // this is not shared, each thread has it's own identity
- private final List<Long> threadResults ;// shared access to object, serialized behaviour baked in at construction time
- public ConcurrentTaskConfiguration(final EntityManagerFactory emfA, final EntityManagerFactory emfB, final int iterations,
- final CyclicBarrier barrier, final boolean isOptionalWEnabled, final Stack stack, final Long identity, final List<Long> results)
+ private final MultithreadedTestConfiguration testConfiguration;
+ public ConcurrentTaskConfiguration( final int iterations,
+ final boolean isOptionalWEnabled, final Stack stack, final MultithreadedTestConfiguration testConf)
{
- this.emfactoryA = emfA;
- this.emfactoryB = emfB;
this.iterationCount = iterations;
- this.completionBarrier = barrier;
this.isOptionalWriteEnabled = isOptionalWEnabled;
this.NDCstack = stack;
- this.threadIdentity = identity;
- this.threadResults = results;
+ this.testConfiguration = testConf;
}
- public EntityManagerFactory getEmfactoryA()
- {
- return emfactoryA;
- }
- public EntityManagerFactory getEmfactoryB()
- {
- return emfactoryB;
- }
public int getIterationCount()
{
return iterationCount;
}
- public CyclicBarrier getCompletionBarrier()
+ public MultithreadedTestConfiguration getTestConfiguration()
{
- return completionBarrier;
+ return testConfiguration;
}
public boolean isOptionalWriteEnabled()
{
@@ -58,12 +38,4 @@
{
return NDCstack;
}
- public Long getThreadIdentity()
- {
- return threadIdentity;
- }
- public List<Long> getThreadResults()
- {
- return threadResults;
- }
}
Added: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/JPAConfiguration.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/JPAConfiguration.java (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/JPAConfiguration.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -0,0 +1,54 @@
+package org.jboss.jbossts.performance.configuration;
+
+import java.util.Stack;
+
+import javax.persistence.EntityManagerFactory;
+import javax.sql.DataSource;
+import javax.transaction.UserTransaction;
+
+public class JPAConfiguration extends ConcurrentTaskConfiguration
+{
+ private final EntityManagerFactory entityManagerFactoryA;
+ private final EntityManagerFactory entityManagerFactoryB;
+ private final DataSource dataSourceA;
+ private final DataSource dataSourceB;
+ private final UserTransaction userTransaction;
+ private final MultithreadedTestConfiguration testConfiguration;
+
+ public JPAConfiguration(final DataSource resA, final DataSource resB, final UserTransaction userT ,final EntityManagerFactory sFactoryA, final EntityManagerFactory sFactoryB, final int iterations,
+ final boolean isOptionalWEnabled, final Stack stack, final MultithreadedTestConfiguration testConf)
+ {
+ super(iterations, isOptionalWEnabled, stack, testConf);
+ this.entityManagerFactoryA = sFactoryA;
+ this.entityManagerFactoryB = sFactoryB;
+ this.dataSourceA = resA;
+ this.dataSourceB = resB;
+ this.userTransaction = userT;
+ this.testConfiguration = testConf;
+ }
+
+ public EntityManagerFactory getEntityManagerFactoryA()
+ {
+ return entityManagerFactoryA;
+ }
+
+ public EntityManagerFactory getEntityManagerFactoryB()
+ {
+ return entityManagerFactoryB;
+ }
+
+ public DataSource getDataSourceA()
+ {
+ return dataSourceA;
+ }
+
+ public DataSource getDataSourceB()
+ {
+ return dataSourceB;
+ }
+
+ public UserTransaction getUserTransaction()
+ {
+ return userTransaction;
+ }
+}
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/MultithreadedTestConfiguration.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/MultithreadedTestConfiguration.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/configuration/MultithreadedTestConfiguration.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -6,7 +6,7 @@
/**
* This object holds the configuration for Task objects.
*
- * @author whitingjr
+ * @author Jeremy Whiting
*
*/
public class MultithreadedTestConfiguration
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTask.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTask.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTask.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -28,7 +28,7 @@
import org.hibernate.Transaction;
import org.hibernate.ejb.EntityManagerImpl;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.task.RecursiveTask;
import org.jboss.tm.TransactionLocal;
import org.testng.Assert;
@@ -43,16 +43,19 @@
*/
public class HibernateNativeTask extends RecursiveTask
{
-
- public HibernateNativeTask(final ConcurrentTaskConfiguration taskConfiguration)
+ private final EntityManagerFactory entityManagerFactoryA;
+ private final EntityManagerFactory entityManagerFactoryB;
+ public HibernateNativeTask(final JPAConfiguration taskConfiguration)
{
super(taskConfiguration);
+ this.entityManagerFactoryA = taskConfiguration.getEntityManagerFactoryA();
+ this.entityManagerFactoryB= taskConfiguration.getEntityManagerFactoryB();
}
public void task(final int iteration)
throws Exception
{
- String readSQL = String.format("select user0_.USER_ID , user0_.CREATED , user0_.DEFAULT_BILLING_DETAILS_ID , user0_.EMAIL , user0_.FIRSTNAME , user0_.HOME_CITY , user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE , user0_.LASTNAME , user0_.PASSWD , user0_.RANK , user0_.USERNAME , user0_.OBJ_VERSION , user0_1_.CITY , user0_1_.STREET , user0_1_.ZIPCODE , addressent1_.ADDRESS_ID , addressent1_.CITY , addressent1_.STREET , addressent1_.OBJ_VERSION , addressent1_.ZIPCODE 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);
+ String readSQL = String.format("select user0_.USER_ID , user0_.CREATED , user0_.DEFAULT_BILLING_DETAILS_ID , user0_.EMAIL , user0_.FIRSTNAME , user0_.HOME_CITY , user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE , user0_.LASTNAME , user0_.PASSWD , user0_.RANK , user0_.USERNAME , user0_.OBJ_VERSION , user0_1_.CITY , user0_1_.STREET , user0_1_.ZIPCODE , addressent1_.ADDRESS_ID , addressent1_.CITY , addressent1_.STREET , addressent1_.OBJ_VERSION , addressent1_.ZIPCODE 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.getTaskConfiguration().getTestConfiguration().getThreadIdentity());
EntityManagerImpl emA = null;
EntityManagerImpl emB = null;
@@ -69,7 +72,7 @@
long time = System.currentTimeMillis();
String writeSQLResA = String.format("update USERS set DEFAULT_BILLING_DETAILS_ID=%1$d, EMAIL='%2$s', FIRSTNAME='%3$s', HOME_CITY='%4$s', HOME_STREET='%5$s', HOME_ZIPCODE='%6$s', LASTNAME='%7$s', PASSWD='%8$s', RANK=%9$d, USERNAME='%10$s', OBJ_VERSION=%11$d where USER_ID=%12$d and OBJ_VERSION=%13$d",
- null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.threadId, version.intValue()+1, this.threadId, version.intValue());
+ null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), version.intValue()+1, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), version.intValue());
version = null;
if (this.isOptionalWriteEnabled)
@@ -81,7 +84,7 @@
version = (Number) usrB[12];
//logger.debug(usrB.toString());
String writeSQLResB = String.format("update USERS set DEFAULT_BILLING_DETAILS_ID=%1$d, EMAIL='%2$s', FIRSTNAME='%3$s', HOME_CITY='%4$s', HOME_STREET='%5$s', HOME_ZIPCODE='%6$s', LASTNAME='%7$s', PASSWD='%8$s', RANK=%9$d, USERNAME='%10$s', OBJ_VERSION=%11$d where USER_ID=%12$d and OBJ_VERSION=%13$d",
- null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.threadId, version.intValue()+1, this.threadId, version.intValue());
+ null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), version.intValue()+1, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), version.intValue());
writeUserB(emB, writeSQLResB);
transaction.commit();
@@ -114,11 +117,11 @@
public EntityManagerFactory getEMFactoryA()
{
- return this.emfA;
+ return this.entityManagerFactoryA;
}
public EntityManagerFactory getEMFactoryB()
{
- return this.emfB;
+ return this.entityManagerFactoryB;
}
}
\ No newline at end of file
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTest.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/HibernateNativeTest.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -24,7 +24,7 @@
import org.apache.log4j.NDC;
import org.jboss.jbossts.performance.MultiThreadedTest;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.configuration.MultithreadedTestConfiguration;
public class HibernateNativeTest extends MultiThreadedTest
@@ -32,7 +32,7 @@
@Override
public Runnable getTask(final MultithreadedTestConfiguration taskConfiguration) throws Exception
{
- return new HibernateNativeTask(new ConcurrentTaskConfiguration(getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), taskConfiguration.getCompletionBarrier(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration.getThreadIdentity(), taskConfiguration.getResults()));
+ return new HibernateNativeTask(new JPAConfiguration(getDataSourceA(), getDataSourceB(), getUserTransaction(), getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration));
}
@Override
protected boolean isMultiResourceTest()
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTask.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTask.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTask.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -22,17 +22,15 @@
package org.jboss.jbossts.performance.jdbc;
+import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Query;
-
-import org.hibernate.Transaction;
-import org.hibernate.ejb.EntityManagerImpl;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.apache.commons.dbutils.DbUtils;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.task.RecursiveTask;
-import org.jboss.tm.TransactionLocal;
import org.testng.Assert;
/**
@@ -45,8 +43,7 @@
*/
public class JDBCTask extends RecursiveTask
{
-
- public JDBCTask(final ConcurrentTaskConfiguration taskConfiguration)
+ public JDBCTask(final JPAConfiguration taskConfiguration)
{
super(taskConfiguration);
}
@@ -54,71 +51,110 @@
public void task(final int iteration)
throws Exception
{
- String readSQL = String.format("select user0_.USER_ID , user0_.CREATED , user0_.DEFAULT_BILLING_DETAILS_ID , user0_.EMAIL , user0_.FIRSTNAME , user0_.HOME_CITY , user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE , user0_.LASTNAME , user0_.PASSWD , user0_.RANK , user0_.USERNAME , user0_.OBJ_VERSION , user0_1_.CITY , user0_1_.STREET , user0_1_.ZIPCODE , addressent1_.ADDRESS_ID , addressent1_.CITY , addressent1_.STREET , addressent1_.OBJ_VERSION , addressent1_.ZIPCODE 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();
- Transaction transaction =emA.getSession().beginTransaction();
- TransactionLocal session = new TransactionLocal();
- session.set(emA);
-
- //PreparedStatement pStatement = emA.get
- //Number version = (Number ) usrA[12];
- /*
- long time = System.currentTimeMillis();
- String writeSQLResA = String.format("update USERS set DEFAULT_BILLING_DETAILS_ID=%1$d, EMAIL='%2$s', FIRSTNAME='%3$s', HOME_CITY='%4$s', HOME_STREET='%5$s', HOME_ZIPCODE='%6$s', LASTNAME='%7$s', PASSWD='%8$s', RANK=%9$d, USERNAME='%10$s', OBJ_VERSION=%11$d where USER_ID=%12$d and OBJ_VERSION=%13$d",
- null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.threadId, version.intValue()+1, this.threadId, version.intValue());
- //version = null;
-
- if (this.isOptionalWriteEnabled)
+ Connection connectionA = null;
+ Connection connectionB = null;
+ PreparedStatement pStatementARead = null;
+ PreparedStatement pStatementAWrite = null;
+ PreparedStatement pStatementBRead = null;
+ PreparedStatement pStatementBWrite = null;
+ ResultSet resultA = null;
+ ResultSet resultB = null;
+ boolean completed = false;
+ try
{
- writeUserA(emA, writeSQLResA);
+ //getTaskConfiguration().getUserTransaction().begin();
+ connectionA = getTaskConfiguration().getDataSourceA().getConnection();
+ connectionA.setAutoCommit(false);
+ pStatementARead = connectionA.prepareStatement("select user0_.USER_ID , user0_.CREATED , user0_.DEFAULT_BILLING_DETAILS_ID , user0_.EMAIL , user0_.FIRSTNAME , user0_.HOME_CITY , user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE , user0_.LASTNAME , user0_.PASSWD , user0_.RANK , user0_.USERNAME , user0_.OBJ_VERSION , user0_1_.CITY , user0_1_.STREET , user0_1_.ZIPCODE , addressent1_.ADDRESS_ID , addressent1_.CITY , addressent1_.STREET , addressent1_.OBJ_VERSION , addressent1_.ZIPCODE 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=?");
+ resultA = findUsingResourceA(pStatementARead, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity());
+ Assert.assertTrue(resultA.next());
+ int version = resultA.getInt(13);
+ long time = System.currentTimeMillis();
+
+ if (this.isOptionalWriteEnabled)
+ {
+ pStatementAWrite = connectionA.prepareStatement("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=?");
+ pStatementAWrite.setNull(1, Types.NUMERIC);
+ pStatementAWrite.setString(2, "anotheruser at mail.tld");
+ pStatementAWrite.setString(3, String.format("Ben%1$d", time));
+ pStatementAWrite.setString(4, "Foocity");
+ pStatementAWrite.setString(5, "Foostreet");
+ pStatementAWrite.setString(6, "22222");
+ pStatementAWrite.setString(7, "User");
+ pStatementAWrite.setString(8, "secret");
+ pStatementAWrite.setInt(9, 0);
+ pStatementAWrite.setString(10, String.format("anotheruser%1$d", this.getTaskConfiguration().getTestConfiguration().getThreadIdentity().intValue()));
+ pStatementAWrite.setInt(11, (version+1));
+ pStatementAWrite.setInt(12, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity().intValue());
+ pStatementAWrite.setInt(13, version);
+ Assert.assertEquals(pStatementAWrite.executeUpdate(), 1) ;
+ }
+ connectionA.commit();
+
+ connectionB= getTaskConfiguration().getDataSourceB().getConnection();
+ connectionB.setAutoCommit(false);
+ pStatementBRead = connectionB.prepareStatement("select user0_.USER_ID , user0_.CREATED , user0_.DEFAULT_BILLING_DETAILS_ID , user0_.EMAIL , user0_.FIRSTNAME , user0_.HOME_CITY , user0_.HOME_STREET as HOME6_4_1_, user0_.HOME_ZIPCODE , user0_.LASTNAME , user0_.PASSWD , user0_.RANK , user0_.USERNAME , user0_.OBJ_VERSION , user0_1_.CITY , user0_1_.STREET , user0_1_.ZIPCODE , addressent1_.ADDRESS_ID , addressent1_.CITY , addressent1_.STREET , addressent1_.OBJ_VERSION , addressent1_.ZIPCODE 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=?");
+ resultB = findUsingResourceB(pStatementBRead, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity());
+ Assert.assertTrue(resultB.next());
+ version = resultB.getInt(13);
+
+ pStatementBWrite = connectionB.prepareStatement("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=?");
+ pStatementBWrite.setNull(1, Types.NUMERIC);
+ pStatementBWrite.setString(2, "anotheruser at mail.tld");
+ pStatementBWrite.setString(3, String.format("Ben%1$d", time));
+ pStatementBWrite.setString(4, "Foocity");
+ pStatementBWrite.setString(5, "Foostreet");
+ pStatementBWrite.setString(6, "22222");
+ pStatementBWrite.setString(7, "User");
+ pStatementBWrite.setString(8, "secret");
+ pStatementBWrite.setInt(9, 0);
+ pStatementBWrite.setString(10, String.format("anotheruser%1$d", this.getTaskConfiguration().getTestConfiguration().getThreadIdentity().intValue()));
+ pStatementBWrite.setInt(11, (version+1));
+ pStatementBWrite.setInt(12, this.getTaskConfiguration().getTestConfiguration().getThreadIdentity().intValue());
+ pStatementBWrite.setInt(13, version);
+ Assert.assertEquals(pStatementBWrite.executeUpdate(), 1) ;
+ connectionB.commit();
+
+ completed = true;
}
- session.set(emB);
- Object[] usrB = (Object[])findUsingResourceB(emB, readSQL);//discard details
- //version = (Number) usrB[12];
- //logger.debug(usrB.toString());
- String writeSQLResB = String.format("update USERS set DEFAULT_BILLING_DETAILS_ID=%1$d, EMAIL='%2$s', FIRSTNAME='%3$s', HOME_CITY='%4$s', HOME_STREET='%5$s', HOME_ZIPCODE='%6$s', LASTNAME='%7$s', PASSWD='%8$s', RANK=%9$d, USERNAME='%10$s', OBJ_VERSION=%11$d where USER_ID=%12$d and OBJ_VERSION=%13$d",
- null, "anotheruser at mail.tld", "Ben"+time, "Foocity", "Foostreet", "22222", "User", "secret", 0, "anotheruser110"+this.threadId, version.intValue()+1, this.threadId, version.intValue());
-
- writeUserB(emB, writeSQLResB);
- transaction.commit();
- */
+ finally
+ {
+ DbUtils.closeQuietly(resultA);
+ DbUtils.closeQuietly(pStatementARead) ;
+ DbUtils.closeQuietly(pStatementAWrite);
+
+ DbUtils.closeQuietly(resultB);
+ DbUtils.closeQuietly(pStatementBRead) ;
+ DbUtils.closeQuietly(pStatementBWrite);
+
+ DbUtils.closeQuietly(connectionA);
+ DbUtils.closeQuietly(connectionB);
+ /*
+ if (completed)
+ {
+ this.getTaskConfiguration().getUserTransaction().commit();
+ }
+ else
+ {
+ getTaskConfiguration().getUserTransaction().rollback();
+ }
+ */
+ }
}
- private void writeUserA(final EntityManager em, final String sql)
+ private ResultSet findUsingResourceA(final PreparedStatement preparedStatement, final Long id)
+ throws SQLException
{
- performWrite(em, sql);
+ return findUsingResource(preparedStatement, id);
}
- private void writeUserB(final EntityManager em, final String sql)
+ private ResultSet findUsingResourceB(final PreparedStatement preparedStatement, final Long id)
+ throws SQLException
{
- performWrite(em, sql);
+ return findUsingResource(preparedStatement, id);
}
- private void performWrite(final EntityManager em, final String sql)
+ private ResultSet findUsingResource(final PreparedStatement statement, final Long id)
+ throws SQLException
{
- Query query = em.createNativeQuery(sql);
- Assert.assertEquals(1, query.executeUpdate()) ;
+ statement.setLong(1, id);
+ return statement.executeQuery();
}
- private Object findUsingResourceA(final EntityManager em, final String sql)
- {
- return findUsingResource(em, sql);
- }
- private Object findUsingResourceB(final EntityManager em, final String sql)
- {
- return findUsingResource(em, sql);
- }
- private Object findUsingResource(final EntityManager em, final String sql)
- {
- return em.createNativeQuery(sql).getSingleResult();
- }
-
- public EntityManagerFactory getEMFactoryA()
- {
- return this.emfA;
- }
-
- public EntityManagerFactory getEMFactoryB()
- {
- return this.emfB;
- }
}
\ No newline at end of file
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-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/jdbc/JDBCTest.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -24,7 +24,7 @@
import org.apache.log4j.NDC;
import org.jboss.jbossts.performance.MultiThreadedTest;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.configuration.MultithreadedTestConfiguration;
/**
@@ -38,7 +38,7 @@
@Override
public Runnable getTask(final MultithreadedTestConfiguration taskConfiguration) throws Exception
{
- return new JDBCTask(new ConcurrentTaskConfiguration(getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), taskConfiguration.getCompletionBarrier(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration.getThreadIdentity(), taskConfiguration.getResults()));
+ return new JDBCTask(new JPAConfiguration(getDataSourceA(), getDataSourceB(), getUserTransactionA(), getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration));
}
@Override
protected boolean isMultiResourceTest()
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeResourcesTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeResourcesTest.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeResourcesTest.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -24,12 +24,12 @@
import org.apache.log4j.NDC;
import org.jboss.jbossts.performance.MultiThreadedTest;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.configuration.MultithreadedTestConfiguration;
/**
* This is in all intents and purposes has ended up being a factory.
- * @author whitingjr
+ * @author Jeremy Whiting
*
*/
public class SynchronizeResourcesTest extends MultiThreadedTest
@@ -38,12 +38,11 @@
public Runnable getTask(final MultithreadedTestConfiguration taskConfiguration)
throws Exception
{
- return new SynchronizeTask(new ConcurrentTaskConfiguration( getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), taskConfiguration.getCompletionBarrier(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration.getThreadIdentity(), taskConfiguration.getResults()));
+ return new SynchronizeTask(new JPAConfiguration(getDataSourceA(), getDataSourceB(), getUserTransaction(), getEntityManagerFactory(), getEntityManagerFactoryB(), taskConfiguration.getIterationCount(), this.isOptionalWriteEnabled, NDC.cloneStack(), taskConfiguration));
}
@Override
protected boolean isMultiResourceTest()
{
return true;
}
-
}
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-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/resource/SynchronizeTask.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -1,12 +1,11 @@
package org.jboss.jbossts.performance.resource;
import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;
import org.hibernate.Transaction;
import org.hibernate.ejb.EntityManagerImpl;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.synchronization.SessionSynchronization;
import org.jboss.jbossts.performance.task.RecursiveTask;
import org.jboss.tm.TransactionLocal;
@@ -29,7 +28,8 @@
*/
public class SynchronizeTask extends RecursiveTask
{
- public SynchronizeTask(final ConcurrentTaskConfiguration taskConfiguration)
+
+ public SynchronizeTask(final JPAConfiguration taskConfiguration)
{
super(taskConfiguration);
}
@@ -42,8 +42,8 @@
public void task(final int iteration)
throws Exception
{
- final EntityManagerImpl emA = (EntityManagerImpl) getEMFactoryA().createEntityManager();
- final EntityManagerImpl emB = (EntityManagerImpl) getEMFactoryB().createEntityManager();
+ final EntityManagerImpl emA = (EntityManagerImpl) this.getTaskConfiguration().getEntityManagerFactoryA().createEntityManager();
+ final EntityManagerImpl emB = (EntityManagerImpl) this.getTaskConfiguration().getEntityManagerFactoryB().createEntityManager();
final Transaction transaction =emA.getSession().beginTransaction();
final TransactionLocal session = new TransactionLocal();
@@ -65,10 +65,10 @@
// Prepare a user object
session.set(emA);
- String name = String.format("Ben[%1$d][%2$d]", this.threadId, System.currentTimeMillis()) ;
+ String name = String.format("Ben[%1$d][%2$d]", this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), System.currentTimeMillis()) ;
final User userA = findUsingResourceA(userDAO_A);
- Assert.assertNotNull(userA, String.format( "User A should not be null.[%1$d][%2$d]", this.threadId, iteration));
+ Assert.assertNotNull(userA, String.format( "User A should not be null.[%1$d][%2$d]", this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), iteration));
if (this.isOptionalWriteEnabled)
{
@@ -95,17 +95,6 @@
* point only EM B's persistence context has any pending writes. */
transaction.commit();
}
-
- public EntityManagerFactory getEMFactoryA()
- {
- return this.emfA;
- }
-
- public EntityManagerFactory getEMFactoryB()
- {
- return this.emfB;
- }
-
/**
* This method exists purely for the profiler to separate resource duration
*
@@ -114,17 +103,13 @@
{
entityManager.flush();
}
- /* private void resourceBFlush(EntityManager entityManager)
+ private User findUsingResourceA(UserDAOBeanMultiResource daoBean)
{
- entityManager.flush();
+ return daoBean.findById(this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), false);
}
-*/ private User findUsingResourceA(UserDAOBeanMultiResource daoBean)
- {
- return daoBean.findById(this.threadId, false);
- }
private User findUsingResourceB(final UserDAOBeanMultiResource daoBean)
{
- return daoBean.findById(this.threadId, false);
+ return daoBean.findById(this.getTaskConfiguration().getTestConfiguration().getThreadIdentity(), false);
}
private void writeUserA(final EntityManager em, final String sql)
Modified: labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/task/RecursiveTask.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/task/RecursiveTask.java 2010-02-22 17:36:06 UTC (rev 31775)
+++ labs/jbosstm/workspace/whitingjr/trunk/performance/src/test/java/org/jboss/jbossts/performance/task/RecursiveTask.java 2010-02-22 17:37:47 UTC (rev 31776)
@@ -23,14 +23,11 @@
package org.jboss.jbossts.performance.task;
import java.util.Stack;
-import java.util.concurrent.CyclicBarrier;
-import javax.persistence.EntityManagerFactory;
-
import org.apache.commons.lang.mutable.MutableLong;
import org.apache.log4j.Logger;
import org.apache.log4j.NDC;
-import org.jboss.jbossts.performance.configuration.ConcurrentTaskConfiguration;
+import org.jboss.jbossts.performance.configuration.JPAConfiguration;
import org.jboss.jbossts.performance.resource.SynchronizeTask;
import org.testng.Assert;
@@ -43,26 +40,16 @@
*/
public abstract class RecursiveTask implements Runnable
{
- protected final EntityManagerFactory emfA;
- protected final EntityManagerFactory emfB;
protected final boolean isOptionalWriteEnabled;
private final int recurseCount;
private final static Logger logger = Logger.getLogger(SynchronizeTask.class);
- private final CyclicBarrier completionBarrier;
- //private final CountDownLatch latch;
- protected final Long threadId;
private final Stack parentNDC;
- private final ConcurrentTaskConfiguration taskConfiguration;
- public RecursiveTask(final ConcurrentTaskConfiguration configuration)
+ private final JPAConfiguration taskConfiguration;
+ public RecursiveTask(final JPAConfiguration configuration)
{
- this.emfA = configuration.getEmfactoryA();
- this.emfB = configuration.getEmfactoryB();
this.recurseCount = configuration.getIterationCount();
- this.completionBarrier = configuration.getCompletionBarrier();
this.isOptionalWriteEnabled = configuration.isOptionalWriteEnabled();
- //this.latch = null;
this.parentNDC = configuration.getNDCstack();
- this.threadId = configuration.getThreadIdentity();
this.taskConfiguration = configuration;
}
@Override
@@ -73,34 +60,34 @@
method.
*/
NDC.inherit(this.parentNDC);
- NDC.push(this.threadId.toString());
- this.completionBarrier.await();// await all threads ready to start
+ NDC.push(this.taskConfiguration.getTestConfiguration().getThreadIdentity().toString());
+ this.taskConfiguration.getTestConfiguration().getCompletionBarrier().await();// await all threads ready to start
MutableLong totalTime = recurse(this.recurseCount);
if (logger.isInfoEnabled())
{
logger.info("Finished recursing. Awaiting on synch point.");
}
- if (!this.completionBarrier.isBroken())
+ if (!this.taskConfiguration.getTestConfiguration().getCompletionBarrier().isBroken())
{// fall out of thread without waiting.
- if (null != this.taskConfiguration.getThreadResults())
+ if (null != this.taskConfiguration.getTestConfiguration().getResults())
{
/* Put into the results object a value. The value is the average time for
- * this thread to execute the task. */
- this.taskConfiguration.getThreadResults().add(( totalTime.toLong()/this.recurseCount));// serialized modification, insertion order not important
+ * this thread to execute the task. nano seconds */
+ this.taskConfiguration.getTestConfiguration().getResults().add(( totalTime.toLong()/this.recurseCount));// serialized modification, insertion order not important
}
- this.completionBarrier.await();// await all threads have finished
+ this.taskConfiguration.getTestConfiguration().getCompletionBarrier().await();// await all threads have finished
}
}
catch (Exception e)
{
logger.error(e.getMessage(), e);
- this.completionBarrier.reset();
+ this.taskConfiguration.getTestConfiguration().getCompletionBarrier().reset();
Assert.fail(e.getMessage());
}
catch (AssertionError ae)
{
- this.completionBarrier.reset();
+ this.taskConfiguration.getTestConfiguration().getCompletionBarrier().reset();
throw ae;
}
finally
@@ -127,16 +114,20 @@
returnValue.add (System.nanoTime() - start);
if (logger.isDebugEnabled())
{
- logger.debug(String.format("Completed profiled run of testbody for thread [%1$d] count [%2$d].", this.threadId, i));
+ logger.debug(String.format("Completed profiled run of testbody for thread [%1$d] count [%2$d].", this.taskConfiguration.getTestConfiguration().getThreadIdentity(), i));
}
} catch (Exception e)
{
- this.completionBarrier.reset();
- logger.error(String.format("Failed profiled run of testbody for thread [%1$d] count [%2$d].", this.threadId, i ));
+ this.taskConfiguration.getTestConfiguration().getCompletionBarrier().reset();
+ logger.error(String.format("Failed profiled run of testbody for thread [%1$d] count [%2$d].", this.taskConfiguration.getTestConfiguration().getThreadIdentity(), i ));
Assert.fail(e.getMessage(), e);
}
}
return returnValue ;
}
+ public JPAConfiguration getTaskConfiguration()
+ {
+ return taskConfiguration;
+ }
}
More information about the jboss-svn-commits
mailing list