Search in sources :

Example 1 with Result

use of org.jboss.pnc.bpm.causeway.Result in project pnc by project-ncl.

the class BuildResultPushManagerTest method shouldRejectWithMissingData.

@Test
public void shouldRejectWithMissingData() {
    // given
    BuildRecord record = buildRecord(false);
    // when
    Result result = release(record);
    // then
    assertThat(result).extracting(Result::getStatus).isEqualTo(BuildPushStatus.SYSTEM_ERROR);
    assertThat(result.getMessage()).containsIgnoringCase("attribute BREW_BUILD_NAME");
}
Also used : BuildRecord(org.jboss.pnc.model.BuildRecord) BuildPushResult(org.jboss.pnc.dto.BuildPushResult) Result(org.jboss.pnc.bpm.causeway.Result) Test(org.junit.Test)

Example 2 with Result

use of org.jboss.pnc.bpm.causeway.Result in project pnc by project-ncl.

the class BrewPusherImpl method doPushBuild.

private BuildPushResult doPushBuild(Base32LongID buildId, BuildPushParameters buildPushParameters, Long buildPushResultId) throws ProcessException {
    // TODO START timing event
    userLog.info("Push started.");
    // collect and validate input data
    BuildRecord buildRecord = getLatestSuccessfullyExecutedBuildRecord(buildId);
    if (buildRecord.getExecutionRootName() == null && !buildRecord.getBuildConfigurationAudited().getGenericParameters().containsKey(BREW_BUILD_NAME.name())) {
        throw new InvalidEntityException("Build " + buildId + " cannot be pushed to brew, because it is missing " + Attributes.BUILD_BREW_NAME + " attribute with brew name.");
    }
    List<Artifact> artifacts = artifactRepository.queryWithPredicates(ArtifactPredicates.withBuildRecordId(buildRecord.getId()));
    if (hasBadArtifactQuality(artifacts)) {
        String message = "Build contains artifacts of insufficient quality: BLACKLISTED/DELETED.";
        log.debug(message);
        BuildPushResult pushResult = BuildPushResult.builder().buildId(BuildMapper.idMapper.toDto(buildId)).status(BuildPushStatus.REJECTED).id(buildPushResultId.toString()).logContext(buildPushResultId.toString()).message(message).build();
        throw new OperationNotAllowedException(message, pushResult);
    }
    log.debug("Pushing Build.id {}.", buildRecord.getId());
    BuildPushOperation buildPushOperation = new BuildPushOperation(buildRecord, buildPushResultId, buildPushParameters.getTagPrefix(), buildPushParameters.isReimport(), getCompleteCallbackUrlTemplate());
    Result pushResult = buildResultPushManager.push(buildPushOperation, userService.currentUserToken());
    log.info("Push Result {}.", pushResult);
    BuildPushResult result = BuildPushResult.builder().id(pushResult.getId()).buildId(pushResult.getBuildId()).status(pushResult.getStatus()).logContext(pushResult.getId()).message(pushResult.getMessage()).build();
    // verify operation status
    switch(pushResult.getStatus()) {
        case ACCEPTED:
            userLog.info("Push ACCEPTED.");
            return result;
        case REJECTED:
            userLog.warn("Push REJECTED.");
            throw new AlreadyRunningException(pushResult.getMessage(), result);
        case SYSTEM_ERROR:
            userLog.error("Brew push failed: " + pushResult.getMessage());
            throw new ProcessException(pushResult.getMessage());
        default:
            userLog.error("Invalid push result status.");
            throw new ProcessException("Invalid push result status.");
    }
}
Also used : AlreadyRunningException(org.jboss.pnc.facade.validation.AlreadyRunningException) ProcessException(org.jboss.pnc.spi.coordinator.ProcessException) BuildPushOperation(org.jboss.pnc.bpm.causeway.BuildPushOperation) BuildPushResult(org.jboss.pnc.dto.BuildPushResult) OperationNotAllowedException(org.jboss.pnc.facade.validation.OperationNotAllowedException) BuildRecord(org.jboss.pnc.model.BuildRecord) InvalidEntityException(org.jboss.pnc.facade.validation.InvalidEntityException) Artifact(org.jboss.pnc.model.Artifact) Result(org.jboss.pnc.bpm.causeway.Result) BuildPushResult(org.jboss.pnc.dto.BuildPushResult) BuildRecordPushResult(org.jboss.pnc.model.BuildRecordPushResult)

Example 3 with Result

use of org.jboss.pnc.bpm.causeway.Result in project pnc by project-ncl.

the class BuildResultPushManagerTest method shouldAccept.

@Test
public void shouldAccept() {
    // given
    BuildRecord record = buildRecord(true);
    record.setExecutionRootName("Foo:bar");
    record.setExecutionRootVersion("baz");
    // when
    Result result = release(record);
    // then
    assertThat(result).extracting(Result::getStatus).isEqualTo(BuildPushStatus.ACCEPTED);
}
Also used : BuildRecord(org.jboss.pnc.model.BuildRecord) BuildPushResult(org.jboss.pnc.dto.BuildPushResult) Result(org.jboss.pnc.bpm.causeway.Result) Test(org.junit.Test)

Example 4 with Result

use of org.jboss.pnc.bpm.causeway.Result in project pnc by project-ncl.

the class BuildResultPushManagerTest method shouldRejectWhenSameBuildIdIsInProgress.

@Test
public void shouldRejectWhenSameBuildIdIsInProgress() {
    // given
    BuildRecord record = buildRecord(true);
    // when
    release(record);
    Result result = release(record);
    // then
    assertThat(result).extracting(Result::getStatus).isEqualTo(BuildPushStatus.REJECTED);
}
Also used : BuildRecord(org.jboss.pnc.model.BuildRecord) BuildPushResult(org.jboss.pnc.dto.BuildPushResult) Result(org.jboss.pnc.bpm.causeway.Result) Test(org.junit.Test)

Aggregations

Result (org.jboss.pnc.bpm.causeway.Result)4 BuildPushResult (org.jboss.pnc.dto.BuildPushResult)4 BuildRecord (org.jboss.pnc.model.BuildRecord)4 Test (org.junit.Test)3 BuildPushOperation (org.jboss.pnc.bpm.causeway.BuildPushOperation)1 AlreadyRunningException (org.jboss.pnc.facade.validation.AlreadyRunningException)1 InvalidEntityException (org.jboss.pnc.facade.validation.InvalidEntityException)1 OperationNotAllowedException (org.jboss.pnc.facade.validation.OperationNotAllowedException)1 Artifact (org.jboss.pnc.model.Artifact)1 BuildRecordPushResult (org.jboss.pnc.model.BuildRecordPushResult)1 ProcessException (org.jboss.pnc.spi.coordinator.ProcessException)1