aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java2
-rw-r--r--config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java2
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java194
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java5
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java2
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java6
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java3
-rw-r--r--config-model/src/test/java/com/yahoo/vespa/model/test/VespaModelTester.java10
10 files changed, 154 insertions, 76 deletions
diff --git a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
index 94e9c0f848f..c59746f8332 100644
--- a/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
+++ b/config-model-api/src/main/java/com/yahoo/config/model/api/ModelContext.java
@@ -123,7 +123,7 @@ public interface ModelContext {
// Note: Used in unit tests (set to false in TestProperties) to avoid needing to deal with implicitly created node for logserver
default boolean useDedicatedNodeForLogserver() { return true; }
- default boolean dedicatedClusterControllerCluster() { return false; }
+ default boolean dedicatedClusterControllerCluster() { return hostedVespa(); }
}
diff --git a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
index c78d54e6eff..b7b6824eb9f 100644
--- a/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
+++ b/config-model/src/main/java/com/yahoo/config/model/deploy/TestProperties.java
@@ -36,7 +36,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
private Zone zone;
private final Set<ContainerEndpoint> endpoints = Collections.emptySet();
private boolean useDedicatedNodeForLogserver = false;
- private boolean dedicatedClusterControllerCluster = false;
+ private boolean dedicatedClusterControllerCluster = true;
private boolean useThreePhaseUpdates = false;
private double defaultTermwiseLimit = 1.0;
private String jvmGCOptions = null;
@@ -74,7 +74,7 @@ public class TestProperties implements ModelContext.Properties, ModelContext.Fea
@Override public boolean isBootstrap() { return false; }
@Override public boolean isFirstTimeDeployment() { return false; }
@Override public boolean useDedicatedNodeForLogserver() { return useDedicatedNodeForLogserver; }
- @Override public boolean dedicatedClusterControllerCluster() { return dedicatedClusterControllerCluster; }
+ @Override public boolean dedicatedClusterControllerCluster() { return hostedVespa && dedicatedClusterControllerCluster; }
@Override public Optional<EndpointCertificateSecrets> endpointCertificateSecrets() { return endpointCertificateSecrets; }
@Override public double defaultTermwiseLimit() { return defaultTermwiseLimit; }
@Override public boolean useThreePhaseUpdates() { return useThreePhaseUpdates; }
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 c909aeec022..79ce9343560 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
@@ -413,7 +413,7 @@ public class ContentCluster extends AbstractConfigProducer implements
}
List<HostResource> sortedHosts = new ArrayList<>(hosts);
- sortedHosts.sort((a, b) -> (a.comparePrimarilyByIndexTo(b)));
+ sortedHosts.sort(HostResource::comparePrimarilyByIndexTo);
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 f1c81e29923..a76feb77c75 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
@@ -171,7 +171,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
- int numberOfHosts = 2;
+ int numberOfHosts = 5;
tester.addHosts(numberOfHosts);
int numberOfContentNodes = 2;
VespaModel model = tester.createModel(xmlWithNodes, true);
@@ -209,7 +209,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
- tester.addHosts(5);
+ tester.addHosts(8);
VespaModel model = tester.createModel(xmlWithNodes, true);
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
@@ -264,6 +264,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(2);
VespaModel model = tester.createModel(xmlWithNodes, true);
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
@@ -300,7 +301,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
- tester.addHosts(4);
+ tester.addHosts(7);
VespaModel model = tester.createModel(xmlWithNodes, true);
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
assertEquals("Nodes in container1", 2, model.getContainerClusters().get("container1").getContainers().size());
@@ -329,6 +330,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(2);
VespaModel model = tester.createModel(xmlWithNodes, true);
@@ -365,7 +367,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
- tester.addHosts(5);
+ tester.addHosts(8);
VespaModel model = tester.createModel(xmlWithNodes, true);
assertEquals("Nodes in content1", 2, model.getContentClusters().get("content1").getRootGroup().getNodes().size());
@@ -455,7 +457,112 @@ public class ModelProvisioningTest {
public void testUsingNodesAndGroupCountAttributes() {
String services =
"<?xml version='1.0' encoding='utf-8' ?>\n" +
- "<services>" +
+ "<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='27' groups='9'/>" +
+ " </content>" +
+ " <content version='1.0' id='baz'>" +
+ " <redundancy>1</redundancy>" +
+ " <documents>" +
+ " <document type='type1' mode='index'/>" +
+ " </documents>" +
+ " <nodes count='27' groups='27'/>" +
+ " </content>" +
+ "</services>";
+
+ int numberOfHosts = 67;
+ VespaModelTester tester = new VespaModelTester();
+ tester.addHosts(numberOfHosts);
+ VespaModel model = tester.createModel(services, true);
+ assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
+
+ // Check container cluster
+ assertEquals(1, model.getContainerClusters().size());
+ Set<HostResource> containerHosts = model.getContainerClusters().get("foo").getContainers().stream()
+ .map(Container::getHost)
+ .collect(Collectors.toSet());
+ assertEquals(10, containerHosts.size());
+
+ // Check admin clusters
+ Admin admin = model.getAdmin();
+ Set<HostResource> slobrokHosts = admin.getSlobroks().stream().map(Slobrok::getHost).collect(Collectors.toSet());
+ assertEquals(3, slobrokHosts.size());
+ assertTrue("Slobroks are assigned from container nodes", containerHosts.containsAll(slobrokHosts));
+ assertTrue("Logserver is assigned from container nodes", containerHosts.contains(admin.getLogserver().getHost()));
+ assertEquals("No in-cluster config servers in a hosted environment", 0, admin.getConfigservers().size());
+ assertEquals("Dedicated admin cluster controllers when hosted", 3, admin.getClusterControllers().getContainers().size());
+
+ // Check content clusters
+ ContentCluster cluster = model.getContentClusters().get("bar");
+ assertNull("No own cluster controllers when hosted", cluster.getClusterControllers());
+ assertEquals(0, cluster.getRootGroup().getNodes().size());
+ assertEquals(9, cluster.getRootGroup().getSubgroups().size());
+ assertEquals("0", cluster.getRootGroup().getSubgroups().get(0).getIndex());
+ assertEquals(3, cluster.getRootGroup().getSubgroups().get(0).getNodes().size());
+ assertEquals(0, cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getDistributionKey());
+ assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getConfigId(), is("bar/storage/0"));
+ assertEquals("node-1-3-10-57", 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));
+ assertThat(cluster.getRootGroup().getSubgroups().get(0).getNodes().get(2).getConfigId(), is("bar/storage/2"));
+ assertThat(cluster.getRootGroup().getSubgroups().get(1).getIndex(), is("1"));
+ 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("node-1-3-10-54", 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("node-1-3-10-51", 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));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(0).getDistributionKey(), is(24));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(0).getConfigId(), is("bar/storage/24"));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(1).getDistributionKey(), is(25));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(1).getConfigId(), is("bar/storage/25"));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(2).getDistributionKey(), is(26));
+ assertThat(cluster.getRootGroup().getSubgroups().get(8).getNodes().get(2).getConfigId(), is("bar/storage/26"));
+
+ cluster = model.getContentClusters().get("baz");
+ assertNull("No own cluster controllers when hosted", cluster.getClusterControllers());
+ 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("node-1-3-10-27", 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("node-1-3-10-26", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ // ...
+ assertEquals("node-1-3-10-25", 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));
+ assertThat(cluster.getRootGroup().getSubgroups().get(26).getNodes().get(0).getDistributionKey(), is(26));
+ assertThat(cluster.getRootGroup().getSubgroups().get(26).getNodes().get(0).getConfigId(), is("baz/storage/26"));
+ }
+
+ @Test
+ public void testUsingNodesAndGroupCountAttributesWithoutDedicatedClusterControllers() {
+ String services =
+ "<?xml version='1.0' encoding='utf-8' ?>\n" +
+ "<services>" +
" <admin version='4.0'/>" +
" <container version='1.0' id='foo'>" +
" <nodes count='10'/>" +
@@ -478,6 +585,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 64;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(numberOfHosts);
VespaModel model = tester.createModel(services, true);
assertEquals(numberOfHosts, model.getRoot().hostSystem().getHosts().size());
@@ -584,20 +692,22 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
- int numberOfHosts = 18;
+ int numberOfHosts = 21;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
VespaModel model = tester.createModel(services, true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
+ ClusterControllerContainerCluster clusterControllers = model.getAdmin().getClusterControllers();
+ assertEquals(3, clusterControllers.getContainers().size());
+ assertEquals("cluster-controllers", clusterControllers.getName());
+ assertEquals("node-1-3-10-03", clusterControllers.getContainers().get(0).getHostName());
+ assertEquals("node-1-3-10-02", clusterControllers.getContainers().get(1).getHostName());
+ assertEquals("node-1-3-10-01", clusterControllers.getContainers().get(2).getHostName());
+
// Check content cluster
ContentCluster cluster = model.getContentClusters().get("bar");
- ClusterControllerContainerCluster clusterControllers = cluster.getClusterControllers();
- assertEquals(3, clusterControllers.getContainers().size());
- assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("node-1-3-10-08", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("node-1-3-10-07", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("node-1-3-10-06", clusterControllers.getContainers().get(2).getHostName());
+ assertNull(cluster.getClusterControllers());
assertEquals(0, cluster.getRootGroup().getNodes().size());
assertEquals(8, cluster.getRootGroup().getSubgroups().size());
assertEquals(8, cluster.distributionBits());
@@ -606,19 +716,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("node-1-3-10-08", cluster.getRootGroup().getSubgroups().get(0).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-10-11", 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("node-1-3-10-07", cluster.getRootGroup().getSubgroups().get(1).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-10-10", 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("node-1-3-10-01", cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getHostName());
+ assertEquals("node-1-3-10-04", cluster.getRootGroup().getSubgroups().get(7).getNodes().get(0).getHostName());
}
@Test
@@ -641,6 +751,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 18;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(numberOfHosts);
VespaModel model = tester.createModel(services, true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
@@ -656,43 +767,6 @@ public class ModelProvisioningTest {
}
@Test
- public void testClusterControllersIncludeNonRetiredNodes() {
- 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='9' groups='3'/>" +
- " </content>" +
- "</services>";
-
- int numberOfHosts = 19;
- VespaModelTester tester = new VespaModelTester();
- tester.addHosts(numberOfHosts);
- VespaModel model = tester.createModel(services, true, "node-1-3-10-09", "node-1-3-10-06", "node-1-3-10-03");
- assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
-
- // Check content clusters
- ContentCluster cluster = model.getContentClusters().get("bar");
- ClusterControllerContainerCluster clusterControllers = cluster.getClusterControllers();
- assertEquals(3 + 3, clusterControllers.getContainers().size()); // 3 new + 3 retired
- assertEquals("bar-controllers", clusterControllers.getName());
- assertEquals("Non-retired", "node-1-3-10-08", clusterControllers.getContainers().get(0).getHostName());
- assertEquals("Non-retired", "node-1-3-10-05", clusterControllers.getContainers().get(1).getHostName());
- assertEquals("Non-retired", "node-1-3-10-02", clusterControllers.getContainers().get(2).getHostName());
- assertEquals("Retired", "node-1-3-10-09", clusterControllers.getContainers().get(3).getHostName());
- assertEquals("Retired", "node-1-3-10-06", clusterControllers.getContainers().get(4).getHostName());
- assertEquals("Retired", "node-1-3-10-03", clusterControllers.getContainers().get(5).getHostName());
- }
-
- @Test
public void testSlobroksClustersAreExpandedToIncludeRetiredNodes() {
String services =
"<?xml version='1.0' encoding='utf-8' ?>\n" +
@@ -791,6 +865,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 2;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(numberOfHosts);
VespaModel model = tester.createModel(services, true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
@@ -824,7 +899,6 @@ public class ModelProvisioningTest {
int numberOfHosts = 7;
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- tester.dedicatedClusterControllerCluster(true);
VespaModel model = tester.createModel(services);
assertEquals(7, model.getRoot().hostSystem().getHosts().size());
@@ -991,6 +1065,7 @@ public class ModelProvisioningTest {
int numberOfHosts = 1; // We only have 1 content node -> 1 groups with redundancy 1
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(numberOfHosts);
VespaModel model = tester.createModel(services, false);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
@@ -1048,7 +1123,6 @@ public class ModelProvisioningTest {
int numberOfHosts = 4; // needs 2 for foo and 3 for cluster controllers.
VespaModelTester tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- tester.dedicatedClusterControllerCluster(true);
tester.createModel(services, false);
}
@@ -1157,6 +1231,7 @@ public class ModelProvisioningTest {
int totalHosts = 18;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(new NodeResources(0.1, 0.2, 300, 0.3, NodeResources.DiskSpeed.slow), 1);// Logserver
tester.addHosts(new NodeResources(0.1, 0.3, 1, 0.5), 2); // Slobrok
tester.addHosts(new NodeResources(12, 10, 30, 0.3), 4); // Container
@@ -1188,6 +1263,7 @@ public class ModelProvisioningTest {
int totalHosts = 10;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(new NodeResources(11.5, 10, 30, 0.3), 6);
tester.addHosts(new NodeResources(85, 200, 1000_000_000, 0.3), 20);
VespaModel model = tester.createModel(services, true);
@@ -1216,6 +1292,7 @@ public class ModelProvisioningTest {
int totalHosts = 26;
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(new NodeResources(13.5, 100, 1000, 0.3), 6);
tester.addHosts(new NodeResources(85, 200, 1000_000_000, 0.3), 20);
VespaModel model = tester.createModel(services, true, true);
@@ -1387,10 +1464,11 @@ public class ModelProvisioningTest {
tester.setHosted(true);
tester.addHosts(4);
VespaModel model = tester.createModel(new Zone(Environment.dev, RegionName.from("us-central-1")), services, true);
- assertEquals("We get 1 node per cluster and no admin node", 2, model.getHosts().size());
+ assertEquals("We get 1 node per cluster and no admin node apart from the dedicated cluster controller", 3, model.getHosts().size());
assertEquals(1, model.getContainerClusters().size());
assertEquals(1, model.getContainerClusters().get("foo").getContainers().size());
assertEquals(1, model.getContentClusters().get("bar").getRootGroup().countNodes());
+ assertEquals(1, model.getAdmin().getClusterControllers().getContainers().size());
}
/** Deploying an application with "nodes count" standalone should give a single-node deployment */
@@ -1437,6 +1515,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(3);
VespaModel model = tester.createModel(services, true);
assertEquals(3, model.getRoot().hostSystem().getHosts().size());
@@ -1737,6 +1816,7 @@ public class ModelProvisioningTest {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
+ tester.dedicatedClusterControllerCluster(false);
tester.addHosts(6);
VespaModel model = tester.createModel(servicesXml, true);
@@ -1851,7 +1931,7 @@ public class ModelProvisioningTest {
"</services>");
VespaModelTester tester = new VespaModelTester();
- tester.addHosts(new NodeResources(1, 3, 9, 5, NodeResources.DiskSpeed.slow), 2);
+ tester.addHosts(new NodeResources(1, 3, 10, 5, NodeResources.DiskSpeed.slow), 5);
VespaModel model = tester.createModel(services, true, 0);
ContentSearchCluster cluster = model.getContentClusters().get("test").getSearch();
assertEquals(2, cluster.getSearchNodes().size());
@@ -1903,7 +1983,7 @@ public class ModelProvisioningTest {
"</services>");
VespaModelTester tester = new VespaModelTester();
- tester.addHosts(new NodeResources(1, 3, 9, 1), 1);
+ tester.addHosts(new NodeResources(1, 3, 10, 1), 4);
tester.addHosts(new NodeResources(1, 128, 100, 0.3), 1);
VespaModel model = tester.createModel(services, true, 0);
ContentSearchCluster cluster = model.getContentClusters().get("test").getSearch();
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
index 87db274d4f5..a11d23dbfbb 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyContainerTest.java
@@ -33,7 +33,7 @@ public class MetricsProxyContainerTest {
@Test
public void one_metrics_proxy_container_is_added_to_every_node() {
- var numberOfHosts = 4;
+ var numberOfHosts = 7;
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
@@ -55,7 +55,6 @@ public class MetricsProxyContainerTest {
var numberOfHosts = 7;
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
- tester.dedicatedClusterControllerCluster(true);
VespaModel model = tester.createModel(servicesWithManyNodes(), true);
assertThat(model.getRoot().hostSystem().getHosts().size(), is(numberOfHosts));
@@ -118,7 +117,7 @@ public class MetricsProxyContainerTest {
public void hosted_application_propagates_node_dimensions() {
String services = servicesWithContent();
VespaModel hostedModel = getModel(services, hosted);
- assertEquals(1, hostedModel.getHosts().size());
+ assertEquals(4, hostedModel.getHosts().size());
String configId = containerConfigId(hostedModel, hosted);
NodeDimensionsConfig config = getNodeDimensionsConfig(hostedModel, configId);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
index 7fcd5c14a0f..7c31802fb4d 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/admin/metricsproxy/MetricsProxyModelTester.java
@@ -44,7 +44,7 @@ class MetricsProxyModelTester {
}
static VespaModel getModel(String servicesXml, TestMode testMode, DeployState.Builder builder) {
- var numberOfHosts = testMode == hosted ? 2 : 1;
+ var numberOfHosts = testMode == hosted ? 4 : 1;
var tester = new VespaModelTester();
tester.addHosts(numberOfHosts);
tester.setHosted(testMode == hosted);
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
index 2d48f55d3d5..5525f00c381 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/container/search/ImplicitIndexingClusterTest.java
@@ -50,7 +50,7 @@ public class ImplicitIndexingClusterTest {
ModelContext.Properties properties = new TestProperties().setMultitenant(true).setHostedVespa(true);
DeployState.Builder deployStateBuilder = new DeployState.Builder()
.properties(properties)
- .modelHostProvisioner(new InMemoryProvisioner(true, false, "host1.yahoo.com", "host2.yahoo.com", "host3.yahoo.com"));
+ .modelHostProvisioner(new InMemoryProvisioner(6, false));
return new VespaModelCreatorWithMockPkg(new MockApplicationPackage.Builder()
.withServices("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + servicesXml)
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
index ea76578ef04..811e789752e 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ContentClusterTest.java
@@ -1059,7 +1059,7 @@ public class ContentClusterTest extends ContentBaseTest {
@Test
public void testDedicatedClusterControllers() {
- VespaModel noContentModel = createEnd2EndOneNode(new TestProperties().setDedicatedClusterControllerCluster(true)
+ VespaModel noContentModel = createEnd2EndOneNode(new TestProperties().setHostedVespa(true)
.setMultitenant(true),
"<?xml version='1.0' encoding='UTF-8' ?>" +
"<services version='1.0'>" +
@@ -1068,7 +1068,7 @@ public class ContentClusterTest extends ContentBaseTest {
assertEquals(Map.of(), noContentModel.getContentClusters());
assertNull("No cluster controller without content", noContentModel.getAdmin().getClusterControllers());
- VespaModel oneContentModel = createEnd2EndOneNode(new TestProperties().setDedicatedClusterControllerCluster(true)
+ VespaModel oneContentModel = createEnd2EndOneNode(new TestProperties().setHostedVespa(true)
.setMultitenant(true),
"<?xml version='1.0' encoding='UTF-8' ?>" +
"<services version='1.0'>" +
@@ -1109,7 +1109,7 @@ public class ContentClusterTest extends ContentBaseTest {
" </tuning>" +
" </content>" +
" </services>";
- VespaModel twoContentModel = createEnd2EndOneNode(new TestProperties().setDedicatedClusterControllerCluster(true)
+ VespaModel twoContentModel = createEnd2EndOneNode(new TestProperties().setHostedVespa(true)
.setMultitenant(true),
twoContentServices);
assertNull("No own cluster controller for content", twoContentModel.getContentClusters().get("storage").getClusterControllers());
diff --git a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
index 001773abb92..4a388025399 100644
--- a/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
+++ b/config-model/src/test/java/com/yahoo/vespa/model/test/ModelAmendingTestCase.java
@@ -74,7 +74,7 @@ public class ModelAmendingTestCase {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester(amendingModelRepo);
- tester.addHosts(9);
+ tester.addHosts(12);
VespaModel model = tester.createModel(services);
// Check that all hosts are amended
@@ -121,7 +121,6 @@ public class ModelAmendingTestCase {
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester(amendingModelRepo);
- tester.dedicatedClusterControllerCluster(true);
tester.addHosts(12);
VespaModel model = tester.createModel(services);
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 220f87001aa..eafbca09009 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
@@ -52,7 +52,7 @@ public class VespaModelTester {
private final Map<NodeResources, Collection<Host>> hostsByResources = new HashMap<>();
private ApplicationId applicationId = ApplicationId.defaultId();
private boolean useDedicatedNodeForLogserver = false;
- private boolean dedicatedClusterControllerCluster = false;
+ private boolean dedicatedClusterControllerCluster = true;
public VespaModelTester() {
this(new NullConfigModelRegistry());
@@ -98,14 +98,14 @@ public class VespaModelTester {
applicationId = ApplicationId.from(tenant, applicationName, instanceName);
}
- public void dedicatedClusterControllerCluster(boolean dedicatedClusterControllerCluster) {
- this.dedicatedClusterControllerCluster = dedicatedClusterControllerCluster;
- }
-
public void useDedicatedNodeForLogserver(boolean useDedicatedNodeForLogserver) {
this.useDedicatedNodeForLogserver = useDedicatedNodeForLogserver;
}
+ public void dedicatedClusterControllerCluster(boolean dedicatedClusterControllerCluster) {
+ this.dedicatedClusterControllerCluster = dedicatedClusterControllerCluster;
+ }
+
/** Creates a model which uses 0 as start index and fails on out of capacity */
public VespaModel createModel(String services, String ... retiredHostNames) {
return createModel(Zone.defaultZone(), services, true, retiredHostNames);