test/com/sun/tools/attach/RunnerUtil.java
Print this page
rev 9525 : [mq]: 8033104-jvmstat
*** 22,66 ****
*/
import java.io.IOException;
import java.io.File;
import java.nio.file.Files;
- import java.nio.file.Path;
import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
import jdk.testlibrary.OutputAnalyzer;
- import jdk.testlibrary.JDKToolLauncher;
import jdk.testlibrary.ProcessTools;
import jdk.testlibrary.Utils;
import jdk.testlibrary.ProcessThread;
/*
* Utility functions for test runners.
* (Test runner = class that launch a test)
*/
public class RunnerUtil {
/**
* The Application process must be run concurrently with our tests since
* the tests will attach to the Application.
* We will run the Application process in a separate thread.
*
* The Application must be started with flag "-Xshare:off" for the Retransform
* test in TestBasics to pass on all platforms.
*
* The Application will write its pid and shutdownPort in the given outFile.
*/
! public static ProcessThread startApplication(String outFile) throws Throwable {
String classpath = System.getProperty("test.class.path", ".");
! String[] args = Utils.addTestJavaOpts(
! "-Dattach.test=true", "-classpath", classpath, "Application", outFile);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);
ProcessThread pt = new ProcessThread("runApplication", pb);
pt.start();
return pt;
}
/**
* Will stop the running Application.
* First tries to shutdown nicely by connecting to the shut down port.
* If that fails, the process will be killed hard with stopProcess().
*
--- 22,81 ----
*/
import java.io.IOException;
import java.io.File;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
+
import jdk.testlibrary.OutputAnalyzer;
import jdk.testlibrary.ProcessTools;
import jdk.testlibrary.Utils;
import jdk.testlibrary.ProcessThread;
/*
* Utility functions for test runners.
* (Test runner = class that launch a test)
*/
public class RunnerUtil {
+
/**
* The Application process must be run concurrently with our tests since
* the tests will attach to the Application.
* We will run the Application process in a separate thread.
*
* The Application must be started with flag "-Xshare:off" for the Retransform
* test in TestBasics to pass on all platforms.
*
* The Application will write its pid and shutdownPort in the given outFile.
*/
! public static ProcessThread startApplication(String outFile, String... additionalOpts) throws Throwable {
String classpath = System.getProperty("test.class.path", ".");
! String[] myArgs = concat(additionalOpts, new String [] { "-Dattach.test=true", "-classpath", classpath, "Application", outFile });
! String[] args = Utils.addTestJavaOpts(myArgs);
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(args);
ProcessThread pt = new ProcessThread("runApplication", pb);
pt.start();
return pt;
}
+ public static String[] concat(String[] a, String[] b) {
+ if (a == null) {
+ return b;
+ }
+ if (b == null) {
+ return a;
+ }
+ int aLen = a.length;
+ int bLen = b.length;
+ String[] c = new String[aLen + bLen];
+ System.arraycopy(a, 0, c, 0, aLen);
+ System.arraycopy(b, 0, c, aLen, bLen);
+ return c;
+ }
+
/**
* Will stop the running Application.
* First tries to shutdown nicely by connecting to the shut down port.
* If that fails, the process will be killed hard with stopProcess().
*