This is an automated email from the ASF dual-hosted git repository.
zhangzicheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shenyu.git
The following commit(s) were added to refs/heads/master by this push:
new 717cbe9f73 [test] add RoundRobinLoadBalancer tests for selection logic
and distribution (#6093)
717cbe9f73 is described below
commit 717cbe9f732a82a283c3da9e8c27b8985738f738
Author: Jast <[email protected]>
AuthorDate: Wed Aug 13 11:27:26 2025 +0800
[test] add RoundRobinLoadBalancer tests for selection logic and
distribution (#6093)
* test: enhance RoundRobinLoadBalancer tests for selection logic and
distribution
* test(loadbalancer): add constant for round robin selection iterations
- Introduce SELECTION_ITERATIONS constant to replace magic number 30
- Update test to use the new constant for better readability and
maintainability
---------
Co-authored-by: aias00 <[email protected]>
---
.../spi/RoundRobinLoadBalanceTest.java | 31 +++++++++++++++++++---
1 file changed, 28 insertions(+), 3 deletions(-)
diff --git
a/shenyu-loadbalancer/src/test/java/org/apache/shenyu/loadbalancer/spi/RoundRobinLoadBalanceTest.java
b/shenyu-loadbalancer/src/test/java/org/apache/shenyu/loadbalancer/spi/RoundRobinLoadBalanceTest.java
index 01af4dd617..975b9397ac 100644
---
a/shenyu-loadbalancer/src/test/java/org/apache/shenyu/loadbalancer/spi/RoundRobinLoadBalanceTest.java
+++
b/shenyu-loadbalancer/src/test/java/org/apache/shenyu/loadbalancer/spi/RoundRobinLoadBalanceTest.java
@@ -28,12 +28,16 @@ import java.util.stream.IntStream;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
/**
* The type Load balance test.
*/
public final class RoundRobinLoadBalanceTest {
+ private static final int SELECTION_ITERATIONS = 30;
+
/**
* Round robin load balance test.
*/
@@ -115,7 +119,28 @@ public final class RoundRobinLoadBalanceTest {
.collect(Collectors.toList());
RoundRobinLoadBalancer roundRobinLoadBalancer = new
RoundRobinLoadBalancer();
- roundRobinLoadBalancer.select(upstreamList, "");
- roundRobinLoadBalancer.select(upstreamList2, "");
+
+ // Test with weighted upstream list
+ Upstream result1 = roundRobinLoadBalancer.select(upstreamList, "");
+ assertNotNull(result1, "Selected upstream should not be null");
+ assertTrue(upstreamList.contains(result1), "Selected upstream should
be from the provided list");
+
+ // Test with equal weight upstream list
+ Upstream result2 = roundRobinLoadBalancer.select(upstreamList2, "");
+ assertNotNull(result2, "Selected upstream should not be null");
+ assertTrue(upstreamList2.contains(result2), "Selected upstream should
be from the provided list");
+
+ // Test multiple selections to verify round-robin behavior
+ Map<String, Integer> countMap = new HashMap<>();
+ IntStream.range(0, SELECTION_ITERATIONS).forEach(i -> {
+ Upstream result = roundRobinLoadBalancer.select(upstreamList2, "");
+ int count = countMap.getOrDefault(result.getUrl(), 0);
+ countMap.put(result.getUrl(), ++count);
+ });
+
+ // With equal weights, distribution should be roughly equal
+ assertEquals(3, countMap.size(), "All three upstreams should be
selected");
+ countMap.values().forEach(count ->
+ assertTrue(count >= 8 && count <= 12, "Distribution should be
roughly equal for equal weights"));
}
-}
+}
\ No newline at end of file