Skip to content

Commit

Permalink
Fix test failures related to subchannel list ordering by using result…
Browse files Browse the repository at this point in the history
… value rather than getLast()
  • Loading branch information
larry-safran committed Jul 18, 2022
1 parent 1bceb33 commit f497bee
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions rls/src/test/java/io/grpc/rls/RlsLoadBalancerTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ public void lb_working_withDefaultTarget_noRlsResponse() throws Exception {
// Search that when the RLS server doesn't respond, that fallback is used
res = picker.pickSubchannel(
new PickSubchannelArgsImpl(fakeSearchMethod, headers, CallOptions.DEFAULT));
FakeSubchannel fallbackSubchannel = subchannels.getLast();
FakeSubchannel fallbackSubchannel = (FakeSubchannel) res.getSubchannel();

assertThat(res.getStatus().getCode()).isEqualTo(Status.Code.OK);
assertThat(subchannelIsReady(res.getSubchannel())).isFalse();
Expand All @@ -265,21 +265,19 @@ public void lb_working_withDefaultTarget_noRlsResponse() throws Exception {
// Make sure that when RLS starts communicating that default stops being used
fakeThrottler.nextResult = false;
fakeClock.forwardTime(2, TimeUnit.SECONDS); // Expires backoff cache entries

// Create search subchannel
res = picker.pickSubchannel(
new PickSubchannelArgsImpl(fakeSearchMethod, headers, CallOptions.DEFAULT));
assertThat(res.getSubchannel()).isNotSameInstanceAs(fallbackSubchannel);
FakeSubchannel searchSubchannel = subchannels.getLast();
FakeSubchannel searchSubchannel = (FakeSubchannel) res.getSubchannel();
searchSubchannel.updateState(ConnectivityStateInfo.forNonError(ConnectivityState.READY));
assertThat(subchannelIsReady(res.getSubchannel())).isTrue();

// create rescue subchannel
res = picker.pickSubchannel(
new PickSubchannelArgsImpl(fakeRescueMethod, headers, CallOptions.DEFAULT));
assertThat(res.getSubchannel()).isNotSameInstanceAs(fallbackSubchannel);
assertThat(res.getSubchannel()).isNotSameInstanceAs(searchSubchannel);
FakeSubchannel rescueSubchannel = subchannels.getLast();
FakeSubchannel rescueSubchannel = (FakeSubchannel) res.getSubchannel();
rescueSubchannel.updateState(ConnectivityStateInfo.forNonError(ConnectivityState.READY));

// all channels are failed
Expand Down Expand Up @@ -588,7 +586,7 @@ private static final class FakeSubchannel extends Subchannel {
private final Attributes attributes;
private List<EquivalentAddressGroup> eags;
private SubchannelStateListener listener;
private boolean isReady;
private volatile boolean isReady;

public FakeSubchannel(List<EquivalentAddressGroup> eags, Attributes attributes) {
this.eags = Collections.unmodifiableList(eags);
Expand Down

0 comments on commit f497bee

Please sign in to comment.