20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 |
23 |
24 import java.util.Arrays; |
24 import java.util.Arrays; |
|
25 import java.nio.charset.Charset; |
|
26 import java.nio.charset.StandardCharsets; |
25 |
27 |
26 import jdk.test.lib.process.OutputAnalyzer; |
28 import jdk.test.lib.process.OutputAnalyzer; |
27 import jdk.test.lib.process.ProcessTools; |
29 import jdk.test.lib.process.ProcessTools; |
28 import jdk.test.lib.JDKToolLauncher; |
30 import jdk.test.lib.JDKToolLauncher; |
29 |
31 |
39 public static void main(String[] args) throws Exception { |
41 public static void main(String[] args) throws Exception { |
40 testThreadDump(); |
42 testThreadDump(); |
41 } |
43 } |
42 |
44 |
43 private static void testThreadDump() throws Exception { |
45 private static void testThreadDump() throws Exception { |
44 String markerName = "markerName" + "\u00e4\u0bb5".repeat(10_000); |
46 String marker = "markerName" + "\u00e4\u0bb5".repeat(60); |
45 Thread.currentThread().setName(markerName); |
47 Charset cs = StandardCharsets.UTF_8; |
|
48 Thread.currentThread().setName(marker); |
46 |
49 |
47 JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd"); |
50 JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd"); |
|
51 launcher.addVMArg("-Dfile.encoding=" + cs); |
48 launcher.addToolArg(Long.toString(ProcessTools.getProcessId())); |
52 launcher.addToolArg(Long.toString(ProcessTools.getProcessId())); |
49 launcher.addToolArg("Thread.print"); |
53 launcher.addToolArg("Thread.print"); |
50 |
54 |
51 ProcessBuilder processBuilder = new ProcessBuilder(); |
55 ProcessBuilder processBuilder = new ProcessBuilder(); |
52 processBuilder.command(launcher.getCommand()); |
56 processBuilder.command(launcher.getCommand()); |
53 OutputAnalyzer output = ProcessTools.executeProcess(processBuilder); |
57 OutputAnalyzer output = ProcessTools.executeProcess(processBuilder, null, cs); |
54 output.shouldHaveExitValue(0); |
58 output.shouldHaveExitValue(0); |
55 output.shouldContain(markerName); |
59 output.shouldContain(marker); |
56 } |
60 } |
57 } |
61 } |