use of pipelite.stage.StageState in project pipelite by enasequence.
the class StageEntityAsserter method assertCompletedStageEntity.
private static StageEntity assertCompletedStageEntity(StageService stageService, TestType testType, String pipelineName, String processId, String stageName) {
StageState expectedStageState;
ErrorType expectedErrorType = null;
if (testType.expectedStagePermanentErrorCnt() > 0) {
expectedStageState = StageState.ERROR;
expectedErrorType = ErrorType.PERMANENT_ERROR;
} else if (testType.expectedStageSuccessCnt() > 0) {
expectedStageState = StageState.SUCCESS;
} else {
expectedStageState = StageState.ERROR;
expectedErrorType = ErrorType.EXECUTION_ERROR;
}
StageEntity stageEntity = stageService.getSavedStage(pipelineName, processId, stageName).get();
assertThat(stageEntity.getPipelineName()).isEqualTo(pipelineName);
assertThat(stageEntity.getProcessId()).isEqualTo(processId);
assertThat(stageEntity.getStageName()).isEqualTo(stageName);
assertThat(stageEntity.getStageState()).isEqualTo(expectedStageState);
assertThat(stageEntity.getErrorType()).isEqualTo(expectedErrorType);
assertThat(stageEntity.getExecutionCount()).isEqualTo(testType.expectedStageExecutionCnt());
assertThat(stageEntity.getStartTime()).isNotNull();
assertThat(stageEntity.getEndTime()).isAfterOrEqualTo(stageEntity.getStartTime());
return stageEntity;
}
use of pipelite.stage.StageState in project pipelite by enasequence.
the class DependencyResolverTest method othersActivePendingDependOnFirstInPermanentError.
@Test
public void othersActivePendingDependOnFirstInPermanentError() {
for (StageState stageState : EnumSet.of(ACTIVE, PENDING)) {
ProcessBuilder builder = createProcessBuilder();
Process process = builder.execute("STAGE1").withSyncTestExecutor(StageExecutorState.ERROR).executeAfter("STAGE2", "STAGE1").withSyncTestExecutor().executeAfter("STAGE3", "STAGE1").withSyncTestExecutor().build();
Set<Stage> stages = process.getStages();
int stageNumber = 0;
for (Stage stage : process.getStages()) {
if (stageNumber == 0) {
simulateStageExecution(stage, ErrorType.PERMANENT_ERROR);
} else {
simulateStageExecution(stage, stageState);
}
stageNumber++;
}
assertGetDependsOnStages(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStages(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStages(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStagesDirectly(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependentStages(process, "STAGE1", Arrays.asList("STAGE2", "STAGE3"));
assertGetDependentStages(process, "STAGE2", Collections.emptyList());
assertGetDependentStages(process, "STAGE3", Collections.emptyList());
assertGetPermanentFailedStages(stages, Arrays.asList("STAGE1"));
assertGetImmediatelyExecutableStages(process, Collections.emptyList());
assertGetEventuallyExecutableStages(process, Collections.emptyList());
}
}
use of pipelite.stage.StageState in project pipelite by enasequence.
the class DependencyResolverTest method othersActivePendingDependOnFirstThatSucceeded.
@Test
public void othersActivePendingDependOnFirstThatSucceeded() {
for (StageState stageState : EnumSet.of(ACTIVE, PENDING)) {
ProcessBuilder builder = createProcessBuilder();
Process process = builder.execute("STAGE1").withSyncTestExecutor().executeAfter("STAGE2", "STAGE1").withSyncTestExecutor().executeAfter("STAGE3", "STAGE1").withSyncTestExecutor().build();
Set<Stage> stages = process.getStages();
int stageNumber = 0;
for (Stage stage : process.getStages()) {
if (stageNumber == 0) {
simulateStageExecution(stage, StageState.SUCCESS);
} else {
simulateStageExecution(stage, stageState);
}
stageNumber++;
}
assertGetDependsOnStages(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStages(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStages(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStagesDirectly(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependentStages(process, "STAGE1", Arrays.asList("STAGE2", "STAGE3"));
assertGetDependentStages(process, "STAGE2", Collections.emptyList());
assertGetDependentStages(process, "STAGE3", Collections.emptyList());
assertGetPermanentFailedStages(stages, Collections.emptyList());
assertGetImmediatelyExecutableStages(process, Arrays.asList("STAGE2", "STAGE3"));
assertGetEventuallyExecutableStages(process, Arrays.asList("STAGE2", "STAGE3"));
}
}
use of pipelite.stage.StageState in project pipelite by enasequence.
the class DependencyResolverTest method allActivePendingOthersDependOnFirstTransitively.
@Test
public void allActivePendingOthersDependOnFirstTransitively() {
for (StageState stageState : EnumSet.of(ACTIVE, PENDING)) {
ProcessBuilder builder = createProcessBuilder();
Process process = builder.execute("STAGE1").withSyncTestExecutor().executeAfter("STAGE2", "STAGE1").withSyncTestExecutor().executeAfter("STAGE3", Arrays.asList("STAGE2")).withSyncTestExecutor().executeAfter("STAGE4", Arrays.asList("STAGE3", "STAGE3")).withSyncTestExecutor().build();
Set<Stage> stages = process.getStages();
for (Stage stage : stages) {
stage.setStageEntity(new StageEntity());
stage.getStageEntity().setStageState(stageState);
}
assertGetDependsOnStages(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStages(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStages(process, "STAGE3", Arrays.asList("STAGE1", "STAGE2"));
assertGetDependsOnStages(process, "STAGE4", Arrays.asList("STAGE1", "STAGE2", "STAGE3"));
assertGetDependsOnStagesDirectly(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStagesDirectly(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE3", Arrays.asList("STAGE2"));
assertGetDependsOnStagesDirectly(process, "STAGE4", Arrays.asList("STAGE3"));
assertGetDependentStages(process, "STAGE1", Arrays.asList("STAGE2", "STAGE3", "STAGE4"));
assertGetDependentStages(process, "STAGE2", Arrays.asList("STAGE3", "STAGE4"));
assertGetDependentStages(process, "STAGE3", Arrays.asList("STAGE4"));
assertGetDependentStages(process, "STAGE4", Collections.emptyList());
assertGetPermanentFailedStages(stages, Collections.emptyList());
assertGetImmediatelyExecutableStages(process, Arrays.asList("STAGE1"));
assertGetEventuallyExecutableStages(process, Arrays.asList("STAGE1", "STAGE2", "STAGE3", "STAGE4"));
}
}
use of pipelite.stage.StageState in project pipelite by enasequence.
the class DependencyResolverTest method othersActivePendingDependOnFirstInErrorMaxRetriesLeft.
@Test
public void othersActivePendingDependOnFirstInErrorMaxRetriesLeft() {
for (StageState stageState : EnumSet.of(ACTIVE, PENDING)) {
ProcessBuilder builder = createProcessBuilder();
Process process = builder.execute("STAGE1").withSyncTestExecutor(StageExecutorState.ERROR, ExecutorParameters.builder().maximumRetries(3).immediateRetries(0).build()).executeAfter("STAGE2", "STAGE1").withSyncTestExecutor().executeAfter("STAGE3", "STAGE1").withSyncTestExecutor().build();
Set<Stage> stages = process.getStages();
int stageNumber = 0;
for (Stage stage : process.getStages()) {
if (stageNumber == 0) {
simulateStageExecution(stage, StageState.ERROR);
} else {
simulateStageExecution(stage, stageState);
}
stageNumber++;
}
assertGetDependsOnStages(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStages(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStages(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE1", Collections.emptyList());
assertGetDependsOnStagesDirectly(process, "STAGE2", Arrays.asList("STAGE1"));
assertGetDependsOnStagesDirectly(process, "STAGE3", Arrays.asList("STAGE1"));
assertGetDependentStages(process, "STAGE1", Arrays.asList("STAGE2", "STAGE3"));
assertGetDependentStages(process, "STAGE2", Collections.emptyList());
assertGetDependentStages(process, "STAGE3", Collections.emptyList());
assertGetPermanentFailedStages(stages, Collections.emptyList());
assertGetImmediatelyExecutableStages(process, Collections.emptyList());
assertGetEventuallyExecutableStages(process, Arrays.asList("STAGE1", "STAGE2", "STAGE3"));
}
}
Aggregations