Skip to content

Commit

Permalink
testutils: do a better job of verifying pick_first in tests (#5850)
Browse files Browse the repository at this point in the history
  • Loading branch information
easwars committed Dec 13, 2022
1 parent 3e27f89 commit 5003029
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions internal/testutils/pickfirst/pickfirst.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@ import (
func CheckRPCsToBackend(ctx context.Context, cc *grpc.ClientConn, wantAddr resolver.Address) error {
client := testgrpc.NewTestServiceClient(cc)
peer := &peer.Peer{}
// Make sure the RPC reaches the expected backend once.
// Make sure that 20 RPCs in a row reach the expected backend. Some
// tests switch from round_robin back to pick_first and call this
// function. None of our tests spin up more than 10 backends. So,
// waiting for 20 RPCs to reach a single backend would a decent
// indicator of having switched to pick_first.
count := 0
for {
time.Sleep(time.Millisecond)
if ctx.Err() != nil {
Expand All @@ -55,7 +60,12 @@ func CheckRPCsToBackend(ctx context.Context, cc *grpc.ClientConn, wantAddr resol
// removed.
continue
}
if peer.Addr.String() == wantAddr.Addr {
if peer.Addr.String() != wantAddr.Addr {
count = 0
continue
}
count++
if count > 20 {
break
}
}
Expand Down

0 comments on commit 5003029

Please sign in to comment.