@Override public String toString() { return String.format("ConfigPartial: %s pipes, %s environments; From %s",pipelines.size(),environments.size(),origin); }
@Override public Map<String, Object> asJson() { LinkedHashMap<String, Object> json = new LinkedHashMap<>(); CruiseConfig currentConfig = goConfigService.getCurrentConfig(); LinkedHashMap<String, Object> validConfig = new LinkedHashMap<>(); validConfig.put("Number of pipelines", goConfigService.getAllPipelineConfigs().size()); validConfig.put("Number of agents", goConfigService.agents().size()); validConfig.put("Number of environments", currentConfig.getEnvironments().size()); validConfig.put("Number of unique materials", currentConfig.getAllUniqueMaterials().size()); validConfig.put("Number of schedulable materials", goConfigService.getSchedulableMaterials().size()); json.put("Valid Config", validConfig); json.put("Security", securityInformation()); return json; }
@Test public void shouldGetLocalPartsWhenOriginIsNull() { assertThat(configs.getLocal().size(), is(1)); assertThat(configs.getLocal().get(0), is(env)); } @Test
@Test public void shouldAllowConfigWithNoAgentsAndNoPipelinesInEnvironment() throws Exception { String content = configWithEnvironments( "<environments>" + " <environment name='uat' />" + "</environments>"); CruiseConfig config = ConfigMigrator.loadWithMigration(content).config; assertThat(config.getEnvironments().size(), is(1)); }
@Test public void shouldGetLocalPartsWhenOriginIsRepo() { env.setOrigins(new RepoConfigOrigin()); assertThat(configs.getLocal().size(), is(0)); }
@Test public void shouldGetLocalPartsWhenOriginIsFile() { env.setOrigins(new FileConfigOrigin()); assertThat(configs.getLocal().size(), is(1)); assertThat(configs.getLocal().get(0), is(env)); } @Test
@Test public void shouldParseFileWithOneEnvironment() throws Exception { EnvironmentConfig env = EnvironmentConfigMother.environment("dev"); File file = helper.addFileWithEnvironment("dev-env.gocd.xml", env); PartialConfig part = xmlPartialProvider.parseFile(file); EnvironmentsConfig loadedEnvs = part.getEnvironments(); assertThat(loadedEnvs.size(),is(1)); assertThat(loadedEnvs.get(0),is(env)); }
@Test public void mergeShouldThrowWhenCalledSecondTime() { cruiseConfig = new BasicCruiseConfig(new BasicCruiseConfig(pipelines), PartialConfigMother.withEnvironment("remote-env")); assertThat(cruiseConfig.getEnvironments().size(),is(1)); try { cruiseConfig.merge(Arrays.asList(PartialConfigMother.withEnvironment("remote-env")), false); } catch (RuntimeException ex) { //ok assertThat(cruiseConfig.getEnvironments().size(),is(1)); cruiseConfig.validateAfterPreprocess(); return; } fail("should have thrown"); }
@Test public void shouldCreateEmptyEnvironmentConfigForEditsWithUIOrigin_WhenFileHasNoEnvironment_AndForEdit() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); assertThat(cruiseConfig.getEnvironments().size(), is(1)); assertThat(cruiseConfig.getEnvironments().get(0) instanceof MergeEnvironmentConfig, is(true)); assertThat(cruiseConfig.getEnvironments().get(0).name(), is(new CaseInsensitiveString("remoteEnv"))); MergeEnvironmentConfig mergedEnv = (MergeEnvironmentConfig) cruiseConfig.getEnvironments().get(0); assertThat(mergedEnv.size(), is(2)); }
@Test public void shouldNotCreateMergeEnvironmentConfig_WhenFileHasNoEnvironment_AndNotForEdit() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, false, partialConfig); assertThat(cruiseConfig.getEnvironments().size(), is(1)); assertThat(cruiseConfig.getEnvironments().get(0) instanceof MergeEnvironmentConfig, is(false)); assertThat(cruiseConfig.getEnvironments().get(0).name(), is(new CaseInsensitiveString("remoteEnv"))); assertThat(cruiseConfig.getEnvironments().get(0).isLocal(), is(false)); }
@Test public void shouldLoadDirectoryWithTwoPipelineGroupsAndEnvironment() throws Exception { GoConfigMother mother = new GoConfigMother(); PipelineGroups groups = mother.cruiseConfigWithTwoPipelineGroups().getGroups(); EnvironmentConfig env = EnvironmentConfigMother.environment("dev"); helper.addFileWithPipelineGroup("group1.gocd.xml", groups.get(0)); helper.addFileWithPipelineGroup("group2.gocd.xml", groups.get(1)); helper.addFileWithEnvironment("dev-env.gocd.xml", env); PartialConfig part = xmlPartialProvider.load(tmpFolder, mock(PartialConfigLoadContext.class)); PipelineGroups groupsRead = part.getGroups(); assertThat(groupsRead.size(),is(2)); EnvironmentsConfig loadedEnvs = part.getEnvironments(); assertThat(loadedEnvs.size(),is(1)); assertThat(loadedEnvs.get(0),is(env)); }
@Test public void shouldCreateEmptyEnvironmentConfigForEditsWithUIOrigin_WhenFileHasNoEnvironmentAnd2RemoteParts_AndForEdit() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig1 = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig1.setOrigins(new RepoConfigOrigin()); PartialConfig partialConfig2 = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig2.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig1, partialConfig2); assertThat(cruiseConfig.getEnvironments().size(), is(1)); assertThat(cruiseConfig.getEnvironments().get(0) instanceof MergeEnvironmentConfig, is(true)); assertThat(cruiseConfig.getEnvironments().get(0).name(), is(new CaseInsensitiveString("remoteEnv"))); MergeEnvironmentConfig mergedEnv = (MergeEnvironmentConfig) cruiseConfig.getEnvironments().get(0); assertThat(mergedEnv.size(), is(3)); }
@Test public void shouldNotCreateEmptyEnvironmentConfigForEditsWithUIOrigin_WhenFileHasEnvironment_AndForEdit() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); mainCruiseConfig.addEnvironment(new BasicEnvironmentConfig(new CaseInsensitiveString("Env"))); mainCruiseConfig.setOrigins(new FileConfigOrigin()); PartialConfig partialConfig = PartialConfigMother.withEnvironment("Env"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); assertThat(cruiseConfig.getEnvironments().size(), is(1)); assertThat(cruiseConfig.getEnvironments().get(0) instanceof MergeEnvironmentConfig, is(true)); assertThat(cruiseConfig.getEnvironments().get(0).name(), is(new CaseInsensitiveString("Env"))); MergeEnvironmentConfig mergedEnv = (MergeEnvironmentConfig) cruiseConfig.getEnvironments().get(0); assertThat(mergedEnv.size(), is(2)); assertThat(mergedEnv.get(0).isLocal(), is(true)); assertThat(mergedEnv.get(1).isLocal(), is(false)); }
@Test public void shouldGetLocalPartsWhenOriginIsMixed() { env.setOrigins(new FileConfigOrigin()); BasicEnvironmentConfig prodLocalPart = new BasicEnvironmentConfig(new CaseInsensitiveString("PROD")); prodLocalPart.addAgent("1235"); prodLocalPart.setOrigins(new FileConfigOrigin()); BasicEnvironmentConfig prodRemotePart = new BasicEnvironmentConfig(new CaseInsensitiveString("PROD")); prodRemotePart.setOrigins(new RepoConfigOrigin()); MergeEnvironmentConfig pairEnvironmentConfig = new MergeEnvironmentConfig(prodLocalPart, prodRemotePart); configs.add(pairEnvironmentConfig); assertThat(configs.getLocal().size(), is(2)); assertThat(configs.getLocal(), hasItem(env)); assertThat(configs.getLocal(), hasItem(prodLocalPart)); } }
PartialConfig partialConfig = xmlLoader.fromXmlPartial(partialConfigWithPipeline, PartialConfig.class); EnvironmentsConfig environmentsConfig = partialConfig.getEnvironments(); assertThat(environmentsConfig.size(), is(2)); EnvironmentPipelineMatchers matchers = environmentsConfig.matchers(); assertThat(matchers.size(), is(2));