@@ -447,25 +447,51 @@ func TestGetTraceBadTimeWindow(t *testing.T) {
447447}
448448
449449func TestGetTraceWithRawTracesParameter (t * testing.T ) {
450- // TODO: extend the test cases to ensure raw traces are obtained
451- // when the flag is set once the differentiating logic has been implemented
450+ // Create a trace with a duplicate span (span1 and span3 share SpanID=1).
451+ // When raw=false, the standard adjusters deduplicate spans, returning 2.
452+ // When raw=true, no adjusters run, so all 3 spans are returned as-is.
453+ makeMockTraceWithDupe := func () ptrace.Traces {
454+ trace := ptrace .NewTraces ()
455+ resources := trace .ResourceSpans ().AppendEmpty ()
456+ resources .Resource ().Attributes ().PutStr ("service.name" , "service" )
457+ scopes := resources .ScopeSpans ().AppendEmpty ()
458+
459+ span1 := scopes .Spans ().AppendEmpty ()
460+ span1 .SetTraceID (v1adapter .FromV1TraceID (mockTraceID ))
461+ span1 .SetSpanID (v1adapter .FromV1SpanID (model .NewSpanID (1 )))
462+
463+ span2 := scopes .Spans ().AppendEmpty ()
464+ span2 .SetTraceID (v1adapter .FromV1TraceID (mockTraceID ))
465+ span2 .SetSpanID (v1adapter .FromV1SpanID (model .NewSpanID (2 )))
466+
467+ span3 := scopes .Spans ().AppendEmpty ()
468+ span3 .SetTraceID (v1adapter .FromV1TraceID (mockTraceID ))
469+ span3 .SetSpanID (v1adapter .FromV1SpanID (model .NewSpanID (1 )))
470+
471+ return trace
472+ }
473+
452474 tests := []struct {
453- rawTraces bool
475+ rawTraces bool
476+ expectedNumSpans int
454477 }{
455- {rawTraces : true },
456- {rawTraces : false },
478+ {rawTraces : true , expectedNumSpans : 3 },
479+ {rawTraces : false , expectedNumSpans : 2 },
457480 }
458481 for _ , test := range tests {
459482 t .Run (fmt .Sprintf ("rawTraces=%v" , test .rawTraces ), func (t * testing.T ) {
460483 ts := initializeTestServer (t )
461484 ts .traceReader .On ("GetTraces" , mock .Anything , mock .MatchedBy (func (params []tracestore.GetTraceParams ) bool {
462485 return len (params ) == 1 && params [0 ].TraceID == v1adapter .FromV1TraceID (mockTraceID )
463- })).Return (tracesIter (makeMockPTrace ())).Once ()
486+ })).Return (tracesIter (makeMockTraceWithDupe ())).Once ()
464487
465488 var response structuredResponse
466489 err := getJSON (fmt .Sprintf ("%s/api/traces/%s?raw=%v" , ts .server .URL , mockTraceID .String (), test .rawTraces ), & response )
467490 require .NoError (t , err )
468491 assert .Empty (t , response .Errors )
492+
493+ traces := extractTraces (t , & response )
494+ assert .Len (t , traces [0 ].Spans , test .expectedNumSpans )
469495 })
470496 }
471497}
0 commit comments