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

Method TestCZClientSocketMetricsStreamsAndMessagesCount

test/channelz_test.go:958–1054  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

956}
957
958func (s) TestCZClientSocketMetricsStreamsAndMessagesCount(t *testing.T) {
959 ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
960 defer cancel()
961
962 e := tcpClearRREnv
963 te := newTest(t, e)
964 te.maxServerReceiveMsgSize = newInt(20)
965 te.maxClientReceiveMsgSize = newInt(20)
966 rcw := te.startServerWithConnControl(&testServer{security: e.security})
967 defer te.tearDown()
968 cc := te.clientConn()
969 tc := &testServiceClientWrapper{TestServiceClient: testgrpc.NewTestServiceClient(cc)}
970
971 doSuccessfulUnaryCall(tc, t)
972 var scID, skID int64
973 if err := verifyResultWithDelay(func() (bool, error) {
974 tchan, _ := channelz.GetTopChannels(0, 0)
975 if len(tchan) != 1 {
976 return false, fmt.Errorf("there should only be one top channel, not %d", len(tchan))
977 }
978 subChans := tchan[0].SubChans()
979 if len(subChans) != 1 {
980 return false, fmt.Errorf("there should only be one subchannel under top channel %d, not %d", tchan[0].ID, len(subChans))
981 }
982
983 for scID = range subChans {
984 break
985 }
986 sc := channelz.GetSubChannel(scID)
987 if sc == nil {
988 return false, fmt.Errorf("there should only be one socket under subchannel %d, not 0", scID)
989 }
990 skts := sc.Sockets()
991 if len(skts) != 1 {
992 return false, fmt.Errorf("there should only be one socket under subchannel %d, not %d", sc.ID, len(skts))
993 }
994 for skID = range skts {
995 break
996 }
997 skt := channelz.GetSocket(skID)
998 sktData := &skt.SocketMetrics
999 if sktData.StreamsStarted.Load() != 1 || sktData.StreamsSucceeded.Load() != 1 || sktData.MessagesSent.Load() != 1 || sktData.MessagesReceived.Load() != 1 {
1000 return false, fmt.Errorf("channelz.GetSocket(%d), want (StreamsStarted.Load(), StreamsSucceeded.Load(), MessagesSent.Load(), MessagesReceived.Load()) = (1, 1, 1, 1), got (%d, %d, %d, %d)", skt.ID, sktData.StreamsStarted.Load(), sktData.StreamsSucceeded.Load(), sktData.MessagesSent.Load(), sktData.MessagesReceived.Load())
1001 }
1002 return true, nil
1003 }); err != nil {
1004 t.Fatal(err)
1005 }
1006
1007 doServerSideFailedUnaryCall(tc, t)
1008 if err := verifyResultWithDelay(func() (bool, error) {
1009 skt := channelz.GetSocket(skID)
1010 sktData := &skt.SocketMetrics
1011 if sktData.StreamsStarted.Load() != 2 || sktData.StreamsSucceeded.Load() != 2 || sktData.MessagesSent.Load() != 2 || sktData.MessagesReceived.Load() != 1 {
1012 return false, fmt.Errorf("channelz.GetSocket(%d), want (StreamsStarted.Load(), StreamsSucceeded.Load(), MessagesSent.Load(), MessagesReceived.Load()) = (2, 2, 2, 1), got (%d, %d, %d, %d)", skt.ID, sktData.StreamsStarted.Load(), sktData.StreamsSucceeded.Load(), sktData.MessagesSent.Load(), sktData.MessagesReceived.Load())
1013 }
1014 return true, nil
1015 }); err != nil {

Callers

nothing calls this directly

Calls 15

GetTopChannelsFunction · 0.92
GetSubChannelFunction · 0.92
GetSocketFunction · 0.92
doSuccessfulUnaryCallFunction · 0.85
SubChansMethod · 0.80
SocketsMethod · 0.80
newTestFunction · 0.70

Tested by

no test coverage detected