Skip to content

Commit e62770d

Browse files
authored
channelz: add LocalAddr to listen sockets and test (#7062) (#7063)
1 parent 4ffccf1 commit e62770d

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

server.go

+7-1
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,13 @@ func (s *Server) Serve(lis net.Listener) error {
848848

849849
ls := &listenSocket{
850850
Listener: lis,
851-
channelz: channelz.RegisterSocket(&channelz.Socket{SocketType: channelz.SocketTypeListen, Parent: s.channelz, RefName: lis.Addr().String(), SocketOptions: channelz.GetSocketOption(lis)}),
851+
channelz: channelz.RegisterSocket(&channelz.Socket{
852+
SocketType: channelz.SocketTypeListen,
853+
Parent: s.channelz,
854+
RefName: lis.Addr().String(),
855+
LocalAddr: lis.Addr(),
856+
SocketOptions: channelz.GetSocketOption(lis)},
857+
),
852858
}
853859
s.lis[ls] = true
854860

test/channelz_test.go

+43
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,49 @@ func (s) TestCZGetServer(t *testing.T) {
202202
}
203203
}
204204

205+
func (s) TestCZGetSocket(t *testing.T) {
206+
e := tcpClearRREnv
207+
te := newTest(t, e)
208+
lis := te.listenAndServe(&testServer{security: e.security}, net.Listen)
209+
defer te.tearDown()
210+
211+
if err := verifyResultWithDelay(func() (bool, error) {
212+
ss, _ := channelz.GetServers(0, 0)
213+
if len(ss) != 1 {
214+
return false, fmt.Errorf("len(ss) = %v; want %v", len(ss), 1)
215+
}
216+
217+
serverID := ss[0].ID
218+
srv := channelz.GetServer(serverID)
219+
if srv == nil {
220+
return false, fmt.Errorf("server %d does not exist", serverID)
221+
}
222+
if srv.ID != serverID {
223+
return false, fmt.Errorf("srv.ID = %d; want %v", srv.ID, serverID)
224+
}
225+
226+
skts := srv.ListenSockets()
227+
if got, want := len(skts), 1; got != want {
228+
return false, fmt.Errorf("len(skts) = %v; want %v", got, want)
229+
}
230+
var sktID int64
231+
for sktID = range skts {
232+
}
233+
234+
skt := channelz.GetSocket(sktID)
235+
if skt == nil {
236+
return false, fmt.Errorf("socket %v does not exist", sktID)
237+
}
238+
239+
if got, want := skt.LocalAddr, lis.Addr(); got != want {
240+
return false, fmt.Errorf("socket %v LocalAddr=%v; want %v", sktID, got, want)
241+
}
242+
return true, nil
243+
}); err != nil {
244+
t.Fatal(err)
245+
}
246+
}
247+
205248
func (s) TestCZTopChannelRegistrationAndDeletion(t *testing.T) {
206249
testcases := []struct {
207250
total int

0 commit comments

Comments
 (0)