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

Function TestErrorInstrumentationMiddleware

server/server_test.go:133–276  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

131}
132
133func TestErrorInstrumentationMiddleware(t *testing.T) {
134 newRegistry := prometheus.NewRegistry()
135 prometheus.DefaultRegisterer = newRegistry
136 prometheus.DefaultGatherer = newRegistry
137
138 var cfg Config
139 cfg.RegisterFlags(flag.NewFlagSet("", flag.ExitOnError))
140 setAutoAssignedPorts(DefaultNetwork, &cfg)
141
142 server, err := New(cfg)
143 require.NoError(t, err)
144
145 fakeServer := FakeServer{}
146 RegisterFakeServerServer(server.GRPC, fakeServer)
147
148 server.HTTP.HandleFunc("/succeed", func(http.ResponseWriter, *http.Request) {
149 })
150 server.HTTP.HandleFunc("/error500", func(w http.ResponseWriter, _ *http.Request) {
151 w.WriteHeader(500)
152 })
153 server.HTTP.HandleFunc("/sleep10", func(_ http.ResponseWriter, r *http.Request) {
154 _ = cancelableSleep(r.Context(), time.Second*10)
155 })
156 server.HTTP.NotFoundHandler = http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
157 w.WriteHeader(http.StatusNotFound)
158 })
159
160 go func() {
161 require.NoError(t, server.Run())
162 }()
163
164 conn, err := grpc.NewClient(server.GRPCListenAddr().String(), grpc.WithTransportCredentials(insecure.NewCredentials()))
165 require.NoError(t, err)
166 defer conn.Close()
167
168 empty := emptypb.Empty{}
169 client := NewFakeServerClient(conn)
170 res, err := client.Succeed(context.Background(), &empty)
171 require.NoError(t, err)
172 empty.Reset()
173 require.EqualValues(t, &empty, res)
174
175 res, err = client.FailWithError(context.Background(), &empty)
176 require.Nil(t, res)
177 require.Error(t, err)
178
179 s, ok := status.FromError(err)
180 require.True(t, ok)
181 require.Equal(t, "test error", s.Message())
182
183 res, err = client.FailWithHTTPError(context.Background(), &FailWithHTTPErrorRequest{Code: http.StatusPaymentRequired})
184 require.Nil(t, res)
185 errResp, ok := httpgrpc.HTTPResponseFromError(err)
186 require.True(t, ok)
187 require.Equal(t, int32(http.StatusPaymentRequired), errResp.Code)
188 require.Equal(t, "402", string(errResp.Body))
189
190 callThenCancel := func(f func(ctx context.Context) error) error {

Callers

nothing calls this directly

Calls 15

RegisterFlagsMethod · 0.95
SucceedMethod · 0.95
FailWithErrorMethod · 0.95
FailWithHTTPErrorMethod · 0.95
SleepMethod · 0.95
StreamSleepMethod · 0.95
HTTPResponseFromErrorFunction · 0.92
setAutoAssignedPortsFunction · 0.85
RegisterFakeServerServerFunction · 0.85
cancelableSleepFunction · 0.85
NewFakeServerClientFunction · 0.85
httpTargetFunction · 0.85

Tested by

no test coverage detected