Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: default tracer prototype #425

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions api/lib/opentelemetry.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,13 @@ def tracer_provider
@tracer_provider ||= Trace::TracerProvider.new
end

# @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 an unnamed default tracer.
def tracer(name = nil, version = nil)
tracer_provider.tracer(name, version)
end

# @return [Object, Metrics::MeterProvider] registered meter provider or a
# default no-op implementation of the meter provider.
def meter_provider
Expand Down
39 changes: 39 additions & 0 deletions api/test/opentelemetry_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,45 @@
end
end

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

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

describe 'default tracer' do
it 'returns the same instance when accessed multiple times' do
_(OpenTelemetry.tracer).must_equal(OpenTelemetry.tracer)
end
end

describe 'delegation' do
before do
OpenTelemetry.tracer_provider = mock_provider
end

it 'delegates to tracer provider' do
mock_provider.expect(:tracer, Object.new, [nil, nil])
_ = OpenTelemetry.tracer
mock_provider.verify
end

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
end

describe '.logger' do
it 'should log things' do
t = Tempfile.new('logger')
Expand Down