instana 1.9.7 → 1.10.0.slimfast

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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/lib/instana/agent.rb +19 -19
  3. data/lib/instana/agent/helpers.rb +2 -2
  4. data/lib/instana/agent/tasks.rb +2 -2
  5. data/lib/instana/collectors/gc.rb +1 -1
  6. data/lib/instana/collectors/memory.rb +1 -1
  7. data/lib/instana/collectors/thread.rb +1 -1
  8. data/lib/instana/frameworks/instrumentation/mysql2_adapter.rb +1 -1
  9. data/lib/instana/frameworks/instrumentation/mysql_adapter.rb +1 -1
  10. data/lib/instana/helpers.rb +2 -2
  11. data/lib/instana/instrumentation.rb +1 -1
  12. data/lib/instana/instrumentation/excon.rb +8 -5
  13. data/lib/instana/instrumentation/rack.rb +2 -2
  14. data/lib/instana/instrumentation/resque.rb +3 -3
  15. data/lib/instana/tracer.rb +92 -117
  16. data/lib/instana/tracing/processor.rb +18 -133
  17. data/lib/instana/tracing/span.rb +40 -35
  18. data/lib/instana/tracing/span_context.rb +3 -1
  19. data/lib/instana/util.rb +5 -5
  20. data/lib/instana/version.rb +1 -1
  21. data/lib/opentracing.rb +1 -1
  22. data/test/frameworks/rack_test.rb +6 -11
  23. data/test/frameworks/rails/actioncontroller_test.rb +32 -62
  24. data/test/frameworks/rails/actionview5_test.rb +91 -132
  25. data/test/frameworks/rails/activerecord5_test.rb +14 -17
  26. data/test/instrumentation/dalli_test.rb +51 -72
  27. data/test/instrumentation/excon_test.rb +70 -94
  28. data/test/instrumentation/grpc_test.rb +164 -126
  29. data/test/instrumentation/net-http_test.rb +48 -57
  30. data/test/instrumentation/redis_test.rb +4 -6
  31. data/test/instrumentation/resque_test.rb +41 -41
  32. data/test/instrumentation/rest-client_test.rb +25 -31
  33. data/test/instrumentation/sidekiq-client_test.rb +12 -20
  34. data/test/instrumentation/sidekiq-worker_test.rb +48 -63
  35. data/test/jobs/resque_error_job.rb +7 -1
  36. data/test/jobs/resque_fast_job.rb +7 -1
  37. data/test/servers/sidekiq/worker.rb +1 -3
  38. data/test/test_helper.rb +58 -0
  39. data/test/tracing/custom_test.rb +11 -19
  40. data/test/tracing/opentracing_test.rb +48 -156
  41. data/test/tracing/trace_test.rb +67 -67
  42. data/test/tracing/tracer_async_test.rb +75 -175
  43. data/test/tracing/tracer_test.rb +75 -75
  44. metadata +4 -5
  45. data/lib/instana/tracing/trace.rb +0 -316
@@ -26,10 +26,10 @@ class ActiveRecordTest < Minitest::Test
26
26
  third_span = spans[3]
27
27
  fourth_span = spans[4]
28
28
 
29
- assert_equal :rack, first_span.name
30
- assert_equal :activerecord, second_span.name
31
- assert_equal :activerecord, third_span.name
32
- assert_equal :activerecord, fourth_span.name
29
+ assert_equal :rack, first_span[:n]
30
+ assert_equal :activerecord, second_span[:n]
31
+ assert_equal :activerecord, third_span[:n]
32
+ assert_equal :activerecord, fourth_span[:n]
33
33
 
34
34
  assert_equal "INSERT INTO \"blocks\" (\"name\", \"color\", \"created_at\", \"updated_at\") VALUES ($?, $?, $?, $?) RETURNING \"id\"", second_span[:data][:activerecord][:sql]
35
35
  assert_equal "SELECT \"blocks\".* FROM \"blocks\" WHERE \"blocks\".\"name\" = $? ORDER BY \"blocks\".\"id\" ASC LIMIT $?", third_span[:data][:activerecord][:sql]
@@ -55,21 +55,18 @@ class ActiveRecordTest < Minitest::Test
55
55
 
56
56
  Net::HTTP.get(URI.parse('http://localhost:3205/test/db'))
57
57
 
58
- traces = Instana.processor.queued_traces
59
- assert_equal 1, traces.length
60
- trace = traces.first
58
+ spans = ::Instana.processor.queued_spans
59
+ assert_equal 6, spans.length
61
60
 
62
- assert_equal 6, trace.spans.length
63
- spans = trace.spans.to_a
64
- first_span = spans[0]
65
- second_span = spans[2]
66
- third_span = spans[3]
67
- fourth_span = spans[4]
61
+ first_span = spans[5]
62
+ second_span = spans[0]
63
+ third_span = spans[1]
64
+ fourth_span = spans[2]
68
65
 
69
- assert_equal :rack, first_span.name
70
- assert_equal :activerecord, second_span.name
71
- assert_equal :activerecord, third_span.name
72
- assert_equal :activerecord, fourth_span.name
66
+ assert_equal :rack, first_span[:n]
67
+ assert_equal :activerecord, second_span[:n]
68
+ assert_equal :activerecord, third_span[:n]
69
+ assert_equal :activerecord, fourth_span[:n]
73
70
 
74
71
  assert_equal "INSERT INTO `blocks` (`name`, `color`, `created_at`, `updated_at`) VALUES (?, ?, ?, ?)", second_span[:data][:activerecord][:sql]
75
72
  assert_equal "SELECT `blocks`.* FROM `blocks` WHERE `blocks`.`name` = ? ORDER BY `blocks`.`id` ASC LIMIT ?", third_span[:data][:activerecord][:sql]
@@ -24,18 +24,15 @@ class DalliTest < Minitest::Test
24
24
 
25
25
  assert_equal :boom, result
26
26
 
27
- traces = Instana.processor.queued_traces
28
- assert_equal 1, traces.length
29
- trace = traces.first
30
-
31
- # Excon validation
32
- assert_equal 2, trace.spans.length
33
- spans = trace.spans.to_a
34
- first_span = spans[0]
35
- second_span = spans[1]
36
-
37
- assert_equal :dalli_test, first_span.name
38
- assert_equal :memcache, second_span.name
27
+ spans = ::Instana.processor.queued_spans
28
+ assert_equal 2, spans.length
29
+
30
+ first_span = spans[1]
31
+ second_span = spans[0]
32
+
33
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
34
+
35
+ assert_equal :memcache, second_span[:n]
39
36
  assert_equal false, second_span.key?(:error)
40
37
  assert second_span[:p] == first_span[:s]
41
38
  assert first_span[:t] == first_span[:s]
@@ -60,18 +57,15 @@ class DalliTest < Minitest::Test
60
57
 
61
58
  assert result.is_a?(Integer)
62
59
 
63
- traces = Instana.processor.queued_traces
64
- assert_equal 1, traces.length
65
- trace = traces.first
60
+ spans = ::Instana.processor.queued_spans
61
+ assert_equal 2, spans.length
66
62
 
67
- # Excon validation
68
- assert_equal 2, trace.spans.length
69
- spans = trace.spans.to_a
70
- first_span = spans[0]
71
- second_span = spans[1]
63
+ first_span = spans[1]
64
+ second_span = spans[0]
72
65
 
73
- assert_equal :dalli_test, first_span.name
74
- assert_equal :memcache, second_span.name
66
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
67
+
68
+ assert_equal :memcache, second_span[:n]
75
69
  assert_equal false, second_span.key?(:error)
76
70
  assert second_span[:p] == first_span[:s]
77
71
  assert first_span[:t] == first_span[:s]
@@ -97,18 +91,15 @@ class DalliTest < Minitest::Test
97
91
 
98
92
  assert result.is_a?(Integer)
99
93
 
100
- traces = Instana.processor.queued_traces
101
- assert_equal 1, traces.length
102
- trace = traces.first
94
+ spans = ::Instana.processor.queued_spans
95
+ assert_equal 2, spans.length
96
+
97
+ first_span = spans[1]
98
+ second_span = spans[0]
103
99
 
104
- # Excon validation
105
- assert_equal 2, trace.spans.length
106
- spans = trace.spans.to_a
107
- first_span = spans[0]
108
- second_span = spans[1]
100
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
109
101
 
110
- assert_equal :dalli_test, first_span.name
111
- assert_equal :memcache, second_span.name
102
+ assert_equal :memcache, second_span[:n]
112
103
  assert_equal false, second_span.key?(:error)
113
104
  assert second_span[:p] == first_span[:s]
114
105
  assert first_span[:t] == first_span[:s]
@@ -134,18 +125,15 @@ class DalliTest < Minitest::Test
134
125
 
135
126
  assert_equal true, result
136
127
 
137
- traces = Instana.processor.queued_traces
138
- assert_equal 1, traces.length
139
- trace = traces.first
128
+ spans = ::Instana.processor.queued_spans
129
+ assert_equal 2, spans.length
140
130
 
141
- # Excon validation
142
- assert_equal 2, trace.spans.length
143
- spans = trace.spans.to_a
144
- first_span = spans[0]
145
- second_span = spans[1]
131
+ first_span = spans[1]
132
+ second_span = spans[0]
146
133
 
147
- assert_equal :dalli_test, first_span.name
148
- assert_equal :memcache, second_span.name
134
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
135
+
136
+ assert_equal :memcache, second_span[:n]
149
137
  assert_equal false, second_span.key?(:error)
150
138
  assert second_span[:p] == first_span[:s]
151
139
  assert first_span[:t] == first_span[:s]
@@ -171,18 +159,15 @@ class DalliTest < Minitest::Test
171
159
 
172
160
  assert_equal 1, result
173
161
 
174
- traces = Instana.processor.queued_traces
175
- assert_equal 1, traces.length
176
- trace = traces.first
162
+ spans = ::Instana.processor.queued_spans
163
+ assert_equal 2, spans.length
164
+
165
+ first_span = spans[1]
166
+ second_span = spans[0]
177
167
 
178
- # Excon validation
179
- assert_equal 2, trace.spans.length
180
- spans = trace.spans.to_a
181
- first_span = spans[0]
182
- second_span = spans[1]
168
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
183
169
 
184
- assert_equal :dalli_test, first_span.name
185
- assert_equal :memcache, second_span.name
170
+ assert_equal :memcache, second_span[:n]
186
171
  assert_equal false, second_span.key?(:error)
187
172
  assert second_span[:p] == first_span[:s]
188
173
  assert first_span[:t] == first_span[:s]
@@ -208,18 +193,15 @@ class DalliTest < Minitest::Test
208
193
 
209
194
  assert_equal 0, result
210
195
 
211
- traces = Instana.processor.queued_traces
212
- assert_equal 1, traces.length
213
- trace = traces.first
196
+ spans = ::Instana.processor.queued_spans
197
+ assert_equal 2, spans.length
214
198
 
215
- # Excon validation
216
- assert_equal 2, trace.spans.length
217
- spans = trace.spans.to_a
218
- first_span = spans[0]
219
- second_span = spans[1]
199
+ first_span = spans[1]
200
+ second_span = spans[0]
220
201
 
221
- assert_equal :dalli_test, first_span.name
222
- assert_equal :memcache, second_span.name
202
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
203
+
204
+ assert_equal :memcache, second_span[:n]
223
205
  assert_equal false, second_span.key?(:error)
224
206
  assert second_span[:p] == first_span[:s]
225
207
  assert first_span[:t] == first_span[:s]
@@ -244,18 +226,15 @@ class DalliTest < Minitest::Test
244
226
  @dc.get_multi(:one, :two, :three, :four)
245
227
  end
246
228
 
247
- traces = Instana.processor.queued_traces
248
- assert_equal 1, traces.length
249
- trace = traces.first
229
+ spans = ::Instana.processor.queued_spans
230
+ assert_equal 2, spans.length
231
+
232
+ first_span = spans[1]
233
+ second_span = spans[0]
250
234
 
251
- # Excon validation
252
- assert_equal 2, trace.spans.length
253
- spans = trace.spans.to_a
254
- first_span = spans[0]
255
- second_span = spans[1]
235
+ validate_sdk_span(first_span, {:name => :dalli_test, :type => :intermediate})
256
236
 
257
- assert_equal :dalli_test, first_span.name
258
- assert_equal :memcache, second_span.name
237
+ assert_equal :memcache, second_span[:n]
259
238
  assert_equal false, second_span.key?(:error)
260
239
  assert second_span[:p] == first_span[:s]
261
240
  assert first_span[:t] == first_span[:s]
@@ -22,41 +22,29 @@ class ExconTest < Minitest::Test
22
22
  connection.get(:path => '/?basic_get')
23
23
  end
24
24
 
25
- traces = Instana.processor.queued_traces
26
- assert_equal 2, traces.length
27
- rs_trace = traces[0]
28
- http_trace = traces[1]
25
+ spans = ::Instana.processor.queued_spans
26
+ assert_equal 3, spans.length
29
27
 
30
- # Excon validation
31
- assert_equal 2, http_trace.spans.length
32
- spans = http_trace.spans.to_a
33
- first_span = spans[0]
34
- second_span = spans[1]
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)
35
31
 
36
- # Span name validation
37
- assert_equal :sdk, first_span[:n]
38
- assert_equal :"excon-test", first_span[:data][:sdk][:name]
39
- assert_equal :excon, second_span[:n]
40
-
41
- # first_span is the parent of second_span
42
- assert_equal first_span.id, second_span[:p]
32
+ validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :intermediate})
43
33
 
44
34
  # data keys/values
45
- refute_nil second_span.key?(:data)
46
- refute_nil second_span[:data].key?(:http)
47
- assert_equal "http://127.0.0.1:6511/", second_span[:data][:http][:url]
48
- assert_equal 200, second_span[:data][:http][:status]
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]
49
39
 
50
40
  # excon backtrace not included by default check
51
- assert !second_span.key?(:stack)
41
+ assert !excon_span.key?(:stack)
52
42
 
53
- # Rack server trace validation
54
- assert_equal 1, rs_trace.spans.length
55
- rs_span = rs_trace.spans.to_a[0]
43
+ assert_equal sdk_span[:t], excon_span[:t]
44
+ assert_equal rack_span[:t], excon_span[:t]
56
45
 
57
- # Rack server trace should have the same trace ID
58
- assert_equal http_trace.id, rs_span[:t].to_i
59
- assert_equal rs_span[:p].to_i, second_span[:s]
46
+ assert_equal rack_span[:p], excon_span[:s]
47
+ assert_equal excon_span[:p], sdk_span[:s]
60
48
  end
61
49
 
62
50
  def test_basic_get_with_error
@@ -67,46 +55,37 @@ class ExconTest < Minitest::Test
67
55
  Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
68
56
  Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
69
57
 
70
- url = "http://127.0.0.1:6500"
58
+ url = "http://127.0.0.1:6511"
71
59
 
72
60
  begin
73
61
  connection = Excon.new(url)
74
62
  Instana.tracer.start_or_continue_trace('excon-test') do
75
- connection.get(:path => '/?basic_get')
63
+ connection.get(:path => '/error')
76
64
  end
77
65
  rescue
78
66
  end
79
67
 
80
- traces = Instana.processor.queued_traces
81
- assert_equal 1, traces.length
82
- http_trace = traces.first
68
+ spans = ::Instana.processor.queued_spans
69
+ assert_equal 3, spans.length
83
70
 
84
- # Excon validation
85
- assert_equal 2, http_trace.spans.length
86
- spans = http_trace.spans.to_a
87
- first_span = spans[0]
88
- second_span = spans[1]
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')
89
74
 
90
- # Span name validation
91
- assert_equal :sdk, first_span[:n]
92
- assert_equal :"excon-test", first_span[:data][:sdk][:name]
93
- assert_equal :excon, second_span[:n]
75
+ validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :intermediate})
94
76
 
95
- # first_span is the parent of second_span
96
- assert_equal first_span.id, second_span[:p]
97
-
98
- # data keys/values
99
- refute_nil second_span.key?(:data)
100
- refute_nil second_span[:data].key?(:http)
101
- assert_equal "http://127.0.0.1:6500/", second_span[:data][:http][:url]
102
- assert_equal nil, second_span[:data][:http][:status]
77
+ assert_equal sdk_span[:s], excon_span[:p]
78
+ assert_equal excon_span[:s], rack_span[:p]
103
79
 
104
- # excon span should include an error backtrace
105
- assert second_span.key?(:stack)
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]
106
85
 
107
86
  # error validation
108
- assert_equal true, second_span[:error]
109
- #assert_equal 1, second_span[:ec]
87
+ assert_equal true, excon_span[:error]
88
+ assert_equal 1, excon_span[:ec]
110
89
  end
111
90
 
112
91
  def test_pipelined_requests
@@ -125,47 +104,44 @@ class ExconTest < Minitest::Test
125
104
  connection.requests([request, request, request])
126
105
  end
127
106
 
128
- traces = Instana.processor.queued_traces
129
- assert_equal 4, traces.length
130
- http_trace = traces[3]
131
-
132
- # Excon validation
133
- assert_equal 4, http_trace.spans.length
134
- spans = http_trace.spans.to_a
135
- first_span = spans[0]
136
- second_span = spans[1]
137
- third_span = spans[2]
138
- fourth_span = spans[3]
139
-
140
- # Span name validation
141
- assert_equal :sdk, first_span[:n]
142
- assert_equal :"excon-test", first_span[:data][:sdk][:name]
143
- assert_equal :excon, second_span[:n]
144
- assert_equal :excon, third_span[:n]
145
- assert_equal :excon, fourth_span[:n]
146
-
147
- # first_span is the parent of second/third/fourth_span
148
- assert_equal first_span.id, second_span[:p]
149
- assert_equal first_span.id, third_span[:p]
150
- assert_equal first_span.id, fourth_span[:p]
107
+ spans = ::Instana.processor.queued_spans
108
+ assert_equal 7, spans.length
151
109
 
152
- # data keys/values
153
- refute_nil second_span.key?(:data)
154
- refute_nil second_span[:data].key?(:http)
155
- assert_equal "http://127.0.0.1:6511/", second_span[:data][:http][:url]
156
- assert_equal 200, second_span[:data][:http][:status]
157
- assert !second_span.key?(:stack)
158
-
159
- refute_nil third_span.key?(:data)
160
- refute_nil third_span[:data].key?(:http)
161
- assert_equal "http://127.0.0.1:6511/", third_span[:data][:http][:url]
162
- assert_equal 200, third_span[:data][:http][:status]
163
- assert !third_span.key?(:stack)
164
-
165
- refute_nil fourth_span.key?(:data)
166
- refute_nil fourth_span[:data].key?(:http)
167
- assert_equal "http://127.0.0.1:6511/", fourth_span[:data][:http][:url]
168
- assert_equal 200, fourth_span[:data][:http][:status]
169
- assert !fourth_span.key?(:stack)
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
170
146
  end
171
147
  end
@@ -5,39 +5,8 @@ class GrpcTest < Minitest::Test
5
5
  PingPongService::Stub.new('127.0.0.1:50051', :this_channel_is_insecure)
6
6
  end
7
7
 
8
- # The order of traces are non-deterministic, could not predict
9
- # which trace is server or client. This method is to choose the
10
- # right trace based on span's name
11
- def differentiate_trace(traces)
12
- trying_client = traces[0]
13
- trying_server = traces[1]
14
-
15
- try_successfully = trying_client.spans.any? do |span|
16
- span.name == :'rpc-client'
17
- end
18
-
19
- if try_successfully
20
- [trying_client, trying_server]
21
- else
22
- [trying_server, trying_client]
23
- end
24
- end
25
-
26
- def assert_client_trace(client_trace, call: '', call_type: '', error: nil)
27
- assert_equal 2, client_trace.spans.length
28
- spans = client_trace.spans.to_a
29
- first_span = spans[0]
30
- second_span = spans[1]
31
-
32
- # Span name validation
33
- assert_equal :sdk, first_span[:n]
34
- assert_equal :rpctests, first_span[:data][:sdk][:name]
35
- assert_equal :'rpc-client', second_span[:n]
36
-
37
- # first_span is the parent of second_span
38
- assert_equal first_span.id, second_span[:p]
39
-
40
- data = second_span[:data]
8
+ def assert_client_span(client_span, call: '', call_type: '', error: nil)
9
+ data = client_span[:data]
41
10
  assert_equal '127.0.0.1:50051', data[:rpc][:host]
42
11
  assert_equal :grpc, data[:rpc][:flavor]
43
12
  assert_equal call, data[:rpc][:call]
@@ -49,14 +18,11 @@ class GrpcTest < Minitest::Test
49
18
  end
50
19
  end
51
20
 
52
- def assert_server_trace(server_trace, call: '', call_type: '', error: nil)
53
- assert_equal 1, server_trace.spans.length
54
- span = server_trace.spans.to_a.first
55
-
21
+ def assert_server_span(server_span, call: '', call_type: '', error: nil)
56
22
  # Span name validation
57
- assert_equal :'rpc-server', span[:n]
23
+ assert_equal :'rpc-server', server_span[:n]
58
24
 
59
- data = span[:data]
25
+ data = server_span[:data]
60
26
  assert_equal :grpc, data[:rpc][:flavor]
61
27
  assert_equal call, data[:rpc][:call]
62
28
  assert_equal call_type, data[:rpc][:call_type]
@@ -83,22 +49,31 @@ class GrpcTest < Minitest::Test
83
49
  # Pause for a split second to allow traces to be queued
84
50
  sleep 0.2
85
51
 
86
- assert_equal 2, ::Instana.processor.queue_count
87
- client_trace, server_trace = differentiate_trace(
88
- Instana.processor.queued_traces
89
- )
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)
90
58
 
91
- assert_client_trace(
92
- client_trace,
93
- call: '/PingPongService/Ping',
94
- call_type: :request_response
59
+ assert_client_span(
60
+ client_span,
61
+ call: '/PingPongService/Ping',
62
+ call_type: :request_response
95
63
  )
96
64
 
97
- assert_server_trace(
98
- server_trace,
99
- call: '/PingPongService/Ping',
100
- call_type: :request_response
65
+ assert_server_span(
66
+ server_span,
67
+ call: '/PingPongService/Ping',
68
+ call_type: :request_response
101
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]
102
77
  end
103
78
 
104
79
  def test_client_streamer
@@ -119,22 +94,31 @@ class GrpcTest < Minitest::Test
119
94
  # Pause for a split second to allow traces to be queued
120
95
  sleep 0.2
121
96
 
122
- assert_equal 2, ::Instana.processor.queue_count
123
- client_trace, server_trace = differentiate_trace(
124
- Instana.processor.queued_traces
125
- )
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
126
101
 
127
- assert_client_trace(
128
- client_trace,
129
- call: '/PingPongService/PingWithClientStream',
130
- call_type: :client_streamer
102
+ validate_sdk_span(sdk_span)
103
+
104
+ assert_client_span(
105
+ client_span,
106
+ call: '/PingPongService/PingWithClientStream',
107
+ call_type: :client_streamer
131
108
  )
132
109
 
133
- assert_server_trace(
134
- server_trace,
135
- call: '/PingPongService/PingWithClientStream',
136
- call_type: :client_streamer
110
+ assert_server_span(
111
+ server_span,
112
+ call: '/PingPongService/PingWithClientStream',
113
+ call_type: :client_streamer
137
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]
138
122
  end
139
123
 
140
124
  def test_server_streamer
@@ -151,22 +135,31 @@ class GrpcTest < Minitest::Test
151
135
  # Pause for a split second to allow traces to be queued
152
136
  sleep 0.2
153
137
 
154
- assert_equal 2, ::Instana.processor.queue_count
155
- client_trace, server_trace = differentiate_trace(
156
- Instana.processor.queued_traces
157
- )
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
158
142
 
159
- assert_client_trace(
160
- client_trace,
161
- call: '/PingPongService/PingWithServerStream',
162
- call_type: :server_streamer
143
+ validate_sdk_span(sdk_span)
144
+
145
+ assert_client_span(
146
+ client_span,
147
+ call: '/PingPongService/PingWithServerStream',
148
+ call_type: :server_streamer
163
149
  )
164
150
 
165
- assert_server_trace(
166
- server_trace,
167
- call: '/PingPongService/PingWithServerStream',
168
- call_type: :server_streamer
151
+ assert_server_span(
152
+ server_span,
153
+ call: '/PingPongService/PingWithServerStream',
154
+ call_type: :server_streamer
169
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]
170
163
  end
171
164
 
172
165
  def test_bidi_streamer
@@ -187,22 +180,31 @@ class GrpcTest < Minitest::Test
187
180
  # Pause for a split second to allow traces to be queued
188
181
  sleep 0.2
189
182
 
190
- assert_equal 2, ::Instana.processor.queue_count
191
- client_trace, server_trace = differentiate_trace(
192
- Instana.processor.queued_traces
193
- )
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
194
187
 
195
- assert_client_trace(
196
- client_trace,
197
- call: '/PingPongService/PingWithBidiStream',
198
- call_type: :bidi_streamer
188
+ validate_sdk_span(sdk_span)
189
+
190
+ assert_client_span(
191
+ client_span,
192
+ call: '/PingPongService/PingWithBidiStream',
193
+ call_type: :bidi_streamer
199
194
  )
200
195
 
201
- assert_server_trace(
202
- server_trace,
203
- call: '/PingPongService/PingWithBidiStream',
204
- call_type: :bidi_streamer
196
+ assert_server_span(
197
+ server_span,
198
+ call: '/PingPongService/PingWithBidiStream',
199
+ call_type: :bidi_streamer
205
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]
206
208
  end
207
209
 
208
210
  def test_request_response_failure
@@ -217,23 +219,32 @@ class GrpcTest < Minitest::Test
217
219
  # Pause for a split second to allow traces to be queued
218
220
  sleep 0.2
219
221
 
220
- assert_equal 2, ::Instana.processor.queue_count
221
- client_trace, server_trace = differentiate_trace(
222
- Instana.processor.queued_traces
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'
223
234
  )
224
-
225
- assert_client_trace(
226
- client_trace,
227
- call: '/PingPongService/FailToPing',
228
- call_type: :request_response,
229
- error: 'Unexpected failed'
230
- )
231
- assert_server_trace(
232
- server_trace,
233
- call: '/PingPongService/FailToPing',
234
- call_type: :request_response,
235
- error: 'Unexpected failed'
235
+ assert_server_span(
236
+ server_span,
237
+ call: '/PingPongService/FailToPing',
238
+ call_type: :request_response,
239
+ error: 'Unexpected failed'
236
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]
237
248
  end
238
249
 
239
250
  def test_client_streamer_failure
@@ -252,24 +263,33 @@ class GrpcTest < Minitest::Test
252
263
  # Pause for a split second to allow traces to be queued
253
264
  sleep 0.2
254
265
 
255
- assert_equal 2, ::Instana.processor.queue_count
256
- client_trace, server_trace = differentiate_trace(
257
- Instana.processor.queued_traces
258
- )
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)
259
272
 
260
- assert_client_trace(
261
- client_trace,
273
+ assert_client_span(
274
+ client_span,
262
275
  call: '/PingPongService/FailToPingWithClientStream',
263
276
  call_type: :client_streamer,
264
277
  error: 'Unexpected failed'
265
278
  )
266
279
 
267
- assert_server_trace(
268
- server_trace,
280
+ assert_server_span(
281
+ server_span,
269
282
  call: '/PingPongService/FailToPingWithClientStream',
270
283
  call_type: :client_streamer,
271
284
  error: 'Unexpected failed'
272
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]
273
293
  end
274
294
 
275
295
  def test_server_streamer_failure
@@ -286,23 +306,32 @@ class GrpcTest < Minitest::Test
286
306
  # Pause for a split second to allow traces to be queued
287
307
  sleep 0.2
288
308
 
289
- assert_equal 2, ::Instana.processor.queue_count
290
- client_trace, server_trace = differentiate_trace(
291
- Instana.processor.queued_traces
292
- )
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)
293
315
 
294
- assert_client_trace(
295
- client_trace,
316
+ assert_client_span(
317
+ client_span,
296
318
  call: '/PingPongService/FailToPingWithServerStream',
297
319
  call_type: :server_streamer
298
320
  )
299
321
 
300
- assert_server_trace(
301
- server_trace,
322
+ assert_server_span(
323
+ server_span,
302
324
  call: '/PingPongService/FailToPingWithServerStream',
303
325
  call_type: :server_streamer,
304
326
  error: 'Unexpected failed'
305
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]
306
335
  end
307
336
 
308
337
  def test_bidi_streamer_failure
@@ -318,22 +347,31 @@ class GrpcTest < Minitest::Test
318
347
  # Pause for a split second to allow traces to be queued
319
348
  sleep 0.2
320
349
 
321
- assert_equal 2, ::Instana.processor.queue_count
322
- client_trace, server_trace = differentiate_trace(
323
- Instana.processor.queued_traces
324
- )
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
325
354
 
326
- assert_client_trace(
327
- client_trace,
355
+ validate_sdk_span(sdk_span)
356
+
357
+ assert_client_span(
358
+ client_span,
328
359
  call: '/PingPongService/FailToPingWithBidiStream',
329
360
  call_type: :bidi_streamer
330
361
  )
331
362
 
332
- assert_server_trace(
333
- server_trace,
363
+ assert_server_span(
364
+ server_span,
334
365
  call: '/PingPongService/FailToPingWithBidiStream',
335
366
  call_type: :bidi_streamer,
336
367
  error: 'Unexpected failed'
337
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]
338
376
  end
339
377
  end