Skip to content

Commit

Permalink
Fix gRPC custom handler test
Browse files Browse the repository at this point in the history
  • Loading branch information
marcotc committed Jul 22, 2021
1 parent b767b6a commit 1914b0c
Showing 1 changed file with 44 additions and 20 deletions.
64 changes: 44 additions & 20 deletions spec/ddtrace/contrib/grpc/datadog_interceptor/server_spec.rb
Expand Up @@ -24,12 +24,12 @@
end

shared_examples 'span data contents' do
specify { expect(span.name).to eq 'grpc.service' }
specify { expect(span.span_type).to eq 'web' }
specify { expect(span.service).to eq 'rspec' }
specify { expect(span.resource).to eq 'my.server.endpoint' }
specify { expect(span.get_tag('error.stack')).to be_nil }
specify { expect(span.get_tag(:some)).to eq 'datum' }
it { expect(span.name).to eq 'grpc.service' }
it { expect(span.span_type).to eq 'web' }
it { expect(span.service).to eq 'rspec' }
it { expect(span.resource).to eq 'my.server.endpoint' }
it { expect(span.get_tag('error.stack')).to be_nil }
it { expect(span.get_tag(:some)).to eq 'datum' }

it_behaves_like 'analytics for integration' do
let(:analytics_enabled_var) { Datadog::Contrib::GRPC::Ext::ENV_ANALYTICS_ENABLED }
Expand All @@ -48,11 +48,46 @@
method: instance_double(Method, owner: 'My::Server', name: 'endpoint') }
end

before do
subject.request_response(**keywords) {}
it_behaves_like 'span data contents' do
before do
subject.request_response(**keywords) {}
end
end

it_behaves_like 'span data contents'
context 'with an error' do
subject(:request_response) do
server.request_response(**keywords) { raise error_class, 'test error' }
end

let(:error_class) { stub_const('TestError', Class.new(StandardError)) }

context 'without an error handler' do
it do
expect { request_response }.to raise_error('test error')

expect(span).to have_error
expect(span).to have_error_message('test error')
expect(span).to have_error_type('TestError')
expect(span).to have_error_stack(include('server_spec.rb'))
end
end

context 'with an error handler' do
let(:configuration_options) { { service_name: 'rspec', error_handler: error_handler } }
let(:error_handler) do
lambda do |span, error|
span.set_tag('custom.handler', "Got error #{error}, but ignored it")
end
end

it do
expect { request_response }.to raise_error('test error')

expect(span).to_not have_error
expect(span.get_tag('custom.handler')).to eq('Got error test error, but ignored it')
end
end
end
end

describe '#client_streamer' do
Expand Down Expand Up @@ -95,15 +130,4 @@

it_behaves_like 'span data contents'
end

describe '#error_handler' do
let(:error_handler) { proc { |span, error| span.set_error(error) if error.is_a?(StandardError) } }
let(:configuration_options) { { service_name: 'rspec', on_error: error_handler } }

before do
subject.request_response(**keywords) { raise 'error' }
end

it { expect(span).to have_error }
end
end

0 comments on commit 1914b0c

Please sign in to comment.