From 10a7d7b89292616354aad47041e62aeaef277e2c Mon Sep 17 00:00:00 2001 From: Yuri Shkuro Date: Tue, 28 Jun 2016 12:52:03 -0400 Subject: [PATCH] Implement ForeachBaggageItem (#15) --- glide.lock | 2 +- span.go | 8 ++++++++ span_test.go | 21 +++++++++++++++++++++ tracer_test.go | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 span_test.go diff --git a/glide.lock b/glide.lock index b190a511..a6d7cfd5 100644 --- a/glide.lock +++ b/glide.lock @@ -6,7 +6,7 @@ imports: subpackages: - lib/go/thrift - name: github.com/opentracing/opentracing-go - version: 01498abd158dfdbe8e251856bc7d14cb0f046fa3 + version: b228439c64c2c323dec3ebd9d445f168d4fae60c subpackages: - ext - name: github.com/stretchr/testify diff --git a/span.go b/span.go index ed20f6f9..0c86cb6f 100644 --- a/span.go +++ b/span.go @@ -172,6 +172,14 @@ func (s *span) BaggageItem(key string) string { return s.baggage[key] } +func (s *span) ForeachBaggageItem(handler func(k, v string)) { + s.RLock() + defer s.RUnlock() + for k, v := range s.baggage { + handler(k, v) + } +} + func (s *span) Tracer() opentracing.Tracer { return s.tracer } diff --git a/span_test.go b/span_test.go new file mode 100644 index 00000000..05681f69 --- /dev/null +++ b/span_test.go @@ -0,0 +1,21 @@ +package jaeger + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestBaggageIterator(t *testing.T) { + tracer, closer := NewTracer("DOOP", NewConstSampler(true), NewNullReporter()) + defer closer.Close() + + sp1 := tracer.StartSpan("s1").(*span) + sp1.SetBaggageItem("Some_Key", "12345") + sp1.SetBaggageItem("Some-other-key", "42") + + b := make(map[string]string) + sp1.ForeachBaggageItem(func(k, v string) { + b[k] = v + }) + assert.Equal(t, map[string]string{"some-key": "12345", "some-other-key": "42"}, b) +} diff --git a/tracer_test.go b/tracer_test.go index b81cc56b..2f1d19b0 100644 --- a/tracer_test.go +++ b/tracer_test.go @@ -78,7 +78,7 @@ func (s *tracerSuite) TestBeginRootSpan() { ss := sp.(*span) s.NotNil(ss.tracer, "Tracer must be referenced from span") s.Equal("get_name", ss.operationName) - s.Equal("s", ss.spanKind, "Span must be server-side") + s.Equal("server", ss.spanKind, "Span must be server-side") s.Equal("peer-service", ss.peer.ServiceName, "Client is 'peer-service'") s.EqualValues(someID, ss.traceID)