From d87842d60c12289fc8968e00f0d1f8ae944ce2ae Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 24 Nov 2022 13:58:02 +0100 Subject: Move test utility code to test directory. --- .../dispatch/searchcluster/MockSearchCluster.java | 75 ++++++++++++++++++++++ .../searchcluster/SearchClusterTester.java | 2 - 2 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/MockSearchCluster.java (limited to 'container-search/src/test/java/com/yahoo/search/dispatch/searchcluster') diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/MockSearchCluster.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/MockSearchCluster.java new file mode 100644 index 00000000000..cbf6273d3ae --- /dev/null +++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/MockSearchCluster.java @@ -0,0 +1,75 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.search.dispatch.searchcluster; + +import com.yahoo.vespa.config.search.DispatchConfig; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author ollivir + */ +public class MockSearchCluster extends SearchCluster { + + public MockSearchCluster(String clusterId, int groups, int nodesPerGroup) { + super(clusterId, buildGroupListForTest(groups, nodesPerGroup, 88.0), null, null); + } + + @Override + public int groupsWithSufficientCoverage() { + return groupList().size(); + } + + @Override + public void working(Node node) { + node.setWorking(true); + } + + @Override + public void failed(Node node) { + node.setWorking(false); + } + + public static DispatchConfig createDispatchConfig() { + return createDispatchConfig(100.0); + } + + public static DispatchConfig createDispatchConfig(double minSearchCoverage) { + return createDispatchConfigBuilder(minSearchCoverage).build(); + } + + public static DispatchConfig.Builder createDispatchConfigBuilder(double minSearchCoverage) { + DispatchConfig.Builder builder = new DispatchConfig.Builder(); + builder.minActivedocsPercentage(88.0); + builder.minSearchCoverage(minSearchCoverage); + builder.distributionPolicy(DispatchConfig.DistributionPolicy.Enum.ROUNDROBIN); + if (minSearchCoverage < 100.0) { + builder.minWaitAfterCoverageFactor(0); + builder.maxWaitAfterCoverageFactor(0.5); + } + return builder; + } + + public static SearchGroupsImpl buildGroupListForTest(int numGroups, int nodesPerGroup, double minActivedocsPercentage) { + return new SearchGroupsImpl(buildGroupMapForTest(numGroups, nodesPerGroup), minActivedocsPercentage); + } + private static Map buildGroupMapForTest(int numGroups, int nodesPerGroup) { + Map groups = new HashMap<>(); + int distributionKey = 0; + for (int group = 0; group < numGroups; group++) { + List groupNodes = new ArrayList<>(); + for (int i = 0; i < nodesPerGroup; i++) { + Node node = new Node(distributionKey, "host" + distributionKey, group); + node.setWorking(true); + groupNodes.add(node); + distributionKey++; + } + Group g = new Group(group, groupNodes); + groups.put(group, g); + } + return Map.copyOf(groups); + } + +} diff --git a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java index f5a9256648d..31f250072fe 100644 --- a/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java +++ b/container-search/src/test/java/com/yahoo/search/dispatch/searchcluster/SearchClusterTester.java @@ -1,8 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.search.dispatch.searchcluster; -import com.yahoo.search.dispatch.MockSearchCluster; - public class SearchClusterTester { private final SearchCluster cluster; -- cgit v1.2.3