Skip to content

Commit

Permalink
fix zipkinv2 translation error tag handling (#2253)
Browse files Browse the repository at this point in the history
* fix zipkinv2 translation error tag handling

* use blank identifier for linting

* [zipkin]: add check for 'true' string

* add error tag test

* [zipkin] typo fix

* [zipkin]: fix tests to test error tag for zipkin
  • Loading branch information
ericmustin authored Jan 4, 2021
1 parent a3facee commit b229230
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 0 deletions.
7 changes: 7 additions & 0 deletions translator/trace/zipkin/zipkinv2_to_traces.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,13 @@ func populateSpanStatus(tags map[string]string, status pdata.SpanStatus) {
delete(tags, tracetranslator.TagStatusMsg)
}
}

if val, ok := tags[tracetranslator.TagError]; ok {
if val == "true" {
status.SetCode(pdata.StatusCodeError)
delete(tags, tracetranslator.TagError)
}
}
}

func zipkinKindToSpanKind(kind zipkinmodel.Kind, tags map[string]string) pdata.SpanKind {
Expand Down
35 changes: 35 additions & 0 deletions translator/trace/zipkin/zipkinv2_to_traces_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ func TestZipkinSpansToInternalTraces(t *testing.T) {
td: generateTraceSingleSpanMinmalResource(),
err: nil,
},
{
name: "errorTag",
zs: generateSpanErrorTags(),
td: generateTraceSingleSpanErrorStatus(),
err: nil,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
Expand Down Expand Up @@ -101,6 +107,15 @@ func generateSpanNoTags() []*zipkinmodel.SpanModel {
return spans
}

func generateSpanErrorTags() []*zipkinmodel.SpanModel {
errorTags := make(map[string]string)
errorTags["error"] = "true"

spans := generateSpanNoEndpoints()
spans[0].Tags = errorTags
return spans
}

func generateTraceSingleSpanNoResourceOrInstrLibrary() pdata.Traces {
td := pdata.NewTraces()
td.ResourceSpans().Resize(1)
Expand Down Expand Up @@ -128,3 +143,23 @@ func generateTraceSingleSpanMinmalResource() pdata.Traces {
rsc.Attributes().UpsertString(conventions.AttributeServiceName, "SoleAttr")
return td
}

func generateTraceSingleSpanErrorStatus() pdata.Traces {
td := pdata.NewTraces()
td.ResourceSpans().Resize(1)
rs := td.ResourceSpans().At(0)
rs.InstrumentationLibrarySpans().Resize(1)
ils := rs.InstrumentationLibrarySpans().At(0)
ils.Spans().Resize(1)
span := ils.Spans().At(0)
span.SetTraceID(
pdata.NewTraceID([16]byte{0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x80}))
span.SetSpanID(pdata.NewSpanID([8]byte{0xAF, 0xAE, 0xAD, 0xAC, 0xAB, 0xAA, 0xA9, 0xA8}))
span.SetName("MinimalData")
span.SetKind(pdata.SpanKindCLIENT)
span.SetStartTime(1596911098294000000)
span.SetEndTime(1596911098295000000)
span.Attributes().InitEmptyWithCapacity(0)
span.Status().SetCode(pdata.StatusCodeError)
return td
}

0 comments on commit b229230

Please sign in to comment.