public boolean validateUuidPresent(CaseInsensitiveString name, Set<String> uuids) { if (!uuids.contains(uuid)) { this.addError(UUID, format("Environment '%s' has an invalid agent uuid '%s'", name, uuid)); } return errors().isEmpty(); }
public List<ConfigErrors> validateConfig(CruiseConfig cruiseConfig) { List<ConfigErrors> errors = new ArrayList<>(); Set<String> uuids = cruiseConfig.agents().acceptedUuids(); if (!cruiseConfig.getEnvironments().validateContainOnlyUuids(uuids)) { for (EnvironmentConfig environmentConfig : cruiseConfig.getEnvironments()) { for (EnvironmentAgentConfig environmentAgentConfig : environmentConfig.getAgents()) { if (!environmentAgentConfig.errors().isEmpty()) { errors.add(environmentAgentConfig.errors()); } } } } return errors; } }
@Test public void shouldFailValidationIfUUIDDoesNotMapToAnAgent() { EnvironmentAgentConfig config = new EnvironmentAgentConfig("uuid1"); HashSet<String> uuids = new HashSet<>(); uuids.add("uuid2"); uuids.add("uuid3"); boolean isValid = config.validateUuidPresent(new CaseInsensitiveString("foo"), uuids); assertThat(isValid, is(false)); assertThat(config.errors().on(EnvironmentAgentConfig.UUID), is("Environment 'foo' has an invalid agent uuid 'uuid1'")); }
@Test public void shouldPassValidationIfUUIDMapsToAnAgent() { EnvironmentAgentConfig config = new EnvironmentAgentConfig("uuid1"); HashSet<String> uuids = new HashSet<>(); uuids.add("uuid1"); uuids.add("uuid2"); boolean isValid = config.validateUuidPresent(new CaseInsensitiveString("foo"), uuids); assertThat(isValid, is(true)); assertThat(config.errors().isEmpty(), is(true)); } }
@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)); }