下面列出了java.lang.Process#waitFor ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static void initialize(String carName, String size, int numThreads, boolean useBeans) {
try {
car = carName;
/* Calling this function directly does not launch the client now. According to testing, it seems the getMain method of boot does not work properlly.
Thus these ugly codes are temporarily used fot verifing that the whole framework works
Will be changed once the problem is fixed
*/
//ClientCLI.main(new String[] { car, "-i", "-t", numThreads + "", "-s", size, useBeans ? "-b" : "" });
gero = System.getProperty("org.apache.geronimo.home.dir");
String jhome= System.getProperty("java.home");
ProcessBuilder pb = new ProcessBuilder(jhome + "/bin/java", "-jar", "-Dkaraf.startLocalConsole=false",gero + "/bin/client.jar", car, "-i", "-t", numThreads + "", "-s", size, useBeans ? "-b" : "");
Process p = pb.start();
p.waitFor();
} catch (Exception e) {
System.err.print("Exception initializing client: " + e.toString());
e.printStackTrace();
System.exit(-1);
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
public static void runIteration(String size, int numThreads, boolean useBeans) {
try {
/* Calling the function directly does not launch the client now. According to testing, it seems the getMain method of boot does not work properlly.
Thus these ugly codes are temporarily used for checking the whole framework
Will be changed once the problem is fixed
*/
//ClientCLI.main(new String[] { car, "-i", "-t", numThreads + "", "-s", size, useBeans ? "-b" : "" });
String jhome= System.getProperty("java.home");
ProcessBuilder pb = new ProcessBuilder(jhome + "/bin/java", "-jar", "-Dkaraf.startLocalConsole=false", gero + "/bin/client.jar", car, "-t", numThreads + "", "-s", size, useBeans ? "-b" : "");
Process p = pb.start();
p.waitFor();
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (stdInput.ready()) { //While there's something in the buffer
//read&print - replace with a buffered read (into an array) if the output doesn't contain CR/LF
System.out.println(stdInput.readLine());
}
} catch (Exception e) {
System.err.print("Exception running client iteration: " + e.toString());
e.printStackTrace();
}
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
public void runRepairnator(EnvVars env) throws IOException,InterruptedException{
Config config = this.config;
System.out.println("jar location " + config.getJarLocation());
RepairnatorProcessBuilder repProcBuilder = new RepairnatorProcessBuilder()
.useJavaExec(config.getJavaExec())
.atJarLocation(config.getJarLocation())
.onGitUrl(config.getGitUrl())
.onGitBranch(config.getGitBranch())
.onGitOAuth(config.getGitOAuth())
.withSmtpUsername(config.getSmtpUsername())
.withSmtpPassword(config.getSmtpPassword())
.withSmtpServer(config.getSmtpServer())
.withSmtpPort(config.getSmtpPort())
.shouldNotifyTo(config.getNotifyTo())
.withRepairTools(config.getTools())
.withSonarRules(config.getSonarRules())
.useSmtpTls(config.useTLSOrSSL())
.asNoTravisRepair()
.alsoCreatePR()
.withMavenHome(config.getMavenHome())
.atWorkSpace(config.getTempDir().getAbsolutePath())
.withOutputDir(config.getTempDir().getAbsolutePath());
ProcessBuilder builder = repProcBuilder.build().directory(config.getTempDir());
builder.redirectErrorStream(true);
builder.inheritIO().redirectOutput(ProcessBuilder.Redirect.PIPE);
Process process = builder.start();
this.printProcessOutPut(process);
process.waitFor();
}
/**
* Runs MXBeanWeirdParamTest$ClientSide with the passed options and redirects
* subprocess standard I/O to the current (parent) process. This provides a
* trace of what happens in the subprocess while it is runnning (and before
* it terminates).
*
* @param serviceUrlStr string representing the JMX service Url to connect to.
*/
private int runClientSide(String serviceUrlStr) throws Exception {
// Building command-line
List<String> opts = buildCommandLine();
opts.add(serviceUrlStr);
// Launch separate JVM subprocess
int exitCode = 0;
String[] optsArray = opts.toArray(new String[0]);
ProcessBuilder pb = new ProcessBuilder(optsArray);
Process p = ProcessTools.startProcess("MXBeanWeirdParamTest$ClientSide", pb);
// Handling end of subprocess
try {
exitCode = p.waitFor();
if (exitCode != 0) {
System.out.println(
"Subprocess unexpected exit value of [" + exitCode +
"]. Expected 0.\n");
}
} catch (InterruptedException e) {
System.out.println("Parent process interrupted with exception : \n " + e + " :" );
// Parent thread unknown state, killing subprocess.
p.destroyForcibly();
throw new RuntimeException(
"Parent process interrupted with exception : \n " + e + " :" );
} finally {
return exitCode;
}
}
private static void runtool(jvm jvm, String loc, String[] args)
throws IOException
{
System.out.println(concatenate(args) + ':');
if (jvm == null) {
com.pivotal.gemfirexd.internal.iapi.tools.run.main(args);
return;
}
Vector cmd = jvm.getCommandLine();
cmd.addElement("-jar");
cmd.addElement(loc);
for (int i=0; i < args.length; i++) {
cmd.addElement(args[i]);
}
String command = concatenate((String[]) cmd.toArray(new String[0]));
Process pr = null;
try
{
pr = Runtime.getRuntime().exec(command);
BackgroundStreamSaver saver =
new BackgroundStreamSaver(pr.getInputStream(), System.out);
saver.finish();
pr.waitFor();
pr.destroy();
} catch(Throwable t) {
System.out.println("Process exception: " + t.getMessage());
if (pr != null)
{
pr.destroy();
pr = null;
}
}
}
private static void runtool(jvm jvm, String loc, String[] args)
throws IOException
{
System.out.println(concatenate(args) + ':');
if (jvm == null) {
com.pivotal.gemfirexd.internal.iapi.tools.run.main(args);
return;
}
Vector cmd = jvm.getCommandLine();
cmd.addElement("-jar");
cmd.addElement(loc);
for (int i=0; i < args.length; i++) {
cmd.addElement(args[i]);
}
String command = concatenate((String[]) cmd.toArray(new String[0]));
Process pr = null;
try
{
pr = Runtime.getRuntime().exec(command);
BackgroundStreamSaver saver =
new BackgroundStreamSaver(pr.getInputStream(), System.out);
saver.finish();
pr.waitFor();
pr.destroy();
} catch(Throwable t) {
System.out.println("Process exception: " + t.getMessage());
if (pr != null)
{
pr.destroy();
pr = null;
}
}
}