Skip to content

Commit

Permalink
feat: add OpenTelemetry.tracer convenience method
Browse files Browse the repository at this point in the history
  • Loading branch information
mwear committed Oct 2, 2020
1 parent 1f789da commit acc30b2
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 17 deletions.
10 changes: 5 additions & 5 deletions api/lib/opentelemetry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ def tracer_provider
@tracer_provider ||= Trace::TracerProvider.new
end

# @return [Trace::Tracer] returns a default tracer instance from the
# registered tracer provider. If the tracer provider is operational, this
# will be a named tracer with the name 'default'.
def default_tracer
tracer_provider.tracer('default')
# @return [Trace::Tracer] delegates to the registered tracer provider and
# returns a tracer with the given name and version. If called without without
# arguments, it returns a tracer named 'default'.
def tracer(name = 'default', version = nil)
tracer_provider.tracer(name, version)
end

# @return [Object, Metrics::MeterProvider] registered meter provider or a
Expand Down
27 changes: 21 additions & 6 deletions api/test/opentelemetry_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,19 +30,34 @@
end
end

describe '.default_tracer' do
describe '.tracer' do
let(:mock_provider) { MiniTest::Mock.new }

before do
OpenTelemetry.tracer_provider = mock_provider
end

after do
# Ensure we don't leak custom tracer factories and tracers to other tests
OpenTelemetry.tracer_provider = nil
end

it 'returns instance of Trace::Tracer' do
default_tracer = OpenTelemetry.default_tracer
_(default_tracer).must_be_instance_of(OpenTelemetry::Trace::Tracer)
it 'delegates to tracer provider with default name' do
mock_provider.expect(:tracer, Object.new, ['default', nil])
_ = OpenTelemetry.tracer
mock_provider.verify
end

it 'returns the same instance when accessed multiple times' do
_(OpenTelemetry.default_tracer).must_equal(OpenTelemetry.default_tracer)
it 'delegates to tracer provider with provided name' do
mock_provider.expect(:tracer, Object.new, ['foo', nil])
_ = OpenTelemetry.tracer('foo')
mock_provider.verify
end

it 'delegates to tracer provider with provided name and version' do
mock_provider.expect(:tracer, Object.new, ['foo', '0.4.0'])
_ = OpenTelemetry.tracer('foo', '0.4.0')
mock_provider.verify
end
end

Expand Down
6 changes: 0 additions & 6 deletions sdk/test/integration/api_trace_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,10 +106,4 @@
_(@child_span_with_links.to_span_data.links.size).must_equal number_of_links
end
end

describe 'default tracer' do
it 'returns tracer named default' do
_(OpenTelemetry.default_tracer.name).must_equal('default')
end
end
end

0 comments on commit acc30b2

Please sign in to comment.