instana 1.195.4 → 1.197.0.pre1

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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +6 -2
  3. data/Rakefile +1 -1
  4. data/instana.gemspec +3 -7
  5. data/lib/instana.rb +3 -0
  6. data/lib/instana/activator.rb +2 -0
  7. data/lib/instana/backend/agent.rb +60 -0
  8. data/lib/instana/backend/gc_snapshot.rb +41 -0
  9. data/lib/instana/backend/host_agent.rb +57 -0
  10. data/lib/instana/backend/host_agent_activation_observer.rb +87 -0
  11. data/lib/instana/backend/host_agent_lookup.rb +57 -0
  12. data/lib/instana/backend/host_agent_reporting_observer.rb +106 -0
  13. data/lib/instana/backend/process_info.rb +64 -0
  14. data/lib/instana/backend/request_client.rb +84 -0
  15. data/lib/instana/backend/serverless_agent.rb +118 -0
  16. data/lib/instana/base.rb +8 -27
  17. data/lib/instana/config.rb +7 -21
  18. data/lib/instana/logger_delegator.rb +31 -0
  19. data/lib/instana/{opentracing → open_tracing}/carrier.rb +0 -0
  20. data/lib/instana/open_tracing/instana_tracer.rb +99 -0
  21. data/lib/instana/secrets.rb +6 -2
  22. data/lib/instana/setup.rb +20 -11
  23. data/lib/instana/snapshot/deltable.rb +25 -0
  24. data/lib/instana/snapshot/docker_container.rb +151 -0
  25. data/lib/instana/snapshot/fargate_container.rb +88 -0
  26. data/lib/instana/snapshot/fargate_process.rb +67 -0
  27. data/lib/instana/snapshot/fargate_task.rb +72 -0
  28. data/lib/instana/snapshot/ruby_process.rb +48 -0
  29. data/lib/instana/tracer.rb +25 -143
  30. data/lib/instana/tracing/processor.rb +4 -22
  31. data/lib/instana/tracing/span.rb +26 -35
  32. data/lib/instana/tracing/span_context.rb +1 -1
  33. data/lib/instana/util.rb +4 -67
  34. data/lib/instana/version.rb +1 -1
  35. data/lib/opentracing.rb +26 -3
  36. data/test/backend/agent_test.rb +54 -0
  37. data/test/backend/gc_snapshot_test.rb +11 -0
  38. data/test/backend/host_agent_activation_observer_test.rb +65 -0
  39. data/test/backend/host_agent_lookup_test.rb +78 -0
  40. data/test/backend/host_agent_reporting_observer_test.rb +192 -0
  41. data/test/backend/host_agent_test.rb +32 -0
  42. data/test/backend/process_info_test.rb +63 -0
  43. data/test/backend/request_client_test.rb +61 -0
  44. data/test/backend/serverless_agent_test.rb +73 -0
  45. data/test/config_test.rb +10 -0
  46. data/test/instana_test.rb +11 -4
  47. data/test/instrumentation/rack_instrumented_request_test.rb +3 -2
  48. data/test/instrumentation/rack_test.rb +2 -14
  49. data/test/secrets_test.rb +41 -22
  50. data/test/snapshot/deltable_test.rb +17 -0
  51. data/test/snapshot/docker_container_test.rb +82 -0
  52. data/test/snapshot/fargate_container_test.rb +82 -0
  53. data/test/snapshot/fargate_process_test.rb +35 -0
  54. data/test/snapshot/fargate_task_test.rb +49 -0
  55. data/test/snapshot/ruby_process_test.rb +14 -0
  56. data/test/support/mock_timer.rb +20 -0
  57. data/test/test_helper.rb +15 -3
  58. data/test/tracing/custom_test.rb +1 -3
  59. data/test/tracing/id_management_test.rb +4 -0
  60. data/test/tracing/opentracing_test.rb +15 -2
  61. data/test/tracing/processor_test.rb +58 -0
  62. data/test/tracing/span_context_test.rb +22 -0
  63. data/test/tracing/span_test.rb +127 -0
  64. data/test/tracing/tracer_async_test.rb +29 -0
  65. data/test/tracing/tracer_test.rb +82 -16
  66. data/test/util_test.rb +10 -0
  67. metadata +72 -45
  68. data/lib/instana/agent.rb +0 -508
  69. data/lib/instana/agent/helpers.rb +0 -87
  70. data/lib/instana/agent/hooks.rb +0 -44
  71. data/lib/instana/agent/tasks.rb +0 -51
  72. data/lib/instana/collector.rb +0 -119
  73. data/lib/instana/collectors/gc.rb +0 -60
  74. data/lib/instana/collectors/memory.rb +0 -37
  75. data/lib/instana/collectors/thread.rb +0 -33
  76. data/lib/instana/eum/eum-test.js.erb +0 -17
  77. data/lib/instana/eum/eum.js.erb +0 -17
  78. data/lib/instana/helpers.rb +0 -47
  79. data/lib/instana/opentracing/tracer.rb +0 -21
  80. data/lib/instana/thread_local.rb +0 -18
  81. data/lib/oj_check.rb +0 -19
  82. data/test/agent/agent_test.rb +0 -151
@@ -0,0 +1,17 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class DeltableTest < Minitest::Test
7
+ include Instana::Snapshot::Deltable
8
+
9
+ def test_delta
10
+ subject = {a: {b: 5}}
11
+
12
+ assert_equal 5, delta(:a, :b, obj: subject, compute: ->(o, n) { o + n })
13
+ assert_equal 10, delta(:a, :b, obj: subject, compute: ->(o, n) { o + n })
14
+
15
+ assert_nil delta(:a, :c, obj: subject, compute: ->(o, n) { o + n })
16
+ end
17
+ end
@@ -0,0 +1,82 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class DockerContainerTest < Minitest::Test
7
+ def test_container
8
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
9
+ .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
10
+
11
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
12
+ subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
13
+
14
+ snapshot = subject.snapshot
15
+
16
+ assert_equal Instana::Snapshot::DockerContainer::ID, snapshot[:name]
17
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::~internal~ecs~pause', snapshot[:entityId]
18
+
19
+ assert_equal "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c", snapshot[:data][:Id]
20
+ assert_equal "2018-02-01T20:55:08.366329616Z", snapshot[:data][:Created]
21
+ assert_equal "2018-02-01T20:55:09.058354915Z", snapshot[:data][:Started]
22
+ assert_equal "amazon/amazon-ecs-pause:0.1.0", snapshot[:data][:Image]
23
+ assert_equal container['Labels'], snapshot[:data][:Labels]
24
+ assert_nil snapshot[:data][:Ports]
25
+ assert_equal "awsvpc", snapshot[:data][:NetworkMode]
26
+ end
27
+
28
+ def test_container_metrics
29
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
30
+ .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
31
+
32
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].last
33
+ subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
34
+
35
+ snapshot = subject.snapshot
36
+
37
+ assert_equal Instana::Snapshot::DockerContainer::ID, snapshot[:name]
38
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl', snapshot[:entityId]
39
+
40
+ assert_equal 0.0030905127838258164, snapshot[:data][:cpu][:total_usage]
41
+ assert_equal 0.0022809745982374286, snapshot[:data][:cpu][:user_usage]
42
+ assert_equal 0.00031104199066874026, snapshot[:data][:cpu][:system_usage]
43
+ assert_equal 0, snapshot[:data][:cpu][:throttling_count]
44
+ assert_equal 0, snapshot[:data][:cpu][:throttling_time]
45
+ assert_equal 5_890_048, snapshot[:data][:blkio][:blk_read]
46
+ assert_equal 12288, snapshot[:data][:blkio][:blk_write]
47
+ assert_equal 6_610_944, snapshot[:data][:memory][:active_anon]
48
+ assert_equal 0, snapshot[:data][:memory][:active_file]
49
+ assert_equal 0, snapshot[:data][:memory][:inactive_anon]
50
+ assert_equal 2_158_592, snapshot[:data][:memory][:inactive_file]
51
+ assert_equal 0, snapshot[:data][:memory][:total_cache]
52
+ assert_equal 8_769_536, snapshot[:data][:memory][:total_rss]
53
+ assert_equal 10_035_200, snapshot[:data][:memory][:usage]
54
+ assert_equal 12_677_120, snapshot[:data][:memory][:max_usage]
55
+ assert_equal 4_134_825_984, snapshot[:data][:memory][:limit]
56
+ assert_equal({bytes: 40_000_257, dropped: 7, errors: 2, packet: 200_017}, snapshot[:data][:network][:rx])
57
+ assert_equal({bytes: 20_000_511, dropped: 200_007, errors: 5, packet: 2}, snapshot[:data][:network][:tx])
58
+ end
59
+
60
+ def test_container_no_network
61
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
62
+ .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
63
+
64
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'][1]
65
+ subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
66
+
67
+ snapshot = subject.snapshot
68
+ assert_nil snapshot[:data][:network]
69
+ end
70
+
71
+ def test_snapshot_error
72
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
73
+ .to_return(status: 500)
74
+
75
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
76
+ subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
77
+
78
+ assert_raises do
79
+ subject.snapshot
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,82 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class FargateContainerTest < Minitest::Test
7
+ def test_snapshot_observed
8
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
9
+ subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
10
+
11
+ stub_request(:get, 'https://10.10.10.10:8080/v3')
12
+ .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
13
+
14
+ snapshot = subject.snapshot
15
+
16
+ assert_equal Instana::Snapshot::FargateContainer::ID, snapshot[:name]
17
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::~internal~ecs~pause', snapshot[:entityId]
18
+
19
+ assert_equal "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c", snapshot[:data][:dockerId]
20
+ assert_equal "ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700", snapshot[:data][:dockerName]
21
+ assert_equal "~internal~ecs~pause", snapshot[:data][:containerName]
22
+ assert_equal "amazon/amazon-ecs-pause:0.1.0", snapshot[:data][:image]
23
+ assert_equal "", snapshot[:data][:imageId]
24
+ assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
25
+ assert_nil snapshot[:data][:taskDefinition]
26
+ assert_nil snapshot[:data][:taskDefinitionVersion]
27
+ assert_equal "default", snapshot[:data][:clusterArn]
28
+ assert_equal "RESOURCES_PROVISIONED", snapshot[:data][:desiredStatus]
29
+ assert_equal "RESOURCES_PROVISIONED", snapshot[:data][:knownStatus]
30
+ assert_nil snapshot[:data][:ports]
31
+ assert_equal({:cpu => 0, :memory => 0}, snapshot[:data][:limits])
32
+ assert_equal "2018-02-01T20:55:08.366329616Z", snapshot[:data][:createdAt]
33
+ assert_equal "2018-02-01T20:55:09.058354915Z", snapshot[:data][:startedAt]
34
+
35
+ assert_nil subject.source
36
+ end
37
+
38
+ def test_snapshot_current
39
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].last
40
+ subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
41
+
42
+ stub_request(:get, 'https://10.10.10.10:8080/v3')
43
+ .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
44
+
45
+ snapshot = subject.snapshot
46
+
47
+ assert_equal Instana::Snapshot::FargateContainer::ID, snapshot[:name]
48
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl', snapshot[:entityId]
49
+
50
+ assert_equal "43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946", snapshot[:data][:dockerId]
51
+ assert_equal "ecs-nginx-5-nginx-curl-ccccb9f49db0dfe0d901", snapshot[:data][:dockerName]
52
+ assert_equal "nginx-curl", snapshot[:data][:containerName]
53
+ assert_equal "nrdlngr/nginx-curl", snapshot[:data][:image]
54
+ assert_equal "sha256:2e00ae64383cfc865ba0a2ba37f61b50a120d2d9378559dcd458dc0de47bc165", snapshot[:data][:imageId]
55
+ assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
56
+ assert_nil snapshot[:data][:taskDefinition]
57
+ assert_nil snapshot[:data][:taskDefinitionVersion]
58
+ assert_equal "default", snapshot[:data][:clusterArn]
59
+ assert_equal "RUNNING", snapshot[:data][:desiredStatus]
60
+ assert_equal "RUNNING", snapshot[:data][:knownStatus]
61
+ assert_nil snapshot[:data][:ports]
62
+ assert_equal({:cpu => 512, :memory => 512}, snapshot[:data][:limits])
63
+ assert_equal "2018-02-01T20:55:10.554941919Z", snapshot[:data][:createdAt]
64
+ assert_equal "2018-02-01T20:55:11.064236631Z", snapshot[:data][:startedAt]
65
+ assert_equal true, snapshot[:data][:instrumented]
66
+ assert_equal "ruby", snapshot[:data][:runtime]
67
+
68
+ assert_equal({hl: true, cp: "aws", e: "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl"}, subject.source)
69
+ end
70
+
71
+ def test_snapshot_error
72
+ stub_request(:get, 'https://10.10.10.10:8080/v3')
73
+ .to_return(status: 500)
74
+
75
+ container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
76
+ subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
77
+
78
+ assert_raises do
79
+ subject.snapshot
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,35 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class FargateProcessTest < Minitest::Test
7
+ def setup
8
+ @subject = Instana::Snapshot::FargateProcess.new(metadata_uri: 'https://10.10.10.10:8080/v3')
9
+ end
10
+
11
+ def test_snapshot
12
+ stub_request(:get, 'https://10.10.10.10:8080/v3')
13
+ .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
14
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task')
15
+ .to_return(status: 200, body: File.read('test/support/ecs/task.json'))
16
+
17
+ snapshot = @subject.snapshot
18
+
19
+ assert_equal Instana::Snapshot::FargateProcess::ID, snapshot[:name]
20
+ assert_equal Process.pid.to_s, snapshot[:entityId]
21
+
22
+ assert_equal 'docker', snapshot[:data][:containerType]
23
+ assert_equal '43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946', snapshot[:data][:container]
24
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3', snapshot[:data][:'com.instana.plugin.host.name']
25
+ end
26
+
27
+ def test_snapshot_error
28
+ stub_request(:get, 'https://10.10.10.10:8080/v3')
29
+ .to_return(status: 500)
30
+
31
+ assert_raises do
32
+ @subject.snapshot
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,49 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class FargateTaskTest < Minitest::Test
7
+ def setup
8
+ @subject = Instana::Snapshot::FargateTask.new(metadata_uri: 'https://10.10.10.10:8080/v3')
9
+
10
+ ENV['INSTANA_ZONE'] = 'test'
11
+ ENV['INSTANA_TAGS'] = 'test=a,b,c'
12
+ end
13
+
14
+ def teardown
15
+ ENV['INSTANA_ZONE'] = nil
16
+ ENV['INSTANA_TAGS'] = nil
17
+ end
18
+
19
+ def test_snapshot
20
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task')
21
+ .to_return(status: 200, body: File.read('test/support/ecs/task.json'))
22
+
23
+ snapshot = @subject.snapshot
24
+
25
+ assert_equal Instana::Snapshot::FargateTask::ID, snapshot[:name]
26
+ assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3', snapshot[:entityId]
27
+
28
+ assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
29
+ assert_equal "default", snapshot[:data][:clusterArn]
30
+ assert_equal "nginx", snapshot[:data][:taskDefinition]
31
+ assert_equal "5", snapshot[:data][:taskDefinitionVersion]
32
+ assert_equal "us-east-2b", snapshot[:data][:availabilityZone]
33
+ assert_equal "RUNNING", snapshot[:data][:desiredStatus]
34
+ assert_equal "RUNNING", snapshot[:data][:knownStatus]
35
+ assert_equal "2018-02-01T20:55:09.372495529Z", snapshot[:data][:pullStartedAt]
36
+ assert_equal "2018-02-01T20:55:10.552018345Z", snapshot[:data][:pullStoppedAt]
37
+ assert_equal "test", snapshot[:data][:instanaZone]
38
+ assert_equal({"test" => "a", "b" => nil, "c" => nil}, snapshot[:data][:tags])
39
+ end
40
+
41
+ def test_snapshot_error
42
+ stub_request(:get, 'https://10.10.10.10:8080/v3/task')
43
+ .to_return(status: 500)
44
+
45
+ assert_raises do
46
+ @subject.snapshot
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,14 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class RubyProcessTest < Minitest::Test
7
+ def test_snapshot
8
+ subject = Instana::Snapshot::RubyProcess.new
9
+ snapshot = subject.snapshot
10
+
11
+ assert_equal Instana::Snapshot::RubyProcess::ID, snapshot[:name]
12
+ assert_equal Process.pid.to_s, snapshot[:entityId]
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ class MockTimer
5
+ attr_reader :opts, :block, :running
6
+
7
+ def initialize(*args, &blk)
8
+ @opts = args.first
9
+ @block = blk
10
+ @running = false
11
+ end
12
+
13
+ def shutdown
14
+ @running = false
15
+ end
16
+
17
+ def execute
18
+ @running = true
19
+ end
20
+ end
data/test/test_helper.rb CHANGED
@@ -10,11 +10,22 @@ begin
10
10
  SimpleCov.start do
11
11
  enable_coverage :branch
12
12
 
13
- add_group 'Frameworks', 'lib/instana/frameworks'
14
- add_group 'Instrumentation', 'lib/instana/instrumentation'
15
-
16
13
  add_filter %r{^/test/}
17
14
 
15
+ add_group(
16
+ 'In Process Collector',
17
+ [%r{lib/instana/(agent|backend|tracing|collectors|open_tracing|snapshot)}, %r{lib/instana/[^/]+\.rb}]
18
+ )
19
+
20
+ if ENV['APPRAISAL_INITIALIZED']
21
+ add_group(
22
+ 'Instrumentation',
23
+ %r{lib/instana/(activators|frameworks|instrumentation)}
24
+ )
25
+ else
26
+ add_filter %r{lib/instana/(activators|frameworks|instrumentation)}
27
+ end
28
+
18
29
  if ENV['CI']
19
30
  formatter SimpleCov::Formatter::JSONFormatter
20
31
  end
@@ -29,6 +40,7 @@ Bundler.require
29
40
  require "minitest/spec"
30
41
  require "minitest/autorun"
31
42
  require "minitest/reporters"
43
+ require 'fakefs/safe'
32
44
 
33
45
  require 'webmock/minitest'
34
46
  # Webmock: Whitelist local IPs
@@ -39,9 +39,7 @@ class CustomTracingTest < Minitest::Test
39
39
  assert_equal :entry, first_span[:data][:sdk][:type]
40
40
 
41
41
  assert first_span.key?(:f)
42
- assert first_span[:f].key?(:e)
43
- assert first_span[:f].key?(:h)
44
- assert_equal ::Instana.agent.agent_uuid, first_span[:f][:h]
42
+ assert_equal ::Instana.agent.source, first_span[:f]
45
43
  end
46
44
 
47
45
  def test_custom_tracing_with_args
@@ -69,4 +69,8 @@ class TracerIDMgmtTest < Minitest::Test
69
69
  bogus_result = Instana::Util.header_to_id([1234])
70
70
  assert_equal '', bogus_result
71
71
  end
72
+
73
+ def test_long_id_trim
74
+ assert_equal 16, Instana::Util.id_to_header(::Instana::Util.generate_id(2)).length
75
+ end
72
76
  end
@@ -34,8 +34,6 @@ module Instana
34
34
  end
35
35
  end
36
36
 
37
- OpenTracing.global_tracer = ::Instana.tracer
38
-
39
37
  class OpenTracerTest < Minitest::Test
40
38
  include Rack::Test::Methods
41
39
 
@@ -60,6 +58,8 @@ class OpenTracerTest < Minitest::Test
60
58
  assert OpenTracing.global_tracer.respond_to?(:inject)
61
59
  assert OpenTracing.global_tracer.respond_to?(:extract)
62
60
 
61
+ assert OpenTracing.respond_to?(:start_span)
62
+
63
63
  assert defined?(OpenTracing::Carrier)
64
64
  carrier = OpenTracing::Carrier.new
65
65
  assert carrier.respond_to?(:[])
@@ -356,4 +356,17 @@ class OpenTracerTest < Minitest::Test
356
356
  span = OpenTracing.start_active_span(:rack)
357
357
  assert_equal OpenTracing.active_span, span
358
358
  end
359
+
360
+ def test_active_span_block
361
+ clear_all!
362
+
363
+ obj = OpenTracing.start_active_span(:rack) { 1 }
364
+ assert_equal 1, obj
365
+ end
366
+
367
+ def test_span_rename
368
+ span = OpenTracing.start_active_span(:rack)
369
+ span.operation_name = 'test'
370
+ assert_equal 'test', span.name
371
+ end
359
372
  end
@@ -0,0 +1,58 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class ProcessorTest < Minitest::Test
7
+ def test_queued_spans_empty
8
+ subject = Instana::Processor.new
9
+ assert_equal [], subject.queued_spans
10
+ end
11
+
12
+ def test_queued_spans_valid_level
13
+ clear_all!
14
+ subject = Instana::Processor.new
15
+
16
+ span_context = Instana::SpanContext.new('9', '8', 0)
17
+ span = Instana::Span.new(:rack, parent_ctx: span_context)
18
+ span2 = Instana::Span.new(:"net-http")
19
+
20
+ subject.add_span(span)
21
+ subject.add_span(span2)
22
+
23
+ spans = subject.queued_spans
24
+ valid_span, = spans
25
+
26
+ assert_equal 1, spans.length
27
+ assert_equal :"net-http", valid_span[:n]
28
+ end
29
+
30
+ def test_queued_spans_invalid_type
31
+ subject = Instana::Processor.new
32
+ subject.add_span(false)
33
+
34
+ assert_equal [], subject.queued_spans
35
+ end
36
+
37
+ def test_send
38
+ ENV['INSTANA_TEST'] = nil
39
+
40
+ subject = Instana::Processor.new
41
+ span = Instana::Span.new(:rack)
42
+ subject.add_span(span)
43
+
44
+ was_invoked = false
45
+
46
+ subject.send do |spans|
47
+ was_invoked = true
48
+ rack_span, = spans
49
+
50
+ assert_equal 1, spans.length
51
+ assert_equal :rack, rack_span[:n]
52
+ end
53
+
54
+ assert was_invoked
55
+ ensure
56
+ ENV['INSTANA_TEST'] = 'true'
57
+ end
58
+ end