aboutsummaryrefslogtreecommitdiffstats
path: root/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java
new file mode 100644
index 00000000000..b0cbf7d1d1d
--- /dev/null
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/searchcluster/GroupListImpl.java
@@ -0,0 +1,38 @@
+package com.yahoo.search.dispatch.searchcluster;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+public class GroupListImpl implements GroupList {
+ private final Map<Integer, Group> groups;
+ public GroupListImpl(Map<Integer, Group> groups) {
+ this.groups = Map.copyOf(groups);
+ }
+ @Override public Group group(int id) { return groups.get(id); }
+ @Override public Set<Integer> groupKeys() { return groups.keySet();}
+ @Override public Collection<Group> groups() { return groups.values(); }
+ @Override public int numGroups() { return groups.size(); }
+ public static GroupList buildGroupListForTest(int numGroups, int nodesPerGroup) {
+ return new GroupListImpl(buildGroupMapForTest(numGroups, nodesPerGroup));
+ }
+ public static Map<Integer, Group> buildGroupMapForTest(int numGroups, int nodesPerGroup) {
+ Map<Integer, Group> groups = new HashMap<>();
+ int distributionKey = 0;
+ for (int group = 0; group < numGroups; group++) {
+ List<Node> 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);
+ }
+}