You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/09/26 13:26:45 UTC
svn commit: r449992 -
/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java
Author: arminw
Date: Tue Sep 26 04:26:45 2006
New Revision: 449992
URL: http://svn.apache.org/viewvc?view=rev&rev=449992
Log:
improve test
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java?view=diff&rev=449992&r1=449991&r2=449992
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/sequence/SMMultiThreadedTest.java Tue Sep 26 04:26:45 2006
@@ -4,18 +4,18 @@
import org.apache.ojb.broker.PersistenceBrokerFactory;
import org.apache.ojb.broker.query.Criteria;
import org.apache.ojb.broker.query.Query;
-import org.apache.ojb.broker.query.QueryByCriteria;
+import org.apache.ojb.broker.query.QueryFactory;
/**
* Test SequenceManager implementation with multiple threads.
*
- * @author <a href="mailto:armin@codeAuLait.de">Armin Waibel</a>
* @version $Id$
*/
public class SMMultiThreadedTest extends org.apache.ojb.junit.JUnitExtensions.MultiThreadedTestCase
{
String goodName;
String badName;
+ String currentTime;
public SMMultiThreadedTest(String s)
{
@@ -31,6 +31,9 @@
protected void setUp() throws Exception
{
super.setUp();
+ currentTime = "_" + System.currentTimeMillis();
+ badName = "_badEntries_" + currentTime + "_";
+ goodName = "_goodEntries_" + currentTime + "_";
}
protected void tearDown() throws Exception
@@ -38,47 +41,55 @@
super.tearDown();
}
- public void testMultipleInsertAndRollback()
+ public void testMultipleInsertAndRollback() throws Exception
{
- int testObjects = 200;
- int threads = 10;
+ int testObjects = 100;
+ int threads = 20;
TestCaseRunnable tct [] = new TestCaseRunnable[threads];
- for (int i = 0; i < threads; i++)
+ for(int i = 0; i < threads; i++)
{
- if (i % 2 == 1)
+ if(i % 2 == 1)
tct[i] = new BadThenGoodHandle(testObjects);
else
tct[i] = new GoodThenBadHandle(testObjects);
}
// run test classes
runTestCaseRunnables(tct);
- checkGeneratedObjects(testObjects*threads);
+ checkGeneratedObjects(testObjects * threads);
}
private void checkGeneratedObjects(int testObjects)
{
PersistenceBroker broker = PersistenceBrokerFactory.defaultPersistenceBroker();
- int res_1;
- int res_2;
+ int res_A_good;
+ int res_B_good;
+ int res_A_bad;
+ int res_B_bad;
try
{
Criteria crit = new Criteria();
- crit.addLike("name", goodName+"%");
+ crit.addLike("name", "%" + goodName + "%");
Criteria crit2 = new Criteria();
- crit2.addLike("name", badName+"%");
+ crit2.addLike("name", "%" + badName + "%");
crit.addOrCriteria(crit2);
- Query q_1 = new QueryByCriteria(MTObjectA.class, crit);
- Query q_2 = new QueryByCriteria(MTObjectB.class, crit);
- res_1 = broker.getCount(q_1);
- res_2 = broker.getCount(q_2);
+ Query q_A_good = QueryFactory.newQuery(MTObjectA.class, crit);
+ Query q_B_good = QueryFactory.newQuery(MTObjectB.class, crit);
+ Query q_A_bad = QueryFactory.newQuery(MTObjectA.class, crit2);
+ Query q_B_bad = QueryFactory.newQuery(MTObjectB.class, crit2);
+ res_A_good = broker.getCount(q_A_good);
+ res_B_good = broker.getCount(q_B_good);
+ res_A_bad = broker.getCount(q_A_bad);
+ res_B_bad = broker.getCount(q_B_bad);
}
finally
{
if(broker != null && !broker.isClosed()) broker.close();
}
- assertEquals(testObjects, res_1);
- assertEquals(testObjects, res_2);
+ assertEquals(testObjects, res_A_good);
+ assertEquals(testObjects, res_B_good);
+ assertEquals(0, res_A_bad);
+ assertEquals(0, res_B_bad);
}
@@ -86,23 +97,25 @@
class GoodThenBadHandle extends org.apache.ojb.junit.JUnitExtensions.MultiThreadedTestCase.TestCaseRunnable
{
int testObjects;
-
+ String good;
+ String bad;
PersistenceBroker broker;
public GoodThenBadHandle(int testObjects)
{
this.testObjects = testObjects;
- goodName = "GoodThenBadHandle_" + (long)(System.currentTimeMillis()*Math.random()) + "_";
}
void prepare()
{
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
+ good = Thread.currentThread().getName() + goodName;
+ bad = Thread.currentThread().getName() + badName;
}
void cleanup()
{
- if (broker != null && !broker.isClosed()) broker.close();
+ if(broker != null && !broker.isClosed()) broker.close();
}
public void runTestCase() throws Throwable
@@ -111,31 +124,31 @@
try
{
broker.beginTransaction();
- for (int i = testObjects - 1; i >= 0; i--)
+ for(int i = testObjects - 1; i >= 0; i--)
{
MTObjectA obj = new MTObjectA();
- obj.setName(goodName + (i + 1));
+ obj.setName(good + (i + 1));
MTObjectB obj_2 = new MTObjectB();
- obj_2.setName(goodName + (i + 1));
+ obj_2.setName(good + (i + 1));
broker.store(obj);
broker.store(obj_2);
- // Thread.sleep((int) (Math.random() * 5));
+ Thread.sleep((int) (Math.random() * 5));
}
// Thread.sleep((int)(Math.random()*10));
broker.commitTransaction();
broker.beginTransaction();
- for (int i = testObjects - 1; i >= 0; i--)
+ for(int i = testObjects - 1; i >= 0; i--)
{
MTObjectA obj = new MTObjectA();
- obj.setName(badName + (i + 1));
+ obj.setName(bad + (i + 1));
MTObjectB obj_2 = new MTObjectB();
- obj_2.setName(badName + (i + 1));
+ obj_2.setName(bad + (i + 1));
broker.store(obj);
broker.store(obj_2);
- // Thread.sleep((int) (Math.random() * 5));
+ Thread.sleep((int) (Math.random() * 5));
}
// Thread.sleep((int)(Math.random()*10));
broker.abortTransaction();
@@ -150,22 +163,25 @@
class BadThenGoodHandle extends org.apache.ojb.junit.JUnitExtensions.MultiThreadedTestCase.TestCaseRunnable
{
int testObjects;
+ String good;
+ String bad;
PersistenceBroker broker;
public BadThenGoodHandle(int testObjects)
{
this.testObjects = testObjects;
- badName = "BadThenGoodHandle_" + System.currentTimeMillis() + "_";
}
void prepare()
{
broker = PersistenceBrokerFactory.defaultPersistenceBroker();
+ good = Thread.currentThread().getName() + goodName;
+ bad = Thread.currentThread().getName() + badName;
}
void cleanup()
{
- if (broker != null && !broker.isClosed()) broker.close();
+ if(broker != null && !broker.isClosed()) broker.close();
}
public void runTestCase() throws Throwable
@@ -174,31 +190,31 @@
try
{
broker.beginTransaction();
- for (int i = testObjects - 1; i >= 0; i--)
+ for(int i = testObjects - 1; i >= 0; i--)
{
MTObjectA obj = new MTObjectA();
- obj.setName(badName + (i + 1));
+ obj.setName(bad + (i + 1));
MTObjectB obj_2 = new MTObjectB();
- obj_2.setName(badName + (i + 1));
+ obj_2.setName(bad + (i + 1));
broker.store(obj);
broker.store(obj_2);
- // Thread.sleep((int) (Math.random() * 5));
+ Thread.sleep((int) (Math.random() * 5));
}
// Thread.sleep((int)(Math.random()*10));
broker.abortTransaction();
broker.beginTransaction();
- for (int i = testObjects - 1; i >= 0; i--)
+ for(int i = testObjects - 1; i >= 0; i--)
{
MTObjectA obj = new MTObjectA();
- obj.setName(badName + (i + 1));
+ obj.setName(good + (i + 1));
MTObjectB obj_2 = new MTObjectB();
- obj_2.setName(badName + (i + 1));
+ obj_2.setName(good + (i + 1));
broker.store(obj);
broker.store(obj_2);
- // Thread.sleep((int) (Math.random() * 5));
+ Thread.sleep((int) (Math.random() * 5));
}
// Thread.sleep((int)(Math.random()*10));
broker.commitTransaction();
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org