From 92173842b744fd7d87eb62055fbf908e6bcdb51d Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Tue, 20 Sep 2022 13:03:53 +0200 Subject: Add test that we calculate coverage based on target-active and reduandancy when told to do so. --- .../dispatch/InterleavedSearchInvokerTest.java | 57 ++++++++++++++-------- .../yahoo/search/dispatch/MockSearchCluster.java | 8 +-- 2 files changed, 41 insertions(+), 24 deletions(-) (limited to 'container-search/src') 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 cff383db8c5..180beb43ee8 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 @@ -400,29 +400,46 @@ public class InterleavedSearchInvokerTest { return hits; } - @Test - void requireCorrectCoverageCalculationWhenDegradedCoverageIsExpected() throws IOException { - SearchCluster cluster = new MockSearchCluster("!", 1, 2); - invokers.add(new MockInvoker(0, createCoverage(50155, 50155, 50155, 1, 1, 0))); + void verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(DispatchConfig dispatchConfig, int expectedCoverage) throws IOException { + SearchCluster cluster = new MockSearchCluster("!", dispatchConfig, 1, 2); + invokers.add(new MockInvoker(0, createCoverage(50155, 50155, 60000, 1, 1, 0))); Coverage errorCoverage = new Coverage(0, 0, 0); errorCoverage.setNodesTried(1); invokers.add(new SearchErrorInvoker(ErrorMessage.createBackendCommunicationError("node is down"), errorCoverage)); - SearchInvoker invoker = createInterleavedInvoker(cluster, new Group(0, List.of()), 0); - - expectedEvents.add(new Event(null, 1, 1)); - expectedEvents.add(new Event(null, 100, 0)); - - Result result = invoker.search(query, null); - - Coverage cov = result.getCoverage(true); - assertEquals(50155L, cov.getDocs()); - assertEquals(1, cov.getNodes()); - assertEquals(2, cov.getNodesTried()); - assertFalse(cov.getFull()); - assertEquals(50, cov.getResultPercentage()); - assertEquals(1, cov.getResultSets()); - assertEquals(0, cov.getFullResultSets()); - assertTrue(cov.isDegradedByTimeout()); + try (SearchInvoker invoker = createInterleavedInvoker(cluster, new Group(0, List.of()), 0)) { + + expectedEvents.add(new Event(null, 1, 1)); + expectedEvents.add(new Event(null, 100, 0)); + + Result result = invoker.search(query, null); + + Coverage cov = result.getCoverage(true); + assertEquals(50155L, cov.getDocs()); + assertEquals(1, cov.getNodes()); + assertEquals(2, cov.getNodesTried()); + assertFalse(cov.getFull()); + assertEquals(expectedCoverage, cov.getResultPercentage()); + assertEquals(1, cov.getResultSets()); + assertEquals(0, cov.getFullResultSets()); + assertTrue(cov.isDegradedByTimeout()); + } + } + @Test + void requireCorrectCoverageCalculationWhenDegradedCoverageIsExpectedUsingActiveDocs() throws IOException { + verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(MockSearchCluster.createDispatchConfig(100.0, List.of()) + .searchableCopies(1) + .redundancy(2) + .build(), + 50); + } + @Test + void requireCorrectCoverageCalculationWhenDegradedCoverageIsExpectedUsingTargetActiveDocs() throws IOException { + verifyCorrectCoverageCalculationWhenDegradedCoverageIsExpected(MockSearchCluster.createDispatchConfig(100.0, List.of()) + .searchableCopies(1) + .redundancy(1) + .computeCoverageFromTargetActiveDocs(true) + .build(), + 42); } private InterleavedSearchInvoker createInterleavedInvoker(SearchCluster searchCluster, Group group, int numInvokers) { 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 a076b929ad7..7a11e906293 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 @@ -105,14 +105,14 @@ public class MockSearchCluster extends SearchCluster { return createDispatchConfig(100.0, nodes); } public static DispatchConfig createDispatchConfig(List nodes) { - return createDispatchConfig(100.0, nodes); + return createDispatchConfig(100.0, nodes).build(); } public static DispatchConfig createDispatchConfig(double minSearchCoverage, Node... nodes) { - return createDispatchConfig(minSearchCoverage, Arrays.asList(nodes)); + return createDispatchConfig(minSearchCoverage, Arrays.asList(nodes)).build(); } - public static DispatchConfig createDispatchConfig(double minSearchCoverage, List nodes) { + public static DispatchConfig.Builder createDispatchConfig(double minSearchCoverage, List nodes) { DispatchConfig.Builder builder = new DispatchConfig.Builder(); builder.minActivedocsPercentage(88.0); builder.minSearchCoverage(minSearchCoverage); @@ -125,7 +125,7 @@ public class MockSearchCluster extends SearchCluster { for (Node n : nodes) { builder.node(new DispatchConfig.Node.Builder().key(n.key()).host(n.hostname()).port(port++).group(n.group())); } - return new DispatchConfig(builder); + return builder; } } -- cgit v1.2.3