summaryrefslogtreecommitdiffstats
path: root/container-search
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2022-08-21 15:57:21 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2022-08-21 15:57:21 +0200
commit54ca9deabd9bf454010464ab1e4a592f9ac00374 (patch)
tree1d6a6f797430a0b2a1803b749c7b944fc2355a94 /container-search
parentc7835ffa773e3cfb14649706f0405b6c3d2f7994 (diff)
Test best-of-random-2
Diffstat (limited to 'container-search')
-rw-r--r--container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java2
-rw-r--r--container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java38
2 files changed, 39 insertions, 1 deletions
diff --git a/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java b/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
index 4c2af5b885f..c1df730ac18 100644
--- a/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
+++ b/container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java
@@ -45,7 +45,7 @@ public class LoadBalancer {
case ROUNDROBIN: yield new RoundRobinScheduler(scoreboard);
case BEST_OF_RANDOM_2: yield new BestOfRandom2(new Random(), scoreboard);
case LATENCY_AMORTIZED_OVER_REQUESTS: yield new AdaptiveScheduler(new Random(), scoreboard);
- case LATENCY_AMORTIZED_OVER_TIME: yield new AdaptiveScheduler(new Random(), scoreboard);
+ case LATENCY_AMORTIZED_OVER_TIME: yield new AdaptiveScheduler(new Random(), scoreboard); // TODO Intentionally the same for now
};
}
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 350ede820eb..0ad572c0bdf 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
@@ -2,6 +2,7 @@
package com.yahoo.search.dispatch;
import com.yahoo.search.dispatch.LoadBalancer.AdaptiveScheduler;
+import com.yahoo.search.dispatch.LoadBalancer.BestOfRandom2;
import com.yahoo.search.dispatch.LoadBalancer.GroupStatus;
import com.yahoo.search.dispatch.searchcluster.Group;
import com.yahoo.search.dispatch.searchcluster.Node;
@@ -155,6 +156,39 @@ public class LoadBalancerTest {
assertEquals(4, sched.takeNextGroup(null).get().groupId());
}
+ private static GroupStatus allocate(GroupStatus gs) {
+ gs.allocate();
+ return gs;
+ }
+ @Test
+ void requireBestOfRandom2Scheduler() {
+ List<GroupStatus> scoreboard = new ArrayList<>();
+ for (int i = 0; i < 5; i++) {
+ scoreboard.add(newGroupStatus(i));
+ }
+ Random seq = sequence(
+ 0.1, 0.125,
+ 0.1, 0.125,
+ 0.1, 0.125,
+ 0.1, 0.125,
+ 0.1, 0.375,
+ 0.9, 0.125,
+ 0.9, 0.125,
+ 0.9, 0.125
+ );
+ BestOfRandom2 sched = new BestOfRandom2(seq, scoreboard);
+
+ assertEquals(0, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(1, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(0, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(1, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(2, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(4, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(4, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(4, allocate(sched.takeNextGroup(null).get()).groupId());
+ assertEquals(0, allocate(sched.takeNextGroup(null).get()).groupId());
+ }
+
private static void updateSearchTime(GroupStatus gs, double time) {
gs.allocate();
gs.release(true, time);
@@ -183,6 +217,10 @@ public class LoadBalancerTest {
}
return retv;
}
+ @Override
+ public int nextInt(int bound) {
+ return (int)(nextDouble() * bound);
+ }
};
}