From e4499e4fc82fbae9b21b3ea4120af6cdb2543ecc Mon Sep 17 00:00:00 2001 From: dfuchs Date: Tue, 13 Aug 2013 16:00:44 +0200 Subject: [PATCH] 8019948: java/util/logging/bundlesearch/ResourceBundleSearchTest.java is failing intermittently Reviewed-by: mchung, dholmes --- .../ResourceBundleSearchTest.java | 45 ++++++++++++++++--- 1 file changed, 38 insertions(+), 7 deletions(-) diff --git a/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java b/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java index ee3de2dfb..9cc22f4f2 100644 --- a/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java +++ b/test/java/util/logging/bundlesearch/ResourceBundleSearchTest.java @@ -57,9 +57,32 @@ public class ResourceBundleSearchTest { private static int numFail = 0; private static List msgs = new ArrayList<>(); + // This test has been falling in timeout - so we're adding some + // time stamp here and there to help diagnose whether it's a + // simple system slowness or whether there's a deeper issue, + // like a deadlock. The timeout issue should be fixed now, + // but we leave the time stamps in case it reappears. + // + static final long stamp = System.currentTimeMillis(); + private static String getTimeStamp() { + long time = System.currentTimeMillis(); + long delta = time - stamp; + long min = delta/60000; + long sec = (delta - min * 60000) / 10000; + long msec = delta - min * 60000 - sec * 1000; + return (min == 0 ? "" : (min + " min. ")) + + (sec == 0 ? "" : (sec + " sec. ")) + + (msec == 0 ? "" : (msec + "ms.")); + } + public static void main(String[] args) throws Throwable { + System.out.println("ResourceBundleSearchTest starting: "+getTimeStamp()); ResourceBundleSearchTest test = new ResourceBundleSearchTest(); - test.runTests(); + try { + test.runTests(); + } finally { + System.out.println("ResourceBundleSearchTest terminated: "+getTimeStamp()); + } } private void runTests() throws Throwable { @@ -77,15 +100,19 @@ public class ResourceBundleSearchTest { urls[0] = Paths.get(testDir, "resources").toUri().toURL(); URLClassLoader rbClassLoader = new URLClassLoader(urls); + int testnb = 1; + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 1 - can we find a Logger bundle from doing a stack search? // We shouldn't be able to assertFalse(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch"); + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 2 - can we find a Logger bundle off of the Thread context class // loader? We should be able to. assertTrue(testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader), "2-testGetBundleFromTCCL"); + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 3 - Can we find a Logger bundle from the classpath? We should be // able to. We'll first check to make sure the setup is correct and // it actually is on the classpath before checking whether logging @@ -99,21 +126,25 @@ public class ResourceBundleSearchTest { + " on the classpath"); } + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 4 - we should be able to find a bundle from the caller's // classloader, but only one level up. assertTrue(testGetBundleFromCallersClassLoader(), "4-testGetBundleFromCallersClassLoader"); + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 5 - this ensures that getAnonymousLogger(String rbName) // can find the bundle from the caller's classloader assertTrue(testGetAnonymousLogger(), "5-testGetAnonymousLogger"); + System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp()); // Test 6 - first call getLogger("myLogger"). // Then call getLogger("myLogger","bundleName") from a different ClassLoader // Make sure we find the bundle assertTrue(testGetBundleFromSecondCallersClassLoader(), "6-testGetBundleFromSecondCallersClassLoader"); + System.out.println("ResourceBundleSearchTest generating report: "+getTimeStamp()); report(); } @@ -132,6 +163,7 @@ public class ResourceBundleSearchTest { public void assertTrue(boolean testResult, String testName) { if (testResult) { numPass++; + System.out.println("PASSED: " + testName); } else { numFail++; System.out.println("FAILED: " + testName @@ -142,6 +174,7 @@ public class ResourceBundleSearchTest { public void assertFalse(boolean testResult, String testName) { if (!testResult) { numPass++; + System.out.println("PASSED: " + testName); } else { numFail++; System.out.println("FAILED: " + testName @@ -170,12 +203,10 @@ public class ResourceBundleSearchTest { debug("Looking for " + bundleName + " using TCCL"); LoggingThread lr = new LoggingThread(bundleName, setOnTCCL); lr.start(); - synchronized (lr) { - try { - lr.wait(); - } catch (InterruptedException ex) { - throw ex; - } + try { + lr.join(); + } catch (InterruptedException ex) { + throw ex; } msgs.add(lr.msg); return lr.foundBundle; -- GitLab