@Override public PipelineConfig get(int i) { if(i < 0) throw new IndexOutOfBoundsException(); int start =0; for (PipelineConfigs part : this.parts) { int end = start + part.size(); if(i < end) return part.get(i - start); start = end; } throw new IndexOutOfBoundsException(); }
@Test public void shouldReturnIndexOfPipeline() { PipelineConfigs group = createWithPipeline(PipelineConfigMother.pipelineConfig("pipeline1")); PipelineConfig pipelineConfig = (PipelineConfig) group.get(0).clone(); pipelineConfig.setLabelTemplate("blah"); group.update(group.getGroup(), pipelineConfig, "pipeline1"); assertThat(group.get(0).getLabelTemplate(), is("blah")); }
@Test public void shouldApplyChangesToPipelineWhenPartEditable() { BasicPipelineConfigs filePart = new BasicPipelineConfigs(PipelineConfigMother.pipelineConfig("pipeline1")); filePart.setOrigin(new FileConfigOrigin()); PipelineConfigs group = new MergePipelineConfigs(filePart); PipelineConfig pipelineConfig = (PipelineConfig) group.get(0).clone(); pipelineConfig.setLabelTemplate("blah"); group.update(group.getGroup(), pipelineConfig, "pipeline1"); assertThat(group.get(0).getLabelTemplate(), is("blah")); }
public PipelineConfig findPipeline(String groupName, int pipelineIndex) { return findGroup(groupName).get(pipelineIndex); }
@Test public void shouldAddPipelineWithoutValidationInAnExistingGroup() { CruiseConfig cruiseConfig = createCruiseConfig(); PipelineConfig pipeline1 = PipelineConfigMother.pipelineConfig("first"); PipelineConfig pipeline2 = PipelineConfigMother.pipelineConfig("first"); cruiseConfig.addPipelineWithoutValidation("first-group", pipeline1); assertThat(cruiseConfig.getGroups().size(), is(1)); assertThat(cruiseConfig.findGroup("first-group").get(0), is(pipeline1)); cruiseConfig.addPipelineWithoutValidation("first-group", pipeline2); assertThat(cruiseConfig.findGroup("first-group").get(0), is(pipeline1)); assertThat(cruiseConfig.findGroup("first-group").get(1), is(pipeline2)); }
@Test public void shouldReturnPipelinesInOrder(){ PipelineConfig pipeline1 = PipelineConfigMother.pipelineConfig("pipeline1"); PipelineConfig pipeline3 = PipelineConfigMother.pipelineConfig("pipeline3"); PipelineConfig pipeline5 = PipelineConfigMother.pipelineConfig("pipeline5"); PipelineConfig pipeline2 = PipelineConfigMother.pipelineConfig("pipeline2"); PipelineConfig pipeline4 = PipelineConfigMother.pipelineConfig("pipeline4"); PipelineConfigs group = new MergePipelineConfigs( new BasicPipelineConfigs(pipeline1, pipeline2), new BasicPipelineConfigs(pipeline3), new BasicPipelineConfigs(pipeline4, pipeline5)); assertThat(group.get(0),is(pipeline1)); assertThat(group.get(1),is(pipeline2)); assertThat(group.get(2),is(pipeline3)); assertThat(group.get(3),is(pipeline4)); assertThat(group.get(4),is(pipeline5)); }
@Test public void shouldLoadDirectoryWithOnePipeline() throws Exception { GoConfigMother mother = new GoConfigMother(); PipelineConfig pipe1 = mother.cruiseConfigWithOnePipelineGroup().getAllPipelineConfigs().get(0); helper.addFileWithPipeline("pipe1.gocd.xml", pipe1); PartialConfig part = xmlPartialProvider.load(tmpFolder,mock(PartialConfigLoadContext.class)); PipelineConfig pipeRead = part.getGroups().get(0).get(0); assertThat(pipeRead,is(pipe1)); }
@Test public void shouldLoadDirectoryWithOnePipelineGroup() throws Exception { GoConfigMother mother = new GoConfigMother(); PipelineConfigs group1 = mother.cruiseConfigWithOnePipelineGroup().getGroups().get(0); helper.addFileWithPipelineGroup("group1.gocd.xml", group1); PartialConfig part = xmlPartialProvider.load(tmpFolder, mock(PartialConfigLoadContext.class)); PipelineConfigs groupRead = part.getGroups().get(0); assertThat(groupRead,is(group1)); assertThat(groupRead.size(),is(group1.size())); assertThat(groupRead.get(0),is(group1.get(0))); }
@Test public void shouldAddPipelineAtIndex() { PipelineConfigs group = createWithPipeline(PipelineConfigMother.pipelineConfig("pipeline0")); PipelineConfig p1 = PipelineConfigMother.pipelineConfig("pipeline1"); group.add(1,p1); assertThat(group.get(1),is(p1)); } @Test
@Test public void shouldRemovePipeline() { PipelineConfig p0 = PipelineConfigMother.pipelineConfig("pipeline0"); PipelineConfigs group = createWithPipeline(p0); PipelineConfig p1 = PipelineConfigMother.pipelineConfig("pipeline1"); group.add(1,p1); group.remove(p0); assertThat(group.get(0),is(p1)); assertThat(group.size(), is(1)); }
@Test public void shouldParseFileWithOnePipelineGroup() throws Exception { GoConfigMother mother = new GoConfigMother(); PipelineConfigs group1 = mother.cruiseConfigWithOnePipelineGroup().getGroups().get(0); File file = helper.addFileWithPipelineGroup("group1.gocd.xml", group1); PartialConfig part = xmlPartialProvider.parseFile(file); PipelineConfigs groupRead = part.getGroups().get(0); assertThat(groupRead,is(group1)); assertThat(groupRead.size(),is(group1.size())); assertThat(groupRead.get(0),is(group1.get(0))); } @Test
@Test public void shouldRemovePipelineAtIndex() { PipelineConfigs group = createWithPipeline(PipelineConfigMother.pipelineConfig("pipeline0")); PipelineConfig p1 = PipelineConfigMother.pipelineConfig("pipeline1"); group.add(1,p1); group.remove(0); assertThat(group.get(0), is(p1)); assertThat(group.size(), is(1)); }
@Test public void shouldParseFileWithOnePipeline() throws Exception { GoConfigMother mother = new GoConfigMother(); PipelineConfig pipe1 = mother.cruiseConfigWithOnePipelineGroup().getAllPipelineConfigs().get(0); File file = helper.addFileWithPipeline("pipe1.gocd.xml", pipe1); PartialConfig part = xmlPartialProvider.parseFile(file); PipelineConfig pipeRead = part.getGroups().get(0).get(0); assertThat(pipeRead,is(pipe1)); }
@Test public void shouldMergePartialsSetOnConfig() { final PartialConfig partialConfig = PartialConfigMother.withPipeline("partial"); partialConfig.setOrigin(new RepoConfigOrigin(configRepoConfig,"sha-1")); ConfigRepoPartialPreprocessor preprocessor = new ConfigRepoPartialPreprocessor(); PipelineConfig pipelineInMain = PipelineConfigMother.createPipelineConfig("main_pipeline", "stage", "job"); BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(new BasicPipelineConfigs(pipelineInMain)); cruiseConfig.setConfigRepos(reposConfig); cruiseConfig.setPartials(asList(partialConfig)); preprocessor.process(cruiseConfig); assertThat(cruiseConfig.getAllPipelineNames().contains(pipelineInMain.name()), is(true)); assertThat(cruiseConfig.getAllPipelineNames().contains(partialConfig.getGroups().first().get(0).name()), is(true)); } }
@Test public void shouldGetUniqueMaterialsWithConfigRepos() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); ConfigReposConfig reposConfig = new ConfigReposConfig(); GitMaterialConfig configRepo = new GitMaterialConfig("http://git"); reposConfig.add(new ConfigRepoConfig(configRepo, "myplug")); mainCruiseConfig.setConfigRepos(reposConfig); PartialConfig partialConfig = PartialConfigMother.withPipeline("pipe2"); MaterialConfig pipeRepo = partialConfig.getGroups().get(0).get(0).materialConfigs().get(0); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, partialConfig); Set<MaterialConfig> materials = cruiseConfig.getAllUniqueMaterialsBelongingToAutoPipelinesAndConfigRepos(); assertThat(materials, hasItem(configRepo)); assertThat(materials, hasItem(pipeRepo)); assertThat(materials.size(), is(2)); }
@Test public void shouldGetUniqueMaterialsWithoutConfigRepos() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); ConfigReposConfig reposConfig = new ConfigReposConfig(); GitMaterialConfig configRepo = new GitMaterialConfig("http://git"); reposConfig.add(new ConfigRepoConfig(configRepo, "myplug")); mainCruiseConfig.setConfigRepos(reposConfig); PartialConfig partialConfig = PartialConfigMother.withPipeline("pipe2"); MaterialConfig pipeRepo = partialConfig.getGroups().get(0).get(0).materialConfigs().get(0); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, partialConfig); Set<MaterialConfig> materials = cruiseConfig.getAllUniqueMaterialsBelongingToAutoPipelines(); assertThat(materials, hasItem(pipeRepo)); assertThat(materials.size(), is(1)); }
@Test public void shouldCollectAllTheErrorsInTheChildren_InMergedConfig() { BasicCruiseConfig mainCruiseConfig = GoConfigMother.configWithPipelines("pipeline-1"); PartialConfig partialConfig = PartialConfigMother.withPipelineInGroup("pipe2", "g2"); partialConfig.getGroups().get(0).get(0).setOrigin(new RepoConfigOrigin()); CruiseConfig config = new BasicCruiseConfig(mainCruiseConfig, partialConfig); shouldCollectAllTheErrorsInTheChildrenHelper(config); }
public static PartialConfig pipelineWithDependencyMaterial(String name, PipelineConfig upstream, RepoConfigOrigin repoConfig) { PartialConfig partialConfig = withPipeline(name, repoConfig); PipelineConfig pipeline = partialConfig.getGroups().first().get(0); pipeline.materialConfigs().add(new DependencyMaterialConfig(upstream.name(), upstream.first().name())); return partialConfig; }
@Test public void shouldCollectOriginErrorsFromMaterialConfigs_InMergedConfig() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withPipelineInGroup("pipe2", "g2"); partialConfig.getGroups().get(0).get(0).setOrigin(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, partialConfig); PipelineConfig pipeline1 = goConfigMother.addPipeline(cruiseConfig, "pipeline1", "stage", "build"); PipelineConfig pipeline2 = PipelineConfigMother.createPipelineConfigWithStage("pipeline2", "stage"); pipeline2.setOrigin(new RepoConfigOrigin()); partialConfig.getGroups().addPipeline("g2", pipeline2); goConfigMother.setDependencyOn(cruiseConfig, pipeline1, "pipeline2", "stage"); List<ConfigErrors> allErrors = cruiseConfig.validateAfterPreprocess(); assertThat(allErrors.size(), is(1)); assertNotNull(allErrors.get(0).on("origin")); }
@Test public void shouldCollectOriginErrorsFromEnvironments_InMergedConfig() { pipelines = new BasicPipelineConfigs("group_main", new Authorization(), PipelineConfigMother.pipelineConfig("pipe1")); BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withPipelineInGroup("pipe2", "g2"); partialConfig.getGroups().get(0).get(0).setOrigin(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, partialConfig); BasicEnvironmentConfig uat = new BasicEnvironmentConfig(new CaseInsensitiveString("UAT")); uat.addPipeline(new CaseInsensitiveString("pipe2")); cruiseConfig.addEnvironment(uat); List<ConfigErrors> allErrors = cruiseConfig.validateAfterPreprocess(); assertThat(allErrors.size(), is(1)); assertNotNull(allErrors.get(0).on("origin")); }