mirror of https://github.com/grpc/grpc-java.git
grpclb: clean up usage of raw load balancing config attributes in tests (#6798)
This commit is contained in:
parent
fd5f4aac63
commit
ec25beb660
|
@ -54,7 +54,6 @@ import io.grpc.ClientStreamTracer;
|
||||||
import io.grpc.ConnectivityState;
|
import io.grpc.ConnectivityState;
|
||||||
import io.grpc.ConnectivityStateInfo;
|
import io.grpc.ConnectivityStateInfo;
|
||||||
import io.grpc.EquivalentAddressGroup;
|
import io.grpc.EquivalentAddressGroup;
|
||||||
import io.grpc.LoadBalancer;
|
|
||||||
import io.grpc.LoadBalancer.Helper;
|
import io.grpc.LoadBalancer.Helper;
|
||||||
import io.grpc.LoadBalancer.PickResult;
|
import io.grpc.LoadBalancer.PickResult;
|
||||||
import io.grpc.LoadBalancer.PickSubchannelArgs;
|
import io.grpc.LoadBalancer.PickSubchannelArgs;
|
||||||
|
@ -76,7 +75,6 @@ import io.grpc.inprocess.InProcessChannelBuilder;
|
||||||
import io.grpc.inprocess.InProcessServerBuilder;
|
import io.grpc.inprocess.InProcessServerBuilder;
|
||||||
import io.grpc.internal.BackoffPolicy;
|
import io.grpc.internal.BackoffPolicy;
|
||||||
import io.grpc.internal.FakeClock;
|
import io.grpc.internal.FakeClock;
|
||||||
import io.grpc.internal.JsonParser;
|
|
||||||
import io.grpc.lb.v1.ClientStats;
|
import io.grpc.lb.v1.ClientStats;
|
||||||
import io.grpc.lb.v1.ClientStatsPerToken;
|
import io.grpc.lb.v1.ClientStatsPerToken;
|
||||||
import io.grpc.lb.v1.FallbackResponse;
|
import io.grpc.lb.v1.FallbackResponse;
|
||||||
|
@ -96,7 +94,6 @@ import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
|
@ -179,8 +176,6 @@ public class GrpclbLoadBalancerTest {
|
||||||
throw new AssertionError(e);
|
throw new AssertionError(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
private final GrpclbLoadBalancerProvider grpclbLoadBalancerProvider =
|
|
||||||
new GrpclbLoadBalancerProvider();
|
|
||||||
private static final ClientStreamTracer.StreamInfo STREAM_INFO =
|
private static final ClientStreamTracer.StreamInfo STREAM_INFO =
|
||||||
ClientStreamTracer.StreamInfo.newBuilder().build();
|
ClientStreamTracer.StreamInfo.newBuilder().build();
|
||||||
|
|
||||||
|
@ -469,10 +464,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
|
|
||||||
long loadReportIntervalMillis = 1983;
|
long loadReportIntervalMillis = 1983;
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
// Fallback timer is started as soon as address is resolved.
|
// Fallback timer is started as soon as address is resolved.
|
||||||
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
||||||
|
@ -696,10 +688,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
when(args.getHeaders()).thenReturn(headers);
|
when(args.getHeaders()).thenReturn(headers);
|
||||||
|
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
||||||
StreamObserver<LoadBalanceResponse> lbResponseObserver = lbResponseObserverCaptor.getValue();
|
StreamObserver<LoadBalanceResponse> lbResponseObserver = lbResponseObserverCaptor.getValue();
|
||||||
|
@ -736,10 +725,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
when(args.getHeaders()).thenReturn(headers);
|
when(args.getHeaders()).thenReturn(headers);
|
||||||
|
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
||||||
StreamObserver<LoadBalanceResponse> lbResponseObserver = lbResponseObserverCaptor.getValue();
|
StreamObserver<LoadBalanceResponse> lbResponseObserver = lbResponseObserverCaptor.getValue();
|
||||||
|
@ -795,8 +781,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void receiveNoBackendAndBalancerAddress() {
|
public void receiveNoBackendAndBalancerAddress() {
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList());
|
||||||
Attributes.EMPTY);
|
|
||||||
verify(helper).updateBalancingState(eq(TRANSIENT_FAILURE), pickerCaptor.capture());
|
verify(helper).updateBalancingState(eq(TRANSIENT_FAILURE), pickerCaptor.capture());
|
||||||
RoundRobinPicker picker = (RoundRobinPicker) pickerCaptor.getValue();
|
RoundRobinPicker picker = (RoundRobinPicker) pickerCaptor.getValue();
|
||||||
assertThat(picker.dropList).isEmpty();
|
assertThat(picker.dropList).isEmpty();
|
||||||
|
@ -826,9 +811,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
EquivalentAddressGroup eag = grpclbBalancerList.get(0);
|
EquivalentAddressGroup eag = grpclbBalancerList.get(0);
|
||||||
|
|
||||||
Attributes resolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList, resolutionAttrs);
|
|
||||||
|
|
||||||
verify(helper).createOobChannel(eq(eag), eq(lbAuthority(0)));
|
verify(helper).createOobChannel(eq(eag), eq(lbAuthority(0)));
|
||||||
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
||||||
|
@ -839,10 +822,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
InOrder inOrder = inOrder(helper, subchannelPool);
|
InOrder inOrder = inOrder(helper, subchannelPool);
|
||||||
// Go to GRPCLB first
|
// Go to GRPCLB first
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
|
@ -879,8 +859,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void grpclbUpdatedAddresses_avoidsReconnect() {
|
public void grpclbUpdatedAddresses_avoidsReconnect() {
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(1);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(1);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
ManagedChannel oobChannel = fakeOobChannels.poll();
|
ManagedChannel oobChannel = fakeOobChannels.poll();
|
||||||
|
@ -892,7 +871,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
grpclbBalancerList2.get(0).getAddresses().get(0),
|
grpclbBalancerList2.get(0).getAddresses().get(0),
|
||||||
grpclbBalancerList2.get(1).getAddresses().get(0)),
|
grpclbBalancerList2.get(1).getAddresses().get(0)),
|
||||||
lbAttributes(lbAuthority(0)));
|
lbAttributes(lbAuthority(0)));
|
||||||
deliverResolvedAddresses(backendList2, grpclbBalancerList2, grpclbResolutionAttrs);
|
deliverResolvedAddresses(backendList2, grpclbBalancerList2);
|
||||||
verify(helper).updateOobChannelAddresses(eq(oobChannel), eq(combinedEag));
|
verify(helper).updateOobChannelAddresses(eq(oobChannel), eq(combinedEag));
|
||||||
assertEquals(1, lbRequestObservers.size()); // No additional RPC
|
assertEquals(1, lbRequestObservers.size()); // No additional RPC
|
||||||
}
|
}
|
||||||
|
@ -901,8 +880,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void grpclbUpdatedAddresses_reconnectOnAuthorityChange() {
|
public void grpclbUpdatedAddresses_reconnectOnAuthorityChange() {
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(1);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(1);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
ManagedChannel oobChannel = fakeOobChannels.poll();
|
ManagedChannel oobChannel = fakeOobChannels.poll();
|
||||||
|
@ -914,8 +892,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
Collections.singletonList(
|
Collections.singletonList(
|
||||||
new EquivalentAddressGroup(
|
new EquivalentAddressGroup(
|
||||||
new FakeSocketAddress("somethingNew"), lbAttributes(newAuthority)));
|
new FakeSocketAddress("somethingNew"), lbAttributes(newAuthority)));
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(backendList2, grpclbBalancerList2);
|
||||||
backendList2, grpclbBalancerList2, grpclbResolutionAttrs);
|
|
||||||
assertTrue(oobChannel.isTerminated());
|
assertTrue(oobChannel.isTerminated());
|
||||||
verify(helper).createOobChannel(eq(grpclbBalancerList2.get(0)), eq(newAuthority));
|
verify(helper).createOobChannel(eq(grpclbBalancerList2.get(0)), eq(newAuthority));
|
||||||
assertEquals(2, lbRequestObservers.size()); // An additional RPC
|
assertEquals(2, lbRequestObservers.size()); // An additional RPC
|
||||||
|
@ -925,10 +902,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void grpclbWorking() {
|
public void grpclbWorking() {
|
||||||
InOrder inOrder = inOrder(helper, subchannelPool);
|
InOrder inOrder = inOrder(helper, subchannelPool);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
// Fallback timer is started as soon as the addresses are resolved.
|
// Fallback timer is started as soon as the addresses are resolved.
|
||||||
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
||||||
|
@ -1204,8 +1178,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
// Create balancer and backend addresses
|
// Create balancer and backend addresses
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes resolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, resolutionAttrs);
|
|
||||||
|
|
||||||
inOrder.verify(helper)
|
inOrder.verify(helper)
|
||||||
.createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
.createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
|
@ -1260,8 +1233,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
// Name resolver sends new resolution results without any backend addr
|
// Name resolver sends new resolution results without any backend addr
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
grpclbBalancerList = createResolvedBalancerAddresses(2);
|
grpclbBalancerList = createResolvedBalancerAddresses(2);
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(),grpclbBalancerList);
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),grpclbBalancerList, resolutionAttrs);
|
|
||||||
|
|
||||||
// New addresses are updated to the OobChannel
|
// New addresses are updated to the OobChannel
|
||||||
inOrder.verify(helper).updateOobChannelAddresses(
|
inOrder.verify(helper).updateOobChannelAddresses(
|
||||||
|
@ -1283,7 +1255,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////
|
||||||
backendList = createResolvedBackendAddresses(2);
|
backendList = createResolvedBackendAddresses(2);
|
||||||
grpclbBalancerList = createResolvedBalancerAddresses(1);
|
grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, resolutionAttrs);
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
|
|
||||||
// New LB address is updated to the OobChannel
|
// New LB address is updated to the OobChannel
|
||||||
inOrder.verify(helper).updateOobChannelAddresses(
|
inOrder.verify(helper).updateOobChannelAddresses(
|
||||||
|
@ -1334,7 +1306,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
///////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////
|
||||||
backendList = createResolvedBackendAddresses(1);
|
backendList = createResolvedBackendAddresses(1);
|
||||||
grpclbBalancerList = createResolvedBalancerAddresses(1);
|
grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, resolutionAttrs);
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
// Will not affect the round robin list at all
|
// Will not affect the round robin list at all
|
||||||
inOrder.verify(helper, never())
|
inOrder.verify(helper, never())
|
||||||
.updateBalancingState(any(ConnectivityState.class), any(SubchannelPicker.class));
|
.updateBalancingState(any(ConnectivityState.class), any(SubchannelPicker.class));
|
||||||
|
@ -1351,8 +1323,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
// Create balancer and backend addresses
|
// Create balancer and backend addresses
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes resolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, resolutionAttrs);
|
|
||||||
|
|
||||||
inOrder.verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
inOrder.verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
|
|
||||||
|
@ -1402,9 +1373,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
|
|
||||||
// Create just backend addresses
|
// Create just backend addresses
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
Attributes resolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, Collections.<EquivalentAddressGroup>emptyList());
|
||||||
deliverResolvedAddresses(
|
|
||||||
backendList, Collections.<EquivalentAddressGroup>emptyList(), resolutionAttrs);
|
|
||||||
|
|
||||||
assertThat(logs).containsExactly(
|
assertThat(logs).containsExactly(
|
||||||
"INFO: Using fallback backends",
|
"INFO: Using fallback backends",
|
||||||
|
@ -1445,8 +1414,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
// Create balancer and backend addresses
|
// Create balancer and backend addresses
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes resolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, resolutionAttrs);
|
|
||||||
|
|
||||||
inOrder.verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
inOrder.verify(helper).createOobChannel(eq(grpclbBalancerList.get(0)), eq(lbAuthority(0)));
|
||||||
|
|
||||||
|
@ -1605,8 +1573,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
new FakeSocketAddress("fake-address-3")),
|
new FakeSocketAddress("fake-address-3")),
|
||||||
lbAttributes("fake-authority-1")); // Supporting multiple authorities would be good, one day
|
lbAttributes("fake-authority-1")); // Supporting multiple authorities would be good, one day
|
||||||
|
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
verify(helper).createOobChannel(goldenOobChannelEag, "fake-authority-1");
|
verify(helper).createOobChannel(goldenOobChannelEag, "fake-authority-1");
|
||||||
}
|
}
|
||||||
|
@ -1621,10 +1588,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
InOrder inOrder =
|
InOrder inOrder =
|
||||||
inOrder(mockLbService, backoffPolicyProvider, backoffPolicy1, backoffPolicy2, helper);
|
inOrder(mockLbService, backoffPolicyProvider, backoffPolicy1, backoffPolicy2, helper);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList);
|
||||||
deliverResolvedAddresses(
|
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -1726,14 +1690,12 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void grpclbWorking_pickFirstMode() throws Exception {
|
public void grpclbWorking_pickFirstMode() throws Exception {
|
||||||
InOrder inOrder = inOrder(helper);
|
InOrder inOrder = inOrder(helper);
|
||||||
|
|
||||||
String lbConfig = "{\"childPolicy\" : [ {\"pick_first\" : {}} ]}";
|
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.newBuilder().set(
|
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
|
||||||
|
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
grpclbBalancerList,
|
||||||
|
GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
||||||
|
@ -1857,7 +1819,6 @@ public class GrpclbLoadBalancerTest {
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList,
|
grpclbBalancerList,
|
||||||
Attributes.EMPTY,
|
|
||||||
GrpclbConfig.create(Mode.PICK_FIRST));
|
GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
|
@ -1969,23 +1930,20 @@ public class GrpclbLoadBalancerTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shutdownWithoutSubchannel_roundRobin() throws Exception {
|
public void shutdownWithoutSubchannel_roundRobin() throws Exception {
|
||||||
subtestShutdownWithoutSubchannel("round_robin");
|
subtestShutdownWithoutSubchannel(GrpclbConfig.create(Mode.ROUND_ROBIN));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shutdownWithoutSubchannel_pickFirst() throws Exception {
|
public void shutdownWithoutSubchannel_pickFirst() throws Exception {
|
||||||
subtestShutdownWithoutSubchannel("pick_first");
|
subtestShutdownWithoutSubchannel(GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // TODO(creamsoup) use parsed object
|
private void subtestShutdownWithoutSubchannel(GrpclbConfig grpclbConfig) {
|
||||||
private void subtestShutdownWithoutSubchannel(String childPolicy) throws Exception {
|
|
||||||
String lbConfig = "{\"childPolicy\" : [ {\"" + childPolicy + "\" : {}} ]}";
|
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.newBuilder().set(
|
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
grpclbBalancerList,
|
||||||
|
grpclbConfig);
|
||||||
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
verify(mockLbService).balanceLoad(lbResponseObserverCaptor.capture());
|
||||||
assertEquals(1, lbRequestObservers.size());
|
assertEquals(1, lbRequestObservers.size());
|
||||||
StreamObserver<LoadBalanceRequest> requestObserver = lbRequestObservers.poll();
|
StreamObserver<LoadBalanceRequest> requestObserver = lbRequestObservers.poll();
|
||||||
|
@ -2003,14 +1961,13 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void pickFirstMode_fallback() throws Exception {
|
public void pickFirstMode_fallback() throws Exception {
|
||||||
InOrder inOrder = inOrder(helper);
|
InOrder inOrder = inOrder(helper);
|
||||||
|
|
||||||
String lbConfig = "{\"childPolicy\" : [ {\"pick_first\" : {}} ]}";
|
|
||||||
|
|
||||||
// Name resolver returns balancer and backend addresses
|
// Name resolver returns balancer and backend addresses
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.newBuilder().set(
|
deliverResolvedAddresses(
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
backendList,
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, grpclbResolutionAttrs);
|
grpclbBalancerList,
|
||||||
|
GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
|
|
||||||
// Attempted to connect to balancer
|
// Attempted to connect to balancer
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
|
@ -2083,14 +2040,11 @@ public class GrpclbLoadBalancerTest {
|
||||||
public void switchMode() throws Exception {
|
public void switchMode() throws Exception {
|
||||||
InOrder inOrder = inOrder(helper);
|
InOrder inOrder = inOrder(helper);
|
||||||
|
|
||||||
String lbConfig = "{\"childPolicy\" : [ {\"round_robin\" : {}} ]}";
|
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.newBuilder().set(
|
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
|
||||||
|
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
grpclbBalancerList,
|
||||||
|
GrpclbConfig.create(Mode.ROUND_ROBIN));
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
ManagedChannel oobChannel = fakeOobChannels.poll();
|
ManagedChannel oobChannel = fakeOobChannels.poll();
|
||||||
|
@ -2127,12 +2081,9 @@ public class GrpclbLoadBalancerTest {
|
||||||
.returnSubchannel(any(Subchannel.class), any(ConnectivityStateInfo.class));
|
.returnSubchannel(any(Subchannel.class), any(ConnectivityStateInfo.class));
|
||||||
|
|
||||||
// Switch to PICK_FIRST
|
// Switch to PICK_FIRST
|
||||||
lbConfig = "{\"childPolicy\" : [ {\"pick_first\" : {}} ]}";
|
|
||||||
grpclbResolutionAttrs = Attributes.newBuilder().set(
|
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList, grpclbResolutionAttrs);
|
grpclbBalancerList, GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
|
|
||||||
|
|
||||||
// GrpclbState will be shutdown, and a new one will be created
|
// GrpclbState will be shutdown, and a new one will be created
|
||||||
|
@ -2183,9 +2134,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
final List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
final List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList,
|
grpclbBalancerList);
|
||||||
Attributes.EMPTY,
|
|
||||||
/* grpclbConfig= */ null);
|
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
ManagedChannel oobChannel = fakeOobChannels.poll();
|
ManagedChannel oobChannel = fakeOobChannels.poll();
|
||||||
|
@ -2225,7 +2174,6 @@ public class GrpclbLoadBalancerTest {
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
grpclbBalancerList,
|
grpclbBalancerList,
|
||||||
Attributes.EMPTY,
|
|
||||||
GrpclbConfig.create(Mode.PICK_FIRST));
|
GrpclbConfig.create(Mode.PICK_FIRST));
|
||||||
|
|
||||||
// GrpclbState will be shutdown, and a new one will be created
|
// GrpclbState will be shutdown, and a new one will be created
|
||||||
|
@ -2264,19 +2212,17 @@ public class GrpclbLoadBalancerTest {
|
||||||
inOrder.verify(helper).updateBalancingState(eq(IDLE), any(SubchannelPicker.class));
|
inOrder.verify(helper).updateBalancingState(eq(IDLE), any(SubchannelPicker.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Test
|
@Test
|
||||||
public void switchServiceName() throws Exception {
|
public void switchServiceName() throws Exception {
|
||||||
InOrder inOrder = inOrder(helper);
|
InOrder inOrder = inOrder(helper);
|
||||||
|
|
||||||
String lbConfig = "{\"serviceName\": \"foo.google.com\"}";
|
String serviceName = "foo.google.com";
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(1);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.newBuilder()
|
|
||||||
.set(LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig))
|
|
||||||
.build();
|
|
||||||
|
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(), grpclbBalancerList, grpclbResolutionAttrs);
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
|
grpclbBalancerList,
|
||||||
|
GrpclbConfig.create(Mode.ROUND_ROBIN, serviceName));
|
||||||
|
|
||||||
assertEquals(1, fakeOobChannels.size());
|
assertEquals(1, fakeOobChannels.size());
|
||||||
ManagedChannel oobChannel = fakeOobChannels.poll();
|
ManagedChannel oobChannel = fakeOobChannels.poll();
|
||||||
|
@ -2286,7 +2232,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
StreamObserver<LoadBalanceRequest> lbRequestObserver = lbRequestObservers.poll();
|
StreamObserver<LoadBalanceRequest> lbRequestObserver = lbRequestObservers.poll();
|
||||||
verify(lbRequestObserver).onNext(
|
verify(lbRequestObserver).onNext(
|
||||||
eq(LoadBalanceRequest.newBuilder().setInitialRequest(
|
eq(LoadBalanceRequest.newBuilder().setInitialRequest(
|
||||||
InitialLoadBalanceRequest.newBuilder().setName("foo.google.com").build())
|
InitialLoadBalanceRequest.newBuilder().setName(serviceName).build())
|
||||||
.build()));
|
.build()));
|
||||||
|
|
||||||
// Simulate receiving LB response
|
// Simulate receiving LB response
|
||||||
|
@ -2313,14 +2259,12 @@ public class GrpclbLoadBalancerTest {
|
||||||
.returnSubchannel(any(Subchannel.class), any(ConnectivityStateInfo.class));
|
.returnSubchannel(any(Subchannel.class), any(ConnectivityStateInfo.class));
|
||||||
|
|
||||||
// Switch to different serviceName
|
// Switch to different serviceName
|
||||||
lbConfig = "{\"serviceName\": \"bar.google.com\"}";
|
serviceName = "bar.google.com";
|
||||||
grpclbResolutionAttrs = Attributes.newBuilder().set(
|
|
||||||
LoadBalancer.ATTR_LOAD_BALANCING_CONFIG, parseJsonObject(lbConfig)).build();
|
|
||||||
List<EquivalentAddressGroup> newGrpclbResolutionList = createResolvedBalancerAddresses(1);
|
List<EquivalentAddressGroup> newGrpclbResolutionList = createResolvedBalancerAddresses(1);
|
||||||
deliverResolvedAddresses(
|
deliverResolvedAddresses(
|
||||||
Collections.<EquivalentAddressGroup>emptyList(),
|
Collections.<EquivalentAddressGroup>emptyList(),
|
||||||
newGrpclbResolutionList,
|
newGrpclbResolutionList,
|
||||||
grpclbResolutionAttrs);
|
GrpclbConfig.create(Mode.ROUND_ROBIN, serviceName));
|
||||||
|
|
||||||
// GrpclbState will be shutdown, and a new one will be created
|
// GrpclbState will be shutdown, and a new one will be created
|
||||||
assertThat(oobChannel.isShutdown()).isTrue();
|
assertThat(oobChannel.isShutdown()).isTrue();
|
||||||
|
@ -2335,7 +2279,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
lbRequestObserver = lbRequestObservers.poll();
|
lbRequestObserver = lbRequestObservers.poll();
|
||||||
verify(lbRequestObserver).onNext(
|
verify(lbRequestObserver).onNext(
|
||||||
eq(LoadBalanceRequest.newBuilder().setInitialRequest(
|
eq(LoadBalanceRequest.newBuilder().setInitialRequest(
|
||||||
InitialLoadBalanceRequest.newBuilder().setName("bar.google.com").build())
|
InitialLoadBalanceRequest.newBuilder().setName(serviceName).build())
|
||||||
.build()));
|
.build()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2344,8 +2288,7 @@ public class GrpclbLoadBalancerTest {
|
||||||
InOrder inOrder = inOrder(helper, subchannelPool);
|
InOrder inOrder = inOrder(helper, subchannelPool);
|
||||||
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
List<EquivalentAddressGroup> backendList = createResolvedBackendAddresses(2);
|
||||||
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(2);
|
List<EquivalentAddressGroup> grpclbBalancerList = createResolvedBalancerAddresses(2);
|
||||||
Attributes grpclbResolutionAttrs = Attributes.EMPTY;
|
deliverResolvedAddresses(backendList, grpclbBalancerList);
|
||||||
deliverResolvedAddresses(backendList, grpclbBalancerList, grpclbResolutionAttrs);
|
|
||||||
|
|
||||||
// Fallback timer is started as soon as the addresses are resolved.
|
// Fallback timer is started as soon as the addresses are resolved.
|
||||||
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
assertEquals(1, fakeClock.numPendingTasks(FALLBACK_MODE_TASK_FILTER));
|
||||||
|
@ -2564,29 +2507,18 @@ public class GrpclbLoadBalancerTest {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation") // TODO(creamsoup) migrate test cases to use GrpclbConfig.
|
|
||||||
private void deliverResolvedAddresses(
|
private void deliverResolvedAddresses(
|
||||||
List<EquivalentAddressGroup> backendAddrs,
|
final List<EquivalentAddressGroup> backendAddrs,
|
||||||
List<EquivalentAddressGroup> balancerAddrs,
|
List<EquivalentAddressGroup> balancerAddrs) {
|
||||||
Attributes attrs) {
|
deliverResolvedAddresses(backendAddrs, balancerAddrs, GrpclbConfig.create(Mode.ROUND_ROBIN));
|
||||||
GrpclbConfig grpclbConfig;
|
|
||||||
Map<String, ?> lbJsonMap = attrs.get(LoadBalancer.ATTR_LOAD_BALANCING_CONFIG);
|
|
||||||
if (lbJsonMap != null) {
|
|
||||||
grpclbConfig = (GrpclbConfig) grpclbLoadBalancerProvider
|
|
||||||
.parseLoadBalancingPolicyConfig(lbJsonMap).getConfig();
|
|
||||||
} else {
|
|
||||||
grpclbConfig = GrpclbConfig.create(Mode.ROUND_ROBIN);
|
|
||||||
}
|
|
||||||
deliverResolvedAddresses(backendAddrs, balancerAddrs, attrs, grpclbConfig);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deliverResolvedAddresses(
|
private void deliverResolvedAddresses(
|
||||||
final List<EquivalentAddressGroup> backendAddrs,
|
final List<EquivalentAddressGroup> backendAddrs,
|
||||||
List<EquivalentAddressGroup> balancerAddrs,
|
List<EquivalentAddressGroup> balancerAddrs,
|
||||||
Attributes attributes,
|
|
||||||
final GrpclbConfig grpclbConfig) {
|
final GrpclbConfig grpclbConfig) {
|
||||||
final Attributes attrs =
|
final Attributes attrs =
|
||||||
attributes.toBuilder().set(GrpclbConstants.ATTR_LB_ADDRS, balancerAddrs).build();
|
Attributes.newBuilder().set(GrpclbConstants.ATTR_LB_ADDRS, balancerAddrs).build();
|
||||||
syncContext.execute(new Runnable() {
|
syncContext.execute(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
@ -2672,11 +2604,6 @@ public class GrpclbLoadBalancerTest {
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
private static Map<String, ?> parseJsonObject(String json) throws Exception {
|
|
||||||
return (Map<String, ?>) JsonParser.parse(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class ServerEntry {
|
private static class ServerEntry {
|
||||||
final InetSocketAddress addr;
|
final InetSocketAddress addr;
|
||||||
final String token;
|
final String token;
|
||||||
|
|
Loading…
Reference in New Issue