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