@Override public void removeAgent(String uuid) { agents.remove(new EnvironmentAgentConfig(uuid)); }
@Override public void addAgent(String uuid) { agents.add(new EnvironmentAgentConfig(uuid)); }
public void setConfigAttributes(Object attributes) { if (attributes != null) { List<Map> agentAttributes = (List) attributes; this.clear(); for (Map attributeMap : agentAttributes) { this.add(new EnvironmentAgentConfig((String) attributeMap.get("uuid"))); } } } }
@Override public void addAgentIfNew(String uuid) { EnvironmentAgentConfig agentConfig = new EnvironmentAgentConfig(uuid); if (!agents.contains(agentConfig)) { agents.add(agentConfig); } }
@Test public void shouldUpdateAgents() { environmentConfig.addAgent("uuid-1"); environmentConfig.setConfigAttributes(Collections.singletonMap(BasicEnvironmentConfig.AGENTS_FIELD, Arrays.asList(Collections.singletonMap("uuid", "uuid-2"), Collections.singletonMap("uuid", "uuid-3")))); EnvironmentAgentsConfig expectedAgents = new EnvironmentAgentsConfig(); expectedAgents.add(new EnvironmentAgentConfig("uuid-2")); expectedAgents.add(new EnvironmentAgentConfig("uuid-3")); assertThat(environmentConfig.getAgents(), is(expectedAgents)); }
@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 shouldModifyEmptyEnvironmentConfigWithUIOrigin() { BasicCruiseConfig mainCruiseConfig = new BasicCruiseConfig(pipelines); PartialConfig partialConfig = PartialConfigMother.withEnvironment("remoteEnv"); partialConfig.setOrigins(new RepoConfigOrigin()); cruiseConfig = new BasicCruiseConfig(mainCruiseConfig, true, partialConfig); cruiseConfig.getEnvironments().get(0).addAgent("agent"); MergeEnvironmentConfig mergedEnv = (MergeEnvironmentConfig) cruiseConfig.getEnvironments().get(0); assertThat(mergedEnv.getFirstEditablePart().getAgents(), hasItem(new EnvironmentAgentConfig("agent"))); }
@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"))); }