Search in sources :

Example 11 with ProcessBuilder

use of pipelite.process.builder.ProcessBuilder in project pipelite by enasequence.

the class MailServiceTest method sendFailedStageExecutionMessageWithEmptyLog.

@Test
public void sendFailedStageExecutionMessageWithEmptyLog() {
    String pipelineName = PipeliteIdCreator.pipelineName();
    String processId = PipeliteIdCreator.processId();
    Process process = new ProcessBuilder(processId).execute("STAGE1").withSyncTestExecutor().build();
    Stage stage = process.getStage("STAGE1").get();
    StageEntity.createExecution(pipelineName, processId, stage).setStageState(StageState.ERROR);
    StageLogEntity stageLogEntity = new StageLogEntity();
    stageLogEntity.setPipelineName(pipelineName);
    stageLogEntity.setProcessId(processId);
    stageLogEntity.setStageName("STAGE1");
    stageLogEntity.setStageLog("");
    stageService.saveStageLog(stageLogEntity);
    ProcessEntity processEntity = new ProcessEntity();
    processEntity.setPipelineName(pipelineName);
    processEntity.setProcessId(processId);
    processEntity.setProcessState(ProcessState.PENDING);
    processEntity.setPriority(5);
    process.setProcessEntity(processEntity);
    process.setProcessEntity(processEntity);
    assertThat(mailService.getStageExecutionSubject(process, stage)).isEqualTo("Pipelite stage (ERROR): " + pipelineName + "/" + processId + "/STAGE1");
    assertThat(mailService.getExecutionBody(process, "SUBJECT")).isEqualTo("SUBJECT\n" + "\n" + "Process:\n" + "---------------\n" + "{\n" + "  \"processId\" : \"" + processId + "\",\n" + "  \"pipelineName\" : \"" + pipelineName + "\",\n" + "  \"processState\" : \"PENDING\",\n" + "  \"executionCount\" : 0,\n" + "  \"priority\" : 5\n" + "}\n" + "\n" + "Stages:\n" + "---------------\n" + "{\n" + "  \"processId\" : \"" + processId + "\",\n" + "  \"pipelineName\" : \"" + pipelineName + "\",\n" + "  \"stageName\" : \"STAGE1\",\n" + "  \"stageState\" : \"ERROR\",\n" + "  \"executionCount\" : 0\n" + "}\n" + "\n" + "Error logs:\n" + "---------------\n");
}
Also used : StageLogEntity(pipelite.entity.StageLogEntity) ProcessBuilder(pipelite.process.builder.ProcessBuilder) ProcessEntity(pipelite.entity.ProcessEntity) Stage(pipelite.stage.Stage) Process(pipelite.process.Process) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 12 with ProcessBuilder

use of pipelite.process.builder.ProcessBuilder in project pipelite by enasequence.

the class MailServiceTest method sendFailedStageExecutionMessageWithNoLog.

@Test
public void sendFailedStageExecutionMessageWithNoLog() {
    String pipelineName = PipeliteIdCreator.pipelineName();
    String processId = PipeliteIdCreator.processId();
    Process process = new ProcessBuilder(processId).execute("STAGE1").withSyncTestExecutor().build();
    Stage stage = process.getStage("STAGE1").get();
    StageEntity.createExecution(pipelineName, processId, stage).setStageState(StageState.ERROR);
    ProcessEntity processEntity = new ProcessEntity();
    processEntity.setPipelineName(pipelineName);
    processEntity.setProcessId(processId);
    processEntity.setProcessState(ProcessState.PENDING);
    processEntity.setPriority(5);
    process.setProcessEntity(processEntity);
    process.setProcessEntity(processEntity);
    assertThat(mailService.getStageExecutionSubject(process, stage)).isEqualTo("Pipelite stage (ERROR): " + pipelineName + "/" + processId + "/STAGE1");
    assertThat(mailService.getExecutionBody(process, "SUBJECT")).isEqualTo("SUBJECT\n" + "\n" + "Process:\n" + "---------------\n" + "{\n" + "  \"processId\" : \"" + processId + "\",\n" + "  \"pipelineName\" : \"" + pipelineName + "\",\n" + "  \"processState\" : \"PENDING\",\n" + "  \"executionCount\" : 0,\n" + "  \"priority\" : 5\n" + "}\n" + "\n" + "Stages:\n" + "---------------\n" + "{\n" + "  \"processId\" : \"" + processId + "\",\n" + "  \"pipelineName\" : \"" + pipelineName + "\",\n" + "  \"stageName\" : \"STAGE1\",\n" + "  \"stageState\" : \"ERROR\",\n" + "  \"executionCount\" : 0\n" + "}\n" + "\n" + "Error logs:\n" + "---------------\n");
}
Also used : ProcessBuilder(pipelite.process.builder.ProcessBuilder) ProcessEntity(pipelite.entity.ProcessEntity) Stage(pipelite.stage.Stage) Process(pipelite.process.Process) Test(org.junit.jupiter.api.Test) SpringBootTest(org.springframework.boot.test.context.SpringBootTest)

Example 13 with ProcessBuilder

use of pipelite.process.builder.ProcessBuilder in project pipelite by enasequence.

the class ProcessFactory method create.

/**
 * Creates a process.
 *
 * @param processId the process id
 * @param registeredPipeline the registered pipeline
 * @return the process
 * @throws PipeliteException if the new process could not be created
 */
public static Process create(String processId, RegisteredPipeline registeredPipeline) {
    if (processId == null) {
        throw new PipeliteException("Failed to create process. Missing process id.");
    }
    if (registeredPipeline == null) {
        throw new PipeliteException("Failed to create process. Missing registered pipeline.");
    }
    String pipelineName = registeredPipeline.pipelineName();
    if (pipelineName == null) {
        throw new PipeliteException("Failed to create process. Missing pipeline name.");
    }
    try {
        log.atFine().log("Creating %s process %s", pipelineName, processId);
        ProcessBuilder processBuilder = new ProcessBuilder(processId);
        registeredPipeline.configureProcess(processBuilder);
        Process process = processBuilder.build();
        if (process == null) {
            throw new PipeliteException("Failed to create " + pipelineName + " process " + processId + ". Pipeline returned a null process.");
        }
        return process;
    } catch (Exception ex) {
        throw new PipeliteException("Failed to create " + pipelineName + " process " + processId + ". Unexpected exception.", ex);
    }
}
Also used : ProcessBuilder(pipelite.process.builder.ProcessBuilder) PipeliteException(pipelite.exception.PipeliteException) PipeliteException(pipelite.exception.PipeliteException)

Example 14 with ProcessBuilder

use of pipelite.process.builder.ProcessBuilder in project pipelite by enasequence.

the class ConfigureProcessValidator method validate.

/**
 * Validates stage execution graph. Uses 'VALIDATE' as the processId.
 *
 * @param pipeline the schedule or pipeline to validate
 * @return the validation errors
 */
public static List<ValidatorError> validate(RegisteredPipeline pipeline) {
    List<ValidatorError> errors = new ArrayList<>();
    try {
        ProcessBuilder processBuilder = new ProcessBuilder("VALIDATE");
        pipeline.configureProcess(processBuilder);
        processBuilder.build();
    } catch (PipeliteException ex) {
        errors.add(new ValidatorError(pipeline.pipelineName(), ex.getMessage()));
    }
    return errors;
}
Also used : ProcessBuilder(pipelite.process.builder.ProcessBuilder) ArrayList(java.util.ArrayList) PipeliteException(pipelite.exception.PipeliteException)

Example 15 with ProcessBuilder

use of pipelite.process.builder.ProcessBuilder in project pipelite by enasequence.

the class DependencyResolverTest method othersActivePendingIndependentOneErrorMaxAndImmediateRetriesLeft.

@Test
public void othersActivePendingIndependentOneErrorMaxAndImmediateRetriesLeft() {
    for (StageState stageState : EnumSet.of(ACTIVE, PENDING)) {
        ProcessBuilder builder = createProcessBuilder();
        Process process = builder.execute("STAGE1").withSyncTestExecutor(StageExecutorState.ERROR, ExecutorParameters.builder().maximumRetries(1).immediateRetries(1).build()).execute("STAGE2").withSyncTestExecutor().execute("STAGE3").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", Collections.emptyList());
        assertGetDependsOnStages(process, "STAGE3", Collections.emptyList());
        assertGetDependsOnStagesDirectly(process, "STAGE1", Collections.emptyList());
        assertGetDependsOnStagesDirectly(process, "STAGE2", Collections.emptyList());
        assertGetDependsOnStagesDirectly(process, "STAGE3", Collections.emptyList());
        assertGetDependentStages(process, "STAGE1", Collections.emptyList());
        assertGetDependentStages(process, "STAGE2", Collections.emptyList());
        assertGetDependentStages(process, "STAGE3", Collections.emptyList());
        assertGetPermanentFailedStages(stages, Collections.emptyList());
        assertGetImmediatelyExecutableStages(process, Arrays.asList("STAGE1", "STAGE2", "STAGE3"));
        assertGetEventuallyExecutableStages(process, Arrays.asList("STAGE1", "STAGE2", "STAGE3"));
    }
}
Also used : StageState(pipelite.stage.StageState) ProcessBuilder(pipelite.process.builder.ProcessBuilder) Stage(pipelite.stage.Stage) Process(pipelite.process.Process) Test(org.junit.jupiter.api.Test)

Aggregations

ProcessBuilder (pipelite.process.builder.ProcessBuilder)29 Test (org.junit.jupiter.api.Test)25 Process (pipelite.process.Process)24 Stage (pipelite.stage.Stage)21 StageState (pipelite.stage.StageState)13 ProcessEntity (pipelite.entity.ProcessEntity)10 SpringBootTest (org.springframework.boot.test.context.SpringBootTest)7 ArrayList (java.util.ArrayList)3 StageEntity (pipelite.entity.StageEntity)3 StageLogEntity (pipelite.entity.StageLogEntity)3 Pipeline (pipelite.Pipeline)2 PipeliteException (pipelite.exception.PipeliteException)2 ExecutorParameters (pipelite.stage.parameters.ExecutorParameters)2 Operation (io.swagger.v3.oas.annotations.Operation)1 ApiResponses (io.swagger.v3.oas.annotations.responses.ApiResponses)1 List (java.util.List)1 AtomicReference (java.util.concurrent.atomic.AtomicReference)1 Assertions (org.assertj.core.api.Assertions)1 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)1 RegisteredPipeline (pipelite.RegisteredPipeline)1