private void testProcessInputsFailure(Exception expectedException) throws ComponentExecutionException, ComponentException, InterruptedException, ExecutionException { ComponentExecutionRelatedInstances compExeRelatedInstancesStub = createComponentExecutionRelatedInstancesStub(); Component compMock = EasyMock.createStrictMock(Component.class); compMock.processInputs(); EasyMock.expectLastCall().andThrow(expectedException); compMock.completeStartOrProcessInputsAfterFailure(); EasyMock.expectLastCall(); EasyMock.replay(compMock); compExeRelatedInstancesStub.component.set(compMock); Capture<ComponentStateMachineEvent> compStateMachineEventCapture = new Capture<>(); ComponentStateMachine compStateMachineMock = createComponentStateMachineEventForRuns(compStateMachineEventCapture); compExeRelatedInstancesStub.compStateMachine = compStateMachineMock; ComponentExecutionStorageBridge compExeStorageBridgeMock = createComponentExecutionStorageBridgeRunFailure(compExeRelatedInstancesStub); compExeRelatedInstancesStub.compExeStorageBridge = compExeStorageBridgeMock; ComponentContextBridge compCtxBridgeMock = EasyMock.createStrictMock(ComponentContextBridge.class); EasyMock.expect(compCtxBridgeMock.getEndpointDatumsForExecution()) .andStubReturn(new HashMap<String, EndpointDatum>()); EasyMock.replay(compCtxBridgeMock); compExeRelatedInstancesStub.compCtxBridge = compCtxBridgeMock; compExeRelatedInstancesStub.compExeScheduler = createComponentExecutionSchedulerMock(false); Capture<ConsoleRow.Type> consoleRowTypeCapture = new Capture<>(); Capture<String> logMessageCapture = new Capture<>(); ConsoleRowsSender consoleRowsSenderMock = createConsoleRowsSenderMock(consoleRowTypeCapture, logMessageCapture); compExeRelatedInstancesStub.consoleRowsSender = consoleRowsSenderMock; ComponentExecutionStatsService compExeStatsServiceMock = createComponentExecutionStatsServiceMock(compExeRelatedInstancesStub); ComponentExecutor compExecutor = new ComponentExecutor(compExeRelatedInstancesStub, ComponentExecutionType.ProcessInputs); compExecutor.bindComponentExecutionPermitsService(createComponentExecutionPermitServiceMock()); compExecutor.bindComponentExecutionStatsService(compExeStatsServiceMock); try { compExecutor.executeByConsideringLimitations(); fail("ComponentException expected"); } catch (ComponentException e) { if (expectedException.getMessage() == null) { assertFailureHandling(consoleRowTypeCapture, logMessageCapture, e, "Unexpected error"); } else { assertFailureHandling( consoleRowTypeCapture, logMessageCapture, e, expectedException.getMessage()); } } assertFalse(compExeRelatedInstancesStub.compExeRelatedStates.isComponentCancelled.get()); EasyMock.verify(compMock); EasyMock.verify(compStateMachineMock); assertEquals( ComponentStateMachineEventType.RUNNING, compStateMachineEventCapture.getValue().getType()); assertEquals( ComponentState.PROCESSING_INPUTS, compStateMachineEventCapture.getValue().getNewComponentState()); EasyMock.verify(compExeStorageBridgeMock); EasyMock.verify(consoleRowsSenderMock); }