MCPcopy
hub / github.com/grafana/dskit / TestGrpcStatsStreaming

Function TestGrpcStatsStreaming

middleware/grpc_stats_test.go:136–264  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

134}
135
136func TestGrpcStatsStreaming(t *testing.T) {
137 reg := prometheus.NewRegistry()
138
139 received := promauto.With(reg).NewHistogramVec(prometheus.HistogramOpts{
140 Name: "received_payload_bytes",
141 Help: "Size of received gRPC messages",
142 Buckets: BodySizeBuckets,
143 }, []string{"method", "route"})
144
145 sent := promauto.With(reg).NewHistogramVec(prometheus.HistogramOpts{
146 Name: "sent_payload_bytes",
147 Help: "Size of sent gRPC",
148 Buckets: BodySizeBuckets,
149 }, []string{"method", "route"})
150
151 inflightRequests := promauto.With(reg).NewGaugeVec(prometheus.GaugeOpts{
152 Name: "inflight_requests",
153 Help: "Current number of inflight requests.",
154 }, []string{"method", "route"})
155
156 stats := NewStatsHandler(reg, received, sent, inflightRequests, true)
157
158 serv := grpc.NewServer(grpc.StatsHandler(stats), grpc.MaxSendMsgSize(10e6), grpc.MaxRecvMsgSize(10e6))
159 defer serv.GracefulStop()
160
161 listener, err := net.Listen("tcp", "localhost:0")
162 require.NoError(t, err)
163
164 middleware_test.RegisterEchoServerServer(serv, &halfEcho{log: t.Log})
165
166 go func() {
167 require.NoError(t, serv.Serve(listener))
168 }()
169
170 conn, err := grpc.NewClient(listener.Addr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()), grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(10e6), grpc.MaxCallSendMsgSize(10e6)))
171 require.NoError(t, err)
172 defer func() {
173 require.NoError(t, conn.Close())
174 }()
175
176 fc := middleware_test.NewEchoServerClient(conn)
177
178 s, err := fc.Process(context.Background())
179 require.NoError(t, err)
180
181 for ix := 0; ix < 5; ix++ {
182 msg := &middleware_test.Msg{
183 Body: []byte(generateString((ix + 1) * 1024 * 1024)),
184 }
185
186 t.Log("Client Sending", msg.Size())
187 err = s.Send(msg)
188 require.NoError(t, err)
189
190 _, err := s.Recv()
191 require.NoError(t, err)
192
193 err = testutil.GatherAndCompare(reg, bytes.NewBufferString(`

Callers

nothing calls this directly

Calls 15

ProcessMethod · 0.95
SizeMethod · 0.95
RegisterEchoServerServerFunction · 0.92
NewEchoServerClientFunction · 0.92
NewStatsHandlerFunction · 0.85
generateStringFunction · 0.85
WithMethod · 0.80
StringMethod · 0.65
CloseMethod · 0.65
SendMethod · 0.65
RecvMethod · 0.65
AddMethod · 0.65

Tested by

no test coverage detected