Skip to content
Permalink
Browse files
8272854: split runtime/CommandLine/PrintTouchedMethods.java test
Reviewed-by: iklam
  • Loading branch information
iignatev committed Oct 23, 2021
1 parent fec470f commit c94dc2ab60f0548afa868e41a0b87a68030e0cac
Showing 2 changed files with 56 additions and 18 deletions.
@@ -28,8 +28,7 @@
* @modules java.base/jdk.internal.misc
* java.management
* @library /test/lib
* @compile TestLogTouchedMethods.java PrintTouchedMethods.java
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+LogTouchedMethods PrintTouchedMethods
* @run driver PrintTouchedMethods
*/

import java.io.File;
@@ -45,7 +44,7 @@ public static void main(String args[]) throws Exception {
"-XX:-UnlockDiagnosticVMOptions",
"-XX:+LogTouchedMethods",
"-XX:+PrintTouchedMethodsAtExit",
"TestLogTouchedMethods");
TestLogTouchedMethods.class.getName());

// UnlockDiagnostic turned off, should fail
OutputAnalyzer output = new OutputAnalyzer(pb.start());
@@ -57,7 +56,7 @@ public static void main(String args[]) throws Exception {
"-XX:+UnlockDiagnosticVMOptions",
"-XX:+LogTouchedMethods",
"-XX:+PrintTouchedMethodsAtExit",
"TestLogTouchedMethods");
TestLogTouchedMethods.class.getName());
output = new OutputAnalyzer(pb.start());
// check order:
// 1 "# Method::print_touched_methods version 1" is the first in first line
@@ -84,7 +83,7 @@ public static void main(String args[]) throws Exception {
"-Xint",
"-XX:+LogTouchedMethods",
"-XX:+PrintTouchedMethodsAtExit",
"TestLogTouchedMethods");
TestLogTouchedMethods.class.getName());
output = new OutputAnalyzer(pb.start());
lines = output.asLines();

@@ -107,7 +106,7 @@ public static void main(String args[]) throws Exception {
"-XX:+LogTouchedMethods",
"-XX:+PrintTouchedMethodsAtExit",
"-XX:-TieredCompilation",
"TestLogTouchedMethods");
TestLogTouchedMethods.class.getName());
output = new OutputAnalyzer(pb.start());
lines = output.asLines();

@@ -123,16 +122,5 @@ public static void main(String args[]) throws Exception {
output.shouldContain("TestLogTouchedMethods.methodA:()V");
output.shouldNotContain("TestLogTouchedMethods.methodB:()V");
output.shouldHaveExitValue(0);

// Test jcmd PrintTouchedMethods VM.print_touched_methods
String pid = Long.toString(ProcessTools.getProcessId());
pb = new ProcessBuilder();
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.print_touched_methods"});
output = new OutputAnalyzer(pb.start());
try {
output.shouldContain("PrintTouchedMethods.main:([Ljava/lang/String;)V");
} catch (RuntimeException e) {
output.shouldContain("Unknown diagnostic command");
}
}
}
}
@@ -0,0 +1,50 @@
/*
* Copyright (c) 2015, 2021, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/*
* @test
* @bug 8025692
* @summary Test jcmd PrintTouchedMethods VM.print_touched_methods
* @modules java.base/jdk.internal.misc
* java.management
* @library /test/lib
* @run main/othervm -XX:+UnlockDiagnosticVMOptions -XX:+LogTouchedMethods PrintTouchedMethodsJcmd
*/

import jdk.test.lib.process.OutputAnalyzer;
import jdk.test.lib.JDKToolFinder;

public class PrintTouchedMethodsJcmd {

public static void main(String args[]) throws Exception {
var pid = Long.toString(ProcessHandle.current().pid());
var pb = new ProcessBuilder();
pb.command(new String[] {JDKToolFinder.getJDKTool("jcmd"), pid, "VM.print_touched_methods"});
var output = new OutputAnalyzer(pb.start());
try {
output.shouldContain("PrintTouchedMethodsJcmd.main:([Ljava/lang/String;)V");
} catch (RuntimeException e) {
output.shouldContain("Unknown diagnostic command");
}
}
}

1 comment on commit c94dc2a

@openjdk-notifier
Copy link

@openjdk-notifier openjdk-notifier bot commented on c94dc2a Oct 23, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.