test: fix potential goroutine leak in TestUpdateAddresses_RetryFromFirstAddr (#5023)

This commit is contained in:
Shihao Xia 2022-01-05 13:38:18 -05:00 committed by GitHub
parent afded7231d
commit 2fb1ac854b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 12 additions and 3 deletions

View File

@ -859,12 +859,15 @@ func (s) TestUpdateAddresses_RetryFromFirstAddr(t *testing.T) {
defer lis3.Close()
closeServer2 := make(chan struct{})
exitCh := make(chan struct{})
server1ContactedFirstTime := make(chan struct{})
server1ContactedSecondTime := make(chan struct{})
server2ContactedFirstTime := make(chan struct{})
server2ContactedSecondTime := make(chan struct{})
server3Contacted := make(chan struct{})
defer close(exitCh)
// Launch server 1.
go func() {
// First, let's allow the initial connection to go READY. We need to do
@ -888,12 +891,18 @@ func (s) TestUpdateAddresses_RetryFromFirstAddr(t *testing.T) {
// until balancer is built to process the addresses.
stateNotifications := testBalancerBuilder.nextStateNotifier()
// Wait for the transport to become ready.
for s := range stateNotifications {
if s == connectivity.Ready {
break
for {
select {
case st := <-stateNotifications:
if st == connectivity.Ready {
goto ready
}
case <-exitCh:
return
}
}
ready:
// Once it's ready, curAddress has been set. So let's close this
// connection prompting the first reconnect cycle.
conn1.Close()