You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by va...@apache.org on 2007/10/15 13:30:36 UTC

svn commit: r584744 - in /harmony/enhanced/drlvm/trunk/src/test/regression/H3256: InterruptTimedWaitingTest.java TestInterruptTimedWaiting.java run.test.xml

Author: varlax
Date: Mon Oct 15 04:30:35 2007
New Revision: 584744

URL: http://svn.apache.org/viewvc?rev=584744&view=rev
Log:
Fixed reg test for HARMONY-3256 violating framework conventions.

Added:
    harmony/enhanced/drlvm/trunk/src/test/regression/H3256/InterruptTimedWaitingTest.java
    harmony/enhanced/drlvm/trunk/src/test/regression/H3256/run.test.xml
Removed:
    harmony/enhanced/drlvm/trunk/src/test/regression/H3256/TestInterruptTimedWaiting.java

Added: harmony/enhanced/drlvm/trunk/src/test/regression/H3256/InterruptTimedWaitingTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H3256/InterruptTimedWaitingTest.java?rev=584744&view=auto
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H3256/InterruptTimedWaitingTest.java (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H3256/InterruptTimedWaitingTest.java Mon Oct 15 04:30:35 2007
@@ -0,0 +1,90 @@
+package org.apache.harmony.drlvm.tests.regression.h3256;
+
+public class InterruptTimedWaitingTest {
+
+	Object lock = new Object();
+	int threadCount = 100;
+	int THREAD_WAIT_TIME = 10000;
+	int WAIT_CONDITION_TIME = 2000;
+	int SLEEP_TIME = 100;
+	int loopCountBegin = WAIT_CONDITION_TIME / SLEEP_TIME;
+	int loopCount;
+	int waitedTime;
+
+	class ThreadWaiting extends Thread {
+		volatile boolean exceptionReceived = false;
+		volatile boolean working = false;
+
+		public void run () {
+			synchronized (lock) {
+				this.working = true;
+				lock.notify();
+			}
+			synchronized (this) {
+				try {
+					this.wait(THREAD_WAIT_TIME);
+				} catch (InterruptedException e) {
+					exceptionReceived = true;
+				}
+			}
+		}
+	}
+
+	public void testInterrupt_Waiting() {
+		for (int i = 0; i < threadCount; i++) {
+			ThreadWaiting t = new ThreadWaiting();
+			try {
+				synchronized (lock) {
+					t.start();
+					while (!t.working) {
+						lock.wait();
+					}
+				}
+			} catch (InterruptedException e) {
+					e.printStackTrace();
+			}
+			
+			// wait for Thread.State.TIMED_WAITING
+			Thread.State ts = t.getState();
+			loopCount = loopCountBegin;
+			while ((ts != Thread.State.TIMED_WAITING) && (loopCount-- > 0)) {
+				ts = t.getState();
+				try {
+					Thread.sleep(SLEEP_TIME);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+
+			// interrupt the thread
+			t.interrupt();
+
+			// wait for InteruptedException
+			loopCount = loopCountBegin;
+			while (!t.exceptionReceived && (loopCount-- > 0)) {
+				try {
+					Thread.sleep(SLEEP_TIME);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+			waitedTime = (loopCountBegin - loopCount) * SLEEP_TIME;
+     		System.out.println(i + " exception waited for " + waitedTime + " ms");
+
+			// check for exception received
+			if (loopCount < 0) {
+				System.out.println(i + " FAILED: waiting thread has not received the InterruptedException");
+				System.exit(-1);
+			}
+			// check for interrupted status cleared
+			if (t.isInterrupted()) {
+				System.out.println(i + " FAILED: interrupt status has not been cleared");
+				System.exit(-2);
+			}
+		}
+	}
+
+	public static void main(String args[]) {
+		new InterruptTimedWaitingTest().testInterrupt_Waiting();
+	}
+}
\ No newline at end of file

Added: harmony/enhanced/drlvm/trunk/src/test/regression/H3256/run.test.xml
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/src/test/regression/H3256/run.test.xml?rev=584744&view=auto
==============================================================================
--- harmony/enhanced/drlvm/trunk/src/test/regression/H3256/run.test.xml (added)
+++ harmony/enhanced/drlvm/trunk/src/test/regression/H3256/run.test.xml Mon Oct 15 04:30:35 2007
@@ -0,0 +1,7 @@
+<project name="RUN HARMONY-3256 Regression Test">
+    <target name="run-test">
+        <run-pjava-test
+            test="org.apache.harmony.drlvm.tests.regression.h3256.InterruptTimedWaitingTest"/>
+    </target>
+</project>
+