@@ -202,6 +202,49 @@ func (s) TestCZGetServer(t *testing.T) {
202
202
}
203
203
}
204
204
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
+
205
248
func (s ) TestCZTopChannelRegistrationAndDeletion (t * testing.T ) {
206
249
testcases := []struct {
207
250
total int
0 commit comments