instana 1.4.11 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8d2fe1c3a1066ce9cdf96311a5f8410ed3bc3287
4
- data.tar.gz: 5954ed7f8f68915123c5744aac205410396c46c4
3
+ metadata.gz: bead9a4a515329922c151505eae7f209c49be9d2
4
+ data.tar.gz: bb7eb569bb0127e6d245858f3bbe595b1c8a62d4
5
5
  SHA512:
6
- metadata.gz: c4716bb1f8e1dff2ae322bc6eead9bc7f6a2cebd364d11f6c098a320a6bfdb57d3dcc4a58ef4f8d2d1fad1c901ca6abc9998bd93b2db49a34bec6a914088c122
7
- data.tar.gz: dd5ba99e78b1096c24954c43f234e424e8e7a94aef533f827b607d6306aa9bbd16b34c3763d53f9813ef978561cab84f426825a5cf5c42e75678f01e9b761b94
6
+ metadata.gz: cbe325aa85a8bca25ae4aaa0cd4317d2476d9b475d1fbd497722ccd3ea54472482f42f78cc1d7d035c4305344fd3fbc9e8531feb1dd4dcd5208aab20c14f5ae6
7
+ data.tar.gz: 4cfd9167eec7ad906cea0259c238ed47efa07748a6ba8aaa8de243b4a957632576b8ffebc98ae308d729226c714d1a06bd7ac6c43676e17b1aefb017a575dc9d
data/.gitignore CHANGED
@@ -7,5 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /log/
10
11
  .ruby-version
11
12
  gemfiles/*.lock
@@ -13,10 +13,10 @@ end
13
13
  group :development do
14
14
  gem 'ruby-debug', :platforms => [:mri_18, :jruby]
15
15
  gem 'debugger', :platform => :mri_19
16
- gem 'byebug', :platforms => [:mri_20, :mri_21, :mri_22, :mri_23]
16
+ gem 'byebug', :platforms => [:mri_20, :mri_21, :mri_22, :mri_23, :mri_24]
17
17
  if RUBY_VERSION > '1.8.7'
18
18
  gem 'pry'
19
- gem 'pry-byebug', :platforms => [:mri_20, :mri_21, :mri_22, :mri_23]
19
+ gem 'pry-byebug', :platforms => [:mri_20, :mri_21, :mri_22, :mri_23, :mri_24]
20
20
  else
21
21
  gem 'pry', '0.9.12.4'
22
22
  end
@@ -27,6 +27,9 @@ gem "sinatra", '1.4.7'
27
27
  gem "cuba"
28
28
  gem "roda"
29
29
 
30
+ # gRPC
31
+ gem 'grpc'
32
+
30
33
  # HTTP Clients
31
34
  gem 'rest-client'
32
35
 
@@ -39,6 +39,7 @@ module Instana
39
39
  @config[:excon] = { :enabled => true }
40
40
  @config[:nethttp] = { :enabled => true }
41
41
  @config[:'rest-client'] = { :enabled => true }
42
+ @config[:grpc] = { :enabled => true }
42
43
  end
43
44
 
44
45
  def [](key)
@@ -0,0 +1,84 @@
1
+ call_types = [:request_response, :client_streamer, :server_streamer, :bidi_streamer]
2
+
3
+ if defined?(GRPC::ActiveCall) && ::Instana.config[:grpc][:enabled]
4
+ call_types.each do |call_type|
5
+ GRPC::ClientStub.class_eval <<-RUBY, __FILE__, __LINE__ + 1
6
+ def #{call_type}_with_instana(method, *others, **options)
7
+ kvs = { rpc: {} }
8
+
9
+ unless ::Instana.tracer.tracing?
10
+ return #{call_type}_without_instana(method, *others, **options)
11
+ end
12
+
13
+ kvs[:rpc][:flavor] = :grpc
14
+ kvs[:rpc][:host] = @host
15
+ kvs[:rpc][:call] = method
16
+ kvs[:rpc][:call_type] = :#{call_type}
17
+
18
+ ::Instana.tracer.log_entry(:'rpc-client', kvs)
19
+
20
+ context = ::Instana.tracer.context
21
+ if context
22
+ options[:metadata] = (options[:metadata] || {}).merge(
23
+ 'x-instana-t' => context.trace_id_header,
24
+ 'x-instana-s' => context.span_id_header
25
+ )
26
+ end
27
+
28
+ #{call_type}_without_instana(method, *others, **options)
29
+ rescue => e
30
+ kvs[:rpc][:error] = true
31
+ ::Instana.tracer.log_info(kvs)
32
+ ::Instana.tracer.log_error(e)
33
+ raise
34
+ ensure
35
+ ::Instana.tracer.log_exit(:'rpc-client', {})
36
+ end
37
+
38
+ alias #{call_type}_without_instana #{call_type}
39
+ alias #{call_type} #{call_type}_with_instana
40
+ RUBY
41
+ end
42
+ ::Instana.logger.warn 'Instrumenting GRPC client'
43
+ end
44
+
45
+ if defined?(GRPC::RpcDesc) && ::Instana.config[:grpc][:enabled]
46
+ call_types.each do |call_type|
47
+ GRPC::RpcDesc.class_eval <<-RUBY, __FILE__, __LINE__ + 1
48
+ def handle_#{call_type}_with_instana(active_call, mth)
49
+ kvs = { rpc: {} }
50
+ metadata = active_call.metadata
51
+
52
+ incoming_context = {}
53
+ if metadata.key?('x-instana-t')
54
+ incoming_context[:trace_id] = ::Instana::Util.header_to_id(metadata['x-instana-t'])
55
+ incoming_context[:span_id] = ::Instana::Util.header_to_id(metadata['x-instana-s']) if metadata.key?('x-instana-s')
56
+ incoming_context[:level] = metadata['x-instana-l'] if metadata.key?('x-instana-l')
57
+ end
58
+
59
+ kvs[:rpc][:flavor] = :grpc
60
+ kvs[:rpc][:host] = Socket.gethostname
61
+ kvs[:rpc][:call] = "/\#{mth.owner.service_name}/\#{name}"
62
+ kvs[:rpc][:call_type] = :#{call_type}
63
+ kvs[:rpc][:peer] = { address: active_call.peer }
64
+
65
+ ::Instana.tracer.log_start_or_continue(
66
+ :'rpc-server', kvs, incoming_context
67
+ )
68
+
69
+ handle_#{call_type}_without_instana(active_call, mth)
70
+ rescue => e
71
+ kvs[:rpc][:error] = true
72
+ ::Instana.tracer.log_info(kvs)
73
+ ::Instana.tracer.log_error(e)
74
+ raise
75
+ ensure
76
+ ::Instana.tracer.log_end(:'rpc-server', {}) if ::Instana.tracer.tracing?
77
+ end
78
+
79
+ alias handle_#{call_type}_without_instana handle_#{call_type}
80
+ alias handle_#{call_type} handle_#{call_type}_with_instana
81
+ RUBY
82
+ end
83
+ ::Instana.logger.warn 'Instrumenting GRPC server'
84
+ end
@@ -1,9 +1,11 @@
1
1
  module Instana
2
2
  class Span
3
- REGISTERED_SPANS = [ :actioncontroller, :actionview, :activerecord, :excon, :memcache, :'net-http', :rack, :render ].freeze
4
- ENTRY_SPANS = [ :rack ].freeze
5
- EXIT_SPANS = [ :'net-http', :excon, :activerecord ].freeze
6
- HTTP_SPANS = ENTRY_SPANS + EXIT_SPANS
3
+ REGISTERED_SPANS = [ :actioncontroller, :actionview, :activerecord, :excon,
4
+ :memcache, :'net-http', :rack, :render, :'rpc-client',
5
+ :'rpc-server' ].freeze
6
+ ENTRY_SPANS = [ :rack, :'rpc-server' ].freeze
7
+ EXIT_SPANS = [ :activerecord, :excon, :'net-http', :'rpc-client' ].freeze
8
+ HTTP_SPANS = [ :rack, :excon, :'net-http' ].freeze
7
9
 
8
10
  attr_accessor :parent
9
11
  attr_accessor :baggage
@@ -1,4 +1,4 @@
1
1
  module Instana
2
- VERSION = "1.4.11"
2
+ VERSION = "1.5.0"
3
3
  VERSION_FULL = "instana-#{VERSION}"
4
4
  end
@@ -0,0 +1,81 @@
1
+ require 'google/protobuf'
2
+
3
+ Google::Protobuf::DescriptorPool.generated_pool.build do
4
+ add_message "PingPongService.PingRequest" do
5
+ optional :message, :string, 1
6
+ end
7
+ add_message "PingPongService.PongReply" do
8
+ optional :message, :string, 1
9
+ end
10
+ end
11
+
12
+ module PingPongService
13
+ PingRequest = Google::Protobuf::DescriptorPool.generated_pool.lookup("PingPongService.PingRequest").msgclass
14
+ PongReply = Google::Protobuf::DescriptorPool.generated_pool.lookup("PingPongService.PongReply").msgclass
15
+ end
16
+ require 'grpc'
17
+
18
+ module PingPongService
19
+ # The greeting service definition.
20
+ class Service
21
+ include GRPC::GenericService
22
+
23
+ self.marshal_class_method = :encode
24
+ self.unmarshal_class_method = :decode
25
+ self.service_name = 'PingPongService'
26
+
27
+ rpc :Ping, PingRequest, PongReply
28
+ rpc :PingWithClientStream, stream(PingRequest), PongReply
29
+ rpc :PingWithServerStream, PingRequest, stream(PongReply)
30
+ rpc :PingWithBidiStream, stream(PingRequest), stream(PongReply)
31
+
32
+ rpc :FailToPing, PingRequest, PongReply
33
+ rpc :FailToPingWithClientStream, stream(PingRequest), PongReply
34
+ rpc :FailToPingWithServerStream, PingRequest, stream(PongReply)
35
+ rpc :FailToPingWithBidiStream, stream(PingRequest), stream(PongReply)
36
+ end
37
+
38
+ Stub = Service.rpc_stub_class
39
+ end
40
+
41
+ class PingPongServer < PingPongService::Service
42
+ def ping(ping_request, active_call)
43
+ PingPongService::PongReply.new(message: "Hello #{ping_request.message}")
44
+ end
45
+
46
+ def ping_with_client_stream(active_call)
47
+ message = ''
48
+ active_call.each_remote_read do |req|
49
+ message += req.message
50
+ end
51
+ PingPongService::PongReply.new(message: message)
52
+ end
53
+
54
+ def ping_with_server_stream(ping_request, active_call)
55
+ (0..5).map do |index|
56
+ PingPongService::PongReply.new(message: index.to_s)
57
+ end
58
+ end
59
+
60
+ def ping_with_bidi_stream(ping_requests)
61
+ ping_requests.map do |ping_request|
62
+ PingPongService::PongReply.new(message: ping_request.message)
63
+ end
64
+ end
65
+
66
+ def fail_to_ping(ping_request, active_call)
67
+ raise 'Unexpected failed'
68
+ end
69
+
70
+ def fail_to_ping_with_client_stream(active_call)
71
+ raise 'Unexpected failed'
72
+ end
73
+
74
+ def fail_to_ping_with_server_stream(ping_request, active_call)
75
+ raise 'Unexpected failed'
76
+ end
77
+
78
+ def fail_to_ping_with_bidi_stream(ping_requests)
79
+ raise 'Unexpected failed'
80
+ end
81
+ end
@@ -0,0 +1,317 @@
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
+ # 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.count
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]
41
+ assert_equal '127.0.0.1:50051', data[:rpc][:host]
42
+ assert_equal :grpc, data[:rpc][:flavor]
43
+ assert_equal call, data[:rpc][:call]
44
+ assert_equal call_type, data[:rpc][:call_type]
45
+
46
+ if error
47
+ assert_equal true, data[:rpc][:error]
48
+ assert_equal "2:RuntimeError: #{error}", data[:log][:message]
49
+ end
50
+ end
51
+
52
+ def assert_server_trace(server_trace, call: '', call_type: '', error: nil)
53
+ assert_equal 1, server_trace.spans.count
54
+ span = server_trace.spans.to_a.first
55
+
56
+ # Span name validation
57
+ assert_equal :'rpc-server', span[:n]
58
+
59
+ data = span[:data]
60
+ assert_equal :grpc, data[:rpc][:flavor]
61
+ assert_equal call, data[:rpc][:call]
62
+ assert_equal call_type, data[:rpc][:call_type]
63
+
64
+ if error
65
+ assert_equal true, data[:rpc][:error]
66
+ assert_equal error, data[:log][:message]
67
+ end
68
+ end
69
+
70
+ def test_request_response
71
+ clear_all!
72
+ response = nil
73
+
74
+ Instana.tracer.start_or_continue_trace(:rpctests) do
75
+ response = client_stub.ping(
76
+ PingPongService::PingRequest.new(message: 'Hello World')
77
+ )
78
+ end
79
+
80
+ assert 'Hello World', response.message
81
+
82
+ assert_equal 2, ::Instana.processor.queue_count
83
+ client_trace, server_trace = differentiate_trace(
84
+ Instana.processor.queued_traces
85
+ )
86
+
87
+ assert_client_trace(
88
+ client_trace,
89
+ call: '/PingPongService/Ping',
90
+ call_type: :request_response
91
+ )
92
+
93
+ assert_server_trace(
94
+ server_trace,
95
+ call: '/PingPongService/Ping',
96
+ call_type: :request_response
97
+ )
98
+ end
99
+
100
+ def test_client_streamer
101
+ clear_all!
102
+ response = nil
103
+
104
+ Instana.tracer.start_or_continue_trace(:rpctests) do
105
+ response = client_stub.ping_with_client_stream(
106
+ (0..5).map do |index|
107
+ PingPongService::PingRequest.new(message: index.to_s)
108
+ end
109
+ )
110
+ end
111
+
112
+ assert '01234', response.message
113
+
114
+ assert_equal 2, ::Instana.processor.queue_count
115
+ client_trace, server_trace = differentiate_trace(
116
+ Instana.processor.queued_traces
117
+ )
118
+
119
+ assert_client_trace(
120
+ client_trace,
121
+ call: '/PingPongService/PingWithClientStream',
122
+ call_type: :client_streamer
123
+ )
124
+
125
+ assert_server_trace(
126
+ server_trace,
127
+ call: '/PingPongService/PingWithClientStream',
128
+ call_type: :client_streamer
129
+ )
130
+ end
131
+
132
+ def test_server_streamer
133
+ clear_all!
134
+ responses = []
135
+
136
+ Instana.tracer.start_or_continue_trace(:rpctests) do
137
+ responses = client_stub.ping_with_server_stream(
138
+ PingPongService::PingRequest.new(message: 'Hello World')
139
+ )
140
+ end
141
+ sleep 1
142
+
143
+ assert %w(0 1 2 3 4), responses.map(&:message)
144
+
145
+ assert_equal 2, ::Instana.processor.queue_count
146
+ client_trace, server_trace = differentiate_trace(
147
+ Instana.processor.queued_traces
148
+ )
149
+
150
+ assert_client_trace(
151
+ client_trace,
152
+ call: '/PingPongService/PingWithServerStream',
153
+ call_type: :server_streamer
154
+ )
155
+
156
+ assert_server_trace(
157
+ server_trace,
158
+ call: '/PingPongService/PingWithServerStream',
159
+ call_type: :server_streamer
160
+ )
161
+ end
162
+
163
+ def test_bidi_streamer
164
+ clear_all!
165
+ responses = []
166
+
167
+ Instana.tracer.start_or_continue_trace(:rpctests) do
168
+ responses = client_stub.ping_with_bidi_stream(
169
+ (0..5).map do |index|
170
+ PingPongService::PingRequest.new(message: (index * 2).to_s)
171
+ end
172
+ )
173
+ end
174
+ sleep 1
175
+
176
+ assert %w(0 2 4 6 8), responses.to_a.map(&:message)
177
+
178
+ assert_equal 2, ::Instana.processor.queue_count
179
+ client_trace, server_trace = differentiate_trace(
180
+ Instana.processor.queued_traces
181
+ )
182
+
183
+ assert_client_trace(
184
+ client_trace,
185
+ call: '/PingPongService/PingWithBidiStream',
186
+ call_type: :bidi_streamer
187
+ )
188
+
189
+ assert_server_trace(
190
+ server_trace,
191
+ call: '/PingPongService/PingWithBidiStream',
192
+ call_type: :bidi_streamer
193
+ )
194
+ end
195
+
196
+ def test_request_response_failure
197
+ clear_all!
198
+ Instana.tracer.start_or_continue_trace(:rpctests) do
199
+ begin
200
+ client_stub.fail_to_ping( PingPongService::PingRequest.new(message: 'Hello World'))
201
+ rescue
202
+ end
203
+ end
204
+
205
+ assert_equal 2, ::Instana.processor.queue_count
206
+ client_trace, server_trace = differentiate_trace(
207
+ Instana.processor.queued_traces
208
+ )
209
+
210
+ assert_client_trace(
211
+ client_trace,
212
+ call: '/PingPongService/FailToPing',
213
+ call_type: :request_response,
214
+ error: 'Unexpected failed'
215
+ )
216
+ assert_server_trace(
217
+ server_trace,
218
+ call: '/PingPongService/FailToPing',
219
+ call_type: :request_response,
220
+ error: 'Unexpected failed'
221
+ )
222
+ end
223
+
224
+ def test_client_streamer_failure
225
+ clear_all!
226
+ Instana.tracer.start_or_continue_trace(:rpctests) do
227
+ begin
228
+ client_stub.fail_to_ping_with_client_stream(
229
+ (0..5).map do |index|
230
+ PingPongService::PingRequest.new(message: index.to_s)
231
+ end
232
+ )
233
+ rescue
234
+ end
235
+ end
236
+
237
+ assert_equal 2, ::Instana.processor.queue_count
238
+ client_trace, server_trace = differentiate_trace(
239
+ Instana.processor.queued_traces
240
+ )
241
+
242
+ assert_client_trace(
243
+ client_trace,
244
+ call: '/PingPongService/FailToPingWithClientStream',
245
+ call_type: :client_streamer,
246
+ error: 'Unexpected failed'
247
+ )
248
+
249
+ assert_server_trace(
250
+ server_trace,
251
+ call: '/PingPongService/FailToPingWithClientStream',
252
+ call_type: :client_streamer,
253
+ error: 'Unexpected failed'
254
+ )
255
+ end
256
+
257
+ def test_server_streamer_failure
258
+ clear_all!
259
+ Instana.tracer.start_or_continue_trace(:rpctests) do
260
+ begin
261
+ client_stub.fail_to_ping_with_server_stream(
262
+ PingPongService::PingRequest.new(message: 'Hello World')
263
+ )
264
+ rescue
265
+ end
266
+ end
267
+ sleep 1
268
+
269
+ assert_equal 2, ::Instana.processor.queue_count
270
+ client_trace, server_trace = differentiate_trace(
271
+ Instana.processor.queued_traces
272
+ )
273
+
274
+ assert_client_trace(
275
+ client_trace,
276
+ call: '/PingPongService/FailToPingWithServerStream',
277
+ call_type: :server_streamer
278
+ )
279
+
280
+ assert_server_trace(
281
+ server_trace,
282
+ call: '/PingPongService/FailToPingWithServerStream',
283
+ call_type: :server_streamer,
284
+ error: 'Unexpected failed'
285
+ )
286
+ end
287
+
288
+ def test_bidi_streamer_failure
289
+ clear_all!
290
+ Instana.tracer.start_or_continue_trace(:rpctests) do
291
+ client_stub.fail_to_ping_with_bidi_stream(
292
+ (0..5).map do |index|
293
+ PingPongService::PingRequest.new(message: (index * 2).to_s)
294
+ end
295
+ )
296
+ end
297
+ sleep 1
298
+
299
+ assert_equal 2, ::Instana.processor.queue_count
300
+ client_trace, server_trace = differentiate_trace(
301
+ Instana.processor.queued_traces
302
+ )
303
+
304
+ assert_client_trace(
305
+ client_trace,
306
+ call: '/PingPongService/FailToPingWithBidiStream',
307
+ call_type: :bidi_streamer
308
+ )
309
+
310
+ assert_server_trace(
311
+ server_trace,
312
+ call: '/PingPongService/FailToPingWithBidiStream',
313
+ call_type: :bidi_streamer,
314
+ error: 'Unexpected failed'
315
+ )
316
+ end
317
+ end
@@ -0,0 +1,20 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../apps/grpc_server.rb')
2
+
3
+ ::Instana.logger.info "Booting instrumented gRPC server on port 50051 for tests."
4
+
5
+ grpc_thread = Thread.new do
6
+ s = GRPC::RpcServer.new
7
+ Thread.current[:server] = s
8
+
9
+ s.add_http2_port('127.0.0.1:50051', :this_port_is_insecure)
10
+ s.handle(PingPongServer)
11
+ s.run_till_terminated
12
+ end
13
+
14
+ Minitest.after_run do
15
+ ::Instana.logger.info "Killing gRPC server"
16
+ grpc_thread[:server].stop
17
+ sleep 2
18
+ end
19
+
20
+ sleep 2
data/test/test_helper.rb CHANGED
@@ -21,6 +21,8 @@ when /rails50|rails42|rails32/
21
21
  # Allow localhost calls to the internal rails servers
22
22
  ::WebMock.disable_net_connect!(allow_localhost: true)
23
23
  require './test/servers/rails_3205'
24
+ when /libraries/
25
+ require './test/servers/grpc_50051.rb'
24
26
  end
25
27
 
26
28
  Minitest::Reporters.use! MiniTest::Reporters::SpecReporter.new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.11
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Giacomo Lombardo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-06-21 00:00:00.000000000 Z
11
+ date: 2017-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -201,6 +201,7 @@ files:
201
201
  - lib/instana/instrumentation.rb
202
202
  - lib/instana/instrumentation/dalli.rb
203
203
  - lib/instana/instrumentation/excon.rb
204
+ - lib/instana/instrumentation/grpc.rb
204
205
  - lib/instana/instrumentation/net-http.rb
205
206
  - lib/instana/instrumentation/rack.rb
206
207
  - lib/instana/instrumentation/rest-client.rb
@@ -222,6 +223,7 @@ files:
222
223
  - log/.keep
223
224
  - test/agent/agent_test.rb
224
225
  - test/apps/cuba.rb
226
+ - test/apps/grpc_server.rb
225
227
  - test/apps/roda.rb
226
228
  - test/apps/sinatra.rb
227
229
  - test/config_test.rb
@@ -239,9 +241,11 @@ files:
239
241
  - test/instana_test.rb
240
242
  - test/instrumentation/dalli_test.rb
241
243
  - test/instrumentation/excon_test.rb
244
+ - test/instrumentation/grpc_test.rb
242
245
  - test/instrumentation/net-http_test.rb
243
246
  - test/instrumentation/rest-client_test.rb
244
247
  - test/models/block.rb
248
+ - test/servers/grpc_50051.rb
245
249
  - test/servers/rackapp_6511.rb
246
250
  - test/servers/rails_3205.rb
247
251
  - test/test_helper.rb
@@ -277,6 +281,7 @@ summary: Ruby sensor for Instana
277
281
  test_files:
278
282
  - test/agent/agent_test.rb
279
283
  - test/apps/cuba.rb
284
+ - test/apps/grpc_server.rb
280
285
  - test/apps/roda.rb
281
286
  - test/apps/sinatra.rb
282
287
  - test/config_test.rb
@@ -294,9 +299,11 @@ test_files:
294
299
  - test/instana_test.rb
295
300
  - test/instrumentation/dalli_test.rb
296
301
  - test/instrumentation/excon_test.rb
302
+ - test/instrumentation/grpc_test.rb
297
303
  - test/instrumentation/net-http_test.rb
298
304
  - test/instrumentation/rest-client_test.rb
299
305
  - test/models/block.rb
306
+ - test/servers/grpc_50051.rb
300
307
  - test/servers/rackapp_6511.rb
301
308
  - test/servers/rails_3205.rb
302
309
  - test/test_helper.rb