summaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <jonbratseth@yahoo.com>2017-11-24 08:01:25 +0100
committerGitHub <noreply@github.com>2017-11-24 08:01:25 +0100
commitdc1ff6c135a8de11d0a5e8b4934f82d11962cd6b (patch)
treeca9e09f7f4d77cb7bb8c4b361792b3b2cc944c5b /config-model
parent30f6004e1a9ed864eff6edc76ed6b761633e4461 (diff)
Revert "Bratseth/select 1 host by index"
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/HostResource.java28
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java12
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java19
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java143
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java32
5 files changed, 77 insertions, 157 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
index e6ed91165ca..5e74a2ebc8a 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/HostResource.java
@@ -7,9 +7,7 @@ import com.yahoo.config.provision.Flavor;
import javax.annotation.Nullable;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.Collections;
-import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
@@ -266,30 +264,4 @@ public class HostResource implements Comparable<HostResource> {
return this.host.compareTo(other.host);
}
- /**
- * Picks hosts by some mixture of host name and index
- * (where the mix of one or the other is decided by the last parameter).
- */
- public static List<HostResource> pickHosts(Collection<HostResource> hosts, int count, int targetHostsSelectedByIndex) {
- targetHostsSelectedByIndex = Math.min(Math.min(targetHostsSelectedByIndex, count), hosts.size());
-
- List<HostResource> hostsSortedByName = new ArrayList<>(hosts);
- Collections.sort(hostsSortedByName);
-
- List<HostResource> hostsSortedByIndex = new ArrayList<>(hosts);
- hostsSortedByIndex.sort(Comparator.comparingInt(host -> host.primaryClusterMembership().get().index()));
- return pickHosts(hostsSortedByName, hostsSortedByIndex, count, targetHostsSelectedByIndex);
- }
- public static List<HostResource> pickHosts(List<HostResource> hostsSelectedByName, List<HostResource> hostsSelectedByIndex,
- int count, int targetHostsSelectedByIndex) {
- hostsSelectedByName = hostsSelectedByName.subList(0, Math.min(count - targetHostsSelectedByIndex, hostsSelectedByName.size()));
- hostsSelectedByIndex.removeAll(hostsSelectedByName);
- hostsSelectedByIndex = hostsSelectedByIndex.subList(0, Math.min(targetHostsSelectedByIndex, hostsSelectedByIndex.size()));
-
- List<HostResource> finalHosts = new ArrayList<>();
- finalHosts.addAll(hostsSelectedByName);
- finalHosts.addAll(hostsSelectedByIndex);
- return finalHosts;
- }
-
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
index f33c86134cb..cb8ec205395 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/builder/xml/dom/DomAdminV4Builder.java
@@ -19,7 +19,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
-import java.util.stream.Collectors;
/**
* Builds the admin model from a version 4 XML tag, or as a default when an admin 3 tag or no admin tag is used.
@@ -118,11 +117,12 @@ public class DomAdminV4Builder extends DomAdminBuilderBase {
/** Returns the count first containers in the current model having isRetired set to the given value */
private List<HostResource> sortedContainerHostsFrom(ContainerModel model, int count, boolean retired) {
- List<HostResource> hosts = model.getCluster().getContainers().stream()
- .filter(container -> retired == container.isRetired())
- .map(Container::getHostResource)
- .collect(Collectors.toList());
- return HostResource.pickHosts(hosts, count, 1);
+ List<HostResource> hosts = new ArrayList<>();
+ for (Container container : model.getCluster().getContainers())
+ if (retired == container.isRetired())
+ hosts.add(container.getHostResource());
+ Collections.sort(hosts);
+ return hosts.subList(0, Math.min(count, hosts.size()));
}
private void createLogserver(Admin admin, Collection<HostResource> hosts) {
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
index 16b0674fc14..7889b857fff 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java
@@ -10,7 +10,6 @@ import com.yahoo.config.provision.Environment;
import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.SystemName;
import com.yahoo.config.provision.Zone;
-import com.yahoo.lang.MutableInteger;
import com.yahoo.vespa.config.content.MessagetyperouteselectorpolicyConfig;
import com.yahoo.vespa.config.content.FleetcontrollerConfig;
import com.yahoo.vespa.config.content.StorDistributionConfig;
@@ -329,11 +328,9 @@ public class ContentCluster extends AbstractConfigProducer implements StorDistri
}
private List<HostResource> drawControllerHosts(int count, StorageGroup rootGroup, Collection<ContainerModel> containers) {
- List<HostResource> hostsByName = drawContentHostsRecursively(count, false, rootGroup);
- List<HostResource> hostsByIndex = drawContentHostsRecursively(count, true, rootGroup);
+ List<HostResource> hosts = drawContentHostsRecursively(count, rootGroup);
// if (hosts.size() < count) // supply with containers TODO: Currently disabled due to leading to topology change problems
// hosts.addAll(drawContainerHosts(count - hosts.size(), containers, new HashSet<>(hosts)));
- List<HostResource> hosts = HostResource.pickHosts(hostsByName, hostsByIndex, count, 1);
if (hosts.size() % 2 == 0) // ZK clusters of even sizes are less available (even in the size=2 case)
hosts = hosts.subList(0, hosts.size()-1);
return hosts;
@@ -406,24 +403,20 @@ public class ContentCluster extends AbstractConfigProducer implements StorDistri
*/
// Note: This method cannot be changed to draw different nodes without ensuring that it will draw nodes
// which overlaps with previously drawn nodes as this will prevent rolling upgrade
- private List<HostResource> drawContentHostsRecursively(int count, boolean byIndex, StorageGroup group) {
+ private List<HostResource> drawContentHostsRecursively(int count, StorageGroup group) {
Set<HostResource> hosts = new HashSet<>();
if (group.getNodes().isEmpty()) {
int hostsPerSubgroup = (int)Math.ceil((double)count / group.getSubgroups().size());
for (StorageGroup subgroup : group.getSubgroups())
- hosts.addAll(drawContentHostsRecursively(hostsPerSubgroup, byIndex, subgroup));
+ hosts.addAll(drawContentHostsRecursively(hostsPerSubgroup, subgroup));
}
else {
hosts.addAll(group.getNodes().stream()
- .filter(node -> ! node.isRetired()) // Avoid retired controllers to avoid surprises on expiry
- .map(StorageNode::getHostResource).collect(Collectors.toList()));
+ .filter(node -> ! node.isRetired()) // Avoid retired controllers to avoid surprises on expiry
+ .map(StorageNode::getHostResource).collect(Collectors.toList()));
}
-
List<HostResource> sortedHosts = new ArrayList<>(hosts);
- if (byIndex)
- sortedHosts.sort(Comparator.comparingInt(host -> host.primaryClusterMembership().get().index()));
- else // by name
- Collections.sort(sortedHosts);
+ Collections.sort(sortedHosts);
sortedHosts = sortedHosts.subList(0, Math.min(count, hosts.size()));
return sortedHosts;
}
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 6ea15788cf3..63d5d37598b 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
@@ -391,16 +391,16 @@ public class ModelProvisioningTest {
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals(3, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default28", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default31", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default54", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default10", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default13", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("default16", clusterControllers.getContainers().get(2).getHostName());
assertEquals(0, cluster.getRootGroup().getNodes().size());
assertEquals(9, cluster.getRootGroup().getSubgroups().size());
assertThat(cluster.getRootGroup().getSubgroups().get(0).getIndex(), is("0"));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().size(), is(3));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getDistributionKey(), is(0));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getConfigId(), is("bar/storage/0"));
- assertEquals("default54", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
+ assertEquals("default10", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(1).getDistributionKey(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(1).getConfigId(), is("bar/storage/1"));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(2).getDistributionKey(), is(2));
@@ -409,13 +409,13 @@ public class ModelProvisioningTest {
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().size(), is(3));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getDistributionKey(), is(3));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getConfigId(), is("bar/storage/3"));
- assertEquals("default51", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ assertEquals("default13", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(1).getDistributionKey(), is(4));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(1).getConfigId(), is("bar/storage/4"));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(2).getDistributionKey(), is(5));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(2).getConfigId(), is("bar/storage/5"));
// ...
- assertEquals("default48", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
+ assertEquals("default16", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
// ...
assertThat(cluster.getRootGroup().getSubgroups().get(8).getIndex(), is("8"));
assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().size(), is(3));
@@ -430,23 +430,23 @@ public class ModelProvisioningTest {
clusterControllers = cluster.getClusterControllers();
assertEquals(3, clusterControllers.getContainers().size());
assertEquals("baz-controllers", clusterControllers.getName());
- assertEquals("default01", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default02", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default27", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default37", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default38", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("default39", clusterControllers.getContainers().get(2).getHostName());
assertEquals(0, cluster.getRootGroup().getNodes().size());
assertEquals(27, cluster.getRootGroup().getSubgroups().size());
assertThat(cluster.getRootGroup().getSubgroups().get(0).getIndex(), is("0"));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().size(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getDistributionKey(), is(0));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getConfigId(), is("baz/storage/0"));
- assertEquals("default27", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
+ assertEquals("default37", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
assertThat(cluster.getRootGroup().getSubgroups().get(1).getIndex(), is("1"));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().size(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getDistributionKey(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getConfigId(), is("baz/storage/1"));
- assertEquals("default26", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ assertEquals("default38", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
// ...
- assertEquals("default25", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
+ assertEquals("default39", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
// ...
assertThat(cluster.getRootGroup().getSubgroups().get(26).getIndex(), is("26"));
assertThat(cluster.getRootGroup().getSubgroups().get(26).getNodes().size(), is(1));
@@ -483,9 +483,9 @@ public class ModelProvisioningTest {
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals(3, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default01", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default02", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default08", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default10", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default11", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("default12", clusterControllers.getContainers().get(2).getHostName());
assertEquals(0, cluster.getRootGroup().getNodes().size());
assertEquals(8, cluster.getRootGroup().getSubgroups().size());
assertEquals(8, cluster.distributionBits());
@@ -494,19 +494,19 @@ public class ModelProvisioningTest {
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().size(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getDistributionKey(), is(0));
assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getConfigId(), is("bar/storage/0"));
- assertEquals("default08", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
+ assertEquals("default10", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
// second group
assertThat(cluster.getRootGroup().getSubgroups().get(1).getIndex(), is("1"));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().size(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getDistributionKey(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getConfigId(), is("bar/storage/1"));
- assertEquals("default07", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ assertEquals("default11", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
// ... last group
assertThat(cluster.getRootGroup().getSubgroups().get(7).getIndex(), is("7"));
assertThat(cluster.getRootGroup().getSubgroups().get(7).getNodes().size(), is(1));
assertThat(cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getDistributionKey(), is(7));
assertThat(cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getConfigId(), is("bar/storage/7"));
- assertEquals("default01", cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getHostName());
+ assertEquals("default17", cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getHostName());
}
@Test
@@ -538,51 +538,16 @@ public class ModelProvisioningTest {
ContentCluster cluster = model.getContentClusters().get("bar");
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals( 8, cluster.distributionBits());
- assertEquals("We get the closest odd number", 5, clusterControllers.getContainers().size());
+ assertEquals("We get the closest odd numer", 5, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default01", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default02", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default04", clusterControllers.getContainers().get(2).getHostName());
- assertEquals("default05", clusterControllers.getContainers().get(3).getHostName());
- assertEquals("default07", clusterControllers.getContainers().get(4).getHostName());
- assertEquals("default09", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
- assertEquals("default08", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(1).getHostName());
- assertEquals("default06", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
- assertEquals("default03", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
- }
-
- @Test
- public void testClusterControllersWithGroupSize2() {
- String services =
- "<?xml version='1.0' encoding='utf-8' ?>\n" +
- "<services>" +
- " <admin version='4.0'/>" +
- " <container version='1.0' id='foo'>" +
- " <nodes count='10'/>" +
- " </container>" +
- " <content version='1.0' id='bar'>" +
- " <redundancy>2</redundancy>" +
- " <documents>" +
- " <document type='type1' mode='index'/>" +
- " </documents>" +
- " <nodes count='8' groups='4'/>" +
- " </content>" +
- "</services>";
-
- int numberOfHosts = 18;
- VespaModelTester tester = new VespaModelTester();
- tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true);
- assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
-
- // Check content clusters
- ContentCluster cluster = model.getContentClusters().get("bar");
- ContainerCluster clusterControllers = cluster.getClusterControllers();
- assertEquals("We get the closest odd number", 3, clusterControllers.getContainers().size());
- assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default01", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default03", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default08", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default10", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default11", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("default13", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default14", clusterControllers.getContainers().get(3).getHostName()); // Should be 16 for perfect distribution ...
+ assertEquals("default10", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
+ assertEquals("default11", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(1).getHostName());
+ assertEquals("default13", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ assertEquals("default16", cluster.getRootGroup().getSubgroups().get(2).getNodes().get(0).getHostName());
}
@Test
@@ -639,7 +604,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 19;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "default09", "default06", "default03");
+ VespaModel model = tester.createModel(services, true, "default10", "default13", "default16");
assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
// Check content clusters
@@ -647,9 +612,9 @@ public class ModelProvisioningTest {
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals(3, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("Skipping retired default09", "default01", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("Skipping retired default03", "default04", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("Skipping retired default06", "default08", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("Skipping retired default10", "default11", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("Skipping retired default13", "default14", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("Skipping retired default16", "default17", clusterControllers.getContainers().get(2).getHostName());
}
@Test
@@ -666,15 +631,15 @@ public class ModelProvisioningTest {
int numberOfHosts = 10;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "default09");
+ VespaModel model = tester.createModel(services, true, "default0");
assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
// Check slobroks clusters
assertEquals("Includes retired node", 1+3, model.getAdmin().getSlobroks().size());
- assertEquals("default01", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("default02", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("default10", model.getAdmin().getSlobroks().get(2).getHostName());
- assertEquals("Included in addition because it is retired", "default09", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("default1", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("default2", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("default3", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("Included in addition because it is retired", "default0", model.getAdmin().getSlobroks().get(3).getHostName());
}
@Test
@@ -691,16 +656,16 @@ public class ModelProvisioningTest {
int numberOfHosts = 10;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "default09", "default08");
+ VespaModel model = tester.createModel(services, true, "default3", "default4");
assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
// Check slobroks clusters
assertEquals("Includes retired node", 3+2, model.getAdmin().getSlobroks().size());
- assertEquals("default01", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("default02", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("default10", model.getAdmin().getSlobroks().get(2).getHostName());
- assertEquals("Included in addition because it is retired", "default08", model.getAdmin().getSlobroks().get(3).getHostName());
- assertEquals("Included in addition because it is retired", "default09", model.getAdmin().getSlobroks().get(4).getHostName());
+ assertEquals("default0", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("default1", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("default2", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("Included in addition because it is retired", "default3", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("Included in addition because it is retired", "default4", model.getAdmin().getSlobroks().get(4).getHostName());
}
@Test
@@ -720,19 +685,19 @@ public class ModelProvisioningTest {
int numberOfHosts = 13;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "default12", "default03", "default02");
+ VespaModel model = tester.createModel(services, true, "default0", "default10", "default11");
assertThat(model.getRoot().getHostSystem().getHosts().size(), is(numberOfHosts));
// Check slobroks clusters
// ... from cluster default
assertEquals("Includes retired node", 3+3, model.getAdmin().getSlobroks().size());
- assertEquals("default04", model.getAdmin().getSlobroks().get(0).getHostName());
- assertEquals("default13", model.getAdmin().getSlobroks().get(1).getHostName());
- assertEquals("Included in addition because it is retired", "default12", model.getAdmin().getSlobroks().get(2).getHostName());
+ assertEquals("default1", model.getAdmin().getSlobroks().get(0).getHostName());
+ assertEquals("default2", model.getAdmin().getSlobroks().get(1).getHostName());
+ assertEquals("Included in addition because it is retired", "default0", model.getAdmin().getSlobroks().get(2).getHostName());
// ... from cluster bar
- assertEquals("default01", model.getAdmin().getSlobroks().get(3).getHostName());
- assertEquals("Included in addition because it is retired", "default02", model.getAdmin().getSlobroks().get(4).getHostName());
- assertEquals("Included in addition because it is retired", "default03", model.getAdmin().getSlobroks().get(5).getHostName());
+ assertEquals("default12", model.getAdmin().getSlobroks().get(3).getHostName());
+ assertEquals("Included in addition because it is retired", "default10", model.getAdmin().getSlobroks().get(4).getHostName());
+ assertEquals("Included in addition because it is retired", "default11", model.getAdmin().getSlobroks().get(5).getHostName());
}
@Test
@@ -863,10 +828,10 @@ public class ModelProvisioningTest {
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals(4, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default04", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("default03", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("default02", clusterControllers.getContainers().get(2).getHostName());
- assertEquals("default01", clusterControllers.getContainers().get(3).getHostName());
+ assertEquals("default19", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default20", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("default21", clusterControllers.getContainers().get(2).getHostName());
+ assertEquals("default22", clusterControllers.getContainers().get(3).getHostName());
}
@Test
@@ -992,7 +957,7 @@ public class ModelProvisioningTest {
ContainerCluster clusterControllers = cluster.getClusterControllers();
assertEquals(1, clusterControllers.getContainers().size());
assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("default01", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("default0", clusterControllers.getContainers().get(0).getHostName());
assertEquals(1, cluster.redundancy().effectiveInitialRedundancy()); // Reduced from 3*3
assertEquals(1, cluster.redundancy().effectiveFinalRedundancy()); // Reduced from 3*4
assertEquals(1, cluster.redundancy().effectiveReadyCopies()); // Reduced from 3*3
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
index b88ba0276c4..901bd7f55b5 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java
@@ -18,6 +18,7 @@ import com.yahoo.vespa.model.test.utils.ApplicationPackageUtils;
import com.yahoo.vespa.model.test.utils.VespaModelCreatorWithMockPkg;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
@@ -28,7 +29,7 @@ import java.util.Optional;
* Helper class which sets up a system with multiple hosts.
* Usage:
* <code>
- * VespaModelteser tester = new VespaModelTester();
+ * VespaModelteser teser = new VespaModelTester();
* tester.addHosts(count, flavor);
* ... add more nodes
* VesoaModel model = tester.createModel(servicesString);
@@ -42,7 +43,7 @@ public class VespaModelTester {
private final ConfigModelRegistry configModelRegistry;
private boolean hosted = true;
- private Map<String, Collection<Host>> hostsByFlavor = new HashMap<>();
+ private Map<String, Collection<Host>> hosts = new HashMap<>();
public VespaModelTester() {
this(new NullConfigModelRegistry());
@@ -54,31 +55,20 @@ public class VespaModelTester {
/** Adds some hosts of the 'default' flavor to this system */
public Hosts addHosts(int count) { return addHosts("default", count); }
-
/** Adds some hosts to this system */
public Hosts addHosts(String flavor, int count) {
- return addHosts(Optional.empty(), flavor, count);
+ List<Host> hosts = new ArrayList<>();
+ for (int i = 0; i < count; i++)
+ hosts.add(new com.yahoo.config.model.provision.Host(flavor + i));
+ this.hosts.put(flavor.isEmpty() ? "default" : flavor, hosts);
+ return new Hosts(hosts);
}
-
public void addHosts(Flavor flavor, int count) {
- addHosts(Optional.of(flavor), flavor.name(), count);
- }
-
- private Hosts addHosts(Optional<Flavor> flavor, String flavorName, int count) {
List<Host> hosts = new ArrayList<>();
-
for (int i = 0; i < count; ++i) {
- // Let host names sort in the opposite order of the order the hosts are added
- // This allows us to test index vs. name order selection when subsets of hosts are selected from a cluster
- // (for e.g cluster controllers and slobrok nodes)
- String hostname = String.format("%s%02d", flavorName, count - i);
- hosts.add(new Host(hostname, ImmutableList.of(), flavor));
+ hosts.add(new Host(flavor.name() + i, ImmutableList.of(), Optional.of(flavor)));
}
- this.hostsByFlavor.put(flavorName, hosts);
-
- if (hosts.size() > 100)
- throw new IllegalStateException("The host naming scheme is nameNN. To test more than 100 hosts, change to nameNNN");
- return new Hosts(hosts);
+ this.hosts.put(flavor.name(), hosts);
}
/** Sets whether this sets up a model for a hosted system. Default: true */
@@ -105,7 +95,7 @@ public class VespaModelTester {
ApplicationPackage appPkg = modelCreatorWithMockPkg.appPkg;
HostProvisioner provisioner = hosted ?
- new InMemoryProvisioner(hostsByFlavor, failOnOutOfCapacity, startIndexForClusters, retiredHostNames) :
+ new InMemoryProvisioner(hosts, failOnOutOfCapacity, startIndexForClusters, retiredHostNames) :
new SingleNodeProvisioner();
DeployState deployState = new DeployState.Builder()