Skip to content

Commit ce50ee3

Browse files
committed
test/channelz: Don't try to dial non-dialable addresses
On some platforms, dialing 127.0.0.1:0 doesn't fail immediately but rather blocks until it times out. This leads to test failures because the leak detector identifies stray goroutines. Even if the tests don't need the dial to succeed, create a random listener and use that as resolved address. Signed-off-by: Tom Wieczorek <[email protected]>
1 parent 2d51986 commit ce50ee3

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

test/channelz_test.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,8 @@ func (s) TestCZNestedChannelRegistrationAndDeletion(t *testing.T) {
323323
r := manual.NewBuilderWithScheme("whatever")
324324
te.resolverScheme = r.Scheme()
325325
te.clientConn(grpc.WithResolvers(r))
326-
resolvedAddrs := []resolver.Address{{Addr: "127.0.0.1:0", ServerName: "grpclb.server"}}
326+
localListenAddress := randomLocalListenAddress(t)
327+
resolvedAddrs := []resolver.Address{{Addr: localListenAddress, ServerName: "grpclb.server"}}
327328
grpclbConfig := parseServiceConfig(t, r, `{"loadBalancingPolicy": "grpclb"}`)
328329
r.UpdateState(grpclbstate.Set(resolver.State{ServiceConfig: grpclbConfig}, &grpclbstate.State{BalancerAddresses: resolvedAddrs}))
329330
defer te.tearDown()
@@ -342,7 +343,7 @@ func (s) TestCZNestedChannelRegistrationAndDeletion(t *testing.T) {
342343
}
343344

344345
r.UpdateState(resolver.State{
345-
Addresses: []resolver.Address{{Addr: "127.0.0.1:0"}},
346+
Addresses: []resolver.Address{{Addr: localListenAddress}},
346347
ServiceConfig: parseServiceConfig(t, r, `{"loadBalancingPolicy": "round_robin"}`),
347348
})
348349

@@ -1504,7 +1505,8 @@ func (s) TestCZChannelTraceCreationDeletion(t *testing.T) {
15041505
r := manual.NewBuilderWithScheme("whatever")
15051506
te.resolverScheme = r.Scheme()
15061507
te.clientConn(grpc.WithResolvers(r))
1507-
resolvedAddrs := []resolver.Address{{Addr: "127.0.0.1:0", ServerName: "grpclb.server"}}
1508+
localListenAddress := randomLocalListenAddress(t)
1509+
resolvedAddrs := []resolver.Address{{Addr: localListenAddress, ServerName: "grpclb.server"}}
15081510
grpclbConfig := parseServiceConfig(t, r, `{"loadBalancingPolicy": "grpclb"}`)
15091511
r.UpdateState(grpclbstate.Set(resolver.State{ServiceConfig: grpclbConfig}, &grpclbstate.State{BalancerAddresses: resolvedAddrs}))
15101512
defer te.tearDown()
@@ -1546,7 +1548,7 @@ func (s) TestCZChannelTraceCreationDeletion(t *testing.T) {
15461548
}
15471549

15481550
r.UpdateState(resolver.State{
1549-
Addresses: []resolver.Address{{Addr: "127.0.0.1:0"}},
1551+
Addresses: []resolver.Address{{Addr: localListenAddress}},
15501552
ServiceConfig: parseServiceConfig(t, r, `{"loadBalancingPolicy": "round_robin"}`),
15511553
})
15521554

@@ -2014,7 +2016,8 @@ func (s) TestCZTraceOverwriteChannelDeletion(t *testing.T) {
20142016
r := manual.NewBuilderWithScheme("whatever")
20152017
te.resolverScheme = r.Scheme()
20162018
te.clientConn(grpc.WithResolvers(r))
2017-
resolvedAddrs := []resolver.Address{{Addr: "127.0.0.1:0", ServerName: "grpclb.server"}}
2019+
localListenAddress := randomLocalListenAddress(t)
2020+
resolvedAddrs := []resolver.Address{{Addr: localListenAddress, ServerName: "grpclb.server"}}
20182021
grpclbConfig := parseServiceConfig(t, r, `{"loadBalancingPolicy": "grpclb"}`)
20192022
r.UpdateState(grpclbstate.Set(resolver.State{ServiceConfig: grpclbConfig}, &grpclbstate.State{BalancerAddresses: resolvedAddrs}))
20202023
defer te.tearDown()
@@ -2037,7 +2040,7 @@ func (s) TestCZTraceOverwriteChannelDeletion(t *testing.T) {
20372040
}
20382041

20392042
r.UpdateState(resolver.State{
2040-
Addresses: []resolver.Address{{Addr: "127.0.0.1:0"}},
2043+
Addresses: []resolver.Address{{Addr: localListenAddress}},
20412044
ServiceConfig: parseServiceConfig(t, r, `{"loadBalancingPolicy": "round_robin"}`),
20422045
})
20432046

@@ -2163,3 +2166,12 @@ func (s) TestCZTraceTopChannelDeletionTraceClear(t *testing.T) {
21632166
t.Fatal(err)
21642167
}
21652168
}
2169+
2170+
func randomLocalListenAddress(t *testing.T) string {
2171+
lis, err := net.Listen("tcp", "localhost:0")
2172+
if err != nil {
2173+
t.Fatalf("Failed to listen: %v", err)
2174+
}
2175+
t.Cleanup(func() { lis.Close() })
2176+
return lis.Addr().String()
2177+
}

0 commit comments

Comments
 (0)