8029525: java/lang/ProcessBuilder/Basic.java fails intermittently
Reviewed-by: alanb, chegar
Contributed-by: roger.riggs@oracle.com
--- a/jdk/test/java/lang/ProcessBuilder/Basic.java Thu Dec 05 07:45:27 2013 -0800
+++ b/jdk/test/java/lang/ProcessBuilder/Basic.java Thu Dec 05 16:19:06 2013 +0000
@@ -2239,24 +2239,33 @@
childArgs.add("sleep");
final Process p = new ProcessBuilder(childArgs).start();
final long start = System.nanoTime();
- final CountDownLatch latch = new CountDownLatch(1);
+ final CountDownLatch ready = new CountDownLatch(1);
+ final CountDownLatch done = new CountDownLatch(1);
final Thread thread = new Thread() {
public void run() {
try {
+ final boolean result;
try {
- latch.countDown();
- p.waitFor(30000, TimeUnit.MILLISECONDS);
+ ready.countDown();
+ result = p.waitFor(30000, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
return;
}
- fail("waitFor() wasn't interrupted");
- } catch (Throwable t) { unexpected(t); }}};
+ fail("waitFor() wasn't interrupted, its return value was: " + result);
+ } catch (Throwable t) {
+ unexpected(t);
+ } finally {
+ done.countDown();
+ }
+ }
+ };
thread.start();
- latch.await();
+ ready.await();
Thread.sleep(1000);
thread.interrupt();
+ done.await();
p.destroy();
} catch (Throwable t) { unexpected(t); }