aboutsummaryrefslogtreecommitdiffstats
path: root/config-model
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2020-05-30 22:33:42 +0200
committerJon Bratseth <bratseth@gmail.com>2020-05-30 22:33:42 +0200
commit0e4619ad522882965a1494808d1aefc0fd696d98 (patch)
tree700417bd646533b55dd30a345399f19fdf07a706 /config-model
parent0cc3b79099a495522b0cb7d5b3ecb021edd353ed (diff)
Add test
Diffstat (limited to 'config-model')
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java4
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/content/cluster/ContentCluster.java6
-rw-r--r--config-model/src/test/java/com/yahoo/config/model/provision/ModelProvisioningTest.java49
3 files changed, 52 insertions, 7 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
index 193a4eff50f..6cb45c4559b 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/content/ContentSearchCluster.java
@@ -368,9 +368,7 @@ public class ContentSearchCluster extends AbstractConfigProducer implements Prot
int numDocumentDbs = builder.documentdb.size();
builder.initialize(new ProtonConfig.Initialize.Builder().threads(numDocumentDbs + 1));
- if (resourceLimits.isPresent()) {
- resourceLimits.get().getConfig(builder);
- }
+ resourceLimits.ifPresent(limits -> limits.getConfig(builder));
if (tuning != null) {
tuning.getConfig(builder);
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 91acfab8264..9fb553fffde 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
@@ -60,6 +60,7 @@ import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.Set;
import java.util.TreeMap;
import java.util.logging.Level;
@@ -242,7 +243,10 @@ public class ContentCluster extends AbstractConfigProducer implements
/** Returns whether this hosts one of the given container clusters */
private boolean isCombined(String clusterId, Collection<ContainerModel> containers) {
- return containers.stream().map(model -> model.getCluster().getHostClusterId()).anyMatch(id -> id.equals(clusterId));
+ return containers.stream()
+ .map(model -> model.getCluster().getHostClusterId())
+ .filter(Optional::isPresent)
+ .anyMatch(id -> id.get().equals(clusterId));
}
private void setupExperimental(ContentCluster cluster, ModelElement experimental) {
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 7208d8c5fc1..1be58564d1b 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
@@ -252,22 +252,59 @@ public class ModelProvisioningTest {
" <documents>" +
" <document type='type1' mode='index'/>" +
" </documents>" +
- " <nodes count='2'/>" +
+ " <nodes count='2'>" +
+ " <resources vcpu='1' memory='3Gb' disk='9Gb'/>" +
+ " </nodes>" +
" </content>" +
"</services>";
VespaModelTester tester = new VespaModelTester();
tester.addHosts(2);
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());
assertEquals("Heap size is lowered with combined clusters",
17, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
+ assertEquals("Memory for proton is lowered to account for the jvm heap",
+ (long)(3 * (Math.pow(1024, 3)) * (1 - 0.17)), protonMemorySize(model.getContentClusters().get("content1")));
assertProvisioned(0, ClusterSpec.Id.from("container1"), ClusterSpec.Type.container, model);
assertProvisioned(2, ClusterSpec.Id.from("content1"), ClusterSpec.Id.from("container1"), ClusterSpec.Type.combined, model);
}
}
+ /** For comparison with the above */
+ @Test
+ public void testNonCombinedCluster() {
+ var containerElements = Set.of("jdisc", "container");
+ for (var containerElement : containerElements) {
+ String xmlWithNodes =
+ "<?xml version='1.0' encoding='utf-8' ?>" +
+ "<services>" +
+ " <" + containerElement + " version='1.0' id='container1'>" +
+ " <search/>" +
+ " <nodes count='2'/>" +
+ " </" + containerElement + ">" +
+ " <content version='1.0' id='content1'>" +
+ " <redundancy>2</redundancy>" +
+ " <documents>" +
+ " <document type='type1' mode='index'/>" +
+ " </documents>" +
+ " <nodes count='2'>" +
+ " <resources vcpu='1' memory='3Gb' disk='9Gb'/>" +
+ " </nodes>" +
+ " </content>" +
+ "</services>";
+ VespaModelTester tester = new VespaModelTester();
+ tester.addHosts(4);
+ 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());
+ assertEquals("Heap size is normal",
+ 60, physicalMemoryPercentage(model.getContainerClusters().get("container1")));
+ assertEquals("Memory for proton is normal",
+ (long)(3 * (Math.pow(1024, 3))), protonMemorySize(model.getContentClusters().get("content1")));
+ }
+ }
+
@Test
public void testCombinedClusterWithJvmOptions() {
String xmlWithNodes =
@@ -1741,7 +1778,13 @@ public class ModelProvisioningTest {
private int physicalMemoryPercentage(ContainerCluster cluster) {
QrStartConfig.Builder b = new QrStartConfig.Builder();
cluster.getConfig(b);
- return new QrStartConfig(b).jvm().heapSizeAsPercentageOfPhysicalMemory();
+ return b.build().jvm().heapSizeAsPercentageOfPhysicalMemory();
+ }
+
+ private long protonMemorySize(ContentCluster cluster) {
+ ProtonConfig.Builder b = new ProtonConfig.Builder();
+ cluster.getSearch().getIndexed().getSearchNode(0).getConfig(b);
+ return b.build().hwinfo().memory().size();
}
@Test