diff options
Diffstat (limited to 'config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java')
-rw-r--r-- | config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java index 96b2cfc3118..1abb72d73b5 100644 --- a/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java +++ b/config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java @@ -1,6 +1,7 @@ // Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.model.provision; +import com.yahoo.cloud.config.ZookeeperServerConfig; import com.yahoo.cloud.config.log.LogdConfig; import com.yahoo.config.application.api.ApplicationPackage; import com.yahoo.config.model.api.container.ContainerServiceType; @@ -40,6 +41,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; +import java.util.function.Function; import java.util.stream.Collectors; import static com.yahoo.config.model.test.TestUtil.joinLines; @@ -1871,6 +1873,45 @@ public class ModelProvisioningTest { assertEquals(3, cluster.getContainers().stream().filter(c -> !c.isRetired()).count()); } + @Test + public void containerWithZooKeeperJoiningServers() { + Function<Integer, String> servicesXml = (nodeCount) -> { + return "<?xml version='1.0' encoding='utf-8' ?>" + + "<services>" + + " <container version='1.0' id='zk'>" + + " <zookeeper/>" + + " <nodes count='" + nodeCount + "'/>" + + " </container>" + + "</services>"; + }; + VespaModelTester tester = new VespaModelTester(); + tester.addHosts(5); + VespaModel model = tester.createModel(servicesXml.apply(3), true); + + { + ApplicationContainerCluster cluster = model.getContainerClusters().get("zk"); + ZookeeperServerConfig.Builder config = new ZookeeperServerConfig.Builder(); + cluster.getContainers().forEach(c -> c.getConfig(config)); + cluster.getConfig(config); + assertTrue("Initial servers are not joining", config.build().server().stream().noneMatch(ZookeeperServerConfig.Server::joining)); + } + { + VespaModel nextModel = tester.createModel(Zone.defaultZone(), servicesXml.apply(5), true, false, 0, Optional.of(model)); + ApplicationContainerCluster cluster = nextModel.getContainerClusters().get("zk"); + ZookeeperServerConfig.Builder config = new ZookeeperServerConfig.Builder(); + cluster.getContainers().forEach(c -> c.getConfig(config)); + cluster.getConfig(config); + assertEquals("New nodes are joining", + Map.of(0, false, + 1, false, + 2, false, + 3, true, + 4, true), + config.build().server().stream().collect(Collectors.toMap(ZookeeperServerConfig.Server::id, + ZookeeperServerConfig.Server::joining))); + } + } + private VespaModel createNonProvisionedMultitenantModel(String services) { return createNonProvisionedModel(true, null, services); } |