@Override public EnvironmentConfig addEnvironment(String environmentName) { BasicEnvironmentConfig environmentConfig = new BasicEnvironmentConfig(new CaseInsensitiveString(environmentName)); this.addEnvironment(environmentConfig); return environmentConfig; }
@Test public void shouldReturnValidationErrorMessages(){ BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(); BasicEnvironmentConfig environmentConfig = new BasicEnvironmentConfig(new CaseInsensitiveString("env")); environmentConfig.addAgent("does_not_exist_1"); environmentConfig.addAgent("does_not_exist_2"); environmentConfig.addAgent("exists_3"); cruiseConfig.addEnvironment(environmentConfig); cruiseConfig.agents().add(new AgentConfig("exists_3")); List<ConfigErrors> errors = new EnvironmentAgentValidator().validateConfig(cruiseConfig); assertThat(errors.size(), is(2)); assertThat(errors.get(0).on(EnvironmentAgentConfig.UUID), is("Environment 'env' has an invalid agent uuid 'does_not_exist_1'")); assertThat(errors.get(1).on(EnvironmentAgentConfig.UUID), is("Environment 'env' has an invalid agent uuid 'does_not_exist_2'")); } }
@Test public void shouldThrowExceptionIfValidationFails() throws Exception { BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(); BasicEnvironmentConfig environmentConfig = new BasicEnvironmentConfig(new CaseInsensitiveString("env")); environmentConfig.addAgent("does_not_exist_1"); environmentConfig.addAgent("does_not_exist_2"); cruiseConfig.addEnvironment(environmentConfig); try { new EnvironmentAgentValidator().validate(cruiseConfig); fail("should have thrown exception"); } catch (Exception e) { assertThat(e.getMessage(), is("Environment 'env' has an invalid agent uuid 'does_not_exist_1', Environment 'env' has an invalid agent uuid 'does_not_exist_2'")); } }
@Test public void shouldSetOriginInEnvironments() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); BasicEnvironmentConfig env = new BasicEnvironmentConfig(new CaseInsensitiveString("e")); mainCruiseConfig.addEnvironment(env); mainCruiseConfig.setOrigins(new FileConfigOrigin()); assertThat(env.getOrigin(), is(new FileConfigOrigin())); }
private void passReferenceValidationHelper(ConfigOrigin pipelineOrigin, ConfigOrigin envOrigin) { BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("pipe1"); cruiseConfig.getPipelineConfigByName(new CaseInsensitiveString("pipe1")).setOrigin(pipelineOrigin); BasicEnvironmentConfig environmentConfig = (BasicEnvironmentConfig) this.environmentConfig; environmentConfig.setOrigins(envOrigin); environmentConfig.addPipeline(new CaseInsensitiveString("pipe1")); cruiseConfig.addEnvironment(environmentConfig); environmentConfig.validate(ConfigSaveValidationContext.forChain(cruiseConfig, environmentConfig)); EnvironmentPipelineConfig reference = environmentConfig.getPipelines().first(); assertThat(reference.errors().isEmpty(),is(true)); }
@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 shouldModifyEnvironmentConfigWithFileOrigin() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); BasicEnvironmentConfig envInFile = new BasicEnvironmentConfig(new CaseInsensitiveString("Env")); mainCruiseConfig.addEnvironment(envInFile); mainCruiseConfig.setOrigins(new FileConfigOrigin()); PartialConfig partialConfig = PartialConfigMother.withEnvironment("Env"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); cruiseConfig.getEnvironments().get(0).addAgent("agent"); assertThat(envInFile.getAgents(), hasItem(new EnvironmentAgentConfig("agent"))); }
@Test public void shouldNotThrowExceptionIfValidationPasses() throws Exception { BasicCruiseConfig cruiseConfig = new BasicCruiseConfig(); BasicEnvironmentConfig environmentConfig = new BasicEnvironmentConfig(new CaseInsensitiveString("env")); environmentConfig.addAgent("exists_1"); cruiseConfig.addEnvironment(environmentConfig); cruiseConfig.agents().add(new AgentConfig("exists_1")); new EnvironmentAgentValidator().validate(cruiseConfig); assertThat(environmentConfig.getAgents().first().errors().isEmpty(), is(true)); }
@Test public void shouldValidateWhenPipelineNotFound() { ConfigOrigin pipelineOrigin = new RepoConfigOrigin(); ConfigOrigin envOrigin = new FileConfigOrigin(); BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("pipe1"); cruiseConfig.getPipelineConfigByName(new CaseInsensitiveString("pipe1")).setOrigin(pipelineOrigin); BasicEnvironmentConfig environmentConfig = (BasicEnvironmentConfig) this.environmentConfig; environmentConfig.setOrigins(envOrigin); environmentConfig.addPipeline(new CaseInsensitiveString("unknown")); cruiseConfig.addEnvironment(environmentConfig); environmentConfig.validate(ConfigSaveValidationContext.forChain(cruiseConfig, environmentConfig)); EnvironmentPipelineConfig reference = environmentConfig.getPipelines().first(); assertThat(reference.errors().isEmpty(),is(true)); }
@Test public void validate_shouldNotAllowToReferencePipelineDefinedInConfigRepo_WhenEnvironmentDefinedInFile() { ConfigOrigin pipelineOrigin = new RepoConfigOrigin(); ConfigOrigin envOrigin = new FileConfigOrigin(); BasicCruiseConfig cruiseConfig = GoConfigMother.configWithPipelines("pipe1"); cruiseConfig.getPipelineConfigByName(new CaseInsensitiveString("pipe1")).setOrigin(pipelineOrigin); BasicEnvironmentConfig environmentConfig = (BasicEnvironmentConfig) this.environmentConfig; environmentConfig.setOrigins(envOrigin); environmentConfig.addPipeline(new CaseInsensitiveString("pipe1")); cruiseConfig.addEnvironment(environmentConfig); environmentConfig.validate(ConfigSaveValidationContext.forChain(cruiseConfig, environmentConfig)); EnvironmentPipelineConfig reference = environmentConfig.getPipelines().first(); assertThat(reference.errors().isEmpty(),is(false)); assertThat(reference.errors().on(EnvironmentPipelineConfig.ORIGIN),startsWith("Environment defined in")); }