(t *testing.T)
| 413 | } |
| 414 | |
| 415 | func (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}, |
nothing calls this directly
no test coverage detected