openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From allee8...@apache.org
Subject svn commit: r762559 - /openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java
Date Mon, 06 Apr 2009 22:59:21 GMT
Author: allee8285
Date: Mon Apr  6 22:59:21 2009
New Revision: 762559

URL: http://svn.apache.org/viewvc?rev=762559&view=rev
Log:
OPENJPA-1022 - correct test case to properly handle notify/wait testing protocol between multi-threads
test scenario. This fix corrects some timing related failures.

Modified:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java

Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java?rev=762559&r1=762558&r2=762559&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java
(original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/lockmgr/SequencedActionsTest.java
Mon Apr  6 22:59:21 2009
@@ -294,7 +294,7 @@
             }
         }
         int numThreads = actions.length;
-        threads = new ArrayList<TestThread>(numThreads - 1);
+        threads = new ArrayList<TestThread>(numThreads);
         TestThread mainThread = new TestThread(0, actions);
         threads.add(mainThread);
         launchCommonSequence(mainThread);
@@ -508,6 +508,10 @@
                     threads.get((Integer) args[1]).start();
                     break;
                 case Notify:
+                	// sleep and let other threads has a chance to wait,
+                	// otherwise this notify may trigger before the other 
+                	// thread has a chance to wait.
+                	Thread.sleep(500);
                     int notifyThreadid = 0;
                     if (args.length > 1 && args[1] != null) {
                         notifyThreadid = (Integer) args[1];
@@ -526,10 +530,12 @@
                     if (args.length > 1 && args[1] != null) {
                         waitThreadid = (Integer) args[1];
                     }
-                    int waitTime = 5000; //15000;
+                    int waitTime = (int)(waitInMsec / 5);
                     if (args.length > 2 && args[2] != null) {
                         waitTime = (Integer) args[2];
                     }
+                    if( waitTime < 15000)
+                        waitTime = 15000;                    
                     if( waitThreadid != 0) {
                         thisThread.wait(waitTime);
                     } else {
@@ -898,6 +904,13 @@
         }
 
         public synchronized void run() {
+        	// sleep and let other threads has a chance to do stuffs,
+        	// otherwise this new thread may perform a notify before
+        	// the other thread has a chance to wait.
+        	try {
+				Thread.sleep(500);
+			} catch (InterruptedException e) {
+			}
             getLog().trace("Thread " + threadToRun + ": run()");
             launchCommonSequence(this);
         }



Mime
View raw message