Skip to content

Commit 9f75323

Browse files
authored
ddtrace/tracer: add Measured StartSpanOption (#591)
1 parent d3fed00 commit 9f75323

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

Diff for: ddtrace/tracer/option.go

+5
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,11 @@ func SpanType(name string) StartSpanOption {
315315
return Tag(ext.SpanType, name)
316316
}
317317

318+
// Measured marks this span to be measured for metrics and stats calculations.
319+
func Measured() StartSpanOption {
320+
return Tag(keyMeasured, 1)
321+
}
322+
318323
// WithSpanID sets the SpanID on the started span, instead of using a random number.
319324
// If there is no parent Span (eg from ChildOf), then the TraceID will also be set to the
320325
// value given here.

Diff for: ddtrace/tracer/span.go

+1
Original file line numberDiff line numberDiff line change
@@ -344,4 +344,5 @@ const (
344344
keyHostname = "_dd.hostname"
345345
keyRulesSamplerAppliedRate = "_dd.rule_psr"
346346
keyRulesSamplerLimiterRate = "_dd.limit_psr"
347+
keyMeasured = "_dd.measured"
347348
)

Diff for: ddtrace/tracer/tracer_test.go

+11
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,9 @@ func TestTracerStartSpan(t *testing.T) {
187187
ext.PriorityAutoReject,
188188
ext.PriorityAutoKeep,
189189
}, span.Metrics[keySamplingPriority])
190+
// A span is not measured unless made so specifically
191+
_, ok := span.Meta[keyMeasured]
192+
assert.False(ok)
190193
})
191194

192195
t.Run("priority", func(t *testing.T) {
@@ -201,6 +204,12 @@ func TestTracerStartSpan(t *testing.T) {
201204
assert.Equal(t, "db.query", span.Name)
202205
assert.Equal(t, "/home/user", span.Resource)
203206
})
207+
208+
t.Run("measured", func(t *testing.T) {
209+
tracer := newTracer()
210+
span := tracer.StartSpan("/home/user", Measured()).(*span)
211+
assert.Equal(t, 1.0, span.Metrics[keyMeasured])
212+
})
204213
}
205214

206215
func TestTracerRuntimeMetrics(t *testing.T) {
@@ -243,6 +252,7 @@ func TestTracerStartSpanOptions(t *testing.T) {
243252
ResourceName("test.resource"),
244253
StartTime(now),
245254
WithSpanID(420),
255+
Measured(),
246256
}
247257
span := tracer.StartSpan("web.request", opts...).(*span)
248258
assert := assert.New(t)
@@ -252,6 +262,7 @@ func TestTracerStartSpanOptions(t *testing.T) {
252262
assert.Equal(now.UnixNano(), span.Start)
253263
assert.Equal(uint64(420), span.SpanID)
254264
assert.Equal(uint64(420), span.TraceID)
265+
assert.Equal(1.0, span.Metrics[keyMeasured])
255266
}
256267

257268
func TestTracerStartChildSpan(t *testing.T) {

0 commit comments

Comments
 (0)