@Override public Long call() throws Exception { Executor executor = new DefaultExecutor(); executor.setProcessDestroyer(new ShutdownHookProcessDestroyer()); ExecuteWatchdog watchDog = new ExecuteWatchdog(watchdogTimeout); executor.setWatchdog(watchDog); executor.setStreamHandler(new PumpStreamHandler(new MyLogOutputStream(handler, true), new MyLogOutputStream(handler, false))); Long exitValue; try { exitValue = new Long(executor.execute(commandline)); } catch (ExecuteException e) { exitValue = new Long(e.getExitValue()); } if (watchDog.killedProcess()) { exitValue = WATCHDOG_EXIST_VALUE; } return exitValue; }
@When("I run maven with args: (.*)") public void runMavenCommand(List<String> mvnArgs) throws IOException { this.mvnArgs.addAll(mvnArgs); System.out.println("Launching Maven with args <" + Joiner.on(" ").join(mvnArgs) + ">"); CommandLine cmdLine = new CommandLine(getCommandLine()); for (String mvnArg : mvnArgs) { cmdLine.addArgument(mvnArg); } if (confdForCucumberLocation != null) { cmdLine.addArgument("-Dcucumber.confd.binary.path=" + confdForCucumberLocation); } DefaultExecutor executor = new DefaultExecutor(); if (projectRootAsFile != null) { executor.setWorkingDirectory(projectRootAsFile); } executor.setExitValue(expectedExitCode); executor.setStreamHandler(new PumpStreamHandler(new LogOutputStream() { @Override protected void processLine(String line, int level) { System.out.println(line); executorOutput.add(line); } })); exitCode = executor.execute(cmdLine, environment); fullOutput = Joiner.on(LINE_SEPARATOR).join(executorOutput); }
/** * 日志文件输出方式 * * 优点:支持将目标数据实时输出到指定日志文件中去 * 缺点: * 标准输出和错误输出优先级固定,可能和脚本中顺序不一致 * Java无法实时获取 * * @param command * @param scriptFile * @param logFile * @param params * @return * @throws IOException */ public static int execToFile(String command, String scriptFile, String logFile, String... params) throws IOException { // 标准输出:print (null if watchdog timeout) // 错误输出:logging + 异常 (still exists if watchdog timeout) // 标准输入 FileOutputStream fileOutputStream = new FileOutputStream(logFile, true); PumpStreamHandler streamHandler = new PumpStreamHandler(fileOutputStream, fileOutputStream, null); // command CommandLine commandline = new CommandLine(command); commandline.addArgument(scriptFile); if (params!=null && params.length>0) { commandline.addArguments(params); } // exec DefaultExecutor exec = new DefaultExecutor(); exec.setExitValues(null); exec.setStreamHandler(streamHandler); int exitValue = exec.execute(commandline); // exit code: 0=success, 1=error return exitValue; }
/** * Starts the jekyll build process (jekyll build --incremental) * @return true, if jekyll build was successful */ public boolean startJekyllCI() { int exitValue = -1; String line = JEKYLL_PATH; ByteArrayOutputStream jekyllBuildOutput = new ByteArrayOutputStream(); CommandLine cmdLine = CommandLine.parse(line); cmdLine.addArgument(JEKYLL_OPTION_BUILD); cmdLine.addArgument(JEKYLL_OPTION_INCR); DefaultExecutor executor = new DefaultExecutor(); executor.setWorkingDirectory(new File(LOCAL_REPO_PATH)); PumpStreamHandler streamHandler = new PumpStreamHandler(jekyllBuildOutput); executor.setStreamHandler(streamHandler); try { LOGGER.info("Starting jekyll build"); exitValue = executor.execute(cmdLine); LOGGER.info("Jekyll build command executed"); } catch (IOException e) { LOGGER.error("Error while executing jekyll build. Error message: {}", e.getMessage()); e.printStackTrace(); return false; } printJekyllStatus(exitValue, jekyllBuildOutput.toString()); return true; }
public static void main(String[] args) throws Exception { String cmd = "/tmp/test.sh"; CommandLine cmdLine = CommandLine.parse("/bin/bash " + cmd); ByteArrayOutputStream stdout = new ByteArrayOutputStream(); ByteArrayOutputStream stderr = new ByteArrayOutputStream(); PumpStreamHandler psh = new PumpStreamHandler(stdout, stderr); psh.setStopTimeout(TIMEOUT_FIVE_MINUTES); ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT_TEN_MINUTES); // timeout in milliseconds Executor executor = new DefaultExecutor(); executor.setExitValue(0); executor.setStreamHandler(psh); executor.setWatchdog(watchdog); int exitValue = executor.execute(cmdLine, Collections.emptyMap()); System.out.println(exitValue); }
public static List<Failure> runH2Spec(File targetDirectory, int port, final int timeout, final int maxHeaderLength, final Set<String> excludeSpecs) throws IOException { File reportsDirectory = new File(targetDirectory, "reports"); if (!reportsDirectory.exists()) { reportsDirectory.mkdir(); } File junitFile = new File(reportsDirectory, "TEST-h2spec.xml"); File h2spec = getH2SpecFile(targetDirectory); Executor exec = new DefaultExecutor(); PumpStreamHandler psh = new PumpStreamHandler(System.out, System.err, System.in); exec.setStreamHandler(psh); exec.setExitValues(new int[]{0, 1}); psh.start(); if (exec.execute(buildCommandLine(h2spec, port, junitFile, timeout, maxHeaderLength)) != 0) { return parseReports(reportsDirectory, excludeSpecs); } psh.stop(); return Collections.emptyList(); }
public void compile(String cwd, Submission submission) throws RuntimeException { CommandLine cmd = new CommandLine(compiler); cmd.addArgument("-basedir=" + cwd); cmd.addArgument("-compiler=" + realCompiler); cmd.addArgument("-filename=" + fileName + "." + suffix); cmd.addArgument("-timeout=" + watchdogTimeout); cmd.addArgument("-std=" + std); logger.info(cmd.toString()); ByteArrayOutputStream stderr = new ByteArrayOutputStream(); DefaultExecutor executor = new DefaultExecutor(); executor.setStreamHandler(new PumpStreamHandler(null, stderr, null)); try { executor.execute(cmd); if (stderr.toString().length() > 0) { submission.setStatus(Submission.STATUS_CE); submission.setError("Compile error"); logger.warn(stderr.toString()); throw new RuntimeException("Sandbox Aborted."); } logger.info("Compile OK"); } catch (IOException e) { logger.warn("Compile error:\t" + e.getMessage()); throw new RuntimeException("An Error Occurred."); } }
/** * Esegue un comando di shell * @param command comando * @param args lista di argomenti (ogni elemento puo' contenere spazi), puo' essere null * @param outputStream ByteArrayOutputStream che conterrà l'output del comando * @return the error message (will be empty for a return code >0), or null if there was no error */ public String exec(String command, List<String> args, ByteArrayOutputStream outputStream) { int exitValue=1; try { CommandLine commandLine = new CommandLine(command); if (args!=null) { for (String arg : args) { commandLine.addArgument(arg, false); // Don't handle quoting } } DefaultExecutor executor = new DefaultExecutor(); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream); executor.setStreamHandler(streamHandler); log.debug("Executing shell command: {}", commandLine); exitValue = executor.execute(commandLine); } catch (Exception e) { log.error("Failed to execute shell command: " + command + " " + args, e); return e.getMessage(); } return exitValue>0?"":null; }
public int execute(String[] args, @Nullable Path workingDir, Map<String, String> addEnv) throws IOException { if (!Files.isExecutable(file)) { Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>(); perms.add(PosixFilePermission.OWNER_READ); perms.add(PosixFilePermission.OWNER_EXECUTE); Files.setPosixFilePermissions(file, perms); } ExecuteWatchdog watchdog = new ExecuteWatchdog(TIMEOUT); CommandLine cmd = new CommandLine(file.toFile()); cmd.addArguments(args); DefaultExecutor exec = new DefaultExecutor(); exec.setWatchdog(watchdog); exec.setStreamHandler(createStreamHandler()); exec.setExitValues(null); if (workingDir != null) { exec.setWorkingDirectory(workingDir.toFile()); } in.close(); LOG.info("Executing: {}", cmd.toString()); Map<String, String> env = new HashMap<>(System.getenv()); env.putAll(addEnv); return exec.execute(cmd, env); }
@Override public Map<String,Object> handle (Task aTask) throws Exception { CommandLine cmd = new CommandLine ("mediainfo"); cmd.addArgument(aTask.getRequiredString("input")); log.debug("{}",cmd); DefaultExecutor exec = new DefaultExecutor(); File tempFile = File.createTempFile("log", null); try (PrintStream stream = new PrintStream(tempFile);) { exec.setStreamHandler(new PumpStreamHandler(stream)); exec.execute(cmd); return parse(FileUtils.readFileToString(tempFile)); } catch (ExecuteException e) { throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile))); } finally { FileUtils.deleteQuietly(tempFile); } }
@Override public Object handle(Task aTask) throws Exception { List<String> options = aTask.getList("options", String.class); CommandLine cmd = new CommandLine ("ffmpeg"); options.forEach(o->cmd.addArgument(o)); log.debug("{}",cmd); DefaultExecutor exec = new DefaultExecutor(); File tempFile = File.createTempFile("log", null); try (PrintStream stream = new PrintStream(tempFile);) { exec.setStreamHandler(new PumpStreamHandler(stream)); int exitValue = exec.execute(cmd); return exitValue!=0?FileUtils.readFileToString(tempFile):cmd.toString(); } catch (ExecuteException e) { throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile))); } finally { FileUtils.deleteQuietly(tempFile); } }
@Override public Map<String,Object> handle(Task aTask) throws Exception { CommandLine cmd = new CommandLine ("ffprobe"); cmd.addArgument("-v") .addArgument("quiet") .addArgument("-print_format") .addArgument("json") .addArgument("-show_error") .addArgument("-show_format") .addArgument("-show_streams") .addArgument(aTask.getRequiredString("input")); log.debug("{}",cmd); DefaultExecutor exec = new DefaultExecutor(); File tempFile = File.createTempFile("log", null); try (PrintStream stream = new PrintStream(tempFile);) { exec.setStreamHandler(new PumpStreamHandler(stream)); exec.execute(cmd); return parse(FileUtils.readFileToString(tempFile)); } catch (ExecuteException e) { throw new ExecuteException(e.getMessage(),e.getExitValue(), new RuntimeException(FileUtils.readFileToString(tempFile))); } finally { FileUtils.deleteQuietly(tempFile); } }
private void runCancelJob(Master.Job message) { if (getAbortStatus(message.abortUrl, message.trackingId)) { CommandLine cmdLine = new CommandLine("/bin/bash"); cmdLine.addArgument(agentConfig.getJob().getJobArtifact("cancel")); cmdLine.addArgument(message.jobId); DefaultExecutor killExecutor = new DefaultExecutor(); ExecuteWatchdog watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT); killExecutor.setWatchdog(watchdog); try { log.info("Cancel command: {}", cmdLine); killExecutor.execute(cmdLine); TaskEvent taskEvent = (TaskEvent) message.taskEvent; String outPath = agentConfig.getJob().getOutPath(taskEvent.getJobName(), message.jobId); String errPath = agentConfig.getJob().getErrorPath(taskEvent.getJobName(), message.jobId); Worker.Result result = new Worker.Result(-9, agentConfig.getUrl(errPath), agentConfig.getUrl(outPath), null, message); getSender().tell(new Worker.WorkFailed(result), getSelf()); } catch (IOException e) { log.error(e, "Error cancelling job"); } } }
private void runCancelJob(Master.Job message) { if (getAbortStatus(message.abortUrl, message.trackingId)) { CommandLine cmdLine = new CommandLine("/bin/bash"); cmdLine.addArgument(agentConfig.getJob().getJobArtifact("cancel")); cmdLine.addArgument(message.jobId); DefaultExecutor killExecutor = new DefaultExecutor(); ExecuteWatchdog watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT); killExecutor.setWatchdog(watchdog); try { log.info("Cancel command: {}", cmdLine); killExecutor.execute(cmdLine); } catch (IOException e) { log.error(e, "Error cancelling job"); } } }
void exec(String action, File dir, CommandLine cmdLine) { String label = action + ": " + cmdLine; try { DefaultExecutor executor = new DefaultExecutor(); executor.setWorkingDirectory(dir); Map<String, String> environment = EnvironmentUtils.getProcEnvironment(); environment.put("PATH", environment.get("PATH") + ":" + new File(frontendDirectory, "node").getAbsolutePath()); int exitValue = executor.execute(cmdLine, environment); if (exitValue == 0) { getLog().info(label + ": OK"); } else { throw new MojoExecutionException("EXEC FAILURE: " + label); } } catch (RuntimeException re) { throw re; } catch (Exception e) { throw new IllegalStateException("EXEC FAILURE: " + label, e); } }
/** * Executes the given command synchronously. * * @param command The command to execute. * @param processInput Input provided to the process. * @return The result of the execution, or empty if the process does not terminate within the timeout set for this executor. * @throws IOException if the process execution failed. */ public Optional<ProcessResult> execute(String command, String processInput) throws IOException { ByteArrayOutputStream processErr = new ByteArrayOutputStream(); ByteArrayOutputStream processOut = new ByteArrayOutputStream(); DefaultExecutor executor = new DefaultExecutor(); executor.setStreamHandler(createStreamHandler(processOut, processErr, processInput)); ExecuteWatchdog watchDog = new ExecuteWatchdog(TimeUnit.SECONDS.toMillis(timeoutSeconds)); executor.setWatchdog(watchDog); executor.setExitValues(successExitCodes); int exitCode; try { exitCode = executor.execute(CommandLine.parse(command)); } catch (ExecuteException e) { exitCode = e.getExitValue(); } return (watchDog.killedProcess()) ? Optional.empty() : Optional.of(new ProcessResult(exitCode, processOut.toString(), processErr.toString())); }
public static ExecResult setupSudoCredentials(String password) { ExecCommand execCommand = new ExecCommand("sudo"); execCommand.addArgument("--validate", false); execCommand.addArgument("--stdin", false); Executor executor = new DefaultExecutor(); executor.setWorkingDirectory(execCommand.getWorkingDirectory()); executor.setExitValues(execCommand.getExitValues()); ExecOutputStream execOutputStream = new ExecOutputStream(); executor.setStreamHandler(new PumpStreamHandler(execOutputStream, execOutputStream, new ExecInputStream(password))); try { executor.execute(execCommand); } catch (IOException e) { return new ExecResult(execOutputStream.getOutput(), e); } return new ExecResult(execOutputStream.getOutput()); }
@Deprecated public static ExecResult execCommand(CommandLine commandLine, File workDir, int[] exitValues, boolean routeToCapture, boolean routeToStdout) { Executor executor = new DefaultExecutor(); if (workDir != null) { executor.setWorkingDirectory(workDir); } if (exitValues != null) { executor.setExitValues(exitValues); } ExecOutputStream execOutputStream = new ExecOutputStream(routeToCapture, routeToStdout); PumpStreamHandler streamHandler = new PumpStreamHandler(execOutputStream); executor.setStreamHandler(streamHandler); try { executor.execute(commandLine); } catch (IOException e) { return new ExecResult(false, execOutputStream.getOutput(), e); } return new ExecResult(true, execOutputStream.getOutput(), null); }
private String execToString(File model, File properties) throws ExecuteException, IOException { String command; String prism = (System.getProperty("os.name").contains("Windows"))? "prism.bat" : "prism"; if (mConverter.isBoundedNet()) { command = mPrismPath + " " + model.getAbsolutePath() + " " + properties.getAbsolutePath() + " -exportstates " + mFilesPath+mStatesFileName; } else { command = mPrismPath + " " + model.getAbsolutePath() + " " + properties.getAbsolutePath() + " -ex"; } ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream errorStream = new ByteArrayOutputStream(); CommandLine commandline = CommandLine.parse(command); DefaultExecutor exec = new DefaultExecutor(); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, errorStream); //Workbench.consoleMessage("Executing: " + command); exec.setStreamHandler(streamHandler); System.out.println("Executing "+command); exec.execute(commandline); System.out.println("ID-Mapping: "+TransitionToIDMapper.getMapping()); return(outputStream.toString()); }
@BeforeClass public static void setUpBeforeClass() throws Exception { System.out.println("Java Temp Dir: " +System.getProperty("java.io.tmpdir")); executor = new DefaultExecutor(); resultHandler = new DefaultExecuteResultHandler(); String javaHome = System.getProperty("java.home"); String userDir = System.getProperty("user.dir"); executor.setStreamHandler(new PumpStreamHandler(System.out)); watchdog = new ExecuteWatchdog(10000); executor.setWatchdog(watchdog); executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe").addArgument("-version")); executor.execute(new CommandLine(javaHome + SystemUtils.FILE_SEPARATOR + "bin"+ SystemUtils.FILE_SEPARATOR+"java.exe") .addArgument("-jar") .addArgument(userDir + "/../moneta-dropwizard/target/moneta-dropwizard-" + ContractTestSuite.getProjectVersion() + ".jar") .addArgument("server") .addArgument("src/main/resources/dropwizard/moneta-dropwizard.yaml"), resultHandler); Thread.sleep(3000); System.out.println("Test sequence starting...."); }
/** * Verify if dot can be started and print out the version to stdout. * * @return True if "dot -V" ran successfully, false otherwise * * @throws IOException If running dot fails. */ public static boolean checkDot() throws IOException { // call graphviz-dot via commons-exec CommandLine cmdLine = new CommandLine(DOT_EXE); cmdLine.addArgument("-V"); DefaultExecutor executor = new DefaultExecutor(); executor.setExitValue(0); ExecuteWatchdog watchdog = new ExecuteWatchdog(60000); executor.setWatchdog(watchdog); executor.setStreamHandler(new PumpStreamHandler(System.out, System.err)); int exitValue = executor.execute(cmdLine); if(exitValue != 0) { System.err.println("Could not run '" + DOT_EXE + "', had exit value: " + exitValue + "!"); return false; } return true; }
@Test public void testCommonsCodecsConflicts() throws IOException, VerificationException { SetupContent setupContent = new SetupContent().invoke(); String shadedJar = setupContent.getShadedJar(); String issue24POM = setupContent.getIssue24POM(); String issue24TestFile = setupContent.getIssue24TestFile(); File cwdFile = setupContent.getCwdFile(); String line = String.format("java -jar %s -v -p %s %s %s", shadedJar, issue24POM, issue24TestFile, StringUtils.join(new String[] {cwdFile.getAbsolutePath(), "testCommonsCodecsConflicts.html"}, File.separator)); CommandLine command = CommandLine.parse(line); DefaultExecutor executor = new DefaultExecutor(); ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(out, err)); executor.execute(command); }
@Test public void shouldNotOverwriteInputFile() throws IOException, VerificationException { SetupContent setupContent = new SetupContent().invoke(); String shadedJar = setupContent.getShadedJar(); String issue24POM = setupContent.getIssue24POM(); String issue24TestFile = setupContent.getIssue24TestFile(); File specFile = new File(issue24TestFile); File specBackupFile = new File(issue24TestFile + ".orig"); FileUtils.copyFile(specFile, specBackupFile); String line = String.format("java -jar %s -v -p %s %s", shadedJar, issue24POM, issue24TestFile); CommandLine command = CommandLine.parse(line); DefaultExecutor executor = new DefaultExecutor(); executor.setWorkingDirectory(specFile.getParentFile()); ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream(); executor.setStreamHandler(new PumpStreamHandler(out, err)); executor.execute(command); assertTrue("The specification should not be overriden by the output", FileUtils.contentEquals(specFile,specBackupFile)); }
public AbstractCppcheckCommand(IConsole console, String[] defaultArguments, long timeout, String binaryPath) { this.binaryPath = binaryPath; this.console = console; this.defaultArguments = defaultArguments; executor = new DefaultExecutor(); // all modes of operation returns 0 when no error occured, executor.setExitValue(0); watchdog = new ExecuteWatchdog(timeout); executor.setWatchdog(watchdog); out = new ByteArrayOutputStream(); err = new ByteArrayOutputStream(); processStdOut = new LineFilterOutputStream(new TeeOutputStream(out, console.getConsoleOutputStream(false)), DEFAULT_CHARSET); processStdErr = new LineFilterOutputStream(new TeeOutputStream(err, console.getConsoleOutputStream(true)), DEFAULT_CHARSET); }
public void createSecureConfiguration() throws InterpreterException { Properties properties = getProperties(); CommandLine cmdLine = CommandLine.parse(shell); cmdLine.addArgument("-c", false); String kinitCommand = String.format("kinit -k -t %s %s", properties.getProperty("zeppelin.shell.keytab.location"), properties.getProperty("zeppelin.shell.principal")); cmdLine.addArgument(kinitCommand, false); DefaultExecutor executor = new DefaultExecutor(); try { executor.execute(cmdLine); } catch (Exception e) { LOGGER.error("Unable to run kinit for zeppelin user " + kinitCommand, e); throw new InterpreterException(e); } }
/** * Cleans up any commands that have been running by... * - removing any commands that have finished. * - deleting any files if needed. * @return true if all the commands have finished. */ private boolean doCleanupOnCommandsFinished() { ArrayList<String> deleteProcesses = new ArrayList<String>(); for (Map.Entry<String, DefaultExecutor> e : commandsRunning.entrySet()) { if (!e.getValue().getWatchdog().isWatching()) { deleteProcesses.add(e.getKey()); } } for (String deleteProcess : deleteProcesses) { Logger.getLogger(FolderOptions.class).info("[Command Finished] " + getCommandToRun(deleteProcess)); if (deleteAfterCommand) { Logger.getLogger(FolderOptions.class).info("[Removing File] " + deleteProcess); new File(deleteProcess).delete(); } commandsRunning.remove(deleteProcess); } return commandsRunning.isEmpty(); }
public int getVersion() throws Exception { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); CommandLine cmdLine = new CommandLine(p4d); cmdLine.addArgument("-V"); DefaultExecutor executor = new DefaultExecutor(); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream); executor.setStreamHandler(streamHandler); executor.execute(cmdLine); int version = 0; for (String line : outputStream.toString().split("\\n")) { if (line.startsWith("Rev. P4D")) { Pattern p = Pattern.compile("\\d{4}\\.\\d{1}"); Matcher m = p.matcher(line); while (m.find()) { String found = m.group(); found = found.replace(".", ""); // strip "." version = Integer.parseInt(found); } } } logger.info("P4D Version: " + version); return version; }
@SuppressWarnings("rawtypes") public static void execAsync(String display, CommandLine commandline) throws ShellCommandException { log.debug("executing async command: " + commandline); DefaultExecutor exec = new DefaultExecutor(); ExecuteResultHandler handler = new DefaultExecuteResultHandler(); PumpStreamHandler streamHandler = new PumpStreamHandler( new PritingLogOutputStream()); exec.setStreamHandler(streamHandler); try { if (display == null || display.isEmpty()) { exec.execute(commandline, handler); } else { Map env = EnvironmentUtils.getProcEnvironment(); EnvironmentUtils.addVariableToEnvironment(env, "DISPLAY=:" + display); exec.execute(commandline, env, handler); } } catch (Exception e) { throw new ShellCommandException( "An error occured while executing shell command: " + commandline, e); } }
private Session(Builder builder) { Session.id++; this.config = builder.config; this.source = builder.input; this.cmdLine = builder.cmdLine; this.cleanUpOnExit = builder.cleanUpOnExit; this.setOutputs(builder.outputs); this.executor = new DefaultExecutor(); // set this locally not globally -| this.workingDirectoryPath = (builder.workingDirectoryPath == null || builder.workingDirectoryPath == "")?Globals.getEnv(Globals.Vars.WORKING_DIRECTORY):builder.workingDirectoryPath; this.executonTimeout = ExecuteWatchdog.INFINITE_TIMEOUT; this.watchdog = new ExecuteWatchdog(executonTimeout); this.observers = new ArrayList<ISessionObserver>(); logger.info("Command :" + this.cmdLine.toString()); }
public static int executeCommand(String command,ExecuteWatchdog watchdog) { CommandLine cmdLine = CommandLine.parse(command); DefaultExecutor executor = new DefaultExecutor(); executor.setStreamHandler(new PumpStreamHandler(System.out,System.err, null)); executor.setExitValues(new int[]{0, 1}); if(watchdog != null){ executor.setWatchdog(watchdog); } int exitValue = 0; try { exitValue = executor.execute(cmdLine); } catch (IOException e) { exitValue = 1; log.error("error executing command", e); } return exitValue; }
public static ExecuteResult runOnLocalhost(ExecExceptionHandling exceptionHandling, CommandLine cmdLineOnLocalhost) throws ExecuteException, IOException { DefaultExecutor executor = new DefaultExecutor(); OutputsToStringStreamHandler streamHandler = new OutputsToStringStreamHandler(); executor.setStreamHandler(streamHandler); executor.setExitValues(null); int exitValue = executor.execute(cmdLineOnLocalhost); ExecuteResult result = new ExecuteResult(streamHandler.getStandardOutput(), streamHandler.getStandardError(), exitValue); switch (exceptionHandling) { case RETURN_EXIT_CODE_WITHOUT_THROWING_EXCEPTION: break; case THROW_EXCEPTION_IF_EXIT_CODE_NOT_0: if (exitValue != 0) { throw new ExecuteException("Failed to execute " + cmdLineOnLocalhost + " - Output: " + result, exitValue); } break; default: break; } return result; }
public static boolean testExecutable() { CommandLine commandLine = CommandLine.parse(PythonCLIProcessor.pythonExecutable + " --version"); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); Executor executor = new DefaultExecutor(); // put a watchdog with a timeout ExecuteWatchdog watchdog = new ExecuteWatchdog(new Long(timeout_seconds) * 1000); executor.setWatchdog(watchdog); try { executor.execute(commandLine, resultHandler); resultHandler.waitFor(); int exitVal = resultHandler.getExitValue(); if (exitVal != 0) { return false; } return true; } catch (Exception e) { return false; } }
private static boolean testExecutable() { CommandLine commandLine = CommandLine.parse(RCLIProcessor.rExecutable + " " + VERSION_CALL); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); Executor executor = new DefaultExecutor(); // put a watchdog with a timeout ExecuteWatchdog watchdog = new ExecuteWatchdog(new Long(TIMEOUT_SECONDS) * 1000); executor.setWatchdog(watchdog); try { executor.execute(commandLine, resultHandler); resultHandler.waitFor(); int exitVal = resultHandler.getExitValue(); if (exitVal != 0) { return false; } return true; } catch (Exception e) { return false; } }
private static void applyFileMode(final File file, final FileMode fileMode) throws MojoExecutionException { if (OS.isFamilyUnix() || OS.isFamilyMac()) { final String smode = fileMode.toChmodStringFull(); final CommandLine cmdLine = new CommandLine("chmod"); cmdLine.addArgument(smode); cmdLine.addArgument(file.getAbsolutePath()); final Executor executor = new DefaultExecutor(); try { final int result = executor.execute(cmdLine); if (result != 0) { throw new MojoExecutionException("Error # " + result + " while trying to set mode \"" + smode + "\" for file: " + file.getAbsolutePath()); } } catch (final IOException ex) { throw new MojoExecutionException("Error while trying to set mode \"" + smode + "\" for file: " + file.getAbsolutePath(), ex); } } else { file.setReadable(fileMode.isUr() || fileMode.isGr() || fileMode.isOr()); file.setWritable(fileMode.isUw() || fileMode.isGw() || fileMode.isOw()); file.setExecutable(fileMode.isUx() || fileMode.isGx() || fileMode.isOx()); } }
public static int run(final GeneratorConfig gc, final ExecutionConfig ec) throws IOException, InterruptedException { final File configFile = File.createTempFile("trainbenchmark-generator-", ".conf"); final String configPath = configFile.getAbsolutePath(); gc.saveToFile(configPath); final String projectName = String.format("trainbenchmark-generator-%s", gc.getProjectName()); final String jarPath = String.format("../%s/build/libs/%s-1.0.0-SNAPSHOT-fat.jar", projectName, projectName); final String javaCommand = String.format("java -Xms%s -Xmx%s -server -jar %s %s", ec.getXms(), ec.getXmx(), jarPath, configPath); final CommandLine cmdLine = CommandLine.parse(javaCommand); final DefaultExecutor executor = new DefaultExecutor(); try { final int exitValue = executor.execute(cmdLine); System.out.println(); return exitValue; } catch (final ExecuteException e) { e.printStackTrace(System.out); return e.getExitValue(); } }
private CmdResultHandler runAsync(String command, CmdResultHandler resultHandler, boolean shouldClone) throws IOException, IOException, IOException, IOException { CmdResultHandler handler = shouldClone ? resultHandler.clone() : resultHandler; PumpStreamHandler streamHandler = handler.getStreamHandler(this); Executor executor = new DefaultExecutor(); executor.setStreamHandler(streamHandler); // String[] arguments = CommandLine.parse(command).toStrings(); // CommandLine cmdLine = new CommandLine(arguments[0]); // for (int i = 1; i < arguments.length; i++) { // cmdLine.addArgument(command, true); // } CommandLine cmdLine = CommandLine.parse(command); executor.execute(cmdLine, getEnvironment(), handler.delegate); return handler; }
static public CommandLineResult runCommand(String command, boolean throwException) throws SakuliException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream error = new ByteArrayOutputStream(); CommandLineResult result = new CommandLineResult(); try { DefaultExecutor executor = new DefaultExecutor(); executor.setStreamHandler(new PumpStreamHandler(outputStream, error)); int exitCode = executor.execute(CommandLine.parse(command)); result.setExitCode(exitCode); result.setOutput(error.toString() + outputStream.toString()); } catch (Exception e) { if (throwException) { throw new SakuliException(e, String.format("Error during execution of command '%s': %s", command, error.toString())); } result.setExitCode(resolveExitCode(e.getMessage())); result.setOutput(e.getMessage()); } return result; }
public static void learn(String path, String factsForLearningFile, String rulesDefinitionFile, String learnedWeightsFile) throws Exception { CommandLine cmdLine = new CommandLine(path + "/learnwts"); cmdLine.addArgument("-i"); cmdLine.addArgument(factsForLearningFile); cmdLine.addArgument("-o"); cmdLine.addArgument(rulesDefinitionFile); cmdLine.addArgument("-t"); cmdLine.addArgument(learnedWeightsFile); cmdLine.addArgument("-g -multipleDatabases"); DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler(); ExecuteWatchdog watchdog = new ExecuteWatchdog(60 * 1000); Executor executor = new DefaultExecutor(); executor.setExitValue(1); executor.setWatchdog(watchdog); executor.execute(cmdLine, resultHandler); resultHandler.waitFor(); }
@Override protected void doRebuild() throws DevShellRebuildException { System.out.println( "Reload!" ); DefaultExecutor executor = new DefaultExecutor(); ByteArrayOutputStream output = new ByteArrayOutputStream(); executor.setStreamHandler( new PumpStreamHandler( output ) ); try { int exitValue = executor.execute( cmdLine ); if( exitValue != 0 ) { throw new DevShellRebuildException( new MavenExecutionException( "Maven exited with a non-zero status: " + exitValue, pom ) ); } } catch( Exception ex ) { throw new DevShellRebuildException( ex, output.toString() ); } }