instana 1.217.0 → 2.0.0

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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +101 -225
  3. data/.tekton/.currency/scripts/generate_report.py +194 -22
  4. data/.tekton/pipeline.yaml +65 -152
  5. data/.tekton/prepuller-restart-service-account.yaml +31 -0
  6. data/.tekton/ruby-tracer-prepuller-cronjob.yaml +20 -0
  7. data/.tekton/ruby-tracer-prepuller.yaml +27 -26
  8. data/.tekton/task.yaml +31 -27
  9. data/Gemfile +5 -0
  10. data/README.md +2 -1
  11. data/Rakefile +1 -1
  12. data/examples/otel.rb +98 -0
  13. data/examples/tracing.rb +1 -0
  14. data/gemfiles/rails_61.gemfile +1 -0
  15. data/gemfiles/rails_70.gemfile +1 -0
  16. data/instana.gemspec +5 -0
  17. data/lib/instana/base.rb +4 -2
  18. data/lib/instana/instrumentation/action_cable.rb +8 -4
  19. data/lib/instana/instrumentation/action_controller.rb +2 -4
  20. data/lib/instana/instrumentation/action_mailer.rb +1 -1
  21. data/lib/instana/instrumentation/action_view.rb +4 -4
  22. data/lib/instana/instrumentation/active_job.rb +26 -13
  23. data/lib/instana/instrumentation/active_record.rb +1 -1
  24. data/lib/instana/instrumentation/aws_sdk_dynamodb.rb +1 -1
  25. data/lib/instana/instrumentation/aws_sdk_lambda.rb +1 -1
  26. data/lib/instana/instrumentation/aws_sdk_s3.rb +1 -1
  27. data/lib/instana/instrumentation/aws_sdk_sns.rb +1 -1
  28. data/lib/instana/instrumentation/aws_sdk_sqs.rb +1 -1
  29. data/lib/instana/instrumentation/dalli.rb +1 -1
  30. data/lib/instana/instrumentation/excon.rb +2 -2
  31. data/lib/instana/instrumentation/graphql.rb +3 -3
  32. data/lib/instana/instrumentation/grpc.rb +14 -13
  33. data/lib/instana/instrumentation/mongo.rb +3 -3
  34. data/lib/instana/instrumentation/net-http.rb +5 -4
  35. data/lib/instana/instrumentation/rack.rb +36 -4
  36. data/lib/instana/instrumentation/redis.rb +1 -1
  37. data/lib/instana/instrumentation/resque.rb +10 -8
  38. data/lib/instana/instrumentation/rest-client.rb +4 -4
  39. data/lib/instana/instrumentation/sequel.rb +3 -3
  40. data/lib/instana/instrumentation/shoryuken.rb +4 -1
  41. data/lib/instana/instrumentation/sidekiq-client.rb +21 -19
  42. data/lib/instana/instrumentation/sidekiq-worker.rb +22 -21
  43. data/lib/instana/instrumented_logger.rb +1 -1
  44. data/lib/instana/samplers/result.rb +32 -0
  45. data/lib/instana/samplers/samplers.rb +76 -0
  46. data/lib/instana/serverless.rb +4 -2
  47. data/lib/instana/setup.rb +4 -5
  48. data/lib/instana/trace/export.rb +36 -0
  49. data/lib/instana/{tracing → trace}/processor.rb +19 -15
  50. data/lib/instana/trace/span.rb +532 -0
  51. data/lib/instana/{tracing → trace}/span_context.rb +17 -8
  52. data/lib/instana/trace/span_kind.rb +51 -0
  53. data/lib/instana/trace/span_limits.rb +63 -0
  54. data/lib/instana/{tracer.rb → trace/tracer.rb} +106 -54
  55. data/lib/instana/trace/tracer_provider.rb +198 -0
  56. data/lib/instana/trace.rb +74 -0
  57. data/lib/instana/util.rb +11 -0
  58. data/lib/instana/version.rb +1 -1
  59. data/test/frameworks/sinatra_test.rb +2 -1
  60. data/test/instrumentation/aws_test.rb +7 -7
  61. data/test/instrumentation/dalli_test.rb +8 -8
  62. data/test/instrumentation/excon_test.rb +3 -3
  63. data/test/instrumentation/graphql_test.rb +4 -4
  64. data/test/instrumentation/grpc_test.rb +8 -8
  65. data/test/instrumentation/mongo_test.rb +1 -1
  66. data/test/instrumentation/net_http_test.rb +6 -6
  67. data/test/instrumentation/rails_action_cable_test.rb +2 -2
  68. data/test/instrumentation/rails_action_mailer_test.rb +1 -1
  69. data/test/instrumentation/rails_active_job_test.rb +1 -1
  70. data/test/instrumentation/rails_active_record_database_missing_test.rb +2 -3
  71. data/test/instrumentation/rails_active_record_test.rb +8 -7
  72. data/test/instrumentation/redis_test.rb +7 -7
  73. data/test/instrumentation/resque_test.rb +5 -5
  74. data/test/instrumentation/rest_client_test.rb +1 -2
  75. data/test/instrumentation/sequel_test.rb +12 -6
  76. data/test/instrumentation/sidekiq-client_test.rb +2 -2
  77. data/test/instrumentation/sidekiq-worker_test.rb +2 -2
  78. data/test/{tracing → trace}/custom_test.rb +32 -25
  79. data/test/{tracing → trace}/id_management_test.rb +0 -2
  80. data/test/{tracing → trace}/instrumented_logger_test.rb +1 -1
  81. data/test/{tracing → trace}/processor_test.rb +6 -6
  82. data/test/{tracing → trace}/span_context_test.rb +3 -3
  83. data/test/{tracing → trace}/span_test.rb +7 -7
  84. data/test/{tracing → trace}/tracer_async_test.rb +43 -30
  85. data/test/trace/tracer_provider_test.rb +148 -0
  86. data/test/{tracing → trace}/tracer_test.rb +48 -37
  87. metadata +105 -32
  88. data/examples/opentracing.rb +0 -35
  89. data/lib/instana/open_tracing/carrier.rb +0 -7
  90. data/lib/instana/open_tracing/instana_tracer.rb +0 -99
  91. data/lib/instana/tracing/span.rb +0 -431
  92. data/lib/opentracing.rb +0 -32
  93. data/test/tracing/opentracing_test.rb +0 -382
@@ -15,7 +15,7 @@ class TracerTest < Minitest::Test
15
15
  ::Instana.config[:tracing][:enabled] = false
16
16
  assert_equal false, ::Instana.tracer.tracing?
17
17
 
18
- ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
18
+ ::Instana.tracer.in_span(:rack, attributes: {:one => 1}) do
19
19
  assert_equal false, ::Instana.tracer.tracing?
20
20
  end
21
21
 
@@ -27,7 +27,7 @@ class TracerTest < Minitest::Test
27
27
 
28
28
  assert_equal false, ::Instana.tracer.tracing?
29
29
 
30
- ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
30
+ ::Instana.tracer.in_span(:rack, attributes: {:one => 1}) do
31
31
  assert_equal true, ::Instana.tracer.tracing?
32
32
  sleep 0.1
33
33
  end
@@ -53,7 +53,7 @@ class TracerTest < Minitest::Test
53
53
 
54
54
  ipv4 = '111.111.111.111'
55
55
 
56
- ::Instana.tracer.start_or_continue_trace(:rack, {:ipaddr => ipv4}) do
56
+ ::Instana.tracer.in_span(:rack, attributes: {:ipaddr => ipv4}) do
57
57
  assert_equal true, ::Instana.tracer.tracing?
58
58
  sleep 0.1
59
59
  end
@@ -77,10 +77,10 @@ class TracerTest < Minitest::Test
77
77
  clear_all!
78
78
  exception_raised = false
79
79
  begin
80
- ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
81
- raise Exception.new('Error in block - this should continue to propogate outside of tracing')
80
+ ::Instana.tracer.in_span(:rack, attributes: {:one => 1}) do
81
+ raise StandardError, 'Error in block - this should continue to propogate outside of tracing'
82
82
  end
83
- rescue Exception
83
+ rescue StandardError
84
84
  exception_raised = true
85
85
  end
86
86
 
@@ -92,7 +92,7 @@ class TracerTest < Minitest::Test
92
92
  first_span = spans.first
93
93
  assert_equal :rack, first_span[:n]
94
94
  assert first_span[:ts].is_a?(Integer)
95
- assert first_span[:ts] > 0
95
+ assert first_span[:ts].positive?
96
96
  assert first_span[:d].is_a?(Integer)
97
97
  assert first_span[:d].between?(0, 5)
98
98
  assert first_span.key?(:data)
@@ -105,9 +105,9 @@ class TracerTest < Minitest::Test
105
105
 
106
106
  def test_complex_trace_block
107
107
  clear_all!
108
- ::Instana.tracer.start_or_continue_trace(:rack, {:one => 1}) do
108
+ ::Instana.tracer.in_span(:rack, attributes: {:one => 1}) do
109
109
  sleep 0.2
110
- ::Instana.tracer.trace(:sub_block, {:sub_two => 2}) do
110
+ ::Instana.tracer.in_span(:sub_block, attributes: {:sub_two => 2}) do
111
111
  sleep 0.2
112
112
  end
113
113
  end
@@ -132,9 +132,9 @@ class TracerTest < Minitest::Test
132
132
 
133
133
  def test_custom_complex_trace_block
134
134
  clear_all!
135
- ::Instana.tracer.start_or_continue_trace(:root_span, {:one => 1}) do
135
+ ::Instana.tracer.in_span(:root_span, attributes: {:one => 1}) do
136
136
  sleep 0.2
137
- ::Instana.tracer.trace(:sub_span, {:sub_two => 2}) do
137
+ ::Instana.tracer.in_span(:sub_span, attributes: {:sub_two => 2}) do
138
138
  sleep 0.2
139
139
  end
140
140
  end
@@ -167,11 +167,12 @@ class TracerTest < Minitest::Test
167
167
 
168
168
  assert_equal false, ::Instana.tracer.tracing?
169
169
  # Start tracing
170
- ::Instana.tracer.log_start_or_continue(:rack, {:one => 1})
170
+ span = ::Instana.tracer.start_span(:rack, attributes: {:one => 1})
171
171
  assert_equal true, ::Instana.tracer.tracing?
172
- ::Instana.tracer.log_info({:info_logged => 1})
172
+ span.set_tags({:info_logged => 1})
173
173
  # End tracing
174
- ::Instana.tracer.log_end(:rack, {:close_one => 1})
174
+ span.set_tags({:close_one => 1})
175
+ span.finish
175
176
  assert_equal false, ::Instana.tracer.tracing?
176
177
 
177
178
  spans = ::Instana.processor.queued_spans
@@ -184,20 +185,25 @@ class TracerTest < Minitest::Test
184
185
  assert_equal false, ::Instana.tracer.tracing?
185
186
 
186
187
  # Start tracing
187
- ::Instana.tracer.log_start_or_continue(:rack, {:one => 1})
188
+ span = ::Instana.tracer.start_span(:rack, attributes: {:one => 1})
188
189
  assert_equal true, ::Instana.tracer.tracing?
189
- ::Instana.tracer.log_info({:info_logged => 1})
190
+ span.set_tags({:info_logged => 1})
190
191
 
191
- # Start tracing a sub span
192
- ::Instana.tracer.log_entry(:sub_task)
192
+ # Start tracing a sub span with context propagation
193
+ span1 = ::Instana::Trace.with_span(span) do
194
+ ::Instana.tracer.start_span(:sub_task)
195
+ end
193
196
  assert_equal true, ::Instana.tracer.tracing?
194
- ::Instana.tracer.log_info({:sub_task_info => 1})
197
+ span1.set_tags({:sub_task_info => 1})
195
198
  # Exit from the sub span
196
- ::Instana.tracer.log_exit(:sub_task, {:sub_task_exit_info => 1})
199
+ span1.set_tags({:sub_task_exit_info => 1})
200
+
201
+ span1.finish
197
202
  assert_equal true, ::Instana.tracer.tracing?
198
203
 
199
204
  # End tracing
200
- ::Instana.tracer.log_end(:rack, {:close_one => 1})
205
+ span.set_tags({:close_one => 1})
206
+ span.finish
201
207
  assert_equal false, ::Instana.tracer.tracing?
202
208
 
203
209
  spans = ::Instana.processor.queued_spans
@@ -227,12 +233,12 @@ class TracerTest < Minitest::Test
227
233
  clear_all!
228
234
  exception_raised = false
229
235
  begin
230
- ::Instana.tracer.start_or_continue_trace(:test_trace, {:one => 1}) do
231
- ::Instana.tracer.trace(:test_trace_two) do
232
- raise Exception.new("Block exception test error")
236
+ ::Instana.tracer.in_span(:test_trace, attributes: {:one => 1}) do
237
+ ::Instana.tracer.in_span(:test_trace_two) do
238
+ raise StandardError, "Block exception test error"
233
239
  end
234
240
  end
235
- rescue Exception
241
+ rescue StandardError
236
242
  exception_raised = true
237
243
  end
238
244
 
@@ -255,10 +261,14 @@ class TracerTest < Minitest::Test
255
261
 
256
262
  def test_low_level_error_logging
257
263
  clear_all!
258
- ::Instana.tracer.log_start_or_continue(:test_trace, {:one => 1})
259
- ::Instana.tracer.log_info({:info_logged => 1})
260
- ::Instana.tracer.log_error(Exception.new("Low level tracing api error"))
261
- ::Instana.tracer.log_end(:test_trace, {:close_one => 1})
264
+ span = ::Instana.tracer.start_span(:test_trace, attributes: {:one => 1})
265
+ span.set_tags({:info_logged => 1})
266
+ span.record_exception(Exception.new("Low level tracing api error"))
267
+ span.set_tags({:close_one => 1})
268
+ span.finish
269
+ # ::Instana.tracer.log_info({:info_logged => 1})
270
+ # ::Instana.tracer.log_error(Exception.new("Low level tracing api error"))
271
+ # ::Instana.tracer.log_end(:test_trace, {:close_one => 1})
262
272
 
263
273
  spans = ::Instana.processor.queued_spans
264
274
  assert_equal 1, spans.length
@@ -294,16 +304,17 @@ class TracerTest < Minitest::Test
294
304
  clear_all!
295
305
 
296
306
  refute ::Instana.tracer.tracing_span?(:rack)
297
- ::Instana.tracer.log_start_or_continue(:rack)
307
+ ::Instana.tracer.start_span(:rack)
298
308
  assert ::Instana.tracer.tracing_span?(:rack)
299
309
  end
300
310
 
301
311
  def test_log_exit_warn_span_name
302
312
  logger = Minitest::Mock.new
303
313
  logger.expect(:warn, true, [String])
304
- subject = Instana::Tracer.new(logger: logger)
305
314
 
306
- subject.log_start_or_continue(:sample)
315
+ subject = Instana::Tracer.new(nil, nil, ::Instana::Trace::TracerProvider.new, logger)
316
+
317
+ subject.start_span(:sample)
307
318
  subject.log_exit(:roda)
308
319
 
309
320
  logger.verify
@@ -314,9 +325,9 @@ class TracerTest < Minitest::Test
314
325
 
315
326
  logger = Minitest::Mock.new
316
327
  logger.expect(:warn, true, [String])
317
- subject = Instana::Tracer.new(logger: logger)
328
+ subject = Instana::Tracer.new(nil, nil, ::Instana::Trace::TracerProvider.new, logger)
318
329
 
319
- subject.log_start_or_continue(:sample)
330
+ subject.start_span(:sample)
320
331
  subject.log_end(:roda)
321
332
 
322
333
  logger.verify
@@ -325,7 +336,7 @@ class TracerTest < Minitest::Test
325
336
  def test_log_entry_span
326
337
  clear_all!
327
338
 
328
- subject = Instana::Tracer.new
339
+ subject = Instana::Tracer.new(nil, nil, ::Instana::Trace::TracerProvider.new)
329
340
  span = Instana::Span.new(:rack)
330
341
 
331
342
  subject.log_entry(:sample, {}, ::Instana::Util.now_in_ms, span)
@@ -336,8 +347,8 @@ class TracerTest < Minitest::Test
336
347
  def test_log_entry_span_context
337
348
  clear_all!
338
349
 
339
- subject = Instana::Tracer.new
340
- span_context = Instana::SpanContext.new('test', 'test')
350
+ subject = Instana::Tracer.new(nil, nil, nil)
351
+ span_context = Instana::SpanContext.new(trace_id: 'test', span_id: 'test')
341
352
 
342
353
  subject.log_entry(:sample, {}, ::Instana::Util.now_in_ms, span_context)
343
354
  assert subject.tracing?
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instana
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.217.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Giacomo Lombardo
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-11-13 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: bundler
@@ -80,6 +79,34 @@ dependencies:
80
79
  - - ">="
81
80
  - !ruby/object:Gem::Version
82
81
  version: '0'
82
+ - !ruby/object:Gem::Dependency
83
+ name: irb
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ - !ruby/object:Gem::Dependency
97
+ name: benchmark
98
+ requirement: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
83
110
  - !ruby/object:Gem::Dependency
84
111
  name: base64
85
112
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +121,20 @@ dependencies:
94
121
  - - ">="
95
122
  - !ruby/object:Gem::Version
96
123
  version: '0.1'
124
+ - !ruby/object:Gem::Dependency
125
+ name: logger
126
+ requirement: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ type: :runtime
132
+ prerelease: false
133
+ version_requirements: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
97
138
  - !ruby/object:Gem::Dependency
98
139
  name: concurrent-ruby
99
140
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +177,34 @@ dependencies:
136
177
  - - ">="
137
178
  - !ruby/object:Gem::Version
138
179
  version: 1.2.2
180
+ - !ruby/object:Gem::Dependency
181
+ name: opentelemetry-api
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '1.4'
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '1.4'
194
+ - !ruby/object:Gem::Dependency
195
+ name: opentelemetry-common
196
+ requirement: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
201
+ type: :runtime
202
+ prerelease: false
203
+ version_requirements: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ">="
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
139
208
  - !ruby/object:Gem::Dependency
140
209
  name: oj
141
210
  requirement: !ruby/object:Gem::Requirement
@@ -182,6 +251,8 @@ files:
182
251
  - ".tekton/github-webhook-ingress.yaml"
183
252
  - ".tekton/pipeline.yaml"
184
253
  - ".tekton/pipelinerun.yaml"
254
+ - ".tekton/prepuller-restart-service-account.yaml"
255
+ - ".tekton/ruby-tracer-prepuller-cronjob.yaml"
185
256
  - ".tekton/ruby-tracer-prepuller.yaml"
186
257
  - ".tekton/run_unittests.sh"
187
258
  - ".tekton/scheduled-eventlistener.yaml"
@@ -199,7 +270,7 @@ files:
199
270
  - bin/setup
200
271
  - docker-compose.yml
201
272
  - download.sh
202
- - examples/opentracing.rb
273
+ - examples/otel.rb
203
274
  - examples/tracing.rb
204
275
  - extras/license_header.rb
205
276
  - gemfiles/.bundle/config
@@ -334,9 +405,9 @@ files:
334
405
  - lib/instana/instrumentation/sidekiq-worker.rb
335
406
  - lib/instana/instrumented_logger.rb
336
407
  - lib/instana/logger_delegator.rb
337
- - lib/instana/open_tracing/carrier.rb
338
- - lib/instana/open_tracing/instana_tracer.rb
339
408
  - lib/instana/rack.rb
409
+ - lib/instana/samplers/result.rb
410
+ - lib/instana/samplers/samplers.rb
340
411
  - lib/instana/secrets.rb
341
412
  - lib/instana/serverless.rb
342
413
  - lib/instana/setup.rb
@@ -349,13 +420,17 @@ files:
349
420
  - lib/instana/snapshot/google_cloud_run_process.rb
350
421
  - lib/instana/snapshot/lambda_function.rb
351
422
  - lib/instana/snapshot/ruby_process.rb
352
- - lib/instana/tracer.rb
353
- - lib/instana/tracing/processor.rb
354
- - lib/instana/tracing/span.rb
355
- - lib/instana/tracing/span_context.rb
423
+ - lib/instana/trace.rb
424
+ - lib/instana/trace/export.rb
425
+ - lib/instana/trace/processor.rb
426
+ - lib/instana/trace/span.rb
427
+ - lib/instana/trace/span_context.rb
428
+ - lib/instana/trace/span_kind.rb
429
+ - lib/instana/trace/span_limits.rb
430
+ - lib/instana/trace/tracer.rb
431
+ - lib/instana/trace/tracer_provider.rb
356
432
  - lib/instana/util.rb
357
433
  - lib/instana/version.rb
358
- - lib/opentracing.rb
359
434
  - log/.keep
360
435
  - sonar-project.properties
361
436
  - test/activator_test.rb
@@ -426,15 +501,15 @@ files:
426
501
  - test/support/helpers.rb
427
502
  - test/support/mock_timer.rb
428
503
  - test/test_helper.rb
429
- - test/tracing/custom_test.rb
430
- - test/tracing/id_management_test.rb
431
- - test/tracing/instrumented_logger_test.rb
432
- - test/tracing/opentracing_test.rb
433
- - test/tracing/processor_test.rb
434
- - test/tracing/span_context_test.rb
435
- - test/tracing/span_test.rb
436
- - test/tracing/tracer_async_test.rb
437
- - test/tracing/tracer_test.rb
504
+ - test/trace/custom_test.rb
505
+ - test/trace/id_management_test.rb
506
+ - test/trace/instrumented_logger_test.rb
507
+ - test/trace/processor_test.rb
508
+ - test/trace/span_context_test.rb
509
+ - test/trace/span_test.rb
510
+ - test/trace/tracer_async_test.rb
511
+ - test/trace/tracer_provider_test.rb
512
+ - test/trace/tracer_test.rb
438
513
  - test/util_test.rb
439
514
  homepage: https://www.instana.com/
440
515
  licenses:
@@ -444,7 +519,6 @@ metadata:
444
519
  documentation_uri: https://docs.instana.io/ecosystem/ruby/
445
520
  homepage_uri: https://www.instana.com/
446
521
  source_code_uri: https://github.com/instana/ruby-sensor
447
- post_install_message:
448
522
  rdoc_options: []
449
523
  require_paths:
450
524
  - lib
@@ -459,8 +533,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
459
533
  - !ruby/object:Gem::Version
460
534
  version: '0'
461
535
  requirements: []
462
- rubygems_version: 3.5.23
463
- signing_key:
536
+ rubygems_version: 3.7.1
464
537
  specification_version: 4
465
538
  summary: Ruby Distributed Tracing & Metrics Sensor for Instana
466
539
  test_files:
@@ -532,13 +605,13 @@ test_files:
532
605
  - test/support/helpers.rb
533
606
  - test/support/mock_timer.rb
534
607
  - test/test_helper.rb
535
- - test/tracing/custom_test.rb
536
- - test/tracing/id_management_test.rb
537
- - test/tracing/instrumented_logger_test.rb
538
- - test/tracing/opentracing_test.rb
539
- - test/tracing/processor_test.rb
540
- - test/tracing/span_context_test.rb
541
- - test/tracing/span_test.rb
542
- - test/tracing/tracer_async_test.rb
543
- - test/tracing/tracer_test.rb
608
+ - test/trace/custom_test.rb
609
+ - test/trace/id_management_test.rb
610
+ - test/trace/instrumented_logger_test.rb
611
+ - test/trace/processor_test.rb
612
+ - test/trace/span_context_test.rb
613
+ - test/trace/span_test.rb
614
+ - test/trace/tracer_async_test.rb
615
+ - test/trace/tracer_provider_test.rb
616
+ - test/trace/tracer_test.rb
544
617
  - test/util_test.rb
@@ -1,35 +0,0 @@
1
- # This file contains a basic OpenTracing example.
2
- #
3
- # Note: The instana gem automatically sets the Instana tracer
4
- # to `OpenTracing.global_tracer`. Once the gem is loaded, you can
5
- # immediately start making OpenTracing calls.
6
- #
7
-
8
- # (c) Copyright IBM Corp. 2021
9
- # (c) Copyright Instana Inc. 2018
10
-
11
- require "opentracing"
12
-
13
- entry_span = OpenTracing.start_span("HandMadeRackServer")
14
-
15
- entry_span.set_tag(:'http.method', :get)
16
- entry_span.set_tag(:'http.url', "/users")
17
- entry_span.set_tag(:'span.kind', "entry")
18
-
19
- intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
20
- intermediate_span.finish()
21
-
22
- db_span = OpenTracing.start_span('mydbspan', :child_of => entry_span)
23
- db_span.set_tag(:'db.instance', "users")
24
- db_span.set_tag(:'db.statement', "SELECT * FROM user_table")
25
- db_span.set_tag(:'db.type', "mysql")
26
- db_span.set_tag(:'db.user', "mysql_login")
27
- db_span.set_tag(:'span.kind', "exit")
28
- db_span.finish()
29
-
30
- intermediate_span = OpenTracing.start_span("myintermediate", :child_of => entry_span)
31
- intermediate_span.log("ALLOK", :message => "All seems ok")
32
- intermediate_span.finish()
33
-
34
- entry_span.set_tag(:'http.status_code', 200)
35
- entry_span.finish()
@@ -1,7 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2017
3
-
4
- module OpenTracing
5
- class Carrier < Hash
6
- end
7
- end
@@ -1,99 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'delegate'
5
- # :nocov:
6
- module OpenTracing
7
- class InstanaTracer < SimpleDelegator
8
- Span = ::Instana::Span
9
-
10
- # Start a new span
11
- #
12
- # @param operation_name [String] The name of the operation represented by the span
13
- # @param child_of [Span] A span to be used as the ChildOf reference
14
- # @param start_time [Time] the start time of the span
15
- # @param tags [Hash] Starting tags for the span
16
- #
17
- # @return [Span]
18
- #
19
- def start_span(operation_name, child_of: nil, start_time: ::Instana::Util.now_in_ms, tags: nil)
20
- new_span = if child_of && (child_of.is_a?(::Instana::Span) || child_of.is_a?(::Instana::SpanContext))
21
- Span.new(operation_name, parent_ctx: child_of, start_time: start_time)
22
- else
23
- Span.new(operation_name, start_time: start_time)
24
- end
25
- new_span.set_tags(tags) if tags
26
- new_span
27
- end
28
-
29
- # Start a new span which is the child of the current span
30
- #
31
- # @param operation_name [String] The name of the operation represented by the span
32
- # @param child_of [Span] A span to be used as the ChildOf reference
33
- # @param start_time [Time] the start time of the span
34
- # @param tags [Hash] Starting tags for the span
35
- #
36
- # @return [Span]
37
- #
38
- def start_active_span(operation_name, child_of: active_span, start_time: ::Instana::Util.now_in_ms, tags: nil)
39
- ::Instana.tracer.current_span = start_span(operation_name, child_of: child_of, start_time: start_time, tags: tags)
40
- block_given? ? yield(::Instana.tracer.current_span) : ::Instana.tracer.current_span
41
- end
42
-
43
- # Returns the currently active span
44
- #
45
- # @return [Span]
46
- #
47
- def active_span
48
- ::Instana.tracer.current_span
49
- end
50
-
51
- # Inject a span into the given carrier
52
- #
53
- # @param span_context [SpanContext]
54
- # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
55
- # @param carrier [Carrier]
56
- #
57
- def inject(span_context, format, carrier)
58
- case format
59
- when OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY
60
- ::Instana.logger.debug 'Unsupported inject format'
61
- when OpenTracing::FORMAT_RACK
62
- carrier['X-Instana-T'] = ::Instana::Util.id_to_header(span_context.trace_id)
63
- carrier['X-Instana-S'] = ::Instana::Util.id_to_header(span_context.span_id)
64
- else
65
- ::Instana.logger.debug 'Unknown inject format'
66
- end
67
- end
68
-
69
- # Extract a span from a carrier
70
- #
71
- # @param format [OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY, OpenTracing::FORMAT_RACK]
72
- # @param carrier [Carrier]
73
- #
74
- # @return [SpanContext]
75
- #
76
- def extract(format, carrier)
77
- case format
78
- when OpenTracing::FORMAT_TEXT_MAP, OpenTracing::FORMAT_BINARY
79
- ::Instana.logger.debug 'Unsupported extract format'
80
- when OpenTracing::FORMAT_RACK
81
- ::Instana::SpanContext.new(::Instana::Util.header_to_id(carrier['HTTP_X_INSTANA_T']),
82
- ::Instana::Util.header_to_id(carrier['HTTP_X_INSTANA_S']))
83
- else
84
- ::Instana.logger.debug 'Unknown inject format'
85
- nil
86
- end
87
- end
88
-
89
- def method_missing(method, *args, &block)
90
- ::Instana.logger.warn { "You are invoking `#{m}` on Instana::Tracer via OpenTracing." }
91
- super(method, *args, &block)
92
- end
93
-
94
- def respond_to_missing?(*)
95
- super(method)
96
- end
97
- end
98
- end
99
- # :nocov: