diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-23 12:14:29 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-09-23 12:14:29 +0200 |
commit | 9c7efa2f0bbaf958d5b5bf439c0fcc8ed078c612 (patch) | |
tree | 4c9f0cb3f3d26c07f41481780c9e14a1059de2d7 /config-model | |
parent | 8d240397326f86f4f244c822b44e97bac9c5bff2 (diff) |
Complete test coverage for DispatchConfig
Diffstat (limited to 'config-model')
3 files changed, 67 insertions, 26 deletions
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java index 04b293fdc36..6769da0e024 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/DispatchGroup.java @@ -54,28 +54,12 @@ public class DispatchGroup { return sc.useFixedRowInDispatch(); } - public int getMinNodesPerColumn() { - return sc.getMinNodesPerColumn(); - } - public int getSearchableCopies() { return sc.getSearchableCopies(); } public int getMaxNodesDownPerFixedRow() { return sc.getMaxNodesDownPerFixedRow(); } - SearchCoverage getSearchCoverage() { - return sc.getSearchCoverage(); - } - - Tuning getTuning() { - return sc.getTuning(); - } - - String getClusterName() { - return sc.getClusterName(); - } - static class Iterator implements java.util.Iterator<SearchInterface> { private java.util.Iterator<Map<Integer, SearchInterface>> it1; private java.util.Iterator<SearchInterface> it2; diff --git a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java index 0b8b2ddde75..40cc09938e2 100644 --- a/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java +++ b/config-model/src/main/java/com/yahoo/vespa/model/search/IndexedSearchCluster.java @@ -274,10 +274,6 @@ public class IndexedSearchCluster extends SearchCluster this.searchCoverage = searchCoverage; } - SearchCoverage getSearchCoverage() { - return searchCoverage; - } - @Override public DerivedConfiguration getSdConfig() { return null; } @@ -304,8 +300,6 @@ public class IndexedSearchCluster extends SearchCluster @Override protected void exportSdFiles(File toDir) { } - int getMinNodesPerColumn() { return 0; } - boolean useFixedRowInDispatch() { for (SearchNode node : getSearchNodes()) { if (node.getNodeSpec().groupIndex() > 0) { @@ -355,6 +349,9 @@ public class IndexedSearchCluster extends SearchCluster nodeBuilder.fs4port(node.getDispatchPort()); builder.node(nodeBuilder); } + if (useAdaptiveDispatch) + builder.distributionPolicy(DistributionPolicy.ADAPTIVE); + if (tuning.dispatch.minActiveDocsCoverage != null) builder.minActivedocsPercentage(tuning.dispatch.minActiveDocsCoverage); if (tuning.dispatch.minGroupCoverage != null) @@ -369,6 +366,9 @@ public class IndexedSearchCluster extends SearchCluster break; } } + if (tuning.dispatch.maxHitsPerPartition != null) + builder.maxHitsPerNode(tuning.dispatch.maxHitsPerPartition); + builder.maxNodesDownPerGroup(rootDispatch.getMaxNodesDownPerFixedRow()); builder.useLocalNode(tuning.dispatch.useLocalNode); builder.searchableCopies(rootDispatch.getSearchableCopies()); diff --git a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java index c7c76257778..4291c68eff8 100644 --- a/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java +++ b/config-model/src/test/java/com/yahoo/vespa/model/content/cluster/ClusterTest.java @@ -15,7 +15,9 @@ import java.util.List; import static com.yahoo.config.model.test.TestUtil.joinLines; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; /** * @author Simon Thoresen Hult @@ -66,6 +68,28 @@ public class ClusterTest { } @Test + public void requireThatDispatchTuningIsApplied() { + ContentCluster cluster = newContentCluster(joinLines("<search>", "</search>"), + "", + joinLines( + "<max-hits-per-partition>77</max-hits-per-partition>", + "<dispatch-policy>adaptive</dispatch-policy>", + "<min-group-coverage>13</min-group-coverage>", + "<min-active-docs-coverage>93</min-active-docs-coverage>", + "<use-local-node>true</use-local-node>"), + false); + DispatchConfig.Builder builder = new DispatchConfig.Builder(); + cluster.getSearch().getConfig(builder); + DispatchConfig config = new DispatchConfig(builder); + assertEquals(2, config.searchableCopies()); + assertEquals(93.0, config.minActivedocsPercentage(), DELTA); + assertEquals(13.0, config.minGroupCoverage(), DELTA); + assertTrue(config.useLocalNode()); + assertEquals(DispatchConfig.DistributionPolicy.ADAPTIVE, config.distributionPolicy()); + assertEquals(77, config.maxHitsPerNode()); + } + + @Test public void requireThatDefaultDispatchConfigIsCorrect() { ContentCluster cluster = newContentCluster(joinLines("<search>", "</search>"), joinLines("<tuning>", "</tuning>")); @@ -77,21 +101,49 @@ public class ClusterTest { assertEquals(0, config.maxNodesDownPerGroup()); assertEquals(1.0, config.maxWaitAfterCoverageFactor(), DELTA); assertEquals(0, config.minWaitAfterCoverageFactor(), DELTA); + assertEquals(8, config.numJrtConnectionsPerNode()); + assertEquals(8, config.numJrtTransportThreads()); + assertEquals(100.0, config.minSearchCoverage(), DELTA); + assertEquals(97.0, config.minActivedocsPercentage(), DELTA); + assertEquals(100.0, config.minGroupCoverage(), DELTA); + assertFalse(config.useLocalNode()); + assertEquals(3, config.node().size()); + assertEquals(0, config.node(0).key()); + assertEquals(1, config.node(1).key()); + assertEquals(2, config.node(2).key()); + + assertEquals(19106, config.node(0).port()); + assertEquals(19118, config.node(1).port()); + assertEquals(19130, config.node(2).port()); + + assertEquals(19107, config.node(0).fs4port()); + assertEquals(19119, config.node(1).fs4port()); + assertEquals(19131, config.node(2).fs4port()); + + assertEquals(0, config.node(0).group()); + assertEquals(0, config.node(1).group()); + assertEquals(0, config.node(2).group()); + + assertEquals("localhost", config.node(0).host()); + assertEquals("localhost", config.node(1).host()); + assertEquals("localhost", config.node(2).host()); } private static ContentCluster newContentCluster(String contentSearchXml, String searchNodeTuningXml) { - return newContentCluster(contentSearchXml, searchNodeTuningXml, false); + return newContentCluster(contentSearchXml, searchNodeTuningXml, "", false); } private static ContentCluster newContentCluster(String contentSearchXml) { - return newContentCluster(contentSearchXml, "", false); + return newContentCluster(contentSearchXml, false); } private static ContentCluster newContentCluster(String contentSearchXml, boolean globalDocType) { - return newContentCluster(contentSearchXml, "", globalDocType); + return newContentCluster(contentSearchXml, "", "", globalDocType); } - private static ContentCluster newContentCluster(String contentSearchXml, String searchNodeTuningXml, boolean globalDocType) { + private static ContentCluster newContentCluster(String contentSearchXml, String searchNodeTuningXml, + String dispatchTuning, boolean globalDocType) + { ApplicationPackage app = new MockApplicationPackage.Builder() .withHosts(joinLines( "<hosts>", @@ -123,6 +175,11 @@ public class ClusterTest { " <node hostalias='my_host' distribution-key='2' />", " </group>", contentSearchXml, + " <tuning>", + " <dispatch>", + dispatchTuning, + " </dispatch>", + " </tuning>", " </content>", "</services>")) .withSearchDefinitions(ApplicationPackageUtils.generateSearchDefinition("my_document")) |