instana 1.11.3 → 1.11.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,8 +5,8 @@ require 'resque'
5
5
 
6
6
  if ENV.key?('REDIS_URL')
7
7
  ::Resque.redis = ENV['REDIS_URL']
8
- elsif ENV.key?('I_REDIS_URL')
9
- ::Resque.redis = ENV['I_REDIS_URL']
8
+ elsif ENV.key?('REDIS_URL')
9
+ ::Resque.redis = ENV['REDIS_URL']
10
10
  else
11
11
  ::Resque.redis = 'localhost:6379'
12
12
  end
@@ -23,16 +23,15 @@ class ResqueClientTest < Minitest::Test
23
23
  end
24
24
 
25
25
  def test_enqueue
26
- ::Instana.tracer.start_or_continue_trace('resque-client_test') do
26
+ ::Instana.tracer.start_or_continue_trace(:'resque-client_test') do
27
27
  ::Resque.enqueue(FastJob)
28
28
  end
29
29
 
30
30
  spans = ::Instana.processor.queued_spans
31
- assert_equal 3, spans.length
31
+ assert_equal 2, spans.length
32
32
 
33
33
  sdk_span = find_first_span_by_name(spans, :'resque-client_test')
34
34
  resque_span = find_first_span_by_name(spans, :'resque-client')
35
- redis_span = find_first_span_by_name(spans, :redis)
36
35
 
37
36
  assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
38
37
 
@@ -40,48 +39,42 @@ class ResqueClientTest < Minitest::Test
40
39
  assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
41
40
  assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
42
41
  assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
43
-
44
- assert_equal :redis, redis_span[:n]
45
42
  end
46
43
 
47
44
  def test_enqueue_to
48
- ::Instana.tracer.start_or_continue_trace('resque-client_test') do
45
+ ::Instana.tracer.start_or_continue_trace(:'resque-client_test') do
49
46
  ::Resque.enqueue_to(:critical, FastJob)
50
47
  end
51
48
 
52
49
  spans = ::Instana.processor.queued_spans
53
- assert_equal 3, spans.length
50
+ assert_equal 2, spans.length
54
51
 
55
52
  sdk_span = find_first_span_by_name(spans, :'resque-client_test')
56
53
  resque_span = find_first_span_by_name(spans, :'resque-client')
57
- redis_span = find_first_span_by_name(spans, :redis)
58
54
 
59
55
  assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
60
56
  assert_equal :"resque-client", resque_span[:n]
61
57
  assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
62
58
  assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
63
59
  assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
64
- assert_equal :redis, redis_span[:n]
65
60
  end
66
61
 
67
62
  def test_dequeue
68
- ::Instana.tracer.start_or_continue_trace('resque-client_test', '', {}) do
63
+ ::Instana.tracer.start_or_continue_trace(:'resque-client_test', '', {}) do
69
64
  ::Resque.dequeue(FastJob, { :generate => :farfalla })
70
65
  end
71
66
 
72
67
  spans = ::Instana.processor.queued_spans
73
- assert_equal 3, spans.length
68
+ assert_equal 2, spans.length
74
69
 
75
70
  sdk_span = find_first_span_by_name(spans, :'resque-client_test')
76
71
  resque_span = find_first_span_by_name(spans, :'resque-client')
77
- redis_span = find_first_span_by_name(spans, :redis)
78
72
 
79
73
  assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
80
- assert_equal :"resque-client", spans[1][:n]
74
+ assert_equal :"resque-client", resque_span[:n]
81
75
  assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
82
76
  assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
83
77
  assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
84
- assert_equal :redis, redis_span[:n]
85
78
  end
86
79
 
87
80
  def test_worker_job
@@ -1,6 +1,13 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SidekiqClientTest < Minitest::Test
4
+ def setup
5
+ Sidekiq.configure_client do |config|
6
+ config.redis = { url: ENV["REDIS_URL"] }
7
+ end
8
+ ::Sidekiq::Queue.new('some_random_queue').clear
9
+ end
10
+
4
11
  def test_config_defaults
5
12
  assert ::Instana.config[:'sidekiq-client'].is_a?(Hash)
6
13
  assert ::Instana.config[:'sidekiq-client'].key?(:enabled)
@@ -1,6 +1,12 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class SidekiqServerTest < Minitest::Test
4
+ def setup
5
+ Sidekiq.configure_client do |config|
6
+ config.redis = { url: ENV["REDIS_URL"] }
7
+ end
8
+ end
9
+
4
10
  def test_config_defaults
5
11
  assert ::Instana.config[:'sidekiq-worker'].is_a?(Hash)
6
12
  assert ::Instana.config[:'sidekiq-worker'].key?(:enabled)
@@ -7,8 +7,8 @@ class ErrorJob
7
7
  def self.perform
8
8
  if ENV.key?('REDIS_URL')
9
9
  redis = Redis.new(:url => ENV['REDIS_URL'])
10
- elsif ENV.key?('I_REDIS_URL')
11
- redis = Redis.new(:url => ENV['I_REDIS_URL'])
10
+ elsif ENV.key?('REDIS_URL')
11
+ redis = Redis.new(:url => ENV['REDIS_URL'])
12
12
  else
13
13
  redis = Redis.new(:url => 'localhost:6379')
14
14
  end
@@ -7,8 +7,8 @@ class FastJob
7
7
  def self.perform
8
8
  if ENV.key?('REDIS_URL')
9
9
  redis = Redis.new(:url => ENV['REDIS_URL'])
10
- elsif ENV.key?('I_REDIS_URL')
11
- redis = Redis.new(:url => ENV['I_REDIS_URL'])
10
+ elsif ENV.key?('REDIS_URL')
11
+ redis = Redis.new(:url => ENV['REDIS_URL'])
12
12
  else
13
13
  redis = Redis.new(:url => 'redis://localhost:6379')
14
14
  end
@@ -0,0 +1,18 @@
1
+ class Block < ActiveRecord::Base
2
+ def do_work(*args)
3
+ block = Block.first
4
+ block.name = "Charlie"
5
+ block.color = "Black"
6
+ block.save
7
+ end
8
+ end
9
+
10
+ class CreateBlocks < ActiveRecord::Migration[6.0]
11
+ def change
12
+ create_table :blocks do |t|
13
+ t.string :name
14
+ t.string :color
15
+ t.timestamps
16
+ end
17
+ end
18
+ end
@@ -8,7 +8,16 @@ end
8
8
  require "rails/all"
9
9
  require "action_controller/railtie" # require more if needed
10
10
  require 'rack/handler/puma'
11
- require File.expand_path(File.dirname(__FILE__) + '/../models/block')
11
+
12
+ if Rails::VERSION::STRING >= '6.0'
13
+ require File.expand_path(File.dirname(__FILE__) + '/../models/block6')
14
+ system("mkdir -p app/assets/config && echo '{}' > app/assets/config/manifest.js")
15
+ # Rails 6 Issue: https://github.com/rails/rails/issues/37183
16
+ class ApplicationController < ActionController::Base
17
+ end
18
+ else
19
+ require File.expand_path(File.dirname(__FILE__) + '/../models/block')
20
+ end
12
21
 
13
22
  ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
14
23
 
@@ -25,7 +25,7 @@ allowed_sites = lambda{|uri|
25
25
  require "./test/servers/rackapp_6511"
26
26
 
27
27
  case File.basename(ENV['BUNDLE_GEMFILE'])
28
- when /rails50|rails42|rails32/
28
+ when /rails/
29
29
  require './test/servers/rails_3205'
30
30
  when /libraries/
31
31
  # Configure gRPC
@@ -39,27 +39,23 @@ when /libraries/
39
39
  end
40
40
  end
41
41
 
42
- ENV['I_REDIS_URL'] ||= 'redis://127.0.0.1:6379'
42
+ ENV['REDIS_URL'] ||= 'redis://127.0.0.1:6379'
43
43
 
44
44
  # Configure redis for sidekiq client
45
45
  Sidekiq.configure_client do |config|
46
- config.redis = { url: ENV['I_REDIS_URL'] }
46
+ config.redis = { url: ENV['REDIS_URL'] }
47
47
  end
48
48
 
49
49
  # Configure redis for sidekiq worker
50
50
  $sidekiq_mode = :server
51
51
  ::Sidekiq.configure_server do |config|
52
- config.redis = { url: ENV['I_REDIS_URL'] }
52
+ config.redis = { url: ENV['REDIS_URL'] }
53
53
  end
54
54
  $sidekiq_mode = :client
55
55
 
56
56
  require './test/servers/sidekiq/worker'
57
57
  end
58
58
 
59
- if defined?(::Redis)
60
- $redis = Redis.new(url: ENV['I_REDIS_URL'])
61
- end
62
-
63
59
  Minitest::Reporters.use! MiniTest::Reporters::SpecReporter.new
64
60
 
65
61
  # Used to reset the gem to boot state. It clears out any queued and/or staged
@@ -68,7 +64,6 @@ Minitest::Reporters.use! MiniTest::Reporters::SpecReporter.new
68
64
  def clear_all!
69
65
  ::Instana.processor.clear!
70
66
  ::Instana.tracer.clear!
71
- $redis.flushall if $redis
72
67
  nil
73
68
  end
74
69
 
@@ -332,4 +332,25 @@ class OpenTracerTest < Minitest::Test
332
332
  assert_equal({:my_bag=>1}, ac_span.context.baggage)
333
333
  assert_equal(nil, av_span.context.baggage)
334
334
  end
335
+
336
+ def test_start_active_span
337
+ clear_all!
338
+
339
+ span = OpenTracing.start_active_span(:rack)
340
+ assert_equal ::Instana::Tracer.current_span, span
341
+
342
+ sleep 0.1
343
+
344
+ span.finish
345
+
346
+ spans = ::Instana.processor.queued_spans
347
+ assert_equal 1, spans.length
348
+ end
349
+
350
+ def test_active_span
351
+ clear_all!
352
+
353
+ span = OpenTracing.start_active_span(:rack)
354
+ assert_equal OpenTracing.active_span, span
355
+ end
335
356
  end
@@ -46,6 +46,37 @@ class TracerTest < Minitest::Test
46
46
  assert_equal ::Instana.agent.agent_uuid, first_span[:f][:h]
47
47
  end
48
48
 
49
+ def test_exotic_tag_types
50
+ clear_all!
51
+
52
+ assert_equal false, ::Instana.tracer.tracing?
53
+
54
+ require 'resolv'
55
+ r = Resolv::DNS.new
56
+ ipv4 = r.getaddress("www.pwpush.com")
57
+
58
+ ::Instana.tracer.start_or_continue_trace(:rack, {:ipaddr => ipv4}) do
59
+ assert_equal true, ::Instana.tracer.tracing?
60
+ sleep 0.1
61
+ end
62
+
63
+ spans = ::Instana.processor.queued_spans
64
+ assert_equal 1, spans.length
65
+
66
+ first_span = spans.first
67
+ assert_equal :rack, first_span[:n]
68
+ assert first_span[:ts].is_a?(Integer)
69
+ assert first_span[:d].is_a?(Integer)
70
+ assert first_span[:d].between?(100, 130)
71
+ assert first_span.key?(:data)
72
+ assert first_span[:data].key?(:ipaddr)
73
+ assert first_span[:data][:ipaddr].is_a?(String)
74
+ assert first_span.key?(:f)
75
+ assert first_span[:f].key?(:e)
76
+ assert first_span[:f].key?(:h)
77
+ assert_equal ::Instana.agent.agent_uuid, first_span[:f][:h]
78
+ end
79
+
49
80
  def test_errors_are_properly_propagated
50
81
  clear_all!
51
82
  exception_raised = false
@@ -198,7 +229,6 @@ class TracerTest < Minitest::Test
198
229
  assert_equal sdk_span[:k], 3
199
230
  assert_equal sdk_span[:data][:sdk][:custom][:tags][:sub_task_info], 1
200
231
  assert_equal sdk_span[:data][:sdk][:custom][:tags][:sub_task_exit_info], 1
201
-
202
232
  end
203
233
 
204
234
  def test_block_tracing_error_capture
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.11.3
4
+ version: 1.11.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter Giacomo Lombardo
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-24 00:00:00.000000000 Z
11
+ date: 2020-11-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -173,11 +173,11 @@ executables: []
173
173
  extensions: []
174
174
  extra_rdoc_files: []
175
175
  files:
176
+ - ".circleci/config.yml"
176
177
  - ".codeclimate.yml"
177
178
  - ".fasterer.yml"
178
179
  - ".gitignore"
179
180
  - ".rubocop.yml"
180
- - ".travis.yml"
181
181
  - Dockerfile
182
182
  - Gemfile
183
183
  - LICENSE
@@ -201,6 +201,7 @@ files:
201
201
  - gemfiles/rails42.gemfile
202
202
  - gemfiles/rails50.gemfile
203
203
  - gemfiles/rails52.gemfile
204
+ - gemfiles/rails60.gemfile
204
205
  - instana.gemspec
205
206
  - lib/instana.rb
206
207
  - lib/instana/agent.rb
@@ -285,6 +286,7 @@ files:
285
286
  - test/jobs/sidekiq_job_1.rb
286
287
  - test/jobs/sidekiq_job_2.rb
287
288
  - test/models/block.rb
289
+ - test/models/block6.rb
288
290
  - test/servers/grpc_50051.rb
289
291
  - test/servers/helpers/sidekiq_worker_initializer.rb
290
292
  - test/servers/rackapp_6511.rb
@@ -294,7 +296,6 @@ files:
294
296
  - test/tracing/custom_test.rb
295
297
  - test/tracing/id_management_test.rb
296
298
  - test/tracing/opentracing_test.rb
297
- - test/tracing/trace_test.rb
298
299
  - test/tracing/tracer_async_test.rb
299
300
  - test/tracing/tracer_test.rb
300
301
  homepage: https://www.instana.com/
@@ -305,7 +306,7 @@ metadata:
305
306
  documentation_uri: https://docs.instana.io/ecosystem/ruby/
306
307
  homepage_uri: https://www.instana.com/
307
308
  source_code_uri: https://github.com/instana/ruby-sensor
308
- post_install_message:
309
+ post_install_message:
309
310
  rdoc_options: []
310
311
  require_paths:
311
312
  - lib
@@ -321,7 +322,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
322
  version: '0'
322
323
  requirements: []
323
324
  rubygems_version: 3.0.6
324
- signing_key:
325
+ signing_key:
325
326
  specification_version: 4
326
327
  summary: Ruby Distributed Tracing & Metrics Sensor for Instana
327
328
  test_files:
@@ -330,10 +331,10 @@ test_files:
330
331
  - test/tracing/tracer_test.rb
331
332
  - test/tracing/custom_test.rb
332
333
  - test/tracing/opentracing_test.rb
333
- - test/tracing/trace_test.rb
334
334
  - test/tracing/tracer_async_test.rb
335
335
  - test/agent/agent_test.rb
336
336
  - test/models/block.rb
337
+ - test/models/block6.rb
337
338
  - test/instrumentation/sidekiq-client_test.rb
338
339
  - test/instrumentation/resque_test.rb
339
340
  - test/instrumentation/sidekiq-worker_test.rb
@@ -1,43 +0,0 @@
1
- language: ruby
2
-
3
- cache:
4
- bundler: true
5
- directories:
6
- - vendor/bundle
7
-
8
- rvm:
9
- - 2.5
10
- - 2.4
11
-
12
- before_install:
13
- - gem update --system
14
- - gem install bundler
15
- - gem --version
16
-
17
- before_script:
18
- - psql -c 'create database travis_ci_test;' -U postgres
19
- - mysql -e 'CREATE DATABASE travis_ci_test;'
20
-
21
- script: "bundle exec rake test"
22
-
23
- services:
24
- - memcached
25
- - redis
26
- - mysql
27
- - postgresql
28
-
29
- gemfile:
30
- - Gemfile
31
- - gemfiles/libraries.gemfile
32
- - gemfiles/rails50.gemfile
33
-
34
- matrix:
35
- exclude:
36
- # Rails 5.0+ requires Ruby 2.2.2 or higher
37
- - rvm: 2.1.10
38
- gemfile: gemfiles/rails50.gemfile
39
-
40
- notifications:
41
- slack:
42
- rooms:
43
- secure: Ae9tJmBO9/sgYWthHRS5uufAf8s6uIMdtmQn+gBkcAXaMWJgt1IAzpIj98Qsg15/lhHS8ezwCe7WIAWC4mM1cnwl/hP195dbgLzF4D2uOjaIXj55ckIIE06jBX1yHapu0vMFSaKwgL4auEEVg4xkehBb9TzLNG/LbExadZQOIkeLdtgU04VrPfDC9pZWPplXT4kzjMZkMESzBYaCfNl6eenu0sHdoxSvngv52MImog6aZQKT+k3ccAa1yzZNhUdy4gSZi1HafXdSCn4UTPDtkNIlsWBW8yprICLxZV/NvgUTEEJYSHO6Ucx9Er22LzKtNbEYlAs1GErGWjDzpqvvXt/5UwNx0rLDrVKI/xMIELEbT047mSgJ8tpVd0ErGA/bnDfbF2oDFTAEXq4jaeAMaVR9Q1CW0ZZF2Jh5jOKc41U+AVGgaMDaBA0ukDSeXvJcnteZ9EllOO8ZAtC2FKtBNnj36W13KTR0TkjMCl+KOiVJXnOyRJIR+CUL9BdDuODBVPZHqZaZ48N+MOG9dRb+fvkdTnwh7hU+UmR08kOsd4x+dDlm4dBrFrB8v8udQ7XuBN9AOZty2CPWFUSJM1BxtetyS3We0L6lQ8o/B9STFNK4KTa/M8wNq1Fm85h3ZKHHIHDpQnXM6vD8SV1p9u91C5UI8rEyxzW5IaT2oqXsCzU=
@@ -1,67 +0,0 @@
1
- # require 'test_helper'
2
- #
3
- # class TraceTest < Minitest::Test
4
- # def test_trace_spans_count
5
- # t = ::Instana::Trace.new(:test_trace, { :one => 1, :two => 2 })
6
- # t.new_span(:sub_span, { :sub_four => 4 })
7
- # t.end_span(:sub_five => 5)
8
- # t.end_span(:three => 3)
9
- # assert t.spans.size == 2
10
- # end
11
- #
12
- # def test_trace_with_incoming_context
13
- # incoming_context = { :trace_id => "1234", :span_id => "4321" }
14
- # t = ::Instana::Trace.new(:test_trace, { :one => 1, :two => 2 }, incoming_context)
15
- # first_span = t.spans.first
16
- # assert_equal "1234", first_span[:t]
17
- # assert_equal "4321", first_span[:p]
18
- # assert t.spans.size == 1
19
- # end
20
- #
21
- # def test_max_value_of_generated_id
22
- # # Max is the maximum value for a Java signed long
23
- # max_value = 9223372036854775807
24
- # 1000.times do
25
- # assert ::Instana::Util.generate_id <= max_value
26
- # end
27
- # end
28
- #
29
- # def test_min_value_of_generated_id
30
- # # Max is the maximum value for a Java signed long
31
- # max_value = -9223372036854775808
32
- # 1000.times do
33
- # assert ::Instana::Util.generate_id >= max_value
34
- # end
35
- # end
36
- #
37
- # def test_entry_span_doesnt_have_stack_by_default
38
- # t = ::Instana::Trace.new(:rack)
39
- # first_span = t.spans.first
40
- # assert !first_span.key?(:stack)
41
- # end
42
- #
43
- # def test_entry_span_has_stack_by_config
44
- # ::Instana.config[:collect_backtraces] = true
45
- # t = ::Instana::Trace.new(:rack)
46
- # first_span = t.spans.first
47
- # assert first_span.key?(:stack)
48
- # assert_equal 2, first_span[:stack].count
49
- # ::Instana.config[:collect_backtraces] = false
50
- # end
51
- #
52
- # def test_exit_span_doesnt_have_stack_by_default
53
- # t = ::Instana::Trace.new(:trace_test)
54
- # t.new_span(:excon)
55
- # second_span = t.spans.to_a[1]
56
- # assert !second_span.key?(:stack)
57
- # end
58
- #
59
- # def test_exit_span_has_stack_by_config
60
- # ::Instana.config[:collect_backtraces] = true
61
- # t = ::Instana::Trace.new(:trace_test)
62
- # t.new_span(:excon)
63
- # second_span = t.spans.to_a[1]
64
- # assert second_span.key?(:stack)
65
- # ::Instana.config[:collect_backtraces] = false
66
- # end
67
- # end