--- jsr166/src/test/tck/JSR166TestCase.java 2015/10/08 23:06:01 1.171 +++ jsr166/src/test/tck/JSR166TestCase.java 2015/10/12 23:52:44 1.177 @@ -193,24 +193,27 @@ public class JSR166TestCase extends Test // Instrumentation to debug very rare, but very annoying hung test runs. static volatile TestCase currentTestCase; - static volatile int currentRun = 0; + // static volatile int currentRun = 0; static { Runnable checkForWedgedTest = new Runnable() { public void run() { - // avoid spurious reports with enormous runsPerTest - final int timeoutMinutes = Math.max(runsPerTest / 10, 1); + // Avoid spurious reports with enormous runsPerTest. + // A single test case run should never take more than 1 second. + // But let's cap it at the high end too ... + final int timeoutMinutes = + Math.min(15, Math.max(runsPerTest / 60, 1)); for (TestCase lastTestCase = currentTestCase;;) { try { MINUTES.sleep(timeoutMinutes); } catch (InterruptedException unexpected) { break; } if (lastTestCase == currentTestCase) { System.err.printf( - "Looks like we're stuck running test: %s (%d/%d)%n", - lastTestCase, currentRun, runsPerTest); - System.err.println - ("Looks like we're stuck running test: " - + lastTestCase + " (" + currentRun + "/" + runsPerTest + ")"); - System.err.println("availableProcessors=" + - Runtime.getRuntime().availableProcessors()); - System.err.printf("cpu model = %s%n", cpuModel()); + "Looks like we're stuck running test: %s%n", + lastTestCase); +// System.err.printf( +// "Looks like we're stuck running test: %s (%d/%d)%n", +// lastTestCase, currentRun, runsPerTest); +// System.err.println("availableProcessors=" + +// Runtime.getRuntime().availableProcessors()); +// System.err.printf("cpu model = %s%n", cpuModel()); dumpTestThreads(); // one stack dump is probably enough; more would be spam break; @@ -222,15 +225,15 @@ public class JSR166TestCase extends Test thread.start(); } - public static String cpuModel() { - try { - Matcher matcher = Pattern.compile("model name\\s*: (.*)") - .matcher(new String( - Files.readAllBytes(Paths.get("/proc/cpuinfo")), "UTF-8")); - matcher.find(); - return matcher.group(1); - } catch (Exception ex) { return null; } - } +// public static String cpuModel() { +// try { +// Matcher matcher = Pattern.compile("model name\\s*: (.*)") +// .matcher(new String( +// Files.readAllBytes(Paths.get("/proc/cpuinfo")), "UTF-8")); +// matcher.find(); +// return matcher.group(1); +// } catch (Exception ex) { return null; } +// } public void runBare() throws Throwable { currentTestCase = this; @@ -241,7 +244,7 @@ public class JSR166TestCase extends Test protected void runTest() throws Throwable { for (int i = 0; i < runsPerTest; i++) { - currentRun = i; + // currentRun = i; if (profileTests) runTestProfiled(); else @@ -1225,7 +1228,7 @@ public class JSR166TestCase extends Test } finally { if (t.getState() != Thread.State.TERMINATED) { t.interrupt(); - threadFail("Test timed out"); + threadFail("timed out waiting for thread to terminate"); } } } @@ -1393,7 +1396,9 @@ public class JSR166TestCase extends Test public void await(CountDownLatch latch) { try { - assertTrue(latch.await(LONG_DELAY_MS, MILLISECONDS)); + if (!latch.await(LONG_DELAY_MS, MILLISECONDS)) + fail("timed out waiting for CountDownLatch for " + + (LONG_DELAY_MS/1000) + " sec"); } catch (Throwable fail) { threadUnexpectedException(fail); } @@ -1401,7 +1406,9 @@ public class JSR166TestCase extends Test public void await(Semaphore semaphore) { try { - assertTrue(semaphore.tryAcquire(LONG_DELAY_MS, MILLISECONDS)); + if (!semaphore.tryAcquire(LONG_DELAY_MS, MILLISECONDS)) + fail("timed out waiting for Semaphore for " + + (LONG_DELAY_MS/1000) + " sec"); } catch (Throwable fail) { threadUnexpectedException(fail); }