@@ -49,6 +49,7 @@ import (
4949 v3lrspb "github.com/envoyproxy/go-control-plane/envoy/service/load_stats/v3"
5050 testgrpc "google.golang.org/grpc/interop/grpc_testing"
5151 testpb "google.golang.org/grpc/interop/grpc_testing"
52+ "google.golang.org/protobuf/types/known/wrapperspb"
5253
5354 _ "google.golang.org/grpc/xds"
5455)
@@ -214,10 +215,16 @@ func (s) TestLoadReportingPickFirstMultiLocality(t *testing.T) {
214215 routeConfigName := "route-" + serviceName
215216 clusterName := "cluster-" + serviceName
216217 endpointsName := "endpoints-" + serviceName
218+ routePolicy := e2e .DefaultRouteConfig (routeConfigName , serviceName , clusterName )
219+ // Configure retries as we will shut down server 1 and switch to server 2 later.
220+ routePolicy .VirtualHosts [0 ].RetryPolicy = & v3routepb.RetryPolicy {
221+ RetryOn : "unavailable" ,
222+ NumRetries : & wrapperspb.UInt32Value {Value : 1 },
223+ }
217224 resources := e2e.UpdateOptions {
218225 NodeID : nodeID ,
219226 Listeners : []* v3listenerpb.Listener {e2e .DefaultClientListener (serviceName , routeConfigName )},
220- Routes : []* v3routepb.RouteConfiguration {e2e . DefaultRouteConfig ( routeConfigName , serviceName , clusterName ) },
227+ Routes : []* v3routepb.RouteConfiguration {routePolicy },
221228 Clusters : []* v3clusterpb.Cluster {
222229 {
223230 Name : clusterName ,
@@ -319,12 +326,8 @@ func (s) TestLoadReportingPickFirstMultiLocality(t *testing.T) {
319326 }
320327
321328 // Stop server 1 and send one more rpc. Now the request should go to server 2.
322- server1 .Stop ()
323- // The first call may go to server 1 and fail, so we send two requests.
324- if _ , err := client .EmptyCall (ctx , & testpb.Empty {}, grpc .Peer (& peer )); err != nil {
325- t .Logf ("First rpc EmptyCall() failed: %v" , err )
326- }
327329
330+ server1 .Stop ()
328331 if _ , err := client .EmptyCall (ctx , & testpb.Empty {}, grpc .Peer (& peer )); err != nil {
329332 t .Fatalf ("rpc EmptyCall() failed: %v" , err )
330333 }
0 commit comments