8199874: [TESTBUG] runtime/Thread/ThreadPriorities.java fails with "expected 0 to equal 10"
authordholmes
Thu, 06 Sep 2018 02:01:20 -0400
changeset 51656 5b1d1a7d4def
parent 51655 0f921a6707d9
child 51657 0fd48caf8243
8199874: [TESTBUG] runtime/Thread/ThreadPriorities.java fails with "expected 0 to equal 10" Reviewed-by: lfoltan, ccheung
test/hotspot/jtreg/runtime/Thread/ThreadPriorities.java
--- a/test/hotspot/jtreg/runtime/Thread/ThreadPriorities.java	Wed Sep 05 21:06:01 2018 -0700
+++ b/test/hotspot/jtreg/runtime/Thread/ThreadPriorities.java	Thu Sep 06 02:01:20 2018 -0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2012, 2018, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -30,7 +30,8 @@
  * @library /test/lib
  * @modules java.base/jdk.internal.misc
  *          java.management
- * @run main ThreadPriorities
+ * @comment Use othervm mode so that we don't capture unrelated threads created by other tests
+ * @run main/othervm ThreadPriorities
  */
 
 import java.util.ArrayList;
@@ -75,7 +76,7 @@
                 JDKToolFinder.getJDKTool("jstack"),
                 String.valueOf(ProcessTools.getProcessId()));
 
-        String[] output = new OutputAnalyzer(pb.start()).getOutput().split("\\n+");
+        String[] output = new OutputAnalyzer(pb.start()).getOutput().split("\\R");
 
         Pattern pattern = Pattern.compile(
                 "\\\"Priority=(\\d+)\\\".* prio=(\\d+).*");
@@ -93,8 +94,20 @@
         barrier.await(); // 2nd
         barrier.reset();
 
-        assertEquals(matches, NUMBER_OF_JAVA_PRIORITIES);
-        assertTrue(failed.isEmpty(), failed.size() + ":" + failed);
+        boolean success = false;
+        try {
+            assertEquals(matches, NUMBER_OF_JAVA_PRIORITIES);
+            assertTrue(failed.isEmpty(), failed.size() + ":" + failed);
+            success = true;
+        }
+        finally {
+            if (!success) {
+                System.out.println("Failure detected - dumping jstack output:");
+                for (String line : output) {
+                    System.out.println(line);
+                }
+            }
+        }
     }
 }