Move execAndCheck() to ProcessController
This commit is contained in:
parent
b197618d13
commit
ce770b032a
|
|
@ -29,6 +29,7 @@ import org.apache.commons.io.FileUtils;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.broadinstitute.sting.utils.Utils;
|
||||||
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
import org.broadinstitute.sting.utils.exceptions.ReviewedStingException;
|
||||||
import org.broadinstitute.sting.utils.exceptions.UserException;
|
import org.broadinstitute.sting.utils.exceptions.UserException;
|
||||||
|
|
||||||
|
|
@ -267,6 +268,25 @@ public class ProcessController {
|
||||||
return new ProcessOutput(exitCode, stdout, stderr);
|
return new ProcessOutput(exitCode, stdout, stderr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Executes a command line program with the settings and waits for it to return,
|
||||||
|
* processing the output on a background thread.
|
||||||
|
*
|
||||||
|
* Throws an IOException if the ProcessOutput exit code is nonzero
|
||||||
|
*
|
||||||
|
* @param settings Settings to be run.
|
||||||
|
*/
|
||||||
|
public ProcessOutput execAndCheck(ProcessSettings settings) throws IOException {
|
||||||
|
ProcessOutput po = exec(settings);
|
||||||
|
if (po.getExitValue() != 0) {
|
||||||
|
String message = String.format("Process exited with %d\nCommand Line: %s",
|
||||||
|
po.getExitValue(),
|
||||||
|
Utils.join(" ", settings.getCommand()));
|
||||||
|
throw new IOException(message);
|
||||||
|
}
|
||||||
|
return po;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The set of still running processes.
|
* @return The set of still running processes.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,6 @@ import org.broadinstitute.sting.BaseTest;
|
||||||
import org.broadinstitute.sting.MD5DB;
|
import org.broadinstitute.sting.MD5DB;
|
||||||
import org.broadinstitute.sting.MD5Mismatch;
|
import org.broadinstitute.sting.MD5Mismatch;
|
||||||
import org.broadinstitute.sting.gatk.CommandLineGATK;
|
import org.broadinstitute.sting.gatk.CommandLineGATK;
|
||||||
import org.broadinstitute.sting.utils.Utils;
|
|
||||||
import org.broadinstitute.sting.utils.runtime.*;
|
import org.broadinstitute.sting.utils.runtime.*;
|
||||||
|
|
||||||
public class LoggingIntegrationTest {
|
public class LoggingIntegrationTest {
|
||||||
|
|
@ -100,14 +99,14 @@ public class LoggingIntegrationTest {
|
||||||
// output argument
|
// output argument
|
||||||
|
|
||||||
ProcessSettings ps = new ProcessSettings(cfg.getCmdLine(false).split("\\s+"));
|
ProcessSettings ps = new ProcessSettings(cfg.getCmdLine(false).split("\\s+"));
|
||||||
execAndCheck(pc, ps);
|
pc.execAndCheck(ps);
|
||||||
String output_argument_md5 = md5db.calculateFileMD5(cfg.argumentOutputFile);
|
String output_argument_md5 = md5db.calculateFileMD5(cfg.argumentOutputFile);
|
||||||
|
|
||||||
// pipe to stdout
|
// pipe to stdout
|
||||||
|
|
||||||
ps = new ProcessSettings(cfg.getCmdLine(true).split("\\s+"));
|
ps = new ProcessSettings(cfg.getCmdLine(true).split("\\s+"));
|
||||||
ps.setStdoutSettings(new OutputStreamSettings(cfg.pipedOutputFile));
|
ps.setStdoutSettings(new OutputStreamSettings(cfg.pipedOutputFile));
|
||||||
execAndCheck(pc, ps);
|
pc.execAndCheck(ps);
|
||||||
|
|
||||||
MD5DB.MD5Match result = md5db.testFileMD5("LoggingIntegrationTest", "LoggingIntegrationTest", cfg.pipedOutputFile, output_argument_md5, false);
|
MD5DB.MD5Match result = md5db.testFileMD5("LoggingIntegrationTest", "LoggingIntegrationTest", cfg.pipedOutputFile, output_argument_md5, false);
|
||||||
if(result.failed) {
|
if(result.failed) {
|
||||||
|
|
@ -115,21 +114,4 @@ public class LoggingIntegrationTest {
|
||||||
Assert.fail(failure.toString());
|
Assert.fail(failure.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute a process, and throw an IOException if the exit code is nonzero
|
|
||||||
*
|
|
||||||
* @param pc
|
|
||||||
* @param ps
|
|
||||||
* @throws IOException
|
|
||||||
*/
|
|
||||||
private void execAndCheck(ProcessController pc, ProcessSettings ps) throws IOException {
|
|
||||||
ProcessOutput po = pc.exec(ps);
|
|
||||||
if (po.getExitValue() != 0) {
|
|
||||||
String message = String.format("Process exited with %d\nCommand Line: %s",
|
|
||||||
po.getExitValue(),
|
|
||||||
Utils.join(" ", ps.getCommand()));
|
|
||||||
throw new IOException(message);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue