instana 1.195.3 → 1.198.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 (91) 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 +62 -0
  8. data/lib/instana/backend/gc_snapshot.rb +41 -0
  9. data/lib/instana/backend/host_agent.rb +74 -0
  10. data/lib/instana/backend/host_agent_activation_observer.rb +97 -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 +74 -0
  15. data/lib/instana/backend/serverless_agent.rb +113 -0
  16. data/lib/instana/base.rb +10 -27
  17. data/lib/instana/config.rb +8 -22
  18. data/lib/instana/instrumentation/excon.rb +17 -8
  19. data/lib/instana/instrumentation/instrumented_request.rb +62 -7
  20. data/lib/instana/instrumentation/net-http.rb +7 -5
  21. data/lib/instana/instrumentation/rack.rb +12 -7
  22. data/lib/instana/logger_delegator.rb +31 -0
  23. data/lib/instana/{opentracing → open_tracing}/carrier.rb +0 -0
  24. data/lib/instana/open_tracing/instana_tracer.rb +99 -0
  25. data/lib/instana/secrets.rb +6 -2
  26. data/lib/instana/serverless.rb +133 -0
  27. data/lib/instana/setup.rb +23 -11
  28. data/lib/instana/snapshot/deltable.rb +25 -0
  29. data/lib/instana/snapshot/docker_container.rb +151 -0
  30. data/lib/instana/snapshot/fargate_container.rb +88 -0
  31. data/lib/instana/snapshot/fargate_process.rb +67 -0
  32. data/lib/instana/snapshot/fargate_task.rb +72 -0
  33. data/lib/instana/snapshot/lambda_function.rb +39 -0
  34. data/lib/instana/snapshot/ruby_process.rb +48 -0
  35. data/lib/instana/tracer.rb +25 -143
  36. data/lib/instana/tracing/processor.rb +14 -22
  37. data/lib/instana/tracing/span.rb +33 -36
  38. data/lib/instana/tracing/span_context.rb +15 -10
  39. data/lib/instana/util.rb +8 -69
  40. data/lib/instana/version.rb +1 -1
  41. data/lib/opentracing.rb +26 -3
  42. data/test/backend/agent_test.rb +67 -0
  43. data/test/backend/gc_snapshot_test.rb +11 -0
  44. data/test/backend/host_agent_activation_observer_test.rb +72 -0
  45. data/test/backend/host_agent_lookup_test.rb +78 -0
  46. data/test/backend/host_agent_reporting_observer_test.rb +192 -0
  47. data/test/backend/host_agent_test.rb +47 -0
  48. data/test/backend/process_info_test.rb +63 -0
  49. data/test/backend/request_client_test.rb +39 -0
  50. data/test/backend/serverless_agent_test.rb +73 -0
  51. data/test/config_test.rb +10 -0
  52. data/test/instana_test.rb +11 -4
  53. data/test/instrumentation/excon_test.rb +15 -1
  54. data/test/instrumentation/rack_instrumented_request_test.rb +5 -2
  55. data/test/instrumentation/rack_test.rb +2 -14
  56. data/test/secrets_test.rb +41 -22
  57. data/test/serverless_test.rb +323 -0
  58. data/test/snapshot/deltable_test.rb +17 -0
  59. data/test/snapshot/docker_container_test.rb +82 -0
  60. data/test/snapshot/fargate_container_test.rb +82 -0
  61. data/test/snapshot/fargate_process_test.rb +35 -0
  62. data/test/snapshot/fargate_task_test.rb +49 -0
  63. data/test/snapshot/lambda_function_test.rb +37 -0
  64. data/test/snapshot/ruby_process_test.rb +14 -0
  65. data/test/support/mock_timer.rb +20 -0
  66. data/test/test_helper.rb +16 -4
  67. data/test/tracing/custom_test.rb +1 -3
  68. data/test/tracing/id_management_test.rb +8 -0
  69. data/test/tracing/opentracing_test.rb +15 -2
  70. data/test/tracing/processor_test.rb +58 -0
  71. data/test/tracing/span_context_test.rb +22 -0
  72. data/test/tracing/span_test.rb +136 -0
  73. data/test/tracing/tracer_async_test.rb +29 -0
  74. data/test/tracing/tracer_test.rb +82 -16
  75. data/test/util_test.rb +10 -0
  76. metadata +78 -45
  77. data/lib/instana/agent.rb +0 -508
  78. data/lib/instana/agent/helpers.rb +0 -87
  79. data/lib/instana/agent/hooks.rb +0 -44
  80. data/lib/instana/agent/tasks.rb +0 -51
  81. data/lib/instana/collector.rb +0 -119
  82. data/lib/instana/collectors/gc.rb +0 -60
  83. data/lib/instana/collectors/memory.rb +0 -37
  84. data/lib/instana/collectors/thread.rb +0 -33
  85. data/lib/instana/eum/eum-test.js.erb +0 -17
  86. data/lib/instana/eum/eum.js.erb +0 -17
  87. data/lib/instana/helpers.rb +0 -47
  88. data/lib/instana/opentracing/tracer.rb +0 -21
  89. data/lib/instana/thread_local.rb +0 -18
  90. data/lib/oj_check.rb +0 -19
  91. 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,37 @@
1
+ # (c) Copyright IBM Corp. 2021
2
+ # (c) Copyright Instana Inc. 2021
3
+
4
+ require 'test_helper'
5
+
6
+ class LambdaFunctionTest < Minitest::Test
7
+ def setup
8
+ @subject = Instana::Snapshot::LambdaFunction.new
9
+ end
10
+
11
+ def test_snapshot
12
+ Thread.current[:instana_function_arn] = 'test'
13
+
14
+ assert_equal Instana::Snapshot::LambdaFunction::ID, @subject.snapshot[:name]
15
+ assert_equal Thread.current[:instana_function_arn], @subject.snapshot[:entityId]
16
+ ensure
17
+ Thread.current[:instana_function_arn] = nil
18
+ end
19
+
20
+ def test_source
21
+ Thread.current[:instana_function_arn] = 'test'
22
+
23
+ assert @subject.source[:hl]
24
+ assert_equal 'aws', @subject.source[:cp]
25
+ assert_equal Thread.current[:instana_function_arn], @subject.source[:e]
26
+ ensure
27
+ Thread.current[:instana_function_arn] = nil
28
+ end
29
+
30
+ def test_host_name
31
+ Thread.current[:instana_function_arn] = 'test'
32
+
33
+ assert_equal Thread.current[:instana_function_arn], @subject.host_name
34
+ ensure
35
+ Thread.current[:instana_function_arn] = nil
36
+ end
37
+ 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,11 +40,12 @@ 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
35
47
  WebMock.disable_net_connect!(
36
- allow: ->(uri) { %w[localhost 127.0.0.1 172.17.0.1 172.0.12.100].include?(uri.host) }
48
+ allow: ->(uri) { %w[localhost 127.0.0.1 172.17.0.1 172.0.12.100].include?(uri.host) && ENV.key?('APPRAISAL_INITIALIZED') }
37
49
  )
38
50
 
39
51
  Dir['test/support/*.rb'].each { |f| load(f) }
@@ -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
@@ -68,5 +68,13 @@ class TracerIDMgmtTest < Minitest::Test
68
68
  # Bogus Array arg
69
69
  bogus_result = Instana::Util.header_to_id([1234])
70
70
  assert_equal '', bogus_result
71
+
72
+ # Invalid characters/length
73
+ bogus_result = Instana::Util.header_to_id('qwerty')
74
+ assert_equal '', bogus_result
75
+ end
76
+
77
+ def test_long_id_trim
78
+ assert_equal 16, Instana::Util.id_to_header(::Instana::Util.generate_id(2)).length
71
79
  end
72
80
  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