test/lib/testlibrary/jdk/testlibrary/JcmdBase.java
Print this page
*** 21,79 ****
* questions.
*/
package jdk.testlibrary;
! import java.util.ArrayList;
public class JcmdBase {
private static ProcessBuilder processBuilder = new ProcessBuilder();
/**
* Attach jcmd to the current process
*
! * @param commandArgs
! * jcmd command line parameters, e.g. JFR.start
* @return jcmd output
* @throws Exception
*/
! public final static OutputAnalyzer jcmd(String... commandArgs)
throws Exception {
! ArrayList<String> cmd = new ArrayList<String>();
! String cmdString = "";
!
! // jcmd from the jdk to be tested
! String jcmdPath = JdkFinder.getTool("jcmd", false);
! cmd.add(jcmdPath);
! cmdString += jcmdPath;
!
! String pid = Integer.toString(ProcessTools.getProcessId());
! cmd.add(pid);
! cmdString += " " + pid;
!
! for (int i = 0; i < commandArgs.length; i++) {
! cmd.add(commandArgs[i]);
! cmdString += " " + commandArgs[i];
}
!
! // Log command line for debugging purpose
! System.out.println("Command line:");
! System.out.println(cmdString);
!
! processBuilder.command(cmd);
OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
-
- // Log output for debugging purpose
- System.out.println("Command output:");
System.out.println(output.getOutput());
! if (output.getExitValue() != 0) {
! throw new Exception(processBuilder.command()
! + " resulted in exit value " + output.getExitValue()
! + " , expected to get 0");
! }
return output;
}
}
--- 21,60 ----
* questions.
*/
package jdk.testlibrary;
! import java.util.Arrays;
+ /**
+ * Super class for tests which need to attach jcmd to the current process.
+ */
public class JcmdBase {
private static ProcessBuilder processBuilder = new ProcessBuilder();
/**
* Attach jcmd to the current process
*
! * @param toolArgs
! * jcmd command line parameters, e.g. VM.flags
* @return jcmd output
* @throws Exception
*/
! public final static OutputAnalyzer jcmd(String... toolArgs)
throws Exception {
! JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd");
! launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
! for (String toolArg : toolArgs) {
! launcher.addToolArg(toolArg);
}
! processBuilder.command(launcher.getCommand());
! System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
OutputAnalyzer output = new OutputAnalyzer(processBuilder.start());
System.out.println(output.getOutput());
! output.shouldHaveExitValue(0);
return output;
}
}