private void populateDownstreamPipelineState(Username username, PipelineInstanceModel pipelineInstanceModel) { populatePlaceHolderStages(pipelineInstanceModel); populatePipelineCanRunStatus(username, pipelineInstanceModel); populateCanRunStatus(username, pipelineInstanceModel); populateStageOperatePermission(pipelineInstanceModel, username); pipelineInstanceModel.setMaterialConfigs(goConfigService.materialConfigsFor(new CaseInsensitiveString(pipelineInstanceModel.getName()))); }
private void populatePipelineInstanceModel(PipelineConfig pipelineConfig, PipelineInstanceModel pipelineInstanceModel) { if (pipelineInstanceModel.getId() > 0) { CaseInsensitiveString pipelineName = new CaseInsensitiveString(pipelineInstanceModel.getName()); pipelineInstanceModel.setPipelineAfter(pipelineTimeline.runAfter(pipelineInstanceModel.getId(), pipelineName)); pipelineInstanceModel.setPipelineBefore(pipelineTimeline.runBefore(pipelineInstanceModel.getId(), pipelineName)); } populatePlaceHolderStages(pipelineInstanceModel); populateMaterialRevisionsOnBuildCause(pipelineInstanceModel); pipelineInstanceModel.setMaterialConfigs(pipelineConfig.materialConfigs()); pipelineInstanceModel.setLatestRevisions(materialRepository.findLatestRevisions(pipelineConfig.materialConfigs())); }
@Test public void shouldProvideMaterialRevisionForAGivenDownStreamPipeline() throws Exception { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-0","21"))); stages.add(new StageInstanceModel("stage-1","2", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-1","2"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-0"))); PipelineInstanceModel down2 = pim("blahDown2"); down2.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-1"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1,down2)); assertThat(graph.dependencyRevisionFor(down1),is("blahUpStream/23/stage-0/21")); assertThat(graph.dependencyRevisionFor(down2),is("blahUpStream/23/stage-1/2")); }
@Test public void shouldShouldbeAbleToTellIfUpStreamMaterialIsAvailableForTrigger() throws Exception { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", StageResult.Cancelled, new StageIdentifier("blahUpStream",23,"stage-0","21"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-1"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1)); assertThat(graph.hasUpStreamRevisionFor(down1),is(false)); }
@Test public void shouldUnderstandIfHasNewRevisions() throws Exception { PipelineInstanceModel instanceModel = PipelineInstanceModel.createPipeline("pipelineName", -1, "1", BuildCause.createManualForced(), new StageInstanceModels()); MaterialRevisions latest = ModificationsMother.createHgMaterialRevisions(); instanceModel.setMaterialConfigs(new MaterialConfigs(latest.getMaterialRevision(0).getMaterial().config())); instanceModel.setLatestRevisions(latest); PipelineModel pipelineModel = new PipelineModel(instanceModel.getName(), true, true, PipelinePauseInfo.notPaused()); pipelineModel.addPipelineInstance(instanceModel); instanceModel.setMaterialRevisionsOnBuildCause(MaterialRevisions.EMPTY); assertThat(pipelineModel.hasNewRevisions(), is(true)); instanceModel.setMaterialRevisionsOnBuildCause(latest); assertThat(pipelineModel.hasNewRevisions(), is(false)); }
private void assertThatTriggerIsPossibleOnlyIfUpStreamPassed(StageResult upstreamResult) { StageInstanceModels stages = new StageInstanceModels(); stages.add(new StageInstanceModel("stage-0","21", upstreamResult, new StageIdentifier("blahUpStream",23,"stage-0","21"))); PipelineInstanceModel upStream = PipelineHistoryMother.singlePipeline("blahUpStream", stages); PipelineInstanceModel down1 = pim("blahDown1"); down1.setMaterialConfigs(new MaterialConfigs(dependencyMaterialConfig("blahUpStream", "stage-0"))); PipelineDependencyGraphOld graph = new PipelineDependencyGraphOld(upStream, PipelineInstanceModels.createPipelineInstanceModels(down1)); assertThat(graph.hasUpStreamRevisionFor(graph.dependencies().find("blahDown1")),is(upstreamResult== StageResult.Passed)); }
public static PipelineModel pipeline() { PipelineModel pipelineModel = new PipelineModel("pipe1", true, true, PipelinePauseInfo.notPaused()); MaterialRevisions materialRevisions = ModificationsMother.createHgMaterialRevisions(); PipelineInstanceModel instanceModel = PipelineInstanceModel.createPipeline("pipe1", -1, "label1", BuildCause.createWithModifications(materialRevisions, "foo-bar"), new StageInstanceModels()); instanceModel.setMaterialConfigs(new MaterialConfigs(materialRevisions.getMaterialRevision(0).getMaterial().config())); instanceModel.setLatestRevisions(materialRevisions); pipelineModel.addPipelineInstance(instanceModel); return pipelineModel; } }
@Test public void shouldReturnIfAnyMaterialHasModifications() { final SvnMaterial svnMaterial = svnMaterial("http://svnurl"); final HgMaterial hgMaterial = hgMaterial("http://hgurl", "hgdir"); MaterialRevisions currentRevisions = ModificationsMother.getMaterialRevisions(new HashMap<Material, String>() {{ put(svnMaterial, "1"); put(hgMaterial, "a"); }}); MaterialRevisions latestRevisions = ModificationsMother.getMaterialRevisions(new HashMap<Material, String>() {{ put(svnMaterial, "1"); put(hgMaterial, "b"); }}); MaterialConfigs materialConfigs = new MaterialConfigs(); materialConfigs.add(svnMaterial.config()); materialConfigs.add(hgMaterial.config()); StageInstanceModels stages = new StageInstanceModels(); stages.addStage("unit1", JobHistory.withJob("test", JobState.Completed, JobResult.Passed, new Date())); stages.addFutureStage("unit2", false); PipelineInstanceModel model = PipelineInstanceModel.createPipeline("pipeline", -1, "label", BuildCause.createWithModifications(currentRevisions, ""), stages); model.setLatestRevisions(latestRevisions); model.setMaterialConfigs(materialConfigs); assertThat("svnMaterial hasNewRevisions", model.hasNewRevisions(svnMaterial.config()), is(false)); assertThat("hgMaterial hasNewRevisions", model.hasNewRevisions(hgMaterial.config()), is(true)); assertThat("all materials hasNewRevisions", model.hasNewRevisions(), is(true)); }