(t *testing.T)
| 233 | } |
| 234 | |
| 235 | func TestLimitsPartialSuccess(t *testing.T) { |
| 236 | util.RunIntegrationTests(t, util.TestHarnessConfig{ |
| 237 | ConfigOverlay: configIngestPartialSucess, |
| 238 | }, func(h *util.TempoHarness) { |
| 239 | h.WaitTracesWritable(t) |
| 240 | // make request |
| 241 | traceIDs := make([][]byte, 6) |
| 242 | for index := range traceIDs { |
| 243 | traceID := make([]byte, 16) |
| 244 | _, err := crand.Read(traceID) |
| 245 | require.NoError(t, err) |
| 246 | traceIDs[index] = traceID |
| 247 | } |
| 248 | |
| 249 | // 3 traces with trace_too_large and 3 with no error |
| 250 | spanCountsByTrace := []int{1, 4, 1, 5, 6, 1} |
| 251 | trace := test.MakeReqWithMultipleTraceWithSpanCount(spanCountsByTrace, traceIDs) |
| 252 | |
| 253 | // send traces to tempo |
| 254 | // partial success = no error |
| 255 | require.NoError(t, h.WriteTempoProtoTraces(trace, "")) |
| 256 | |
| 257 | // wait for live store to ingest traces |
| 258 | h.WaitTracesQueryable(t, 3) // only 3 traces are small enough to be ingested |
| 259 | |
| 260 | // query for the traces that didn't trigger an error |
| 261 | apiClient := h.APIClientHTTP("") |
| 262 | for i, count := range spanCountsByTrace { |
| 263 | if count == 1 { |
| 264 | result, err := apiClient.QueryTrace(tempoUtil.TraceIDToHexString(traceIDs[i])) |
| 265 | require.NoError(t, err) |
| 266 | assert.Equal(t, 1, len(result.ResourceSpans)) |
| 267 | } |
| 268 | } |
| 269 | |
| 270 | // test metrics |
| 271 | // 3 traces with trace_too_large each with 4+5+6 spans |
| 272 | liveStore := h.Services[util.ServiceLiveStoreZoneA] |
| 273 | err := liveStore.WaitSumMetricsWithOptions(e2e.Equals(15), |
| 274 | []string{"tempo_discarded_spans_total"}, |
| 275 | e2e.WithLabelMatchers(labels.MustNewMatcher(labels.MatchEqual, "reason", "trace_too_large")), |
| 276 | e2e.WaitMissingMetrics, |
| 277 | ) |
| 278 | require.NoError(t, err) |
| 279 | }) |
| 280 | } |
| 281 | |
| 282 | func TestQueryRateLimits(t *testing.T) { |
| 283 | util.RunIntegrationTests(t, util.TestHarnessConfig{ |
nothing calls this directly
no test coverage detected