-
Notifications
You must be signed in to change notification settings - Fork 179
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: Omit
nil
net.peer.name
attributes
- Loading branch information
Showing
2 changed files
with
95 additions
and
70 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -42,89 +42,114 @@ | |
instrumentation.install | ||
end | ||
|
||
it 'has http 200 attributes' do | ||
response = client.get('/success') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 200 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
describe 'given a client with a base url' do | ||
it 'has http 200 attributes' do | ||
response = client.get('/success') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 200 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
|
||
it 'has http.status_code 404' do | ||
response = client.get('/not_found') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 404 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/not_found' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
it 'has http.status_code 404' do | ||
response = client.get('/not_found') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 404 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/not_found' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
|
||
it 'has http.status_code 500' do | ||
response = client.get('/failure') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 500 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/failure' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
it 'has http.status_code 500' do | ||
response = client.get('/failure') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 500 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/failure' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
|
||
it 'merges http client attributes' do | ||
client_context_attrs = { | ||
'test.attribute' => 'test.value', 'http.method' => 'OVERRIDE' | ||
} | ||
response = OpenTelemetry::Common::HTTP::ClientContext.with_attributes(client_context_attrs) do | ||
client.get('/success') | ||
it 'merges http client attributes' do | ||
client_context_attrs = { | ||
'test.attribute' => 'test.value', 'http.method' => 'OVERRIDE' | ||
} | ||
response = OpenTelemetry::Common::HTTP::ClientContext.with_attributes(client_context_attrs) do | ||
client.get('/success') | ||
end | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'OVERRIDE' | ||
_(span.attributes['http.status_code']).must_equal 200 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(span.attributes['test.attribute']).must_equal 'test.value' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'OVERRIDE' | ||
_(span.attributes['http.status_code']).must_equal 200 | ||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
_(span.attributes['net.peer.name']).must_equal 'example.com' | ||
_(span.attributes['test.attribute']).must_equal 'test.value' | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
it 'accepts peer service name from config' do | ||
instrumentation.instance_variable_set(:@installed, false) | ||
instrumentation.install(peer_service: 'example:faraday') | ||
|
||
it 'accepts peer service name from config' do | ||
instrumentation.instance_variable_set(:@installed, false) | ||
instrumentation.install(peer_service: 'example:faraday') | ||
client.get('/success') | ||
|
||
client.get('/success') | ||
_(span.attributes['peer.service']).must_equal 'example:faraday' | ||
end | ||
|
||
_(span.attributes['peer.service']).must_equal 'example:faraday' | ||
end | ||
it 'prioritizes context attributes over config for peer service name' do | ||
instrumentation.instance_variable_set(:@installed, false) | ||
instrumentation.install(peer_service: 'example:faraday') | ||
|
||
it 'prioritizes context attributes over config for peer service name' do | ||
instrumentation.instance_variable_set(:@installed, false) | ||
instrumentation.install(peer_service: 'example:faraday') | ||
client_context_attrs = { 'peer.service' => 'example:custom' } | ||
OpenTelemetry::Common::HTTP::ClientContext.with_attributes(client_context_attrs) do | ||
client.get('/success') | ||
end | ||
|
||
client_context_attrs = { 'peer.service' => 'example:custom' } | ||
OpenTelemetry::Common::HTTP::ClientContext.with_attributes(client_context_attrs) do | ||
client.get('/success') | ||
_(span.attributes['peer.service']).must_equal 'example:custom' | ||
end | ||
|
||
_(span.attributes['peer.service']).must_equal 'example:custom' | ||
it 'does not leak authentication credentials' do | ||
client.run_request(:get, 'http://username:[email protected]/success', nil, {}) | ||
|
||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
end | ||
end | ||
|
||
it 'does not leak authentication credentials' do | ||
client.run_request(:get, 'http://username:[email protected]/success', nil, {}) | ||
describe 'given a client without a base url' do | ||
let(:client) do | ||
Faraday.new do |builder| | ||
builder.adapter(:test) do |stub| | ||
stub.get('/success') { |_| [200, {}, 'OK'] } | ||
end | ||
end | ||
end | ||
|
||
_(span.attributes['http.url']).must_equal 'http://example.com/success' | ||
it 'omits missing attributes' do | ||
response = client.get('/success') | ||
|
||
_(span.name).must_equal 'HTTP GET' | ||
_(span.attributes['http.method']).must_equal 'GET' | ||
_(span.attributes['http.status_code']).must_equal 200 | ||
_(span.attributes['http.url']).must_equal 'http:/success' | ||
_(span.attributes).wont_include('net.peer.name') | ||
_(response.env.request_headers['Traceparent']).must_equal( | ||
"00-#{span.hex_trace_id}-#{span.hex_span_id}-01" | ||
) | ||
end | ||
end | ||
end | ||
end |