private void toStringAndEventBusExpectations(SudoAwareInitManager commandRunner, InitScript initScript) { toStringExpectations(commandRunner, initScript); expect(commandRunner.getStatement()).andReturn(initScript); expect(commandRunner.getNode()).andReturn( new NodeMetadataBuilder().ids("id").status(NodeMetadata.Status.RUNNING).build()); }
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 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.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); }
private void toStringAndEventBusExpectations(SudoAwareInitManager commandRunner, InitScript initScript) { toStringExpectations(commandRunner, initScript); expect(commandRunner.getStatement()).andReturn(initScript); expect(commandRunner.getNode()).andReturn( new NodeMetadataBuilder().ids("id").status(NodeMetadata.Status.RUNNING).build()); }
public void testFirstExitStatusOneButSecondExitStatusZeroReturnsExecResponse() 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(); // 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 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); }
public void testCancelDontInterruptLeavesCommandRunningAndReturnsLastStatus() 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("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); }