(t *testing.T)
| 134 | } |
| 135 | |
| 136 | func 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(` |
nothing calls this directly
no test coverage detected