test/lib/testlibrary/jdk/testlibrary/JcmdBase.java
Print this page
@@ -21,59 +21,40 @@
* questions.
*/
package jdk.testlibrary;
-import java.util.ArrayList;
+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 commandArgs
- * jcmd command line parameters, e.g. JFR.start
+ * @param toolArgs
+ * jcmd command line parameters, e.g. VM.flags
* @return jcmd output
* @throws Exception
*/
- public final static OutputAnalyzer jcmd(String... commandArgs)
+ public final static OutputAnalyzer jcmd(String... toolArgs)
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];
+ JDKToolLauncher launcher = JDKToolLauncher.createUsingTestJDK("jcmd");
+ launcher.addToolArg(Integer.toString(ProcessTools.getProcessId()));
+ for (String toolArg : toolArgs) {
+ launcher.addToolArg(toolArg);
}
-
- // Log command line for debugging purpose
- System.out.println("Command line:");
- System.out.println(cmdString);
-
- processBuilder.command(cmd);
+ processBuilder.command(launcher.getCommand());
+ System.out.println(Arrays.toString(processBuilder.command().toArray()).replace(",", ""));
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");
- }
+ output.shouldHaveExitValue(0);
return output;
}
}