Ejemplo n.º 1
0
  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);
  }