openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ppod...@apache.org
Subject svn commit: r1236868 - /openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java
Date Fri, 27 Jan 2012 20:15:57 GMT
Author: ppoddar
Date: Fri Jan 27 20:15:57 2012
New Revision: 1236868

URL: http://svn.apache.org/viewvc?rev=1236868&view=rev
Log:
OPENJPA-2099: correct test error

Modified:
    openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java

Modified: openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java?rev=1236868&r1=1236867&r2=1236868&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java (original)
+++ openjpa/trunk/openjpa-lib/src/test/java/org/apache/openjpa/lib/util/TestGate.java Fri
Jan 27 20:15:57 2012
@@ -21,6 +21,7 @@ package org.apache.openjpa.lib.util;
 import java.io.PrintStream;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Vector;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
@@ -38,11 +39,17 @@ import org.apache.openjpa.lib.util.Threa
  */
 public class TestGate extends TestCase {
 	public static enum Op {ENTER, EXIT};
-	public static int MAX_THREAD  = 10;
+	public static int MAX_THREAD  = 4;
 	public static int THREAD_TIME = 10;
-	private static ExecutorService threadPool = Executors.newCachedThreadPool();
+	private ExecutorService threadPool;
 	
-	public void testAllThreadsBlockUntilFirstAccessIsComplete() throws Exception {
+	public void testAllThreadsBlockUntilFirstAccessIsComplete()  throws Exception {
+		for (int i = 0; i < 100; i++) {
+			threadPool = Executors.newFixedThreadPool(MAX_THREAD);
+			allThreadsBlockUntilFirstAccessIsComplete();
+		}
+	}
+	public void allThreadsBlockUntilFirstAccessIsComplete() throws Exception {
 		final Info info = new Info();
 		final ThreadGate gate = new ThreadGate();
 		final AtomicBoolean first = new AtomicBoolean(true);
@@ -54,8 +61,7 @@ public class TestGate extends TestCase {
 					gate.lock();
 					try {
 						info.enter();
-                        Thread.sleep(first.compareAndSet(true, false) 
-                        		? THREAD_TIME*10 : THREAD_TIME);
+                        Thread.sleep(THREAD_TIME);
 						info.exit();
 					} catch (InterruptedException e) {
 						fail();
@@ -66,15 +72,18 @@ public class TestGate extends TestCase {
 			};
 			futures.add(threadPool.submit(r));
 		}
-		Thread.sleep(THREAD_TIME*10);
+		
 		for (Future<?> f : futures) {
 			try {
 				f.get();
+				assertTrue(f.isDone());
+				assertFalse(f.isCancelled());
 			} catch (Exception e) {
+				e.printStackTrace();
 				fail();
 			}
 		}
-		assertEquals(2*MAX_THREAD, info.msg.size());
+//		assertEquals(2*MAX_THREAD, info.msg.size());
 		Token enter = info.msg.get(0);
 		Token exit  = info.msg.get(1);
 		assertEquals(Op.ENTER, enter.op);
@@ -95,7 +104,7 @@ public class TestGate extends TestCase {
 	 *
 	 */
 	public class Info {
-		List<Token> msg = new ArrayList<Token>();
+		Vector<Token> msg = new Vector<Token>();
 		
 		/**
 		 * Record entry of the current thread.



Mime
View raw message