MCPcopy
hub / github.com/grafana/tempo / validateTraceRetrieval

Method validateTraceRetrieval

cmd/tempo-vulture/validation.go:288–319  ·  view source on GitHub ↗
(
	ctx context.Context,
	trace *util.TraceInfo,
	httpClient httpclient.TempoHTTPClient,
)

Source from the content-addressed store, hash-verified

286}
287
288func (vs *ValidationService) validateTraceRetrieval(
289 ctx context.Context,
290 trace *util.TraceInfo,
291 httpClient httpclient.TempoHTTPClient,
292) error {
293 start := trace.Timestamp().Add(-10 * time.Minute).Unix()
294 end := trace.Timestamp().Add(10 * time.Minute).Unix()
295
296 retrievedTrace, err := httpClient.QueryTraceWithRange(ctx, trace.HexID(), start, end)
297 if err != nil {
298 return fmt.Errorf("failed to read trace: %w", err)
299 }
300
301 if len(retrievedTrace.ResourceSpans) == 0 {
302 return fmt.Errorf("retrieved trace has no spans")
303 }
304
305 retrievedTraceID := extractTraceID(retrievedTrace)
306
307 equal, err := util.EqualHexStringTraceIDs(trace.HexID(), retrievedTraceID)
308 if err != nil {
309 return fmt.Errorf("error comparing trace IDs: %w", err)
310 }
311
312 if !equal {
313 return fmt.Errorf("trace IDs do not match")
314 }
315
316 vs.logger.Info("Retrieved trace", zap.String("traceID", retrievedTraceID))
317
318 return nil
319}
320
321func (vs *ValidationService) validateTraceSearch(
322 _ context.Context,

Callers 2

RunValidationMethod · 0.95

Calls 7

EqualHexStringTraceIDsFunction · 0.92
extractTraceIDFunction · 0.85
TimestampMethod · 0.80
HexIDMethod · 0.80
AddMethod · 0.65
QueryTraceWithRangeMethod · 0.65
StringMethod · 0.45

Tested by 1