diff options
author | Geir Storli <geirst@yahoo-inc.com> | 2017-04-26 09:40:33 +0200 |
---|---|---|
committer | Geir Storli <geirst@yahoo-inc.com> | 2017-04-26 09:40:33 +0200 |
commit | 1902441cbbb1391c9e4c75c5ddf252ed45b9d3a9 (patch) | |
tree | 96dde43b814a016e23c3a8a6ad1f96e8aed4656a /config-model | |
parent | 22dedb34f193bf14e224103aedb59d86845cf715 (diff) |
Add class for tuning proton config based on node flavor of a search node.
Diffstat (limited to 'config-model')
-rw-r--r-- | config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java | 27 | ||||
-rw-r--r-- | config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java | 39 |
2 files changed, 66 insertions, 0 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java new file mode 100644 index 00000000000..4ef42137c53 --- /dev/null +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/NodeFlavorTuning.java @@ -0,0 +1,27 @@ +package com.yahoo.vespa.model.search; + +import com.yahoo.config.provision.Flavor; +import com.yahoo.vespa.config.search.core.ProtonConfig; + +/** + * Tuning of proton config for a search node based on the node flavor of that node. + * + * @author geirst + */ +public class NodeFlavorTuning implements ProtonConfig.Producer { + + private final Flavor nodeFlavor; + + public NodeFlavorTuning(Flavor nodeFlavor) { + this.nodeFlavor = nodeFlavor; + } + + @Override + public void getConfig(ProtonConfig.Builder builder) { + ProtonConfig.Hwinfo.Disk.Builder diskInfo = new ProtonConfig.Hwinfo.Disk.Builder(); + if (!nodeFlavor.hasFastDisk()) { + diskInfo.writespeed(40); + } + builder.hwinfo(new ProtonConfig.Hwinfo.Builder().disk(diskInfo)); + } +} diff --git a/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java new file mode 100644 index 00000000000..40288a9b43c --- /dev/null +++ b/config-model/src/test/java/com/yahoo/vespa/model/search/NodeFlavorTuningTest.java @@ -0,0 +1,39 @@ +package com.yahoo.vespa.model.search; + +import com.yahoo.config.provision.Flavor; +import com.yahoo.config.provisioning.FlavorsConfig; +import com.yahoo.vespa.config.search.core.ProtonConfig; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; + +/** + * @author geirst + */ +public class NodeFlavorTuningTest { + + @Test + public void require_that_fast_disk_is_reflected_in_proton_config() { + ProtonConfig cfg = configFromDiskSetting(true); + assertEquals(200, cfg.hwinfo().disk().writespeed(), 0.001); + assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), 0.001); + } + + @Test + public void require_that_slow_disk_is_reflected_in_proton_config() { + ProtonConfig cfg = configFromDiskSetting(false); + assertEquals(40, cfg.hwinfo().disk().writespeed(), 0.001); + assertEquals(100, cfg.hwinfo().disk().slowwritespeedlimit(), 0.001); + } + + private static ProtonConfig configFromDiskSetting(boolean fastDisk) { + FlavorsConfig.Flavor.Builder flavorBuilder = new FlavorsConfig.Flavor.Builder(); + flavorBuilder.fastDisk(fastDisk); + flavorBuilder.name("my_flavor"); + NodeFlavorTuning tuning = new NodeFlavorTuning(new Flavor(new FlavorsConfig.Flavor(flavorBuilder))); + ProtonConfig.Builder protonBuilder = new ProtonConfig.Builder(); + tuning.getConfig(protonBuilder); + return new ProtonConfig(protonBuilder); + } + +} |