From cef501ea6230d48abc68cc0983dfbefc2fc5cbea Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Thu, 21 Mar 2024 15:43:48 -0700 Subject: [PATCH 1/3] channelz: add LocalAddr to listen sockets and test --- server.go | 8 +++++++- test/channelz_test.go | 44 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/server.go b/server.go index 2babb4f9b4c1..fd4558daa52c 100644 --- a/server.go +++ b/server.go @@ -848,7 +848,13 @@ func (s *Server) Serve(lis net.Listener) error { ls := &listenSocket{ Listener: lis, - channelz: channelz.RegisterSocket(&channelz.Socket{SocketType: channelz.SocketTypeListen, Parent: s.channelz, RefName: lis.Addr().String(), SocketOptions: channelz.GetSocketOption(lis)}), + channelz: channelz.RegisterSocket(&channelz.Socket{ + SocketType: channelz.SocketTypeListen, + Parent: s.channelz, + RefName: lis.Addr().String(), + LocalAddr: lis.Addr(), + SocketOptions: channelz.GetSocketOption(lis)}, + ), } s.lis[ls] = true diff --git a/test/channelz_test.go b/test/channelz_test.go index 5e883d5342d3..62a195956d6f 100644 --- a/test/channelz_test.go +++ b/test/channelz_test.go @@ -202,6 +202,50 @@ func (s) TestCZGetServer(t *testing.T) { } } +func (s) TestCZGetSocket(t *testing.T) { + e := tcpClearRREnv + te := newTest(t, e) + lis := te.listenAndServe(&testServer{security: e.security}, net.Listen) + defer te.tearDown() + + if err := verifyResultWithDelay(func() (bool, error) { + ss, _ := channelz.GetServers(0, 0) + if len(ss) != 1 { + return false, fmt.Errorf("there should only be one server, not %d", len(ss)) + } + + serverID := ss[0].ID + srv := channelz.GetServer(serverID) + if srv == nil { + return false, fmt.Errorf("server %d does not exist", serverID) + } + if srv.ID != serverID { + return false, fmt.Errorf("server want id %d, but got %d", serverID, srv.ID) + } + + skts := srv.ListenSockets() + if got, want := len(skts), 1; got != want { + t.Logf("%#v", srv) + return false, fmt.Errorf("server has %v sockets; want %v", got, want) + } + var sktID int64 + for sktID, _ = range skts { + } + + skt := channelz.GetSocket(sktID) + if skt == nil { + return false, fmt.Errorf("socket %v does not exist", sktID) + } + + if got, want := skt.LocalAddr, lis.Addr(); got != want { + return false, fmt.Errorf("socket %v has LocalAddr=%v; want %v", sktID, got, want) + } + return true, nil + }); err != nil { + t.Fatal(err) + } +} + func (s) TestCZTopChannelRegistrationAndDeletion(t *testing.T) { testcases := []struct { total int From 0040a83144ac879d2abb6fafab0bae2a56e52c14 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Thu, 21 Mar 2024 16:16:02 -0700 Subject: [PATCH 2/3] remove log to fix race; fix vet --- test/channelz_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/test/channelz_test.go b/test/channelz_test.go index 62a195956d6f..b4308d147d68 100644 --- a/test/channelz_test.go +++ b/test/channelz_test.go @@ -225,11 +225,10 @@ func (s) TestCZGetSocket(t *testing.T) { skts := srv.ListenSockets() if got, want := len(skts), 1; got != want { - t.Logf("%#v", srv) return false, fmt.Errorf("server has %v sockets; want %v", got, want) } var sktID int64 - for sktID, _ = range skts { + for sktID = range skts { } skt := channelz.GetSocket(sktID) From d827cbe0c5247712d6b84a914cf6f3ed9b4f61b0 Mon Sep 17 00:00:00 2001 From: Doug Fawley Date: Thu, 21 Mar 2024 16:56:48 -0700 Subject: [PATCH 3/3] errmsg --- test/channelz_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/channelz_test.go b/test/channelz_test.go index b4308d147d68..1cc1e2e48de5 100644 --- a/test/channelz_test.go +++ b/test/channelz_test.go @@ -211,7 +211,7 @@ func (s) TestCZGetSocket(t *testing.T) { if err := verifyResultWithDelay(func() (bool, error) { ss, _ := channelz.GetServers(0, 0) if len(ss) != 1 { - return false, fmt.Errorf("there should only be one server, not %d", len(ss)) + return false, fmt.Errorf("len(ss) = %v; want %v", len(ss), 1) } serverID := ss[0].ID @@ -220,12 +220,12 @@ func (s) TestCZGetSocket(t *testing.T) { return false, fmt.Errorf("server %d does not exist", serverID) } if srv.ID != serverID { - return false, fmt.Errorf("server want id %d, but got %d", serverID, srv.ID) + return false, fmt.Errorf("srv.ID = %d; want %v", srv.ID, serverID) } skts := srv.ListenSockets() if got, want := len(skts), 1; got != want { - return false, fmt.Errorf("server has %v sockets; want %v", got, want) + return false, fmt.Errorf("len(skts) = %v; want %v", got, want) } var sktID int64 for sktID = range skts { @@ -237,7 +237,7 @@ func (s) TestCZGetSocket(t *testing.T) { } if got, want := skt.LocalAddr, lis.Addr(); got != want { - return false, fmt.Errorf("socket %v has LocalAddr=%v; want %v", sktID, got, want) + return false, fmt.Errorf("socket %v LocalAddr=%v; want %v", sktID, got, want) } return true, nil }); err != nil {