Skip to content

Commit

Permalink
[dual sampling] make sure priorities -1 and 2 are handled
Browse files Browse the repository at this point in the history
  • Loading branch information
ufoot committed Dec 26, 2017
1 parent 44a13e0 commit b3d4afe
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 34 deletions.
4 changes: 1 addition & 3 deletions tracer/span.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,9 +319,7 @@ func (s *Span) Tracer() *Tracer {
// Default is 0, any higher value is interpreted as a hint on
// how interesting this span is, and should be kept by the backend.
func (s *Span) SetSamplingPriority(priority int) {
if priority >= 0 {
s.SetMetric(samplingPriorityKey, float64(priority))
}
s.SetMetric(samplingPriorityKey, float64(priority))
}

// HasSamplingPriority returns true if sampling priority is set.
Expand Down
40 changes: 9 additions & 31 deletions tracer/span_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -265,37 +265,15 @@ func TestSpanSamplingPriority(t *testing.T) {
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())

span.SetSamplingPriority(0)
assert.Equal(0.0, span.Metrics["_sampling_priority_v1"], "key has been deleted")
assert.Equal(0, span.GetSamplingPriority(), "by default, sampling priority is 0")
childSpan = tracer.NewChildSpan("my.child", span)
assert.Equal(span.Metrics["_sampling_priority_v1"], childSpan.Metrics["_sampling_priority_v1"])
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())

span.SetSamplingPriority(-1)
assert.Equal(0.0, span.Metrics["_sampling_priority_v1"], "key has been deleted")
assert.Equal(0, span.GetSamplingPriority(), "by default, sampling priority can't be negative")
childSpan = tracer.NewChildSpan("my.child", span)
assert.Equal(span.Metrics["_sampling_priority_v1"], childSpan.Metrics["_sampling_priority_v1"])
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())

span.SetSamplingPriority(1)
assert.Equal(1.0, span.Metrics["_sampling_priority_v1"], "sampling priority is now 1")
assert.Equal(1, span.GetSamplingPriority(), "sampling priority is now 1")
childSpan = tracer.NewChildSpan("my.child", span)
assert.Equal(span.Metrics["_sampling_priority_v1"], childSpan.Metrics["_sampling_priority_v1"])
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())

span.SetSamplingPriority(42)
assert.Equal(42.0, span.Metrics["_sampling_priority_v1"], "sampling priority works for values above 1")
assert.Equal(42, span.GetSamplingPriority(), "sampling priority works for values above 1")
childSpan = tracer.NewChildSpan("my.child", span)
assert.Equal(span.Metrics["_sampling_priority_v1"], childSpan.Metrics["_sampling_priority_v1"])
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())
for _, priority := range []int{-1, 0, 1, 2, 999} {
span.SetSamplingPriority(priority)
assert.True(span.HasSamplingPriority())
assert.Equal(priority, span.GetSamplingPriority())
childSpan = tracer.NewChildSpan("my.child", span)
assert.Equal(span.Metrics["_sampling_priority_v1"], childSpan.Metrics["_sampling_priority_v1"])
assert.Equal(span.HasSamplingPriority(), childSpan.HasSamplingPriority())
assert.Equal(span.GetSamplingPriority(), childSpan.GetSamplingPriority())
}
}

type boomError struct{}
Expand Down

0 comments on commit b3d4afe

Please sign in to comment.