instana 1.209.8 → 1.210.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1461b6f3821df0472c4d486c1256069909ed6c833e8016e70e06d14130124704
4
- data.tar.gz: 4f6d244e93cd9bdf2b1e3aa895d8824df136123f46a829a02059d4f82c3d0a75
3
+ metadata.gz: 7ebbf57e241468a0c39a150d3032f6d544c10263e54638a62e78b6b78bfcf176
4
+ data.tar.gz: a4a009b702fbb44d3769558edecc91305262bc0a08172ee0e6e6751cb6ded284
5
5
  SHA512:
6
- metadata.gz: 7533b3a686d6f432cfad515c4625b687c4d14d593acc15bde81bae500d1c170582ebaea43a4527807d68f1e70397ede59e0659c3898f1ecaba5c8311095b0110
7
- data.tar.gz: 55e6433ff8f6eb247ef63d1b9d8321e4c82aefd94c8838347bdae07fbac6d3d01903a60db6df32b36430bc351b375f5a8e1630a1d34adf15053dcb28152d71de
6
+ metadata.gz: '07957983e122595a1e8c0e54babe3c832dda10bab8e4ca138a02868854e8dca861767f82196f01ed184883ac82c9c322c1dcb288b56869a818a64f3af9e8b33b'
7
+ data.tar.gz: 17479e49ec7dcd01153c11c85186b6ef17056c3bd5a5fc81c86ce1e09569737994dedce8286d7815651fe060e3ae1003efc39af85a1eb60facc252a794cfa82a
data/.circleci/config.yml CHANGED
@@ -38,6 +38,117 @@ executors:
38
38
  environment:
39
39
  POSTGRES_PASSWORD: 'test'
40
40
  POSTGRES_DB: 'ci_test'
41
+ ruby_30:
42
+ docker:
43
+ - image: cimg/ruby:3.0-node
44
+ environment:
45
+ MEMCACHED_HOST: '127.0.0.1:11211'
46
+ REDIS_URL: 'redis://127.0.0.1:6379'
47
+ DATABASE_URL: 'sqlite3::memory:'
48
+ - image: memcached
49
+ - image: redis
50
+ - image: amazon/dynamodb-local
51
+ - image: minio/minio:latest
52
+ command: ["server", "/data"]
53
+ - image: s12v/sns
54
+ - image: softwaremill/elasticmq-native
55
+ - image: mongo:5-focal
56
+ ruby_30_mysql2:
57
+ docker:
58
+ - image: cimg/ruby:3.0-node
59
+ environment:
60
+ DATABASE_URL: "mysql2://root@127.0.0.1:3306/ci_test"
61
+ - image: mariadb
62
+ environment:
63
+ MYSQL_DATABASE: 'ci_test'
64
+ MYSQL_USER: 'root'
65
+ MYSQL_PASSWORD: ''
66
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
67
+ MYSQL_ROOT_PASSWORD: ''
68
+ MYSQL_ROOT_HOST: '%'
69
+ ruby_30_postgres:
70
+ docker:
71
+ - image: cimg/ruby:3.0-node
72
+ environment:
73
+ DATABASE_URL: "postgres://postgres:test@127.0.0.1:5432/ci_test"
74
+ - image: postgres
75
+ environment:
76
+ POSTGRES_PASSWORD: 'test'
77
+ POSTGRES_DB: 'ci_test'
78
+ ruby_31:
79
+ docker:
80
+ - image: cimg/ruby:3.1-node
81
+ environment:
82
+ MEMCACHED_HOST: '127.0.0.1:11211'
83
+ REDIS_URL: 'redis://127.0.0.1:6379'
84
+ DATABASE_URL: 'sqlite3::memory:'
85
+ - image: memcached
86
+ - image: redis
87
+ - image: amazon/dynamodb-local
88
+ - image: minio/minio:latest
89
+ command: ["server", "/data"]
90
+ - image: s12v/sns
91
+ - image: softwaremill/elasticmq-native
92
+ - image: mongo:5-focal
93
+ ruby_31_mysql2:
94
+ docker:
95
+ - image: cimg/ruby:3.1-node
96
+ environment:
97
+ DATABASE_URL: "mysql2://root@127.0.0.1:3306/ci_test"
98
+ - image: mariadb
99
+ environment:
100
+ MYSQL_DATABASE: 'ci_test'
101
+ MYSQL_USER: 'root'
102
+ MYSQL_PASSWORD: ''
103
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
104
+ MYSQL_ROOT_PASSWORD: ''
105
+ MYSQL_ROOT_HOST: '%'
106
+ ruby_31_postgres:
107
+ docker:
108
+ - image: cimg/ruby:3.1-node
109
+ environment:
110
+ DATABASE_URL: "postgres://postgres:test@127.0.0.1:5432/ci_test"
111
+ - image: postgres
112
+ environment:
113
+ POSTGRES_PASSWORD: 'test'
114
+ POSTGRES_DB: 'ci_test'
115
+ ruby_32:
116
+ docker:
117
+ - image: cimg/ruby:3.2-node
118
+ environment:
119
+ MEMCACHED_HOST: '127.0.0.1:11211'
120
+ REDIS_URL: 'redis://127.0.0.1:6379'
121
+ DATABASE_URL: 'sqlite3::memory:'
122
+ - image: memcached
123
+ - image: redis
124
+ - image: amazon/dynamodb-local
125
+ - image: minio/minio:latest
126
+ command: ["server", "/data"]
127
+ - image: s12v/sns
128
+ - image: softwaremill/elasticmq-native
129
+ - image: mongo:5-focal
130
+ ruby_32_mysql2:
131
+ docker:
132
+ - image: cimg/ruby:3.2-node
133
+ environment:
134
+ DATABASE_URL: "mysql2://root@127.0.0.1:3306/ci_test"
135
+ - image: mariadb
136
+ environment:
137
+ MYSQL_DATABASE: 'ci_test'
138
+ MYSQL_USER: 'root'
139
+ MYSQL_PASSWORD: ''
140
+ MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
141
+ MYSQL_ROOT_PASSWORD: ''
142
+ MYSQL_ROOT_HOST: '%'
143
+ ruby_32_postgres:
144
+ docker:
145
+ - image: cimg/ruby:3.2-node
146
+ environment:
147
+ DATABASE_URL: "postgres://postgres:test@127.0.0.1:5432/ci_test"
148
+ - image: postgres
149
+ environment:
150
+ POSTGRES_PASSWORD: 'test'
151
+ POSTGRES_DB: 'ci_test'
41
152
 
42
153
  commands:
43
154
  setup:
@@ -176,6 +287,9 @@ workflows:
176
287
  parameters:
177
288
  stack:
178
289
  - ruby_27
290
+ - ruby_30
291
+ - ruby_31
292
+ - ruby_32
179
293
  libraries:
180
294
  jobs:
181
295
  - test_apprisal:
@@ -183,13 +297,19 @@ workflows:
183
297
  parameters:
184
298
  stack:
185
299
  - ruby_27
300
+ - ruby_30
301
+ - ruby_31
302
+ - ruby_32
186
303
  gemfile:
187
304
  - "./gemfiles/aws_30.gemfile"
188
305
  - "./gemfiles/cuba_30.gemfile"
189
306
  - "./gemfiles/cuba_40.gemfile"
190
307
  - "./gemfiles/dalli_20.gemfile"
308
+ - "./gemfiles/dalli_30.gemfile"
309
+ - "./gemfiles/dalli_32.gemfile"
191
310
  - "./gemfiles/excon_02.gemfile"
192
311
  - "./gemfiles/excon_079.gemfile"
312
+ - "./gemfiles/excon_100.gemfile"
193
313
  - "./gemfiles/graphql_10.gemfile"
194
314
  - "./gemfiles/graphql_20.gemfile"
195
315
  - "./gemfiles/grpc_10.gemfile"
@@ -205,10 +325,32 @@ workflows:
205
325
  - "./gemfiles/roda_30.gemfile"
206
326
  - "./gemfiles/sidekiq_42.gemfile"
207
327
  - "./gemfiles/sidekiq_50.gemfile"
328
+ - "./gemfiles/sidekiq_60.gemfile"
329
+ - "./gemfiles/sidekiq_70.gemfile"
208
330
  - "./gemfiles/sinatra_14.gemfile"
209
331
  - "./gemfiles/shoryuken_50.gemfile"
210
332
  - "./gemfiles/mongo_216.gemfile"
211
- rails:
333
+ exclude:
334
+ # Currently rest-client 1.6 gemfile pulls in mime-types 2.99.3
335
+ # and adaptation to mime-type 3.0 is only available in rest-client 2.0:
336
+ # https://github.com/rest-client/rest-client/issues/464
337
+ # But mime-types 2.99.3 is too old for Ruby 3.0 or newer:
338
+ # https://stackoverflow.com/a/68433864
339
+ # so we should exclude thiese scenarios
340
+ - stack: ruby_30
341
+ gemfile: "./gemfiles/rest_client_16.gemfile"
342
+ - stack: ruby_31
343
+ gemfile: "./gemfiles/rest_client_16.gemfile"
344
+ - stack: ruby_32
345
+ gemfile: "./gemfiles/rest_client_16.gemfile"
346
+ # Sinatra 1.4 relies on the Fixnum class
347
+ # which has been removed from Ruby 3.2, see:
348
+ # https://bugs.ruby-lang.org/issues/12005
349
+ # https://www.ruby-lang.org/en/news/2022/11/11/ruby-3-2-0-preview3-released/
350
+ - stack: ruby_32
351
+ gemfile: "./gemfiles/sinatra_14.gemfile"
352
+
353
+ rails_ruby_2:
212
354
  jobs:
213
355
  - test_apprisal:
214
356
  matrix:
@@ -221,3 +363,21 @@ workflows:
221
363
  - "./gemfiles/rails_60.gemfile"
222
364
  - "./gemfiles/rails_52.gemfile"
223
365
  - "./gemfiles/rails_50.gemfile"
366
+ rails_ruby_3:
367
+ jobs:
368
+ - test_apprisal:
369
+ matrix:
370
+ parameters:
371
+ stack:
372
+ - ruby_30
373
+ - ruby_30_postgres
374
+ - ruby_30_mysql2
375
+ - ruby_31
376
+ - ruby_31_postgres
377
+ - ruby_31_mysql2
378
+ - ruby_32
379
+ - ruby_32_postgres
380
+ - ruby_32_mysql2
381
+ gemfile:
382
+ - "./gemfiles/rails_61.gemfile"
383
+ - "./gemfiles/rails_70.gemfile"
@@ -0,0 +1,15 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "minitest", "5.9.1"
7
+ gem "minitest-reporters"
8
+ gem "webmock"
9
+ gem "puma"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rack-test"
12
+ gem "simplecov", "~> 0.21.2"
13
+ gem "dalli", "< 3.1.3"
14
+
15
+ gemspec path: "../"
@@ -0,0 +1,15 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "minitest", "5.9.1"
7
+ gem "minitest-reporters"
8
+ gem "webmock"
9
+ gem "puma"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rack-test"
12
+ gem "simplecov", "~> 0.21.2"
13
+ gem "dalli", ">= 3.2.5"
14
+
15
+ gemspec path: "../"
@@ -0,0 +1,16 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rack", "<3.0.0"
6
+ gem "rake"
7
+ gem "minitest", "5.9.1"
8
+ gem "minitest-reporters"
9
+ gem "webmock"
10
+ gem "puma"
11
+ gem "rubocop", "~> 1.9"
12
+ gem "rack-test"
13
+ gem "simplecov", "~> 0.21.2"
14
+ gem "excon", ">= 0.100.0", "< 1.0"
15
+
16
+ gemspec path: "../"
@@ -13,6 +13,6 @@ gem "puma"
13
13
  gem "rubocop", "~> 1.9"
14
14
  gem "rack-test"
15
15
  gem "simplecov", "~> 0.21.2"
16
- gem "grpc", ">= 1.0", "< 2.0"
16
+ gem "grpc", ">= 1.55.0", "< 2.0"
17
17
 
18
18
  gemspec path: "../"
@@ -0,0 +1,22 @@
1
+ # This file was generated by Appraisal
2
+
3
+ # (c) Copyright IBM Corp. 2021
4
+ # (c) Copyright Instana Inc. 2021
5
+
6
+ source "https://rubygems.org"
7
+
8
+ gem "rake"
9
+ gem "minitest", "5.9.1"
10
+ gem "minitest-reporters"
11
+ gem "webmock"
12
+ gem "puma"
13
+ gem "rubocop", "~> 1.9"
14
+ gem "rack-test"
15
+ gem "simplecov", "~> 0.21.2"
16
+ gem "mail", ">= 2.8.1"
17
+ gem "rails", ">= 6.1", "< 7.0"
18
+ gem "mysql2", "0.5.5"
19
+ gem "pg"
20
+ gem "sqlite3", "~> 1.4"
21
+
22
+ gemspec path: "../"
@@ -0,0 +1,19 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "minitest", "5.9.1"
7
+ gem "minitest-reporters"
8
+ gem "webmock"
9
+ gem "puma"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rack-test"
12
+ gem "simplecov", "~> 0.21.2"
13
+ gem "mail", ">= 2.8.1"
14
+ gem "rails", ">= 7.0"
15
+ gem "mysql2", "0.5.5"
16
+ gem "pg"
17
+ gem "sqlite3", "~> 1.4"
18
+
19
+ gemspec path: "../"
@@ -14,6 +14,6 @@ gem "puma"
14
14
  gem "rubocop", "~> 1.9"
15
15
  gem "rack-test"
16
16
  gem "simplecov", "~> 0.21.2"
17
- gem "rest-client", ">= 2.0", "< 3.0"
17
+ gem "rest-client", ">= 2.1.0", "< 3.0"
18
18
 
19
19
  gemspec path: "../"
@@ -0,0 +1,15 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "minitest", "5.9.1"
7
+ gem "minitest-reporters"
8
+ gem "webmock"
9
+ gem "puma"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rack-test"
12
+ gem "simplecov", "~> 0.21.2"
13
+ gem "sidekiq", ">= 6.0", "< 7.0"
14
+
15
+ gemspec path: "../"
@@ -0,0 +1,15 @@
1
+ # (c) Copyright IBM Corp. 2023
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rake"
6
+ gem "minitest", "5.9.1"
7
+ gem "minitest-reporters"
8
+ gem "webmock"
9
+ gem "puma"
10
+ gem "rubocop", "~> 1.9"
11
+ gem "rack-test"
12
+ gem "simplecov", "~> 0.21.2"
13
+ gem "sidekiq", ">= 7.0"
14
+
15
+ gemspec path: "../"
@@ -5,16 +5,22 @@ module Instana
5
5
  module Activators
6
6
  class Dalli < Activator
7
7
  def can_instrument?
8
- defined?(::Dalli::Client) &&
9
- defined?(::Dalli::Server) &&
8
+ defined?(::Dalli::Protocol::Base || defined?(::Dalli::Server)) &&
9
+ defined?(::Dalli::Client) &&
10
10
  Instana.config[:dalli][:enabled]
11
11
  end
12
12
 
13
13
  def instrument
14
14
  require 'instana/instrumentation/dalli'
15
-
15
+ dalli_version = Gem::Specification.find_by_name('dalli').version
16
16
  ::Dalli::Client.prepend ::Instana::Instrumentation::Dalli
17
- ::Dalli::Server.prepend ::Instana::Instrumentation::DalliServer
17
+ if dalli_version < Gem::Version.new('3.0')
18
+ ::Dalli::Server.prepend ::Instana::Instrumentation::DalliRequestHandler
19
+ elsif dalli_version >= Gem::Version.new('3.0') && dalli_version < Gem::Version.new('3.1.3')
20
+ ::Dalli::Protocol::Binary.prepend ::Instana::Instrumentation::DalliRequestHandler
21
+ else
22
+ ::Dalli::Protocol::Base.prepend ::Instana::Instrumentation::DalliRequestHandler
23
+ end
18
24
 
19
25
  true
20
26
  end
@@ -15,7 +15,7 @@ module Instana
15
15
  end
16
16
 
17
17
  module ActionCableChannel
18
- def transmit(*args)
18
+ def transmit(data, via: nil)
19
19
  rpc_tags = {
20
20
  service: ::Instana::Util.get_app_name,
21
21
  rpc: {
@@ -28,7 +28,7 @@ module Instana
28
28
 
29
29
  context = connection.instana_trace_context
30
30
  ::Instana.tracer.start_or_continue_trace(:'rpc-server', rpc_tags, context) do
31
- super(*args)
31
+ super(data, via: via)
32
32
  end
33
33
  end
34
34
 
@@ -8,7 +8,7 @@ module Instana
8
8
  IGNORED_SQL = %w[BEGIN COMMIT SET].freeze
9
9
  SANITIZE_REGEXP = /('[\s\S][^']*'|\d*\.\d+|\d+|NULL)/i.freeze
10
10
 
11
- def log(sql, name = 'SQL', binds = [], *args)
11
+ def log(sql, name = 'SQL', binds = [], *args, **kwargs, &block)
12
12
  call_payload = {
13
13
  activerecord: {
14
14
  adapter: @config[:adapter],
@@ -24,7 +24,7 @@ module Instana
24
24
  call_payload[:activerecord][:binds] = mapped
25
25
  end
26
26
 
27
- maybe_trace(call_payload, name) { super(sql, name, binds, *args) }
27
+ maybe_trace(call_payload, name) { super(sql, name, binds, *args, **kwargs, &block) }
28
28
  end
29
29
 
30
30
  private
@@ -56,7 +56,7 @@ module Instana
56
56
  end
57
57
  end
58
58
 
59
- module DalliServer
59
+ module DalliRequestHandler
60
60
  def self.included(klass)
61
61
  ::Instana::Util.method_alias(klass, :request)
62
62
  end
@@ -64,7 +64,7 @@ module Instana
64
64
  def request(op, *args)
65
65
  if ::Instana.tracer.tracing? || ::Instana.tracer.tracing_span?(:memcache)
66
66
  info_payload = { :memcache => {} }
67
- info_payload[:memcache][:server] = "#{@hostname}:#{@port}"
67
+ info_payload[:memcache][:server] = "#{hostname}:#{port}"
68
68
  ::Instana.tracer.log_info(info_payload)
69
69
  end
70
70
  super(op, *args)
@@ -2,6 +2,6 @@
2
2
  # (c) Copyright Instana Inc. 2016
3
3
 
4
4
  module Instana
5
- VERSION = "1.209.8"
5
+ VERSION = "1.210.1"
6
6
  VERSION_FULL = "instana-#{VERSION}"
7
7
  end
data/lib/opentracing.rb CHANGED
@@ -17,8 +17,8 @@ module OpenTracing
17
17
 
18
18
  attr_accessor :global_tracer
19
19
 
20
- def method_missing(method_name, *args, &block)
21
- @global_tracer.send(method_name, *args, &block)
20
+ def method_missing(method_name, *args, **kwargs, &block)
21
+ @global_tracer.send(method_name, *args, **kwargs, &block)
22
22
  end
23
23
 
24
24
  def respond_to_missing?(name, all)
@@ -22,7 +22,7 @@ class RailsActionCableTest < Minitest::Test
22
22
 
23
23
  channel_klass
24
24
  .new(connection, :test)
25
- .send(:transmit, 'action' => 'sample')
25
+ .send(:transmit, 'Sample message', via: nil)
26
26
 
27
27
  span, rest = Instana.processor.queued_spans
28
28
  data = span[:data]
@@ -47,7 +47,7 @@ class RailsActionCableTest < Minitest::Test
47
47
 
48
48
  channel_klass
49
49
  .new(connection, :test)
50
- .send(:transmit, 'action' => 'sample')
50
+ .send(:transmit, 'Sample message', via: 'Important')
51
51
 
52
52
  span, rest = Instana.processor.queued_spans
53
53
  data = span[:data]
@@ -125,7 +125,7 @@ class RailsActionCableTest < Minitest::Test
125
125
  config: OpenStruct.new(log_tags: [])
126
126
  )
127
127
  connection = ActionCable::Connection::Base.new(server, {})
128
- connection.define_singleton_method(:transmit) { |*_args| true }
128
+ connection.define_singleton_method(:transmit) { |*_args, **_kwargs| true }
129
129
  connection
130
130
  end
131
131
  end
@@ -7,13 +7,24 @@ require 'action_mailer'
7
7
  class RailsActionMailerTest < Minitest::Test
8
8
  class TestMailer < ActionMailer::Base
9
9
  def sample_email
10
- mail(
11
- from: 'test@example.com',
12
- to: 'test@example.com',
13
- subject: 'Test Email',
14
- body: 'Hello',
15
- content_type: "text/html"
16
- )
10
+ mail_version = Gem::Specification.find_by_name('mail').version
11
+ if mail_version >= Gem::Version.new('2.8.1')
12
+ Mail.new do
13
+ from 'test@example.com'
14
+ to 'test@example.com'
15
+ subject 'Test Email'
16
+ body 'Hello'
17
+ content_type "text/html"
18
+ end
19
+ else
20
+ mail(
21
+ from: 'test@example.com',
22
+ to: 'test@example.com',
23
+ subject: 'Test Email',
24
+ body: 'Hello',
25
+ content_type: "text/html"
26
+ )
27
+ end
17
28
  end
18
29
  end
19
30
 
@@ -13,6 +13,18 @@ class RailsActionViewTest < Minitest::Test
13
13
 
14
14
  def setup
15
15
  clear_all!
16
+ @framework_version = Gem::Specification.find_by_name('rails').version
17
+ @supported_framework_version = @framework_version < Gem::Version.new('6.1')
18
+ @execute_test_if_framework_version_is_supported = lambda {
19
+ unless @supported_framework_version
20
+ skip "Skipping this test because Rails version #{@framework_version} is not yet supported!"
21
+ end
22
+ }
23
+ @execute_test_only_if_framework_version_is_not_supported = lambda {
24
+ if @supported_framework_version
25
+ skip "Skipping this test because Rails version #{@framework_version} is already supported!"
26
+ end
27
+ }
16
28
  end
17
29
 
18
30
  def test_config_defaults
@@ -21,7 +33,25 @@ class RailsActionViewTest < Minitest::Test
21
33
  assert_equal true, ::Instana.config[:action_view][:enabled]
22
34
  end
23
35
 
36
+ def test_no_tracing_if_unsupported_version_only_render_is_ok
37
+ @execute_test_only_if_framework_version_is_not_supported.call
38
+
39
+ ['/render_view', '/render_view_direct', '/render_partial', '/render_collection', '/render_file',
40
+ '/render_alternate_layout', '/render_json', '/render_xml',
41
+ '/render_rawbody', '/render_js'].each do |endpoint|
42
+ get endpoint
43
+ assert last_response.ok?
44
+ end
45
+
46
+ get '/render_partial_that_errors'
47
+ assert_equal false, last_response.ok?
48
+
49
+ spans = ::Instana.processor.queued_spans
50
+ assert_equal [], spans
51
+ end
52
+
24
53
  def test_render_view
54
+ @execute_test_if_framework_version_is_supported.call
25
55
  get '/render_view'
26
56
  assert last_response.ok?
27
57
 
@@ -32,6 +62,7 @@ class RailsActionViewTest < Minitest::Test
32
62
  end
33
63
 
34
64
  def test_render_view_direct
65
+ @execute_test_if_framework_version_is_supported.call
35
66
  get '/render_view_direct'
36
67
  assert last_response.ok?
37
68
 
@@ -54,6 +85,7 @@ class RailsActionViewTest < Minitest::Test
54
85
  end
55
86
 
56
87
  def test_render_file
88
+ @execute_test_if_framework_version_is_supported.call
57
89
  get '/render_file'
58
90
  assert last_response.ok?
59
91
 
@@ -64,6 +96,7 @@ class RailsActionViewTest < Minitest::Test
64
96
  end
65
97
 
66
98
  def test_render_json
99
+ @execute_test_if_framework_version_is_supported.call
67
100
  get '/render_json'
68
101
  assert last_response.ok?
69
102
 
@@ -74,6 +107,7 @@ class RailsActionViewTest < Minitest::Test
74
107
  end
75
108
 
76
109
  def test_render_xml
110
+ @execute_test_if_framework_version_is_supported.call
77
111
  get '/render_xml'
78
112
  assert last_response.ok?
79
113
 
@@ -84,6 +118,7 @@ class RailsActionViewTest < Minitest::Test
84
118
  end
85
119
 
86
120
  def test_render_body
121
+ @execute_test_if_framework_version_is_supported.call
87
122
  get '/render_rawbody'
88
123
  assert last_response.ok?
89
124
 
@@ -94,6 +129,7 @@ class RailsActionViewTest < Minitest::Test
94
129
  end
95
130
 
96
131
  def test_render_js
132
+ @execute_test_if_framework_version_is_supported.call
97
133
  get '/render_js'
98
134
  assert last_response.ok?
99
135
 
@@ -104,6 +140,7 @@ class RailsActionViewTest < Minitest::Test
104
140
  end
105
141
 
106
142
  def test_render_alternate_layout
143
+ @execute_test_if_framework_version_is_supported.call
107
144
  get '/render_alternate_layout'
108
145
  assert last_response.ok?
109
146
 
@@ -114,6 +151,7 @@ class RailsActionViewTest < Minitest::Test
114
151
  end
115
152
 
116
153
  def test_render_partial
154
+ @execute_test_if_framework_version_is_supported.call
117
155
  get '/render_partial'
118
156
  assert last_response.ok?
119
157
 
@@ -124,6 +162,7 @@ class RailsActionViewTest < Minitest::Test
124
162
  end
125
163
 
126
164
  def test_render_partial_that_errors
165
+ @execute_test_if_framework_version_is_supported.call
127
166
  get '/render_partial_that_errors'
128
167
  refute last_response.ok?
129
168
 
@@ -139,6 +178,7 @@ class RailsActionViewTest < Minitest::Test
139
178
  end
140
179
 
141
180
  def test_render_collection
181
+ @execute_test_if_framework_version_is_supported.call
142
182
  get '/render_collection'
143
183
  assert last_response.ok?
144
184
 
@@ -6,6 +6,19 @@ require 'support/apps/sidekiq/boot'
6
6
 
7
7
  class SidekiqClientTest < Minitest::Test
8
8
  def setup
9
+ @framework_version = Gem::Specification.find_by_name('sidekiq').version
10
+ @supported_framework_version = @framework_version < Gem::Version.new('5.3')
11
+ @execute_test_if_framework_version_is_supported = lambda {
12
+ unless @supported_framework_version
13
+ skip "Skipping this test because sidekiq version #{@framework_version} is not yet supported!"
14
+ end
15
+ }
16
+ @execute_test_only_if_framework_version_is_not_supported = lambda {
17
+ if @supported_framework_version
18
+ skip "Skipping this test because sidekiq version #{@framework_version} is already supported!"
19
+ end
20
+ }
21
+
9
22
  Sidekiq.configure_client do |config|
10
23
  config.redis = { url: ENV["REDIS_URL"] }
11
24
  end
@@ -19,6 +32,7 @@ class SidekiqClientTest < Minitest::Test
19
32
  end
20
33
 
21
34
  def test_enqueue
35
+ @execute_test_if_framework_version_is_supported.call
22
36
  clear_all!
23
37
  Instana.tracer.start_or_continue_trace(:sidekiqtests) do
24
38
  disable_redis_instrumentation
@@ -39,6 +53,7 @@ class SidekiqClientTest < Minitest::Test
39
53
  end
40
54
 
41
55
  def test_enqueue_failure
56
+ @execute_test_if_framework_version_is_supported.call
42
57
  clear_all!
43
58
 
44
59
  Instana.tracer.start_or_continue_trace(:sidekiqtests) do
@@ -6,6 +6,19 @@ require 'support/apps/sidekiq/boot'
6
6
 
7
7
  class SidekiqServerTest < Minitest::Test
8
8
  def setup
9
+ @framework_version = Gem::Specification.find_by_name('sidekiq').version
10
+ @supported_framework_version = @framework_version < Gem::Version.new('5.3')
11
+ @execute_test_if_framework_version_is_supported = lambda {
12
+ unless @supported_framework_version
13
+ skip "Skipping this test because sidekiq version #{@framework_version} is not yet supported!"
14
+ end
15
+ }
16
+ @execute_test_only_if_framework_version_is_not_supported = lambda {
17
+ if @supported_framework_version
18
+ skip "Skipping this test because sidekiq version #{@framework_version} is already supported!"
19
+ end
20
+ }
21
+
9
22
  Sidekiq.configure_client do |config|
10
23
  config.redis = { url: ENV["REDIS_URL"] }
11
24
  end
@@ -17,7 +30,30 @@ class SidekiqServerTest < Minitest::Test
17
30
  assert_equal true, ::Instana.config[:'sidekiq-worker'][:enabled]
18
31
  end
19
32
 
33
+ def test_no_sidekiq_tracing_if_unsupported_version_only_redis
34
+ @execute_test_only_if_framework_version_is_not_supported.call
35
+ clear_all!
36
+ ::Sidekiq.redis_pool.with do |redis|
37
+ redis.sadd('queues'.freeze, 'important')
38
+ redis.lpush(
39
+ 'queue:important',
40
+ <<-JSON
41
+ {
42
+ "class":"SidekiqJobOne",
43
+ "args":[1,2,3],
44
+ "queue":"important",
45
+ "jid":"123456789"
46
+ }
47
+ JSON
48
+ )
49
+ end
50
+
51
+ spans = Instana.processor.queued_spans
52
+ assert spans
53
+ end
54
+
20
55
  def test_successful_worker_starts_new_trace
56
+ @execute_test_if_framework_version_is_supported.call
21
57
  clear_all!
22
58
  $sidekiq_mode = :server
23
59
  inject_instrumentation
@@ -48,6 +84,7 @@ class SidekiqServerTest < Minitest::Test
48
84
  end
49
85
 
50
86
  def test_failed_worker_starts_new_trace
87
+ @execute_test_if_framework_version_is_supported.call
51
88
  clear_all!
52
89
  $sidekiq_mode = :server
53
90
  inject_instrumentation
@@ -79,6 +116,7 @@ class SidekiqServerTest < Minitest::Test
79
116
  end
80
117
 
81
118
  def test_successful_worker_continues_previous_trace
119
+ @execute_test_if_framework_version_is_supported.call
82
120
  clear_all!
83
121
  $sidekiq_mode = :server
84
122
  inject_instrumentation
@@ -112,6 +150,7 @@ class SidekiqServerTest < Minitest::Test
112
150
  end
113
151
 
114
152
  def test_failed_worker_continues_previous_trace
153
+ @execute_test_if_framework_version_is_supported.call
115
154
  clear_all!
116
155
  $sidekiq_mode = :server
117
156
  inject_instrumentation
@@ -22,7 +22,7 @@ Thread.new do
22
22
  end
23
23
  }
24
24
 
25
- Rack::Handler::Puma.run(app, {:Host => '127.0.0.1', :Port => 6511})
25
+ Rack::Handler::Puma.run(app, Host: '127.0.0.1', Port: 6511)
26
26
  end
27
27
 
28
28
  sleep(2)
@@ -12,12 +12,19 @@ require_relative 'jobs/sidekiq_job_2'
12
12
  ::Instana.logger.info "Booting instrumented sidekiq worker for tests."
13
13
  ::Sidekiq.logger.level = ::Logger::FATAL
14
14
 
15
+ properties = {queues: ['important'], concurrency: 2}
16
+
17
+ sidekiq_version = Gem::Specification.find_by_name('sidekiq').version
18
+ config_or_options =
19
+ if sidekiq_version >= Gem::Version.new('7.0.0')
20
+ ::Sidekiq::Config.new(Sidekiq.default_configuration.merge!(properties))
21
+ else
22
+ ::Sidekiq.options.merge(properties)
23
+ end
24
+
15
25
  sidekiq_thread = Thread.new do
16
26
  launcher = ::Sidekiq::Launcher.new(
17
- ::Sidekiq.options.merge(
18
- queues: ['important'],
19
- concurrency: 2
20
- )
27
+ config_or_options
21
28
  )
22
29
  launcher.run
23
30
  Thread.current[:worker] = launcher
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.209.8
4
+ version: 1.210.1
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: 2023-06-09 00:00:00.000000000 Z
11
+ date: 2023-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -159,9 +159,12 @@ files:
159
159
  - gemfiles/cuba_30.gemfile
160
160
  - gemfiles/cuba_40.gemfile
161
161
  - gemfiles/dalli_20.gemfile
162
+ - gemfiles/dalli_30.gemfile
163
+ - gemfiles/dalli_32.gemfile
162
164
  - gemfiles/excon_02.gemfile
163
165
  - gemfiles/excon_021.gemfile
164
166
  - gemfiles/excon_079.gemfile
167
+ - gemfiles/excon_100.gemfile
165
168
  - gemfiles/graphql_10.gemfile
166
169
  - gemfiles/graphql_20.gemfile
167
170
  - gemfiles/grpc_10.gemfile
@@ -173,6 +176,8 @@ files:
173
176
  - gemfiles/rails_50.gemfile
174
177
  - gemfiles/rails_52.gemfile
175
178
  - gemfiles/rails_60.gemfile
179
+ - gemfiles/rails_61.gemfile
180
+ - gemfiles/rails_70.gemfile
176
181
  - gemfiles/redis_40.gemfile
177
182
  - gemfiles/resque_122.gemfile
178
183
  - gemfiles/resque_20.gemfile
@@ -183,6 +188,8 @@ files:
183
188
  - gemfiles/shoryuken_50.gemfile
184
189
  - gemfiles/sidekiq_42.gemfile
185
190
  - gemfiles/sidekiq_50.gemfile
191
+ - gemfiles/sidekiq_60.gemfile
192
+ - gemfiles/sidekiq_70.gemfile
186
193
  - gemfiles/sinatra_14.gemfile
187
194
  - instana.gemspec
188
195
  - lib/instana.rb