@Override public boolean apply(String input) { return commandRunner.runAction(input).getExitStatus() > 0; }
@Override public boolean apply(String input) { return commandRunner.runAction(input).getExitStatus() > 0; }
@Override public boolean apply(String input) { return commandRunner.runAction(input).getExitStatus() > 0; }
@Override public boolean apply(String input) { return commandRunner.runAction(input).getExitStatus() > 0; }
public ExecResponse refreshAndRunAction(String action) { checkState(ssh != null, "please call init() before invoking call"); try { ssh.connect(); return runAction(action); } finally { if (ssh != null) ssh.disconnect(); } }
public ExecResponse refreshAndRunAction(String action) { checkState(ssh != null, "please call init() before invoking call"); try { ssh.connect(); return runAction(action); } finally { if (ssh != null) ssh.disconnect(); } }
public ExecResponse refreshAndRunAction(String action) { checkState(ssh != null, "please call init() before invoking call"); try { if (!ssh.isConnected()) { ssh.connect(); } return runAction(action); } finally { if (ssh != null) ssh.disconnect(); } }
public ExecResponse refreshAndRunAction(String action) { checkState(ssh != null, "please call init() before invoking call"); try { if (!ssh.isConnected()) { ssh.connect(); } return runAction(action); } finally { if (ssh != null) ssh.disconnect(); } }
@Override public void run() { try { ExecResponse exec = null; do { notRunningAnymore.apply("status"); String stdout = commandRunner.runAction("stdout").getOutput(); String stderr = commandRunner.runAction("stderr").getOutput(); Integer exitStatus = Ints.tryParse(commandRunner.runAction("exitstatus").getOutput().trim()); exec = new ExecResponse(stdout, stderr, exitStatus == null ? Integer.valueOf(-1) : exitStatus); } while (!isCancelled() && exec.getExitStatus() == -1); logger.debug("<< complete(%s) status(%s)", commandRunner.getStatement().getInstanceName(), exec .getExitStatus()); set(exec); } catch (Exception e) { setException(e); } }
@Override public void run() { try { ExecResponse exec = null; do { notRunningAnymore.apply("status"); String stdout = commandRunner.runAction("stdout").getOutput(); String stderr = commandRunner.runAction("stderr").getOutput(); Integer exitStatus = Ints.tryParse(commandRunner.runAction("exitstatus").getOutput().trim()); exec = new ExecResponse(stdout, stderr, exitStatus == null ? Integer.valueOf(-1) : exitStatus); } while (!isCancelled() && exec.getExitStatus() == -1); logger.debug("<< complete(%s) status(%s)", commandRunner.getStatement().getInstanceName(), exec .getExitStatus()); set(exec); } catch (Exception e) { setException(e); } }
@Override public void run() { try { ExecResponse exec = null; do { notRunningAnymore.apply("status"); String stdout = commandRunner.runAction("stdout").getOutput(); String stderr = commandRunner.runAction("stderr").getOutput(); Integer exitStatus = Ints.tryParse(commandRunner.runAction("exitstatus").getOutput().trim()); exec = new ExecResponse(stdout, stderr, exitStatus == null ? -1 : exitStatus); } while (!isCancelled() && exec.getExitStatus() == -1); logger.debug("<< complete(%s) status(%s)", commandRunner.getStatement().getInstanceName(), exec .getExitStatus()); set(exec); } catch (Exception e) { setException(e); } }
@Override public void run() { try { ExecResponse exec = null; do { notRunningAnymore.apply("status"); String stdout = commandRunner.runAction("stdout").getOutput(); String stderr = commandRunner.runAction("stderr").getOutput(); Integer exitStatus = Ints.tryParse(commandRunner.runAction("exitstatus").getOutput().trim()); exec = new ExecResponse(stdout, stderr, exitStatus == null ? -1 : exitStatus); } while (!isCancelled() && exec.getExitStatus() == -1); logger.debug("<< complete(%s) status(%s)", commandRunner.getStatement().getInstanceName(), exec .getExitStatus()); set(exec); } catch (Exception e) { setException(e); } }
public void testExitStatusOfCommandGreaterThanZeroFalseWhen0() { SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .createStrictMock(); expect(commandRunner.runAction("status")).andReturn(new ExecResponse("", "", 0)); replay(commandRunner); Predicate<String> pred = new ExitStatusOfCommandGreaterThanZero(commandRunner); assertEquals(pred.apply("status"), false); verify(commandRunner); }
public void testExitStatusOfCommandGreaterThanZeroTrueWhen1() { SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .createStrictMock(); expect(commandRunner.runAction("status")).andReturn(new ExecResponse("", "", 1)); replay(commandRunner); Predicate<String> pred = new ExitStatusOfCommandGreaterThanZero(commandRunner); assertEquals(pred.apply("status"), true); verify(commandRunner); }
public void testExitStatusOfCommandGreaterThanZeroTrueWhen1() { SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .createStrictMock(); expect(commandRunner.runAction("status")).andReturn(new ExecResponse("", "", 1)); replay(commandRunner); Predicate<String> pred = new ExitStatusOfCommandGreaterThanZero(commandRunner); assertEquals(pred.apply("status"), true); verify(commandRunner); }
public void testExitStatusOfCommandGreaterThanZeroFalseWhen0() { SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .createStrictMock(); expect(commandRunner.runAction("status")).andReturn(new ExecResponse("", "", 0)); replay(commandRunner); Predicate<String> pred = new ExitStatusOfCommandGreaterThanZero(commandRunner); assertEquals(pred.apply("status"), false); verify(commandRunner); }
public void testFirstExitStatusOneButSecondExitStatusZeroReturnsExecResponse() throws InterruptedException, ExecutionException { ListeningExecutorService userExecutor = MoreExecutors.sameThreadExecutor(); Predicate<String> notRunningAnymore = Predicates.alwaysTrue(); SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .addMockedMethod("getStatement").addMockedMethod("getNode").addMockedMethod("toString") .createStrictMock(); InitScript initScript = createMockBuilder(InitScript.class).addMockedMethod("getInstanceName").createStrictMock(); // exit status is 1 means we are still running! expect(commandRunner.runAction("stdout")).andReturn(new ExecResponse("", "", 0)); expect(commandRunner.runAction("stderr")).andReturn(new ExecResponse("", "", 0)); expect(commandRunner.runAction("exitstatus")).andReturn(new ExecResponse("", "", 1)); // second time around, it did stop expect(commandRunner.runAction("stdout")).andReturn(new ExecResponse("stdout", "", 0)); expect(commandRunner.runAction("stderr")).andReturn(new ExecResponse("stderr", "", 0)); expect(commandRunner.runAction("exitstatus")).andReturn(new ExecResponse("444\n", "", 0)); toStringAndEventBusExpectations(commandRunner, initScript); replay(commandRunner, initScript); BlockUntilInitScriptStatusIsZeroThenReturnOutput future = new BlockUntilInitScriptStatusIsZeroThenReturnOutput( userExecutor, eventBus, notRunningAnymore, commandRunner); future.run(); assertEquals(future.get(), new ExecResponse("stdout", "stderr", 444)); verify(commandRunner, initScript); }
public void testExitStatusZeroReturnsExecResponse() throws InterruptedException, ExecutionException { ListeningExecutorService userExecutor = MoreExecutors.sameThreadExecutor(); Predicate<String> notRunningAnymore = Predicates.alwaysTrue(); SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .addMockedMethod("getStatement").addMockedMethod("getNode").addMockedMethod("toString") .createStrictMock(); InitScript initScript = createMockBuilder(InitScript.class).addMockedMethod("getInstanceName").createStrictMock(); expect(commandRunner.runAction("stdout")).andReturn(new ExecResponse("stdout", "", 0)); expect(commandRunner.runAction("stderr")).andReturn(new ExecResponse("stderr", "", 0)); expect(commandRunner.runAction("exitstatus")).andReturn(new ExecResponse("444\n", "", 0)); toStringAndEventBusExpectations(commandRunner, initScript); replay(commandRunner, initScript); BlockUntilInitScriptStatusIsZeroThenReturnOutput future = new BlockUntilInitScriptStatusIsZeroThenReturnOutput( userExecutor, eventBus, notRunningAnymore, commandRunner); future.run(); assertEquals(future.get(), new ExecResponse("stdout", "stderr", 444)); verify(commandRunner, initScript); }
public void testExitStatusZeroReturnsExecResponse() throws InterruptedException, ExecutionException { ListeningExecutorService userExecutor = MoreExecutors.newDirectExecutorService(); Predicate<String> notRunningAnymore = Predicates.alwaysTrue(); SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .addMockedMethod("getStatement").addMockedMethod("getNode").addMockedMethod("toString") .createStrictMock(); InitScript initScript = createMockBuilder(InitScript.class).addMockedMethod("getInstanceName").createStrictMock(); expect(commandRunner.runAction("stdout")).andReturn(new ExecResponse("stdout", "", 0)); expect(commandRunner.runAction("stderr")).andReturn(new ExecResponse("stderr", "", 0)); expect(commandRunner.runAction("exitstatus")).andReturn(new ExecResponse("444\n", "", 0)); toStringAndEventBusExpectations(commandRunner, initScript); replay(commandRunner, initScript); BlockUntilInitScriptStatusIsZeroThenReturnOutput future = new BlockUntilInitScriptStatusIsZeroThenReturnOutput( userExecutor, eventBus, notRunningAnymore, commandRunner); future.run(); assertEquals(future.get(), new ExecResponse("stdout", "stderr", 444)); verify(commandRunner, initScript); }
public void testCancelDontInterruptLeavesCommandRunningAndReturnsLastStatus() throws InterruptedException, ExecutionException { ListeningExecutorService userExecutor = MoreExecutors.sameThreadExecutor(); Predicate<String> notRunningAnymore = Predicates.alwaysTrue(); SudoAwareInitManager commandRunner = createMockBuilder(SudoAwareInitManager.class).addMockedMethod("runAction") .addMockedMethod("getStatement").addMockedMethod("getNode").addMockedMethod("toString") .createStrictMock(); InitScript initScript = createMockBuilder(InitScript.class).addMockedMethod("getInstanceName").createStrictMock(); expect(commandRunner.runAction("stdout")).andReturn(new ExecResponse("stillrunning", "", 0)); expect(commandRunner.runAction("stderr")).andReturn(new ExecResponse("", "", 0)); expect(commandRunner.runAction("exitstatus")).andReturn(new ExecResponse("", "", 1)); toStringAndEventBusExpectations(commandRunner, initScript); replay(commandRunner, initScript); BlockUntilInitScriptStatusIsZeroThenReturnOutput future = new BlockUntilInitScriptStatusIsZeroThenReturnOutput( userExecutor, eventBus, notRunningAnymore, commandRunner); future.cancel(false); // note if this didn't cancel properly, the loop would never end! future.run(); try { future.get(); fail(); } catch (CancellationException e) { } verify(commandRunner, initScript); }