@@ -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+
205248func (s ) TestCZTopChannelRegistrationAndDeletion (t * testing.T ) {
206249 testcases := []struct {
207250 total int
0 commit comments