instana 1.10.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.codeclimate.yml +23 -0
- data/.gitignore +16 -0
- data/.rubocop.yml +1156 -0
- data/.travis.yml +43 -0
- data/Configuration.md +149 -0
- data/Dockerfile +13 -0
- data/Gemfile +41 -0
- data/LICENSE +21 -0
- data/README.md +102 -0
- data/Rakefile +56 -0
- data/Tracing.md +145 -0
- data/Troubleshooting.md +32 -0
- data/benchmarks/Gemfile +7 -0
- data/benchmarks/id_generation.rb +12 -0
- data/benchmarks/opentracing.rb +26 -0
- data/benchmarks/rack_vanilla_vs_traced.rb +80 -0
- data/benchmarks/stackprof_rack_tracing.rb +77 -0
- data/benchmarks/time_processing.rb +12 -0
- data/bin/console +7 -0
- data/bin/setup +8 -0
- data/examples/opentracing.rb +31 -0
- data/examples/tracing.rb +80 -0
- data/gemfiles/libraries.gemfile +71 -0
- data/gemfiles/rails32.gemfile +51 -0
- data/gemfiles/rails42.gemfile +50 -0
- data/gemfiles/rails50.gemfile +52 -0
- data/instana.gemspec +46 -0
- data/lib/instana.rb +12 -0
- data/lib/instana/agent.rb +441 -0
- data/lib/instana/agent/helpers.rb +61 -0
- data/lib/instana/agent/hooks.rb +37 -0
- data/lib/instana/agent/tasks.rb +48 -0
- data/lib/instana/base.rb +54 -0
- data/lib/instana/collector.rb +116 -0
- data/lib/instana/collectors/gc.rb +57 -0
- data/lib/instana/collectors/memory.rb +34 -0
- data/lib/instana/collectors/thread.rb +30 -0
- data/lib/instana/config.rb +79 -0
- data/lib/instana/eum/eum-test.js.erb +16 -0
- data/lib/instana/eum/eum.js.erb +14 -0
- data/lib/instana/frameworks/cuba.rb +6 -0
- data/lib/instana/frameworks/instrumentation/abstract_mysql_adapter.rb +58 -0
- data/lib/instana/frameworks/instrumentation/action_controller.rb +183 -0
- data/lib/instana/frameworks/instrumentation/action_view.rb +43 -0
- data/lib/instana/frameworks/instrumentation/active_record.rb +27 -0
- data/lib/instana/frameworks/instrumentation/mysql2_adapter.rb +81 -0
- data/lib/instana/frameworks/instrumentation/mysql_adapter.rb +56 -0
- data/lib/instana/frameworks/instrumentation/postgresql_adapter.rb +71 -0
- data/lib/instana/frameworks/rails.rb +42 -0
- data/lib/instana/frameworks/roda.rb +6 -0
- data/lib/instana/frameworks/sinatra.rb +9 -0
- data/lib/instana/helpers.rb +40 -0
- data/lib/instana/instrumentation.rb +21 -0
- data/lib/instana/instrumentation/dalli.rb +78 -0
- data/lib/instana/instrumentation/excon.rb +74 -0
- data/lib/instana/instrumentation/grpc.rb +84 -0
- data/lib/instana/instrumentation/net-http.rb +66 -0
- data/lib/instana/instrumentation/rack.rb +77 -0
- data/lib/instana/instrumentation/redis.rb +82 -0
- data/lib/instana/instrumentation/resque.rb +131 -0
- data/lib/instana/instrumentation/rest-client.rb +34 -0
- data/lib/instana/instrumentation/sidekiq-client.rb +45 -0
- data/lib/instana/instrumentation/sidekiq-worker.rb +54 -0
- data/lib/instana/opentracing/carrier.rb +4 -0
- data/lib/instana/opentracing/tracer.rb +18 -0
- data/lib/instana/rack.rb +10 -0
- data/lib/instana/setup.rb +36 -0
- data/lib/instana/test.rb +40 -0
- data/lib/instana/thread_local.rb +15 -0
- data/lib/instana/tracer.rb +392 -0
- data/lib/instana/tracing/processor.rb +92 -0
- data/lib/instana/tracing/span.rb +401 -0
- data/lib/instana/tracing/span_context.rb +33 -0
- data/lib/instana/util.rb +261 -0
- data/lib/instana/version.rb +4 -0
- data/lib/oj_check.rb +16 -0
- data/lib/opentracing.rb +6 -0
- data/test/agent/agent_test.rb +143 -0
- data/test/apps/cuba.rb +15 -0
- data/test/apps/grpc_server.rb +81 -0
- data/test/apps/roda.rb +10 -0
- data/test/apps/sinatra.rb +5 -0
- data/test/benchmarks/bench_id_generation.rb +12 -0
- data/test/benchmarks/bench_opentracing.rb +13 -0
- data/test/config_test.rb +37 -0
- data/test/frameworks/cuba_test.rb +44 -0
- data/test/frameworks/rack_test.rb +167 -0
- data/test/frameworks/rails/actioncontroller_test.rb +93 -0
- data/test/frameworks/rails/actionview3_test.rb +255 -0
- data/test/frameworks/rails/actionview4_test.rb +254 -0
- data/test/frameworks/rails/actionview5_test.rb +221 -0
- data/test/frameworks/rails/activerecord3_test.rb +134 -0
- data/test/frameworks/rails/activerecord4_test.rb +134 -0
- data/test/frameworks/rails/activerecord5_test.rb +87 -0
- data/test/frameworks/roda_test.rb +44 -0
- data/test/frameworks/sinatra_test.rb +44 -0
- data/test/instana_test.rb +27 -0
- data/test/instrumentation/dalli_test.rb +253 -0
- data/test/instrumentation/excon_test.rb +147 -0
- data/test/instrumentation/grpc_test.rb +377 -0
- data/test/instrumentation/net-http_test.rb +160 -0
- data/test/instrumentation/redis_test.rb +119 -0
- data/test/instrumentation/resque_test.rb +128 -0
- data/test/instrumentation/rest-client_test.rb +55 -0
- data/test/instrumentation/sidekiq-client_test.rb +125 -0
- data/test/instrumentation/sidekiq-worker_test.rb +173 -0
- data/test/jobs/resque_error_job.rb +22 -0
- data/test/jobs/resque_fast_job.rb +20 -0
- data/test/jobs/sidekiq_job_1.rb +6 -0
- data/test/jobs/sidekiq_job_2.rb +7 -0
- data/test/models/block.rb +18 -0
- data/test/servers/grpc_50051.rb +20 -0
- data/test/servers/helpers/sidekiq_worker_initializer.rb +27 -0
- data/test/servers/rackapp_6511.rb +25 -0
- data/test/servers/rails_3205.rb +167 -0
- data/test/servers/sidekiq/worker.rb +27 -0
- data/test/test_helper.rb +145 -0
- data/test/tracing/custom_test.rb +158 -0
- data/test/tracing/id_management_test.rb +130 -0
- data/test/tracing/opentracing_test.rb +335 -0
- data/test/tracing/trace_test.rb +67 -0
- data/test/tracing/tracer_async_test.rb +198 -0
- data/test/tracing/tracer_test.rb +223 -0
- metadata +327 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class ExconTest < Minitest::Test
|
|
4
|
+
def test_config_defaults
|
|
5
|
+
assert ::Instana.config[:excon].is_a?(Hash)
|
|
6
|
+
assert ::Instana.config[:excon].key?(:enabled)
|
|
7
|
+
assert_equal true, ::Instana.config[:excon][:enabled]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_basic_get
|
|
11
|
+
clear_all!
|
|
12
|
+
|
|
13
|
+
# A slight hack but webmock chokes with pipelined requests.
|
|
14
|
+
# Delete their excon middleware
|
|
15
|
+
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
|
16
|
+
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
|
17
|
+
|
|
18
|
+
url = "http://127.0.0.1:6511"
|
|
19
|
+
|
|
20
|
+
connection = Excon.new(url)
|
|
21
|
+
Instana.tracer.start_or_continue_trace('excon-test') do
|
|
22
|
+
connection.get(:path => '/?basic_get')
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
spans = ::Instana.processor.queued_spans
|
|
26
|
+
assert_equal 3, spans.length
|
|
27
|
+
|
|
28
|
+
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
|
29
|
+
excon_span = find_first_span_by_name(spans, :excon)
|
|
30
|
+
rack_span = find_first_span_by_name(spans, :rack)
|
|
31
|
+
|
|
32
|
+
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :intermediate})
|
|
33
|
+
|
|
34
|
+
# data keys/values
|
|
35
|
+
refute_nil excon_span.key?(:data)
|
|
36
|
+
refute_nil excon_span[:data].key?(:http)
|
|
37
|
+
assert_equal "http://127.0.0.1:6511/", excon_span[:data][:http][:url]
|
|
38
|
+
assert_equal 200, excon_span[:data][:http][:status]
|
|
39
|
+
|
|
40
|
+
# excon backtrace not included by default check
|
|
41
|
+
assert !excon_span.key?(:stack)
|
|
42
|
+
|
|
43
|
+
assert_equal sdk_span[:t], excon_span[:t]
|
|
44
|
+
assert_equal rack_span[:t], excon_span[:t]
|
|
45
|
+
|
|
46
|
+
assert_equal rack_span[:p], excon_span[:s]
|
|
47
|
+
assert_equal excon_span[:p], sdk_span[:s]
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_basic_get_with_error
|
|
51
|
+
clear_all!
|
|
52
|
+
|
|
53
|
+
# A slight hack but webmock chokes with pipelined requests.
|
|
54
|
+
# Delete their excon middleware
|
|
55
|
+
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
|
56
|
+
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
|
57
|
+
|
|
58
|
+
url = "http://127.0.0.1:6511"
|
|
59
|
+
|
|
60
|
+
begin
|
|
61
|
+
connection = Excon.new(url)
|
|
62
|
+
Instana.tracer.start_or_continue_trace('excon-test') do
|
|
63
|
+
connection.get(:path => '/error')
|
|
64
|
+
end
|
|
65
|
+
rescue
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
spans = ::Instana.processor.queued_spans
|
|
69
|
+
assert_equal 3, spans.length
|
|
70
|
+
|
|
71
|
+
rack_span = find_first_span_by_name(spans, :rack)
|
|
72
|
+
excon_span = find_first_span_by_name(spans, :excon)
|
|
73
|
+
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
|
74
|
+
|
|
75
|
+
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :intermediate})
|
|
76
|
+
|
|
77
|
+
assert_equal sdk_span[:s], excon_span[:p]
|
|
78
|
+
assert_equal excon_span[:s], rack_span[:p]
|
|
79
|
+
|
|
80
|
+
assert_equal :excon, excon_span[:n]
|
|
81
|
+
refute_nil excon_span.key?(:data)
|
|
82
|
+
refute_nil excon_span[:data].key?(:http)
|
|
83
|
+
assert_equal "http://127.0.0.1:6511/error", excon_span[:data][:http][:url]
|
|
84
|
+
assert_equal 500, excon_span[:data][:http][:status]
|
|
85
|
+
|
|
86
|
+
# error validation
|
|
87
|
+
assert_equal true, excon_span[:error]
|
|
88
|
+
assert_equal 1, excon_span[:ec]
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_pipelined_requests
|
|
92
|
+
clear_all!
|
|
93
|
+
|
|
94
|
+
# A slight hack but webmock chokes with pipelined requests.
|
|
95
|
+
# Delete their excon middleware
|
|
96
|
+
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
|
97
|
+
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
|
98
|
+
|
|
99
|
+
url = "http://127.0.0.1:6511"
|
|
100
|
+
|
|
101
|
+
connection = Excon.new(url)
|
|
102
|
+
request = { :method => :get, :path => '/?pipelined_request' }
|
|
103
|
+
Instana.tracer.start_or_continue_trace('excon-test') do
|
|
104
|
+
connection.requests([request, request, request])
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
spans = ::Instana.processor.queued_spans
|
|
108
|
+
assert_equal 7, spans.length
|
|
109
|
+
|
|
110
|
+
rack_spans = find_spans_by_name(spans, :rack)
|
|
111
|
+
excon_spans = find_spans_by_name(spans, :excon)
|
|
112
|
+
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
|
113
|
+
|
|
114
|
+
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :intermediate})
|
|
115
|
+
|
|
116
|
+
assert_equal 3, rack_spans.length
|
|
117
|
+
assert_equal 3, excon_spans.length
|
|
118
|
+
|
|
119
|
+
# ::Instana::Util.pry!
|
|
120
|
+
|
|
121
|
+
for rack_span in rack_spans
|
|
122
|
+
# data keys/values
|
|
123
|
+
refute_nil rack_span.key?(:data)
|
|
124
|
+
refute_nil rack_span[:data].key?(:http)
|
|
125
|
+
assert_equal "/", rack_span[:data][:http][:url]
|
|
126
|
+
assert_equal 200, rack_span[:data][:http][:status]
|
|
127
|
+
assert !rack_span.key?(:stack)
|
|
128
|
+
|
|
129
|
+
# Make sure a parent is specified and that we have it
|
|
130
|
+
refute_nil rack_span[:p]
|
|
131
|
+
excon_span = find_span_by_id(spans, rack_span[:p])
|
|
132
|
+
assert_equal :excon, excon_span[:n]
|
|
133
|
+
|
|
134
|
+
refute_nil excon_span.key?(:data)
|
|
135
|
+
refute_nil excon_span[:data].key?(:http)
|
|
136
|
+
assert_equal "http://127.0.0.1:6511/", excon_span[:data][:http][:url]
|
|
137
|
+
assert_equal 200, excon_span[:data][:http][:status]
|
|
138
|
+
assert !excon_span.key?(:stack)
|
|
139
|
+
|
|
140
|
+
# walk up the line
|
|
141
|
+
refute_nil excon_span[:p]
|
|
142
|
+
grandparent_span = find_span_by_id(spans, excon_span[:p])
|
|
143
|
+
assert_nil grandparent_span[:p]
|
|
144
|
+
assert_equal :sdk, grandparent_span[:n]
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
end
|
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class GrpcTest < Minitest::Test
|
|
4
|
+
def client_stub
|
|
5
|
+
PingPongService::Stub.new('127.0.0.1:50051', :this_channel_is_insecure)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def assert_client_span(client_span, call: '', call_type: '', error: nil)
|
|
9
|
+
data = client_span[:data]
|
|
10
|
+
assert_equal '127.0.0.1:50051', data[:rpc][:host]
|
|
11
|
+
assert_equal :grpc, data[:rpc][:flavor]
|
|
12
|
+
assert_equal call, data[:rpc][:call]
|
|
13
|
+
assert_equal call_type, data[:rpc][:call_type]
|
|
14
|
+
|
|
15
|
+
if error
|
|
16
|
+
assert_equal true, data[:rpc][:error]
|
|
17
|
+
assert_equal "2:RuntimeError: #{error}", data[:log][:message]
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def assert_server_span(server_span, call: '', call_type: '', error: nil)
|
|
22
|
+
# Span name validation
|
|
23
|
+
assert_equal :'rpc-server', server_span[:n]
|
|
24
|
+
|
|
25
|
+
data = server_span[:data]
|
|
26
|
+
assert_equal :grpc, data[:rpc][:flavor]
|
|
27
|
+
assert_equal call, data[:rpc][:call]
|
|
28
|
+
assert_equal call_type, data[:rpc][:call_type]
|
|
29
|
+
|
|
30
|
+
if error
|
|
31
|
+
assert_equal true, data[:rpc][:error]
|
|
32
|
+
assert_equal error, data[:log][:message]
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_request_response
|
|
37
|
+
clear_all!
|
|
38
|
+
response = nil
|
|
39
|
+
|
|
40
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
41
|
+
response = client_stub.ping(
|
|
42
|
+
PingPongService::PingRequest.new(message: 'Hello World')
|
|
43
|
+
)
|
|
44
|
+
end
|
|
45
|
+
sleep 1
|
|
46
|
+
|
|
47
|
+
assert 'Hello World', response.message
|
|
48
|
+
|
|
49
|
+
# Pause for a split second to allow traces to be queued
|
|
50
|
+
sleep 0.2
|
|
51
|
+
|
|
52
|
+
spans = ::Instana.processor.queued_spans
|
|
53
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
54
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
55
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
56
|
+
|
|
57
|
+
validate_sdk_span(sdk_span)
|
|
58
|
+
|
|
59
|
+
assert_client_span(
|
|
60
|
+
client_span,
|
|
61
|
+
call: '/PingPongService/Ping',
|
|
62
|
+
call_type: :request_response
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
assert_server_span(
|
|
66
|
+
server_span,
|
|
67
|
+
call: '/PingPongService/Ping',
|
|
68
|
+
call_type: :request_response
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
trace_id = sdk_span[:t]
|
|
72
|
+
assert_equal trace_id, client_span[:t]
|
|
73
|
+
assert_equal trace_id, server_span[:t]
|
|
74
|
+
|
|
75
|
+
assert_equal server_span[:p], client_span[:s]
|
|
76
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def test_client_streamer
|
|
80
|
+
clear_all!
|
|
81
|
+
response = nil
|
|
82
|
+
|
|
83
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
84
|
+
response = client_stub.ping_with_client_stream(
|
|
85
|
+
(0..5).map do |index|
|
|
86
|
+
PingPongService::PingRequest.new(message: index.to_s)
|
|
87
|
+
end
|
|
88
|
+
)
|
|
89
|
+
end
|
|
90
|
+
sleep 1
|
|
91
|
+
|
|
92
|
+
assert '01234', response.message
|
|
93
|
+
|
|
94
|
+
# Pause for a split second to allow traces to be queued
|
|
95
|
+
sleep 0.2
|
|
96
|
+
|
|
97
|
+
spans = ::Instana.processor.queued_spans
|
|
98
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
99
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
100
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
101
|
+
|
|
102
|
+
validate_sdk_span(sdk_span)
|
|
103
|
+
|
|
104
|
+
assert_client_span(
|
|
105
|
+
client_span,
|
|
106
|
+
call: '/PingPongService/PingWithClientStream',
|
|
107
|
+
call_type: :client_streamer
|
|
108
|
+
)
|
|
109
|
+
|
|
110
|
+
assert_server_span(
|
|
111
|
+
server_span,
|
|
112
|
+
call: '/PingPongService/PingWithClientStream',
|
|
113
|
+
call_type: :client_streamer
|
|
114
|
+
)
|
|
115
|
+
|
|
116
|
+
trace_id = sdk_span[:t]
|
|
117
|
+
assert_equal trace_id, client_span[:t]
|
|
118
|
+
assert_equal trace_id, server_span[:t]
|
|
119
|
+
|
|
120
|
+
assert_equal server_span[:p], client_span[:s]
|
|
121
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def test_server_streamer
|
|
125
|
+
clear_all!
|
|
126
|
+
responses = []
|
|
127
|
+
|
|
128
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
129
|
+
responses = client_stub.ping_with_server_stream(
|
|
130
|
+
PingPongService::PingRequest.new(message: 'Hello World')
|
|
131
|
+
)
|
|
132
|
+
end
|
|
133
|
+
assert %w(0 1 2 3 4), responses.map(&:message)
|
|
134
|
+
|
|
135
|
+
# Pause for a split second to allow traces to be queued
|
|
136
|
+
sleep 0.2
|
|
137
|
+
|
|
138
|
+
spans = ::Instana.processor.queued_spans
|
|
139
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
140
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
141
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
142
|
+
|
|
143
|
+
validate_sdk_span(sdk_span)
|
|
144
|
+
|
|
145
|
+
assert_client_span(
|
|
146
|
+
client_span,
|
|
147
|
+
call: '/PingPongService/PingWithServerStream',
|
|
148
|
+
call_type: :server_streamer
|
|
149
|
+
)
|
|
150
|
+
|
|
151
|
+
assert_server_span(
|
|
152
|
+
server_span,
|
|
153
|
+
call: '/PingPongService/PingWithServerStream',
|
|
154
|
+
call_type: :server_streamer
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
trace_id = sdk_span[:t]
|
|
158
|
+
assert_equal trace_id, client_span[:t]
|
|
159
|
+
assert_equal trace_id, server_span[:t]
|
|
160
|
+
|
|
161
|
+
assert_equal server_span[:p], client_span[:s]
|
|
162
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
def test_bidi_streamer
|
|
166
|
+
clear_all!
|
|
167
|
+
responses = []
|
|
168
|
+
|
|
169
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
170
|
+
responses = client_stub.ping_with_bidi_stream(
|
|
171
|
+
(0..5).map do |index|
|
|
172
|
+
PingPongService::PingRequest.new(message: (index * 2).to_s)
|
|
173
|
+
end
|
|
174
|
+
)
|
|
175
|
+
end
|
|
176
|
+
sleep 1
|
|
177
|
+
|
|
178
|
+
assert %w(0 2 4 6 8), responses.to_a.map(&:message)
|
|
179
|
+
|
|
180
|
+
# Pause for a split second to allow traces to be queued
|
|
181
|
+
sleep 0.2
|
|
182
|
+
|
|
183
|
+
spans = ::Instana.processor.queued_spans
|
|
184
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
185
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
186
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
187
|
+
|
|
188
|
+
validate_sdk_span(sdk_span)
|
|
189
|
+
|
|
190
|
+
assert_client_span(
|
|
191
|
+
client_span,
|
|
192
|
+
call: '/PingPongService/PingWithBidiStream',
|
|
193
|
+
call_type: :bidi_streamer
|
|
194
|
+
)
|
|
195
|
+
|
|
196
|
+
assert_server_span(
|
|
197
|
+
server_span,
|
|
198
|
+
call: '/PingPongService/PingWithBidiStream',
|
|
199
|
+
call_type: :bidi_streamer
|
|
200
|
+
)
|
|
201
|
+
|
|
202
|
+
trace_id = sdk_span[:t]
|
|
203
|
+
assert_equal trace_id, client_span[:t]
|
|
204
|
+
assert_equal trace_id, server_span[:t]
|
|
205
|
+
|
|
206
|
+
assert_equal server_span[:p], client_span[:s]
|
|
207
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def test_request_response_failure
|
|
211
|
+
clear_all!
|
|
212
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
213
|
+
begin
|
|
214
|
+
client_stub.fail_to_ping( PingPongService::PingRequest.new(message: 'Hello World'))
|
|
215
|
+
rescue
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# Pause for a split second to allow traces to be queued
|
|
220
|
+
sleep 0.2
|
|
221
|
+
|
|
222
|
+
spans = ::Instana.processor.queued_spans
|
|
223
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
224
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
225
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
226
|
+
|
|
227
|
+
validate_sdk_span(sdk_span)
|
|
228
|
+
|
|
229
|
+
assert_client_span(
|
|
230
|
+
client_span,
|
|
231
|
+
call: '/PingPongService/FailToPing',
|
|
232
|
+
call_type: :request_response,
|
|
233
|
+
error: 'Unexpected failed'
|
|
234
|
+
)
|
|
235
|
+
assert_server_span(
|
|
236
|
+
server_span,
|
|
237
|
+
call: '/PingPongService/FailToPing',
|
|
238
|
+
call_type: :request_response,
|
|
239
|
+
error: 'Unexpected failed'
|
|
240
|
+
)
|
|
241
|
+
|
|
242
|
+
trace_id = sdk_span[:t]
|
|
243
|
+
assert_equal trace_id, client_span[:t]
|
|
244
|
+
assert_equal trace_id, server_span[:t]
|
|
245
|
+
|
|
246
|
+
assert_equal server_span[:p], client_span[:s]
|
|
247
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def test_client_streamer_failure
|
|
251
|
+
clear_all!
|
|
252
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
253
|
+
begin
|
|
254
|
+
client_stub.fail_to_ping_with_client_stream(
|
|
255
|
+
(0..5).map do |index|
|
|
256
|
+
PingPongService::PingRequest.new(message: index.to_s)
|
|
257
|
+
end
|
|
258
|
+
)
|
|
259
|
+
rescue
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
# Pause for a split second to allow traces to be queued
|
|
264
|
+
sleep 0.2
|
|
265
|
+
|
|
266
|
+
spans = ::Instana.processor.queued_spans
|
|
267
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
268
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
269
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
270
|
+
|
|
271
|
+
validate_sdk_span(sdk_span)
|
|
272
|
+
|
|
273
|
+
assert_client_span(
|
|
274
|
+
client_span,
|
|
275
|
+
call: '/PingPongService/FailToPingWithClientStream',
|
|
276
|
+
call_type: :client_streamer,
|
|
277
|
+
error: 'Unexpected failed'
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
assert_server_span(
|
|
281
|
+
server_span,
|
|
282
|
+
call: '/PingPongService/FailToPingWithClientStream',
|
|
283
|
+
call_type: :client_streamer,
|
|
284
|
+
error: 'Unexpected failed'
|
|
285
|
+
)
|
|
286
|
+
|
|
287
|
+
trace_id = sdk_span[:t]
|
|
288
|
+
assert_equal trace_id, client_span[:t]
|
|
289
|
+
assert_equal trace_id, server_span[:t]
|
|
290
|
+
|
|
291
|
+
assert_equal server_span[:p], client_span[:s]
|
|
292
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
def test_server_streamer_failure
|
|
296
|
+
clear_all!
|
|
297
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
298
|
+
begin
|
|
299
|
+
client_stub.fail_to_ping_with_server_stream(
|
|
300
|
+
PingPongService::PingRequest.new(message: 'Hello World')
|
|
301
|
+
)
|
|
302
|
+
rescue
|
|
303
|
+
end
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
# Pause for a split second to allow traces to be queued
|
|
307
|
+
sleep 0.2
|
|
308
|
+
|
|
309
|
+
spans = ::Instana.processor.queued_spans
|
|
310
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
311
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
312
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
313
|
+
|
|
314
|
+
validate_sdk_span(sdk_span)
|
|
315
|
+
|
|
316
|
+
assert_client_span(
|
|
317
|
+
client_span,
|
|
318
|
+
call: '/PingPongService/FailToPingWithServerStream',
|
|
319
|
+
call_type: :server_streamer
|
|
320
|
+
)
|
|
321
|
+
|
|
322
|
+
assert_server_span(
|
|
323
|
+
server_span,
|
|
324
|
+
call: '/PingPongService/FailToPingWithServerStream',
|
|
325
|
+
call_type: :server_streamer,
|
|
326
|
+
error: 'Unexpected failed'
|
|
327
|
+
)
|
|
328
|
+
|
|
329
|
+
trace_id = sdk_span[:t]
|
|
330
|
+
assert_equal trace_id, client_span[:t]
|
|
331
|
+
assert_equal trace_id, server_span[:t]
|
|
332
|
+
|
|
333
|
+
assert_equal server_span[:p], client_span[:s]
|
|
334
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
def test_bidi_streamer_failure
|
|
338
|
+
clear_all!
|
|
339
|
+
Instana.tracer.start_or_continue_trace(:rpctests) do
|
|
340
|
+
client_stub.fail_to_ping_with_bidi_stream(
|
|
341
|
+
(0..5).map do |index|
|
|
342
|
+
PingPongService::PingRequest.new(message: (index * 2).to_s)
|
|
343
|
+
end
|
|
344
|
+
)
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
# Pause for a split second to allow traces to be queued
|
|
348
|
+
sleep 0.2
|
|
349
|
+
|
|
350
|
+
spans = ::Instana.processor.queued_spans
|
|
351
|
+
sdk_span = find_spans_by_name(spans, :rpctests).first
|
|
352
|
+
client_span = find_spans_by_name(spans, :'rpc-client').first
|
|
353
|
+
server_span = find_spans_by_name(spans, :'rpc-server').first
|
|
354
|
+
|
|
355
|
+
validate_sdk_span(sdk_span)
|
|
356
|
+
|
|
357
|
+
assert_client_span(
|
|
358
|
+
client_span,
|
|
359
|
+
call: '/PingPongService/FailToPingWithBidiStream',
|
|
360
|
+
call_type: :bidi_streamer
|
|
361
|
+
)
|
|
362
|
+
|
|
363
|
+
assert_server_span(
|
|
364
|
+
server_span,
|
|
365
|
+
call: '/PingPongService/FailToPingWithBidiStream',
|
|
366
|
+
call_type: :bidi_streamer,
|
|
367
|
+
error: 'Unexpected failed'
|
|
368
|
+
)
|
|
369
|
+
|
|
370
|
+
trace_id = sdk_span[:t]
|
|
371
|
+
assert_equal trace_id, client_span[:t]
|
|
372
|
+
assert_equal trace_id, server_span[:t]
|
|
373
|
+
|
|
374
|
+
assert_equal server_span[:p], client_span[:s]
|
|
375
|
+
assert_equal client_span[:p], sdk_span[:s]
|
|
376
|
+
end
|
|
377
|
+
end
|