diff options
author | Jon Bratseth <bratseth@gmail.com> | 2020-05-30 22:33:42 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2020-05-30 22:33:42 +0200 |
commit | 0e4619ad522882965a1494808d1aefc0fd696d98 (patch) | |
tree | 700417bd646533b55dd30a345399f19fdf07a706 /config-model | |
parent | 0cc3b79099a495522b0cb7d5b3ecb021edd353ed (diff) |
Add test
Diffstat (limited to 'config-model')
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 |