MCPcopy
hub / github.com/grpc/grpc-go / TestGetSubChannel

Method TestGetSubChannel

channelz/service/service_test.go:415–491  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

413}
414
415func (s) TestGetSubChannel(t *testing.T) {
416 var (
417 subchanCreated = "SubChannel Created"
418 subchanConnectivityChange = fmt.Sprintf("Subchannel Connectivity change to %v", connectivity.Ready)
419 subChanPickNewAddress = fmt.Sprintf("Subchannel picks a new address %q to connect", "0.0.0.0")
420 )
421
422 refNames := []string{"top channel 1", "sub channel 1", "socket 1", "socket 2"}
423 chann := channelz.RegisterChannel(nil, refNames[0])
424 defer channelz.RemoveEntry(chann.ID)
425 channelz.AddTraceEvent(logger, chann, 0, &channelz.TraceEvent{
426 Desc: "Channel Created",
427 Severity: channelz.CtInfo,
428 })
429 subChan := channelz.RegisterSubChannel(chann, refNames[1])
430 defer channelz.RemoveEntry(subChan.ID)
431 channelz.AddTraceEvent(logger, subChan, 0, &channelz.TraceEvent{
432 Desc: subchanCreated,
433 Severity: channelz.CtInfo,
434 Parent: &channelz.TraceEvent{
435 Desc: fmt.Sprintf("Nested Channel(id:%d) created", chann.ID),
436 Severity: channelz.CtInfo,
437 },
438 })
439 skt1 := channelz.RegisterSocket(&channelz.Socket{SocketType: channelz.SocketTypeNormal, Parent: subChan, RefName: refNames[2]})
440 defer channelz.RemoveEntry(skt1.ID)
441 skt2 := channelz.RegisterSocket(&channelz.Socket{SocketType: channelz.SocketTypeNormal, Parent: subChan, RefName: refNames[3]})
442 defer channelz.RemoveEntry(skt2.ID)
443 channelz.AddTraceEvent(logger, subChan, 0, &channelz.TraceEvent{
444 Desc: subchanConnectivityChange,
445 Severity: channelz.CtInfo,
446 })
447 channelz.AddTraceEvent(logger, subChan, 0, &channelz.TraceEvent{
448 Desc: subChanPickNewAddress,
449 Severity: channelz.CtInfo,
450 })
451 svr := newCZServer()
452 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
453 defer cancel()
454 resp, _ := svr.GetSubchannel(ctx, &channelzpb.GetSubchannelRequest{SubchannelId: subChan.ID})
455 metrics := resp.GetSubchannel()
456 want := map[int64]string{
457 skt1.ID: refNames[2],
458 skt2.ID: refNames[3],
459 }
460 if !cmp.Equal(convertSocketRefSliceToMap(metrics.GetSocketRef()), want) {
461 t.Fatalf("metrics.GetSocketRef() want %#v: got: %#v", want, metrics.GetSocketRef())
462 }
463
464 trace := metrics.GetData().GetTrace()
465 wantTrace := []struct {
466 desc string
467 severity channelzpb.ChannelTraceEvent_Severity
468 childID int64
469 childRef string
470 }{
471 {desc: subchanCreated, severity: channelzpb.ChannelTraceEvent_CT_INFO},
472 {desc: subchanConnectivityChange, severity: channelzpb.ChannelTraceEvent_CT_INFO},

Callers

nothing calls this directly

Calls 15

RegisterChannelFunction · 0.92
RemoveEntryFunction · 0.92
AddTraceEventFunction · 0.92
RegisterSubChannelFunction · 0.92
RegisterSocketFunction · 0.92
newCZServerFunction · 0.85
GetDescriptionMethod · 0.80
GetSeverityMethod · 0.80
GetSubchannelMethod · 0.65
EqualMethod · 0.65
FatalfMethod · 0.65

Tested by

no test coverage detected