(t *testing.T)
| 15 | ) |
| 16 | |
| 17 | func TestTraceByIDShouldQuit(t *testing.T) { |
| 18 | // new combiner should not quit |
| 19 | c := NewTraceByID(0, api.HeaderAcceptJSON, nil) |
| 20 | should := c.ShouldQuit() |
| 21 | require.False(t, should) |
| 22 | |
| 23 | // 500 response should quit |
| 24 | c = NewTraceByID(0, api.HeaderAcceptJSON, nil) |
| 25 | err := c.AddResponse(toHTTPResponse(t, &tempopb.SearchResponse{}, 500)) |
| 26 | require.NoError(t, err) |
| 27 | should = c.ShouldQuit() |
| 28 | require.True(t, should) |
| 29 | |
| 30 | // 429 response should quit |
| 31 | c = NewTraceByID(0, api.HeaderAcceptJSON, nil) |
| 32 | err = c.AddResponse(toHTTPProtoResponse(t, &tempopb.SearchResponse{}, 429)) |
| 33 | require.NoError(t, err) |
| 34 | should = c.ShouldQuit() |
| 35 | require.True(t, should) |
| 36 | |
| 37 | // 404 response should not quit |
| 38 | c = NewTraceByID(0, api.HeaderAcceptJSON, nil) |
| 39 | err = c.AddResponse(toHTTPProtoResponse(t, &tempopb.SearchResponse{}, 404)) |
| 40 | require.NoError(t, err) |
| 41 | should = c.ShouldQuit() |
| 42 | require.False(t, should) |
| 43 | |
| 44 | // unparseable body should not quit, but should return an error |
| 45 | c = NewTraceByID(0, api.HeaderAcceptJSON, nil) |
| 46 | err = c.AddResponse(&testPipelineResponse{r: &http.Response{Body: io.NopCloser(strings.NewReader("foo")), StatusCode: 200}}) |
| 47 | require.Error(t, err) |
| 48 | should = c.ShouldQuit() |
| 49 | require.False(t, should) |
| 50 | |
| 51 | // trace too large, should quit and should not return an error |
| 52 | c = NewTraceByID(1, api.HeaderAcceptJSON, nil) |
| 53 | err = c.AddResponse(toHTTPProtoResponse(t, &tempopb.TraceByIDResponse{ |
| 54 | Trace: test.MakeTrace(1, nil), |
| 55 | Metrics: &tempopb.TraceByIDMetrics{}, |
| 56 | }, 200)) |
| 57 | require.NoError(t, err) |
| 58 | should = c.ShouldQuit() |
| 59 | require.True(t, should) |
| 60 | } |
| 61 | |
| 62 | func TestTraceByIDHonorsContentType(t *testing.T) { |
| 63 | expected := test.MakeTrace(2, nil) |
nothing calls this directly
no test coverage detected