Skip to content

Commit 5e5127f

Browse files
adjusted test cases to have random, deleted deterministic test cases from edf
1 parent 1731862 commit 5e5127f

File tree

1 file changed

+35
-20
lines changed

1 file changed

+35
-20
lines changed

xds/src/test/java/io/grpc/xds/WeightedRoundRobinLoadBalancerTest.java

Lines changed: 35 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import java.util.List;
6464
import java.util.Map;
6565
import java.util.Queue;
66+
import java.util.Random;
6667
import java.util.concurrent.ConcurrentHashMap;
6768
import java.util.concurrent.ConcurrentLinkedQueue;
6869
import java.util.concurrent.CyclicBarrier;
@@ -173,7 +174,8 @@ public Void answer(InvocationOnMock invocation) throws Throwable {
173174
return subchannel;
174175
}
175176
});
176-
wrr = new WeightedRoundRobinLoadBalancer(helper, fakeClock.getDeadlineTicker());
177+
Random random = new Random();
178+
wrr = new WeightedRoundRobinLoadBalancer(helper, fakeClock.getDeadlineTicker(), random);
177179
}
178180

179181
@Test
@@ -262,7 +264,6 @@ weightedSubchannel2.new OrcaReportListener(weightedConfig.errorUtilizationPenalt
262264
0.9, 0, 0.1, 1, 0, new HashMap<>(), new HashMap<>()));
263265
assertThat(fakeClock.forwardTime(11, TimeUnit.SECONDS)).isEqualTo(1);
264266
PickResult pickResult = weightedPicker.pickSubchannel(mockArgs);
265-
assertThat(pickResult.getSubchannel()).isEqualTo(weightedSubchannel1);
266267
assertThat(pickResult.getStreamTracerFactory()).isNotNull(); // verify per-request listener
267268
assertThat(oobCalls.isEmpty()).isTrue();
268269

@@ -276,7 +277,6 @@ weightedSubchannel2.new OrcaReportListener(weightedConfig.errorUtilizationPenalt
276277
eq(ConnectivityState.READY), pickerCaptor2.capture());
277278
weightedPicker = (WeightedRoundRobinPicker) pickerCaptor2.getAllValues().get(2);
278279
pickResult = weightedPicker.pickSubchannel(mockArgs);
279-
assertThat(pickResult.getSubchannel()).isEqualTo(weightedSubchannel1);
280280
assertThat(pickResult.getStreamTracerFactory()).isNull();
281281
OrcaLoadReportRequest golden = OrcaLoadReportRequest.newBuilder().setReportInterval(
282282
Duration.newBuilder().setSeconds(20).setNanos(30000000).build()).build();
@@ -871,14 +871,16 @@ public void wrrConfig_BooleanValueNonNull() {
871871
@Test(expected = IllegalArgumentException.class)
872872
public void emptyWeights() {
873873
float[] weights = {};
874-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
874+
Random random = new Random();
875+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
875876
sss.pick();
876877
}
877878

878879
@Test
879880
public void testPicksEqualsWeights() {
880881
float[] weights = {1.0f, 2.0f, 3.0f};
881-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
882+
Random random = new Random();
883+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
882884
int[] expectedPicks = new int[] {1, 2, 3};
883885
int[] picks = new int[3];
884886
for (int i = 0; i < 6; i++) {
@@ -890,7 +892,8 @@ public void testPicksEqualsWeights() {
890892
@Test
891893
public void testContainsZeroWeightUseMean() {
892894
float[] weights = {3.0f, 0.0f, 1.0f};
893-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
895+
Random random = new Random();
896+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
894897
int[] expectedPicks = new int[] {3, 2, 1};
895898
int[] picks = new int[3];
896899
for (int i = 0; i < 6; i++) {
@@ -902,7 +905,8 @@ public void testContainsZeroWeightUseMean() {
902905
@Test
903906
public void testContainsNegativeWeightUseMean() {
904907
float[] weights = {3.0f, -1.0f, 1.0f};
905-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
908+
Random random = new Random();
909+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
906910
int[] expectedPicks = new int[] {3, 2, 1};
907911
int[] picks = new int[3];
908912
for (int i = 0; i < 6; i++) {
@@ -914,7 +918,8 @@ public void testContainsNegativeWeightUseMean() {
914918
@Test
915919
public void testAllSameWeights() {
916920
float[] weights = {1.0f, 1.0f, 1.0f};
917-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
921+
Random random = new Random();
922+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
918923
int[] expectedPicks = new int[] {2, 2, 2};
919924
int[] picks = new int[3];
920925
for (int i = 0; i < 6; i++) {
@@ -926,7 +931,8 @@ public void testAllSameWeights() {
926931
@Test
927932
public void testAllZeroWeightsUseOne() {
928933
float[] weights = {0.0f, 0.0f, 0.0f};
929-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
934+
Random random = new Random();
935+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
930936
int[] expectedPicks = new int[] {2, 2, 2};
931937
int[] picks = new int[3];
932938
for (int i = 0; i < 6; i++) {
@@ -938,7 +944,8 @@ public void testAllZeroWeightsUseOne() {
938944
@Test
939945
public void testAllInvalidWeightsUseOne() {
940946
float[] weights = {-3.1f, -0.0f, 0.0f};
941-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
947+
Random random = new Random();
948+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
942949
int[] expectedPicks = new int[] {2, 2, 2};
943950
int[] picks = new int[3];
944951
for (int i = 0; i < 6; i++) {
@@ -951,7 +958,8 @@ public void testAllInvalidWeightsUseOne() {
951958
public void testLargestPickedEveryGeneration() {
952959
float[] weights = {1.0f, 2.0f, 3.0f};
953960
int mean = 2;
954-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
961+
Random random = new Random();
962+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
955963
int largestWeightPickCount = 0;
956964
int kMaxWeight = 65535;
957965
for (int i = 0; i < mean * kMaxWeight; i++) {
@@ -965,7 +973,8 @@ public void testLargestPickedEveryGeneration() {
965973
@Test
966974
public void testStaticStrideSchedulerGivenExample1() {
967975
float[] weights = {10.0f, 20.0f, 30.0f};
968-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
976+
Random random = new Random();
977+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
969978
double totalWeight = 60;
970979
Map<Integer, Integer> pickCount = new HashMap<>();
971980
for (int i = 0; i < 1000; i++) {
@@ -981,7 +990,8 @@ public void testStaticStrideSchedulerGivenExample1() {
981990
@Test
982991
public void testStaticStrideSchedulerGivenExample2() {
983992
float[] weights = {2.0f, 3.0f, 6.0f};
984-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
993+
Random random = new Random();
994+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
985995
double totalWeight = 11;
986996
Map<Integer, Integer> pickCount = new HashMap<>();
987997
for (int i = 0; i < 1000; i++) {
@@ -997,7 +1007,8 @@ public void testStaticStrideSchedulerGivenExample2() {
9971007
@Test
9981008
public void testStaticStrideSchedulerNonIntegers1() {
9991009
float[] weights = {2.0f, (float) (10.0 / 3.0), 1.0f};
1000-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
1010+
Random random = new Random();
1011+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
10011012
double totalWeight = 2 + 10.0 / 3.0 + 1.0;
10021013
Map<Integer, Integer> pickCount = new HashMap<>();
10031014
for (int i = 0; i < 1000; i++) {
@@ -1013,7 +1024,8 @@ public void testStaticStrideSchedulerNonIntegers1() {
10131024
@Test
10141025
public void testStaticStrideSchedulerNonIntegers2() {
10151026
float[] weights = {0.5f, 0.3f, 1.0f};
1016-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
1027+
Random random = new Random();
1028+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
10171029
double totalWeight = 1.8;
10181030
Map<Integer, Integer> pickCount = new HashMap<>();
10191031
for (int i = 0; i < 1000; i++) {
@@ -1029,7 +1041,8 @@ public void testStaticStrideSchedulerNonIntegers2() {
10291041
@Test
10301042
public void testTwoWeights() {
10311043
float[] weights = {1.0f, 2.0f};
1032-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
1044+
Random random = new Random();
1045+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
10331046
double totalWeight = 3;
10341047
Map<Integer, Integer> pickCount = new HashMap<>();
10351048
for (int i = 0; i < 1000; i++) {
@@ -1045,7 +1058,8 @@ public void testTwoWeights() {
10451058
@Test
10461059
public void testManyWeights1() {
10471060
float[] weights = {1.0f, 2.0f, 3.0f, 4.0f, 5.0f};
1048-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
1061+
Random random = new Random();
1062+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
10491063
double totalWeight = 15;
10501064
Map<Integer, Integer> pickCount = new HashMap<>();
10511065
for (int i = 0; i < 1000; i++) {
@@ -1060,8 +1074,9 @@ public void testManyWeights1() {
10601074

10611075
@Test
10621076
public void testManyComplexWeights2() {
1063-
float[] weights = {1.2f, 2.4f, 222.56f, 0f, 15.0f, 226342.0f, 5123.0f, 0.0001f};
1064-
StaticStrideScheduler sss = new StaticStrideScheduler(weights);
1077+
float[] weights = {1.2f, 2.4f, 222.56f, 1.1f, 15.0f, 226342.0f, 5123.0f, 532.2f};
1078+
Random random = new Random();
1079+
StaticStrideScheduler sss = new StaticStrideScheduler(weights, random);
10651080
double totalWeight = 1.2 + 2.4 + 222.56 + 15.0 + 226342.0 + 5123.0 + 0.0001;
10661081
Map<Integer, Integer> pickCount = new HashMap<>();
10671082
for (int i = 0; i < 1000; i++) {
@@ -1070,7 +1085,7 @@ public void testManyComplexWeights2() {
10701085
}
10711086
for (int i = 0; i < 8; i++) {
10721087
assertThat(Math.abs(pickCount.getOrDefault(i, 0) / 10000.0 - weights[i] / totalWeight) )
1073-
.isAtMost(5);
1088+
.isAtMost(2);
10741089
}
10751090
}
10761091

0 commit comments

Comments
 (0)