diff options
-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); + } + +} |