diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-08-21 15:57:21 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-08-21 15:57:21 +0200 |
commit | 54ca9deabd9bf454010464ab1e4a592f9ac00374 (patch) | |
tree | 1d6a6f797430a0b2a1803b749c7b944fc2355a94 /container-search | |
parent | c7835ffa773e3cfb14649706f0405b6c3d2f7994 (diff) |
Test best-of-random-2
Diffstat (limited to 'container-search')
-rw-r--r-- | container-search/src/main/java/com/yahoo/search/dispatch/LoadBalancer.java | 2 | ||||
-rw-r--r-- | container-search/src/test/java/com/yahoo/search/dispatch/LoadBalancerTest.java | 38 |
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); + } }; } |