diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-11-21 17:56:57 +0100 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-11-21 17:56:57 +0100 |
commit | 3e955a564d65de056c87b706432a4a12ff8d1d10 (patch) | |
tree | 5f4346c521fb07e3c2dc17b9747ffc30400274c9 /container-search/src/test/java/com/yahoo/search/dispatch | |
parent | aaaa5efdde6562a44e3fa4e6168783029d0d5a98 (diff) |
Splitt nodes static and dynamic config in DispatchConfig to prepare for seamless cluster changes.
Diffstat (limited to 'container-search/src/test/java/com/yahoo/search/dispatch')
4 files changed, 32 insertions, 23 deletions
diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java index 7a6a64fac58..15656ffb457 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/InterleavedSearchInvokerTest.java @@ -22,6 +22,7 @@ import com.yahoo.searchlib.expression.IntegerResultNode; import com.yahoo.searchlib.expression.StringResultNode; import com.yahoo.test.ManualClock; import com.yahoo.vespa.config.search.DispatchConfig; +import com.yahoo.vespa.config.search.DispatchNodesConfig; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -40,6 +41,7 @@ import java.util.stream.StreamSupport; import static com.yahoo.container.handler.Coverage.DEGRADED_BY_MATCH_PHASE; import static com.yahoo.container.handler.Coverage.DEGRADED_BY_TIMEOUT; import static com.yahoo.search.dispatch.MockSearchCluster.createDispatchConfig; +import static com.yahoo.search.dispatch.MockSearchCluster.createNodesConfig; import static org.junit.jupiter.api.Assertions.*; /** @@ -54,7 +56,7 @@ public class InterleavedSearchInvokerTest { @Test void requireThatAdaptiveTimeoutsAreNotUsedWithFullCoverageRequirement() throws IOException { - SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(100.0), 1, 3); + SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(100.0), createNodesConfig(), 1, 3); try (SearchInvoker invoker = createInterleavedInvoker(cluster, new Group(0, List.of()), 3)) { expectedEvents.add(new Event(5000, 100, 0)); @@ -69,7 +71,7 @@ public class InterleavedSearchInvokerTest { @Test void requireThatTimeoutsAreNotMarkedAsAdaptive() throws IOException { - SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(100.0), 1, 3); + SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(100.0), createNodesConfig(), 1, 3); try (SearchInvoker invoker = createInterleavedInvoker(cluster, new Group(0, List.of()), 3)) { expectedEvents.add(new Event(5000, 300, 0)); @@ -88,7 +90,7 @@ public class InterleavedSearchInvokerTest { @Test void requireThatAdaptiveTimeoutDecreasesTimeoutWhenCoverageIsReached() throws IOException { - SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(50.0), 1, 4); + SearchCluster cluster = new MockSearchCluster("!", createDispatchConfig(50.0), createNodesConfig(), 1, 4); try (SearchInvoker invoker = createInterleavedInvoker(cluster, new Group(0, List.of()), 4)) { expectedEvents.add(new Event(5000, 100, 0)); @@ -400,8 +402,8 @@ public class InterleavedSearchInvokerTest { return hits; } - void verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(DispatchConfig dispatchConfig, int expectedCoverage) throws IOException { - SearchCluster cluster = new MockSearchCluster("!", dispatchConfig, 1, 2); + void verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(DispatchConfig dispatchConfig, DispatchNodesConfig nodesConfig, int expectedCoverage) throws IOException { + SearchCluster cluster = new MockSearchCluster("!", dispatchConfig, nodesConfig, 1, 2); invokers.add(new MockInvoker(0, createCoverage(50155, 50155, 60000, 1, 1, 0))); Coverage errorCoverage = new Coverage(0, 0, 0); errorCoverage.setNodesTried(1); @@ -427,9 +429,10 @@ public class InterleavedSearchInvokerTest { @Test void requireCorrectCoverageCalculationWhenDegradedCoverageIsExpectedUsingTargetActiveDocs() throws IOException { - verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(MockSearchCluster.createDispatchConfig(100.0, List.of()) + verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(MockSearchCluster.createDispatchConfigBuilder(100.0) .redundancy(1) .build(), + MockSearchCluster.createNodesConfig(), 42); } diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java index ce3876e59c1..427062a1c4c 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java @@ -19,6 +19,7 @@ import java.util.Optional; import java.util.Random; import static com.yahoo.search.dispatch.MockSearchCluster.createDispatchConfig; +import static com.yahoo.search.dispatch.MockSearchCluster.createNodesConfig; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -31,7 +32,7 @@ public class LoadBalancerTest { @Test void requireThatLoadBalancerServesSingleNodeSetups() { Node n1 = new Node(0, "test-node1", 0); - SearchCluster cluster = new SearchCluster("a", createDispatchConfig(n1), null, null); + SearchCluster cluster = new SearchCluster("a", createDispatchConfig(), createNodesConfig(n1), null, null); LoadBalancer lb = new LoadBalancer(cluster, LoadBalancer.Policy.ROUNDROBIN); Optional<Group> grp = lb.takeGroup(null); @@ -45,7 +46,7 @@ public class LoadBalancerTest { void requireThatLoadBalancerServesMultiGroupSetups() { Node n1 = new Node(0, "test-node1", 0); Node n2 = new Node(1, "test-node2", 1); - SearchCluster cluster = new SearchCluster("a", createDispatchConfig(n1, n2), null, null); + SearchCluster cluster = new SearchCluster("a", createDispatchConfig(), createNodesConfig(n1, n2), null, null); LoadBalancer lb = new LoadBalancer(cluster, LoadBalancer.Policy.ROUNDROBIN); Optional<Group> grp = lb.takeGroup(null); @@ -61,7 +62,7 @@ public class LoadBalancerTest { Node n2 = new Node(1, "test-node2", 0); Node n3 = new Node(0, "test-node3", 1); Node n4 = new Node(1, "test-node4", 1); - SearchCluster cluster = new SearchCluster("a", createDispatchConfig(n1, n2, n3, n4), null, null); + SearchCluster cluster = new SearchCluster("a", createDispatchConfig(), createNodesConfig(n1, n2, n3, n4), null, null); LoadBalancer lb = new LoadBalancer(cluster, LoadBalancer.Policy.ROUNDROBIN); Optional<Group> grp = lb.takeGroup(null); @@ -72,7 +73,7 @@ public class LoadBalancerTest { void requireThatLoadBalancerReturnsDifferentGroups() { Node n1 = new Node(0, "test-node1", 0); Node n2 = new Node(1, "test-node2", 1); - SearchCluster cluster = new SearchCluster("a", createDispatchConfig(n1, n2), null, null); + SearchCluster cluster = new SearchCluster("a", createDispatchConfig(), createNodesConfig(n1, n2), null, null); LoadBalancer lb = new LoadBalancer(cluster, LoadBalancer.Policy.ROUNDROBIN); // get first group diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java index 7a11e906293..c90153e8008 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/MockSearchCluster.java @@ -8,9 +8,9 @@ import com.yahoo.search.dispatch.searchcluster.Group; import com.yahoo.search.dispatch.searchcluster.Node; import com.yahoo.search.dispatch.searchcluster.SearchCluster; import com.yahoo.vespa.config.search.DispatchConfig; +import com.yahoo.vespa.config.search.DispatchNodesConfig; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -26,11 +26,11 @@ public class MockSearchCluster extends SearchCluster { private final List<Node> nodes; public MockSearchCluster(String clusterId, int groups, int nodesPerGroup) { - this(clusterId, createDispatchConfig(), groups, nodesPerGroup); + this(clusterId, createDispatchConfig(), createNodesConfig(), groups, nodesPerGroup); } - public MockSearchCluster(String clusterId, DispatchConfig dispatchConfig, int groups, int nodesPerGroup) { - super(clusterId, dispatchConfig, null, null); + public MockSearchCluster(String clusterId, DispatchConfig dispatchConfig, DispatchNodesConfig nodesConfig, int groups, int nodesPerGroup) { + super(clusterId, dispatchConfig, nodesConfig, null, null); ImmutableList.Builder<Group> orderedGroupBuilder = ImmutableList.builder(); ImmutableMap.Builder<Integer, Group> groupBuilder = ImmutableMap.builder(); @@ -101,18 +101,18 @@ public class MockSearchCluster extends SearchCluster { node.setWorking(false); } - public static DispatchConfig createDispatchConfig(Node... nodes) { - return createDispatchConfig(100.0, nodes); + public static DispatchConfig createDispatchConfig() { + return createDispatchConfig(100.0); } - public static DispatchConfig createDispatchConfig(List<Node> nodes) { - return createDispatchConfig(100.0, nodes).build(); + public static DispatchNodesConfig createNodesConfig(Node... nodes) { + return createNodesConfig(List.of(nodes)).build(); } - public static DispatchConfig createDispatchConfig(double minSearchCoverage, Node... nodes) { - return createDispatchConfig(minSearchCoverage, Arrays.asList(nodes)).build(); + public static DispatchConfig createDispatchConfig(double minSearchCoverage) { + return createDispatchConfigBuilder(minSearchCoverage).build(); } - public static DispatchConfig.Builder createDispatchConfig(double minSearchCoverage, List<Node> nodes) { + public static DispatchConfig.Builder createDispatchConfigBuilder(double minSearchCoverage) { DispatchConfig.Builder builder = new DispatchConfig.Builder(); builder.minActivedocsPercentage(88.0); builder.minSearchCoverage(minSearchCoverage); @@ -121,9 +121,14 @@ public class MockSearchCluster extends SearchCluster { builder.minWaitAfterCoverageFactor(0); builder.maxWaitAfterCoverageFactor(0.5); } + return builder; + } + + public static DispatchNodesConfig.Builder createNodesConfig(List<Node> nodes) { + DispatchNodesConfig.Builder builder = new DispatchNodesConfig.Builder(); int port = 10000; for (Node n : nodes) { - builder.node(new DispatchConfig.Node.Builder().key(n.key()).host(n.hostname()).port(port++).group(n.group())); + builder.node(new DispatchNodesConfig.Node.Builder().key(n.key()).host(n.hostname()).port(port++).group(n.group())); } return builder; } diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java index 6c46b2a492f..283ef29c878 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTest.java @@ -56,7 +56,7 @@ public class SearchClusterTest { numDocsPerNode.add(new AtomicInteger(1)); pingCounts.add(new AtomicInteger(0)); } - searchCluster = new SearchCluster(clusterId, MockSearchCluster.createDispatchConfig(nodes), + searchCluster = new SearchCluster(clusterId, MockSearchCluster.createDispatchConfig(), MockSearchCluster.createNodesConfig(nodes).build(), vipStatus, new Factory(nodesPerGroup, numDocsPerNode, pingCounts)); clusterMonitor = new ClusterMonitor(searchCluster, false); searchCluster.addMonitoring(clusterMonitor); |