@@ -6,6 +6,7 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext
66import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities
77import datadog.trace.bootstrap.instrumentation.api.ProfilingContextIntegration
88import datadog.trace.bootstrap.instrumentation.api.ServiceNameSources
9+ import datadog.trace.bootstrap.instrumentation.api.Tags
910import datadog.trace.common.writer.ListWriter
1011import datadog.trace.core.propagation.ExtractedContext
1112import datadog.trace.core.test.DDCoreSpecification
@@ -352,4 +353,44 @@ class DDSpanContextTest extends DDCoreSpecification {
352353 }
353354 assert sourceWithoutCommonTags == comparison
354355 }
356+
357+ def " span kind ordinal constants and SPAN_KIND_VALUES array stay in sync" () {
358+ expect : " SPAN_KIND_VALUES array covers all ordinals"
359+ DDSpanContext . SPAN_KIND_VALUES . length == DDSpanContext . SPAN_KIND_CUSTOM + 1
360+
361+ and : " each known ordinal maps to the correct Tags constant"
362+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_SERVER ] == Tags . SPAN_KIND_SERVER
363+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_CLIENT ] == Tags . SPAN_KIND_CLIENT
364+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_PRODUCER ] == Tags . SPAN_KIND_PRODUCER
365+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_CONSUMER ] == Tags . SPAN_KIND_CONSUMER
366+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_INTERNAL ] == Tags . SPAN_KIND_INTERNAL
367+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_BROKER ] == Tags . SPAN_KIND_BROKER
368+
369+ and : " UNSET and CUSTOM map to null"
370+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_UNSET ] == null
371+ DDSpanContext . SPAN_KIND_VALUES [DDSpanContext . SPAN_KIND_CUSTOM ] == null
372+ }
373+
374+ def " setSpanKindOrdinal round-trips with SPAN_KIND_VALUES for all known kinds" () {
375+ when :
376+ def span = tracer. buildSpan(" test" , " test" ). start()
377+ def context = (DDSpanContext ) span. context()
378+ context. setSpanKindOrdinal(kindString)
379+
380+ then :
381+ context. getSpanKindOrdinal() == expectedOrdinal
382+ DDSpanContext . SPAN_KIND_VALUES [expectedOrdinal] == kindString
383+
384+ cleanup :
385+ span. finish()
386+
387+ where :
388+ kindString | expectedOrdinal
389+ Tags . SPAN_KIND_SERVER | DDSpanContext . SPAN_KIND_SERVER
390+ Tags . SPAN_KIND_CLIENT | DDSpanContext . SPAN_KIND_CLIENT
391+ Tags . SPAN_KIND_PRODUCER | DDSpanContext . SPAN_KIND_PRODUCER
392+ Tags . SPAN_KIND_CONSUMER | DDSpanContext . SPAN_KIND_CONSUMER
393+ Tags . SPAN_KIND_INTERNAL | DDSpanContext . SPAN_KIND_INTERNAL
394+ Tags . SPAN_KIND_BROKER | DDSpanContext . SPAN_KIND_BROKER
395+ }
355396}
0 commit comments