提交 e4499e4f 编写于 作者: D dfuchs

8019948: java/util/logging/bundlesearch/ResourceBundleSearchTest.java is failing intermittently

Reviewed-by: mchung, dholmes
上级 959d7d57
...@@ -57,9 +57,32 @@ public class ResourceBundleSearchTest { ...@@ -57,9 +57,32 @@ public class ResourceBundleSearchTest {
private static int numFail = 0; private static int numFail = 0;
private static List<String> msgs = new ArrayList<>(); private static List<String> 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 { public static void main(String[] args) throws Throwable {
System.out.println("ResourceBundleSearchTest starting: "+getTimeStamp());
ResourceBundleSearchTest test = new ResourceBundleSearchTest(); ResourceBundleSearchTest test = new ResourceBundleSearchTest();
test.runTests(); try {
test.runTests();
} finally {
System.out.println("ResourceBundleSearchTest terminated: "+getTimeStamp());
}
} }
private void runTests() throws Throwable { private void runTests() throws Throwable {
...@@ -77,15 +100,19 @@ public class ResourceBundleSearchTest { ...@@ -77,15 +100,19 @@ public class ResourceBundleSearchTest {
urls[0] = Paths.get(testDir, "resources").toUri().toURL(); urls[0] = Paths.get(testDir, "resources").toUri().toURL();
URLClassLoader rbClassLoader = new URLClassLoader(urls); 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? // Test 1 - can we find a Logger bundle from doing a stack search?
// We shouldn't be able to // We shouldn't be able to
assertFalse(testGetBundleFromStackSearch(), "1-testGetBundleFromStackSearch"); 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 // Test 2 - can we find a Logger bundle off of the Thread context class
// loader? We should be able to. // loader? We should be able to.
assertTrue(testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader), assertTrue(testGetBundleFromTCCL(TCCL_TEST_BUNDLE, rbClassLoader),
"2-testGetBundleFromTCCL"); "2-testGetBundleFromTCCL");
System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp());
// Test 3 - Can we find a Logger bundle from the classpath? We should be // 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 // able to. We'll first check to make sure the setup is correct and
// it actually is on the classpath before checking whether logging // it actually is on the classpath before checking whether logging
...@@ -99,21 +126,25 @@ public class ResourceBundleSearchTest { ...@@ -99,21 +126,25 @@ public class ResourceBundleSearchTest {
+ " on the classpath"); + " 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 // Test 4 - we should be able to find a bundle from the caller's
// classloader, but only one level up. // classloader, but only one level up.
assertTrue(testGetBundleFromCallersClassLoader(), assertTrue(testGetBundleFromCallersClassLoader(),
"4-testGetBundleFromCallersClassLoader"); "4-testGetBundleFromCallersClassLoader");
System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp());
// Test 5 - this ensures that getAnonymousLogger(String rbName) // Test 5 - this ensures that getAnonymousLogger(String rbName)
// can find the bundle from the caller's classloader // can find the bundle from the caller's classloader
assertTrue(testGetAnonymousLogger(), "5-testGetAnonymousLogger"); assertTrue(testGetAnonymousLogger(), "5-testGetAnonymousLogger");
System.out.println("ResourceBundleSearchTest starting test #"+(testnb++)+": "+getTimeStamp());
// Test 6 - first call getLogger("myLogger"). // Test 6 - first call getLogger("myLogger").
// Then call getLogger("myLogger","bundleName") from a different ClassLoader // Then call getLogger("myLogger","bundleName") from a different ClassLoader
// Make sure we find the bundle // Make sure we find the bundle
assertTrue(testGetBundleFromSecondCallersClassLoader(), assertTrue(testGetBundleFromSecondCallersClassLoader(),
"6-testGetBundleFromSecondCallersClassLoader"); "6-testGetBundleFromSecondCallersClassLoader");
System.out.println("ResourceBundleSearchTest generating report: "+getTimeStamp());
report(); report();
} }
...@@ -132,6 +163,7 @@ public class ResourceBundleSearchTest { ...@@ -132,6 +163,7 @@ public class ResourceBundleSearchTest {
public void assertTrue(boolean testResult, String testName) { public void assertTrue(boolean testResult, String testName) {
if (testResult) { if (testResult) {
numPass++; numPass++;
System.out.println("PASSED: " + testName);
} else { } else {
numFail++; numFail++;
System.out.println("FAILED: " + testName System.out.println("FAILED: " + testName
...@@ -142,6 +174,7 @@ public class ResourceBundleSearchTest { ...@@ -142,6 +174,7 @@ public class ResourceBundleSearchTest {
public void assertFalse(boolean testResult, String testName) { public void assertFalse(boolean testResult, String testName) {
if (!testResult) { if (!testResult) {
numPass++; numPass++;
System.out.println("PASSED: " + testName);
} else { } else {
numFail++; numFail++;
System.out.println("FAILED: " + testName System.out.println("FAILED: " + testName
...@@ -170,12 +203,10 @@ public class ResourceBundleSearchTest { ...@@ -170,12 +203,10 @@ public class ResourceBundleSearchTest {
debug("Looking for " + bundleName + " using TCCL"); debug("Looking for " + bundleName + " using TCCL");
LoggingThread lr = new LoggingThread(bundleName, setOnTCCL); LoggingThread lr = new LoggingThread(bundleName, setOnTCCL);
lr.start(); lr.start();
synchronized (lr) { try {
try { lr.join();
lr.wait(); } catch (InterruptedException ex) {
} catch (InterruptedException ex) { throw ex;
throw ex;
}
} }
msgs.add(lr.msg); msgs.add(lr.msg);
return lr.foundBundle; return lr.foundBundle;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册