diff options
author | Harald Musum <musum@verizonmedia.com> | 2021-05-20 19:24:29 +0200 |
---|---|---|
committer | Harald Musum <musum@verizonmedia.com> | 2021-05-20 19:24:29 +0200 |
commit | 7a316b184df60f0b34c9fc24a655622fccd01bfa (patch) | |
tree | f211a4a40283d9a6265d2997909df47575c7fbc9 /config-model/src/test/java/com | |
parent | 864eb3da782e9795826ec78add953a76eeb2ea17 (diff) |
Warn when specifying resource limits in hosted Vespa
Want to throw and fail deployments, but need to make sure nobody
i doing this first, so warn for now
Diffstat (limited to 'config-model/src/test/java/com')
3 files changed, 37 insertions, 9 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 326bf577acc..2ddddba19d9 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 @@ -2056,9 +2056,6 @@ public class ModelProvisioningTest { " </nodes>", " <engine>", " <proton>", - " <resource-limits>", - " <memory>0.92</memory>", - " </resource-limits>", " <tuning>", " <searchnode>", " <flushstrategy>", @@ -2084,7 +2081,6 @@ public class ModelProvisioningTest { assertEquals(2000, cfg.flush().memory().maxtlssize()); // from config override assertEquals(1000, cfg.flush().memory().maxmemory()); // from explicit tuning assertEquals((long) ((128 - reservedMemoryGb) * GB / 8), cfg.flush().memory().each().maxmemory()); // from default node flavor tuning - assertEquals(0.92, cfg.writefilter().memorylimit(), 0.0001); // from explicit resource-limits } private static ProtonConfig getProtonConfig(VespaModel model, String configId) { diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java index da2d5e2e3a0..f094c242b8c 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/ClusterResourceLimitsTest.java @@ -1,6 +1,11 @@ // Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.content; +import com.yahoo.config.application.api.DeployLogger; +import com.yahoo.config.model.application.provider.BaseDeployLogger; +import com.yahoo.searchdefinition.derived.TestableDeployLogger; +import com.yahoo.text.XML; +import com.yahoo.vespa.model.builder.xml.dom.ModelElement; import org.junit.Test; import java.util.Optional; @@ -43,7 +48,7 @@ public class ClusterResourceLimitsTest { return this; } public ClusterResourceLimits build() { - var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor); + var builder = new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, false, new BaseDeployLogger()); builder.setClusterControllerBuilder(ctrlBuilder); builder.setContentNodeBuilder(nodeBuilder); return builder.build(); @@ -114,6 +119,29 @@ public class ClusterResourceLimitsTest { new Fixture(true)); } + @Test + // TODO: Change to expect exception being thrown when noone uses this in hosted + public void default_resource_limits_when_hosted_and_warning_is_logged() { + TestableDeployLogger logger = new TestableDeployLogger(); + final boolean hosted = true; + + ClusterResourceLimits.Builder builder = new ClusterResourceLimits.Builder(true, hosted, logger); + ClusterResourceLimits limits = builder.build(new ModelElement(XML.getDocument("<cluster id=\"test\">" + + " <tuning>\n" + + " <resource-limits>\n" + + " <memory>0.92</memory>\n" + + " </resource-limits>\n" + + " </tuning>\n" + + "</cluster>") + .getDocumentElement())); + + assertLimits(0.8, 0.8, limits.getClusterControllerLimits()); + assertLimits(0.9, 0.9, limits.getContentNodeLimits()); + + assertEquals(1, logger.warnings.size()); + assertEquals("Element resource-limits is not allowed, default limits will be used", logger.warnings.get(0)); + } + private void assertLimits(Double expCtrlDisk, Double expCtrlMemory, Double expNodeDisk, Double expNodeMemory, Fixture f) { var limits = f.build(); assertLimits(expCtrlDisk, expCtrlMemory, limits.getClusterControllerLimits()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java index b1bd44d93b4..22e38b30959 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/FleetControllerClusterTest.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. +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.vespa.model.content; +import com.yahoo.config.model.application.provider.BaseDeployLogger; import com.yahoo.config.model.deploy.DeployState; import com.yahoo.config.model.deploy.TestProperties; import com.yahoo.vespa.config.content.FleetcontrollerConfig; @@ -22,9 +23,12 @@ public class FleetControllerClusterTest { MockRoot root = new MockRoot("", deployState); var clusterElement = new ModelElement(doc.getDocumentElement()); return new ClusterControllerConfig.Builder("storage", - clusterElement, - new ClusterResourceLimits.Builder(enableFeedBlockInDistributor).build(clusterElement).getClusterControllerLimits()). - build(root.getDeployState(), root, clusterElement.getXml()); + clusterElement, + new ClusterResourceLimits.Builder(enableFeedBlockInDistributor, + false, + new BaseDeployLogger()) + .build(clusterElement).getClusterControllerLimits()) + .build(root.getDeployState(), root, clusterElement.getXml()); } private ClusterControllerConfig parse(String xml) { |