1
0
mirror of https://github.com/open-telemetry/opentelemetry-go.git synced 2025-07-17 01:12:45 +02:00

change TraceOptions to TraceFlags. (#144)

* change TraceOptions to TraceFlags.

* fix grammer in docs.
This commit is contained in:
rghetia
2019-09-25 14:37:36 -07:00
committed by GitHub
parent a853377a2f
commit e86b95c440
11 changed files with 91 additions and 91 deletions

View File

@ -24,19 +24,19 @@ type TraceID struct {
} }
const ( const (
traceOptionBitMaskSampled = byte(0x01) traceFlagsBitMaskSampled = byte(0x01)
traceOptionBitMaskUnused = byte(0xFE) traceFlagsBitMaskUnused = byte(0xFE)
// TraceOptionSampled is a byte with sampled bit set. It is a convenient value initialize // TraceFlagsSampled is a byte with sampled bit set. It is a convenient value initializer
// SpanContext when a trace is sampled. // for SpanContext TraceFlags field when a trace is sampled.
TraceOptionSampled = traceOptionBitMaskSampled TraceFlagsSampled = traceFlagsBitMaskSampled
TraceOptionUnused = traceOptionBitMaskUnused TraceFlagsUnused = traceFlagsBitMaskUnused
) )
type SpanContext struct { type SpanContext struct {
TraceID TraceID TraceID TraceID
SpanID uint64 SpanID uint64
TraceOptions byte TraceFlags byte
} }
// EmptySpanContext is meant for internal use to return invalid span context during error conditions. // EmptySpanContext is meant for internal use to return invalid span context during error conditions.
@ -67,5 +67,5 @@ func (sc SpanContext) TraceIDString() string {
} }
func (sc SpanContext) IsSampled() bool { func (sc SpanContext) IsSampled() bool {
return sc.TraceOptions&traceOptionBitMaskSampled == traceOptionBitMaskSampled return sc.TraceFlags&traceFlagsBitMaskSampled == traceFlagsBitMaskSampled
} }

View File

@ -193,7 +193,7 @@ func TestSpanContextIsSampled(t *testing.T) {
High: uint64(42), High: uint64(42),
Low: uint64(42), Low: uint64(42),
}, },
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
want: true, want: true,
}, { }, {
@ -203,7 +203,7 @@ func TestSpanContextIsSampled(t *testing.T) {
High: uint64(42), High: uint64(42),
Low: uint64(42), Low: uint64(42),
}, },
TraceOptions: core.TraceOptionSampled | core.TraceOptionUnused, TraceFlags: core.TraceFlagsSampled | core.TraceFlagsUnused,
}, },
want: true, want: true,
}, { }, {

View File

@ -491,7 +491,7 @@ func otSpanReferenceTypeToOtelRelationshipType(srt ot.SpanReferenceType) oteltra
var ( var (
traceIDHeader = http.CanonicalHeaderKey("x-otelbridge-trace-id") traceIDHeader = http.CanonicalHeaderKey("x-otelbridge-trace-id")
spanIDHeader = http.CanonicalHeaderKey("x-otelbridge-span-id") spanIDHeader = http.CanonicalHeaderKey("x-otelbridge-span-id")
traceOptionsHeader = http.CanonicalHeaderKey("x-otelbridge-trace-options") traceFlagsHeader = http.CanonicalHeaderKey("x-otelbridge-trace-flags")
baggageHeaderPrefix = http.CanonicalHeaderKey("x-otelbridge-baggage-") baggageHeaderPrefix = http.CanonicalHeaderKey("x-otelbridge-baggage-")
) )
@ -516,7 +516,7 @@ func (t *BridgeTracer) Inject(sm ot.SpanContext, format interface{}, carrier int
} }
hhcarrier.Set(traceIDHeader, traceIDString(bridgeSC.otelSpanContext.TraceID)) hhcarrier.Set(traceIDHeader, traceIDString(bridgeSC.otelSpanContext.TraceID))
hhcarrier.Set(spanIDHeader, spanIDToString(bridgeSC.otelSpanContext.SpanID)) hhcarrier.Set(spanIDHeader, spanIDToString(bridgeSC.otelSpanContext.SpanID))
hhcarrier.Set(traceOptionsHeader, traceOptionsToString(bridgeSC.otelSpanContext.TraceOptions)) hhcarrier.Set(traceFlagsHeader, traceFlagsToString(bridgeSC.otelSpanContext.TraceFlags))
bridgeSC.ForeachBaggageItem(func(k, v string) bool { bridgeSC.ForeachBaggageItem(func(k, v string) bool {
// we assume that keys are already canonicalized // we assume that keys are already canonicalized
hhcarrier.Set(baggageHeaderPrefix+k, v) hhcarrier.Set(baggageHeaderPrefix+k, v)
@ -535,9 +535,9 @@ func spanIDToString(spanID uint64) string {
return fmt.Sprintf("%.16x", spanID) return fmt.Sprintf("%.16x", spanID)
} }
func traceOptionsToString(opts byte) string { func traceFlagsToString(opts byte) string {
var parts []string var parts []string
if opts&otelcore.TraceOptionSampled == otelcore.TraceOptionSampled { if opts&otelcore.TraceFlagsSampled == otelcore.TraceFlagsSampled {
parts = append(parts, "sampled") parts = append(parts, "sampled")
} }
return strings.Join(parts, ",") return strings.Join(parts, ",")
@ -571,8 +571,8 @@ func (t *BridgeTracer) Extract(format interface{}, carrier interface{}) (ot.Span
return err return err
} }
bridgeSC.otelSpanContext.SpanID = spanID bridgeSC.otelSpanContext.SpanID = spanID
case traceOptionsHeader: case traceFlagsHeader:
bridgeSC.otelSpanContext.TraceOptions = stringToTraceOptions(v) bridgeSC.otelSpanContext.TraceFlags = stringToTraceFlags(v)
default: default:
if strings.HasPrefix(ck, baggageHeaderPrefix) { if strings.HasPrefix(ck, baggageHeaderPrefix) {
bk := strings.TrimPrefix(ck, baggageHeaderPrefix) bk := strings.TrimPrefix(ck, baggageHeaderPrefix)
@ -614,12 +614,12 @@ func spanIDFromString(s string) (uint64, error) {
return strconv.ParseUint(s, 16, 64) return strconv.ParseUint(s, 16, 64)
} }
func stringToTraceOptions(s string) byte { func stringToTraceFlags(s string) byte {
var opts byte var opts byte
for _, part := range strings.Split(s, ",") { for _, part := range strings.Split(s, ",") {
switch part { switch part {
case "sampled": case "sampled":
opts |= otelcore.TraceOptionSampled opts |= otelcore.TraceFlagsSampled
} }
} }
return opts return opts

View File

@ -100,7 +100,7 @@ func (t *MockTracer) Start(ctx context.Context, name string, opts ...oteltrace.S
spanContext := otelcore.SpanContext{ spanContext := otelcore.SpanContext{
TraceID: t.getTraceID(ctx, &spanOpts), TraceID: t.getTraceID(ctx, &spanOpts),
SpanID: t.getSpanID(), SpanID: t.getSpanID(),
TraceOptions: 0, TraceFlags: 0,
} }
span := &MockSpan{ span := &MockSpan{
mockTracer: t, mockTracer: t,

View File

@ -211,7 +211,7 @@ func spanDataToThrift(data *trace.SpanData) *gen.Span {
SpanId: int64(data.SpanContext.SpanID), SpanId: int64(data.SpanContext.SpanID),
ParentSpanId: int64(data.ParentSpanID), ParentSpanId: int64(data.ParentSpanID),
OperationName: data.Name, // TODO: if span kind is added then add prefix "Sent"/"Recv" OperationName: data.Name, // TODO: if span kind is added then add prefix "Sent"/"Recv"
Flags: int32(data.SpanContext.TraceOptions), Flags: int32(data.SpanContext.TraceFlags),
StartTime: data.StartTime.UnixNano() / 1000, StartTime: data.StartTime.UnixNano() / 1000,
Duration: data.EndTime.Sub(data.StartTime).Nanoseconds() / 1000, Duration: data.EndTime.Sub(data.StartTime).Nanoseconds() / 1000,
Tags: tags, Tags: tags,

View File

@ -76,7 +76,7 @@ func (mt *MockTracer) Start(ctx context.Context, name string, o ...apitrace.Span
}, },
} }
if mt.Sampled { if mt.Sampled {
sc.TraceOptions = core.TraceOptionSampled sc.TraceFlags = core.TraceFlagsSampled
} }
} else { } else {
sc = opts.Reference.SpanContext sc = opts.Reference.SpanContext

View File

@ -47,7 +47,7 @@ func (hp httpTraceContextPropagator) Inject(ctx context.Context, supplier apipro
sc.TraceID.High, sc.TraceID.High,
sc.TraceID.Low, sc.TraceID.Low,
sc.SpanID, sc.SpanID,
sc.TraceOptions&core.TraceOptionSampled) sc.TraceFlags&core.TraceFlagsSampled)
supplier.Set(traceparentHeader, h) supplier.Set(traceparentHeader, h)
} }
} }
@ -118,7 +118,7 @@ func (hp httpTraceContextPropagator) Extract(ctx context.Context, supplier apipr
if err != nil || len(opts) < 1 || (version == 0 && opts[0] > 2) { if err != nil || len(opts) < 1 || (version == 0 && opts[0] > 2) {
return core.EmptySpanContext() return core.EmptySpanContext()
} }
sc.TraceOptions = opts[0] &^ core.TraceOptionUnused sc.TraceFlags = opts[0] &^ core.TraceFlagsUnused
if !sc.IsValid() { if !sc.IsValid() {
return core.EmptySpanContext() return core.EmptySpanContext()

View File

@ -55,7 +55,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
{ {
@ -64,7 +64,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
{ {
@ -73,7 +73,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
{ {
@ -90,7 +90,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
{ {
@ -99,7 +99,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
{ {
@ -108,7 +108,7 @@ func TestExtractValidTraceContextFromHTTPReq(t *testing.T) {
wantSc: core.SpanContext{ wantSc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
}, },
} }
@ -232,7 +232,7 @@ func TestInjectTraceContextToHTTPReq(t *testing.T) {
sc: core.SpanContext{ sc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: core.TraceOptionSampled, TraceFlags: core.TraceFlagsSampled,
}, },
wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000001-01", wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000001-01",
}, },
@ -245,11 +245,11 @@ func TestInjectTraceContextToHTTPReq(t *testing.T) {
wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000002-00", wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000002-00",
}, },
{ {
name: "valid spancontext, with unsupported bit set in traceoption", name: "valid spancontext, with unsupported bit set in traceflags",
sc: core.SpanContext{ sc: core.SpanContext{
TraceID: traceID, TraceID: traceID,
SpanID: spanID, SpanID: spanID,
TraceOptions: 0xff, TraceFlags: 0xff,
}, },
wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000003-01", wantHeader: "00-4bf92f3577b34da6a3ce929d0e0e4736-0000000000000003-01",
}, },

View File

@ -64,7 +64,7 @@ func TestSimpleSpanProcessorOnEnd(t *testing.T) {
sc := core.SpanContext{ sc := core.SpanContext{
TraceID: tid, TraceID: tid,
SpanID: sid, SpanID: sid,
TraceOptions: 0x1, TraceFlags: 0x1,
} }
_, span := apitrace.GlobalTracer().Start(context.Background(), "OnEnd", apitrace.ChildOf(sc)) _, span := apitrace.GlobalTracer().Start(context.Background(), "OnEnd", apitrace.ChildOf(sc))
span.Finish() span.Finish()

View File

@ -374,7 +374,7 @@ func makeSamplingDecision(data samplingData) {
if data.noParent || data.remoteParent { if data.noParent || data.remoteParent {
// If this span is the child of a local span and no // If this span is the child of a local span and no
// Sampler is set in the options, keep the parent's // Sampler is set in the options, keep the parent's
// TraceOptions. // TraceFlags.
// //
// Otherwise, consult the Sampler in the options if it // Otherwise, consult the Sampler in the options if it
// is non-nil, otherwise the default sampler. // is non-nil, otherwise the default sampler.
@ -390,9 +390,9 @@ func makeSamplingDecision(data samplingData) {
Name: data.name, Name: data.name,
HasRemoteParent: data.remoteParent}).Sample HasRemoteParent: data.remoteParent}).Sample
if sampled { if sampled {
spanContext.TraceOptions |= core.TraceOptionSampled spanContext.TraceFlags |= core.TraceFlagsSampled
} else { } else {
spanContext.TraceOptions &^= core.TraceOptionSampled spanContext.TraceFlags &^= core.TraceFlagsSampled
} }
} }
} }

View File

@ -136,7 +136,7 @@ func TestStartSpanWithChildOf(t *testing.T) {
sc1 := core.SpanContext{ sc1 := core.SpanContext{
TraceID: tid, TraceID: tid,
SpanID: sid, SpanID: sid,
TraceOptions: 0x0, TraceFlags: 0x0,
} }
_, s1 := apitrace.GlobalTracer().Start(context.Background(), "span1-unsampled-parent1", apitrace.ChildOf(sc1)) _, s1 := apitrace.GlobalTracer().Start(context.Background(), "span1-unsampled-parent1", apitrace.ChildOf(sc1))
if err := checkChild(sc1, s1); err != nil { if err := checkChild(sc1, s1); err != nil {
@ -151,7 +151,7 @@ func TestStartSpanWithChildOf(t *testing.T) {
sc2 := core.SpanContext{ sc2 := core.SpanContext{
TraceID: tid, TraceID: tid,
SpanID: sid, SpanID: sid,
TraceOptions: 0x1, TraceFlags: 0x1,
//Tracestate: testTracestate, //Tracestate: testTracestate,
} }
_, s3 := apitrace.GlobalTracer().Start(context.Background(), "span3-sampled-parent2", apitrace.ChildOf(sc2)) _, s3 := apitrace.GlobalTracer().Start(context.Background(), "span3-sampled-parent2", apitrace.ChildOf(sc2))
@ -184,7 +184,7 @@ func TestSetSpanAttributes(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -216,7 +216,7 @@ func TestSetSpanAttributesOverLimit(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -263,7 +263,7 @@ func TestEvents(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -310,7 +310,7 @@ func TestEventsOverLimit(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -347,7 +347,7 @@ func TestAddLinks(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -384,7 +384,7 @@ func TestLinks(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -422,7 +422,7 @@ func TestLinksOverLimit(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -444,7 +444,7 @@ func TestSetSpanName(t *testing.T) {
apitrace.ChildOf(core.SpanContext{ apitrace.ChildOf(core.SpanContext{
TraceID: tid, TraceID: tid,
SpanID: sid, SpanID: sid,
TraceOptions: 1, TraceFlags: 1,
}), }),
) )
got, err := endSpan(span) got, err := endSpan(span)
@ -468,7 +468,7 @@ func TestSetSpanStatus(t *testing.T) {
want := &SpanData{ want := &SpanData{
SpanContext: core.SpanContext{ SpanContext: core.SpanContext{
TraceID: tid, TraceID: tid,
TraceOptions: 0x1, TraceFlags: 0x1,
}, },
ParentSpanID: sid, ParentSpanID: sid,
Name: "span0", Name: "span0",
@ -496,7 +496,7 @@ func remoteSpanContext() core.SpanContext {
return core.SpanContext{ return core.SpanContext{
TraceID: tid, TraceID: tid,
SpanID: sid, SpanID: sid,
TraceOptions: 1, TraceFlags: 1,
} }
} }
@ -513,7 +513,7 @@ func checkChild(p core.SpanContext, apiSpan apitrace.Span) error {
if childID, parentID := s.spanContext.SpanIDString(), p.SpanIDString(); childID == parentID { if childID, parentID := s.spanContext.SpanIDString(), p.SpanIDString(); childID == parentID {
return fmt.Errorf("got child span ID %s, parent span ID %s; want unequal IDs", childID, parentID) return fmt.Errorf("got child span ID %s, parent span ID %s; want unequal IDs", childID, parentID)
} }
if got, want := s.spanContext.TraceOptions, p.TraceOptions; got != want { if got, want := s.spanContext.TraceFlags, p.TraceFlags; got != want {
return fmt.Errorf("got child trace options %d, want %d", got, want) return fmt.Errorf("got child trace options %d, want %d", got, want)
} }
// TODO [rgheita] : Fix tracestate test // TODO [rgheita] : Fix tracestate test
@ -531,7 +531,7 @@ func startSpan() apitrace.Span {
// startNamed Span is a test utility func that starts a span with a // startNamed Span is a test utility func that starts a span with a
// passed name and with ChildOf option. remote span context contains // passed name and with ChildOf option. remote span context contains
// traceoption with sampled bit set. This allows the span to be // TraceFlags with sampled bit set. This allows the span to be
// automatically sampled. // automatically sampled.
func startNamedSpan(name string) apitrace.Span { func startNamedSpan(name string) apitrace.Span {
_, span := apitrace.GlobalTracer().Start( _, span := apitrace.GlobalTracer().Start(
@ -697,7 +697,7 @@ func TestExecutionTracerTaskEnd(t *testing.T) {
core.SpanContext{ core.SpanContext{
TraceID: core.TraceID{High: 0x0102030405060708, Low: 0x090a0b0c0d0e0f}, TraceID: core.TraceID{High: 0x0102030405060708, Low: 0x090a0b0c0d0e0f},
SpanID: uint64(0x0001020304050607), SpanID: uint64(0x0001020304050607),
TraceOptions: 0, TraceFlags: 0,
}, },
), ),
) )