instana 2.0.0 → 2.1.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 (186) hide show
  1. checksums.yaml +4 -4
  2. data/lib/instana/setup.rb +1 -0
  3. data/lib/instana/span_filtering/condition.rb +134 -0
  4. data/lib/instana/span_filtering/configuration.rb +262 -0
  5. data/lib/instana/span_filtering/filter_rule.rb +31 -0
  6. data/lib/instana/span_filtering.rb +62 -0
  7. data/lib/instana/trace/span.rb +5 -3
  8. data/lib/instana/version.rb +1 -1
  9. metadata +7 -258
  10. data/.circleci/config.yml +0 -361
  11. data/.codeclimate.yml +0 -23
  12. data/.editorconfig +0 -10
  13. data/.fasterer.yml +0 -23
  14. data/.github/ISSUE_TEMPLATE/bug.yml +0 -39
  15. data/.github/ISSUE_TEMPLATE/config.yml +0 -8
  16. data/.github/workflows/pr_commits_signed_off.yml +0 -16
  17. data/.github/workflows/release-notification-on-slack.yml +0 -34
  18. data/.gitignore +0 -19
  19. data/.rubocop.yml +0 -34
  20. data/.rubocop_todo.yml +0 -1140
  21. data/.tekton/.currency/docs/report.md +0 -20
  22. data/.tekton/.currency/resources/requirements.txt +0 -4
  23. data/.tekton/.currency/resources/table.json +0 -100
  24. data/.tekton/.currency/scripts/generate_report.py +0 -308
  25. data/.tekton/README.md +0 -278
  26. data/.tekton/github-interceptor-secret.yaml +0 -8
  27. data/.tekton/github-pr-eventlistener.yaml +0 -104
  28. data/.tekton/github-pr-pipeline.yaml.part +0 -38
  29. data/.tekton/github-set-status-task.yaml +0 -43
  30. data/.tekton/github-webhook-ingress.yaml +0 -20
  31. data/.tekton/pipeline.yaml +0 -484
  32. data/.tekton/pipelinerun.yaml +0 -21
  33. data/.tekton/prepuller-restart-service-account.yaml +0 -31
  34. data/.tekton/ruby-tracer-prepuller-cronjob.yaml +0 -20
  35. data/.tekton/ruby-tracer-prepuller.yaml +0 -88
  36. data/.tekton/run_unittests.sh +0 -87
  37. data/.tekton/scheduled-eventlistener.yaml +0 -108
  38. data/.tekton/task.yaml +0 -453
  39. data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
  40. data/Appraisals +0 -124
  41. data/CONTRIBUTING.md +0 -86
  42. data/Gemfile +0 -22
  43. data/LICENSE +0 -22
  44. data/MAINTAINERS.md +0 -3
  45. data/Rakefile +0 -49
  46. data/bin/announce_release_on_slack.py +0 -103
  47. data/docker-compose.yml +0 -20
  48. data/download.sh +0 -85
  49. data/examples/otel.rb +0 -98
  50. data/examples/tracing.rb +0 -85
  51. data/extras/license_header.rb +0 -44
  52. data/gemfiles/.bundle/config +0 -2
  53. data/gemfiles/aws_30.gemfile +0 -21
  54. data/gemfiles/aws_60.gemfile +0 -16
  55. data/gemfiles/cuba_30.gemfile +0 -16
  56. data/gemfiles/cuba_40.gemfile +0 -13
  57. data/gemfiles/dalli_20.gemfile +0 -15
  58. data/gemfiles/dalli_30.gemfile +0 -12
  59. data/gemfiles/dalli_32.gemfile +0 -12
  60. data/gemfiles/excon_0100.gemfile +0 -14
  61. data/gemfiles/excon_021.gemfile +0 -17
  62. data/gemfiles/excon_079.gemfile +0 -17
  63. data/gemfiles/excon_100.gemfile +0 -14
  64. data/gemfiles/graphql_10.gemfile +0 -16
  65. data/gemfiles/graphql_20.gemfile +0 -15
  66. data/gemfiles/grpc_10.gemfile +0 -15
  67. data/gemfiles/mongo_216.gemfile +0 -15
  68. data/gemfiles/mongo_219.gemfile +0 -12
  69. data/gemfiles/net_http_01.gemfile +0 -17
  70. data/gemfiles/rack_16.gemfile +0 -15
  71. data/gemfiles/rack_20.gemfile +0 -15
  72. data/gemfiles/rack_30.gemfile +0 -13
  73. data/gemfiles/rails_42.gemfile +0 -18
  74. data/gemfiles/rails_50.gemfile +0 -19
  75. data/gemfiles/rails_52.gemfile +0 -19
  76. data/gemfiles/rails_60.gemfile +0 -19
  77. data/gemfiles/rails_61.gemfile +0 -21
  78. data/gemfiles/rails_70.gemfile +0 -18
  79. data/gemfiles/rails_71.gemfile +0 -17
  80. data/gemfiles/rails_80.gemfile +0 -17
  81. data/gemfiles/redis_40.gemfile +0 -15
  82. data/gemfiles/redis_50.gemfile +0 -13
  83. data/gemfiles/redis_51.gemfile +0 -13
  84. data/gemfiles/resque_122.gemfile +0 -16
  85. data/gemfiles/resque_1274_3scale.gemfile +0 -17
  86. data/gemfiles/resque_20.gemfile +0 -16
  87. data/gemfiles/rest_client_16.gemfile +0 -17
  88. data/gemfiles/rest_client_20.gemfile +0 -17
  89. data/gemfiles/roda_20.gemfile +0 -16
  90. data/gemfiles/roda_30.gemfile +0 -16
  91. data/gemfiles/rubocop_162.gemfile +0 -6
  92. data/gemfiles/sequel_56.gemfile +0 -16
  93. data/gemfiles/sequel_57.gemfile +0 -16
  94. data/gemfiles/sequel_58.gemfile +0 -16
  95. data/gemfiles/shoryuken_50.gemfile +0 -16
  96. data/gemfiles/shoryuken_60.gemfile +0 -13
  97. data/gemfiles/sidekiq_42.gemfile +0 -15
  98. data/gemfiles/sidekiq_50.gemfile +0 -15
  99. data/gemfiles/sidekiq_60.gemfile +0 -12
  100. data/gemfiles/sidekiq_65.gemfile +0 -12
  101. data/gemfiles/sidekiq_70.gemfile +0 -12
  102. data/gemfiles/sinatra_14.gemfile +0 -15
  103. data/gemfiles/sinatra_22.gemfile +0 -12
  104. data/gemfiles/sinatra_30.gemfile +0 -12
  105. data/gemfiles/sinatra_40.gemfile +0 -12
  106. data/instana.gemspec +0 -53
  107. data/log/.keep +0 -0
  108. data/sonar-project.properties +0 -9
  109. data/test/activator_test.rb +0 -50
  110. data/test/backend/agent_test.rb +0 -80
  111. data/test/backend/gc_snapshot_test.rb +0 -11
  112. data/test/backend/host_agent_activation_observer_test.rb +0 -73
  113. data/test/backend/host_agent_lookup_test.rb +0 -78
  114. data/test/backend/host_agent_reporting_observer_test.rb +0 -276
  115. data/test/backend/host_agent_test.rb +0 -89
  116. data/test/backend/process_info_test.rb +0 -83
  117. data/test/backend/request_client_test.rb +0 -39
  118. data/test/backend/serverless_agent_test.rb +0 -83
  119. data/test/benchmarks/bench_id_generation.rb +0 -15
  120. data/test/benchmarks/bench_opentracing.rb +0 -16
  121. data/test/config_test.rb +0 -34
  122. data/test/frameworks/cuba_test.rb +0 -61
  123. data/test/frameworks/roda_test.rb +0 -60
  124. data/test/frameworks/sinatra_test.rb +0 -71
  125. data/test/instana_test.rb +0 -37
  126. data/test/instrumentation/aws_test.rb +0 -241
  127. data/test/instrumentation/dalli_test.rb +0 -325
  128. data/test/instrumentation/excon_test.rb +0 -204
  129. data/test/instrumentation/graphql_test.rb +0 -289
  130. data/test/instrumentation/grpc_test.rb +0 -420
  131. data/test/instrumentation/mongo_test.rb +0 -68
  132. data/test/instrumentation/net_http_test.rb +0 -220
  133. data/test/instrumentation/rack_instrumented_request_test.rb +0 -211
  134. data/test/instrumentation/rack_test.rb +0 -415
  135. data/test/instrumentation/rails_action_cable_test.rb +0 -135
  136. data/test/instrumentation/rails_action_controller_test.rb +0 -218
  137. data/test/instrumentation/rails_action_mailer_test.rb +0 -66
  138. data/test/instrumentation/rails_action_view_test.rb +0 -154
  139. data/test/instrumentation/rails_active_job_test.rb +0 -65
  140. data/test/instrumentation/rails_active_record_database_missing_test.rb +0 -44
  141. data/test/instrumentation/rails_active_record_test.rb +0 -116
  142. data/test/instrumentation/redis_test.rb +0 -152
  143. data/test/instrumentation/resque_test.rb +0 -188
  144. data/test/instrumentation/rest_client_test.rb +0 -106
  145. data/test/instrumentation/sequel_test.rb +0 -111
  146. data/test/instrumentation/shoryuken_test.rb +0 -47
  147. data/test/instrumentation/sidekiq-client_test.rb +0 -169
  148. data/test/instrumentation/sidekiq-worker_test.rb +0 -180
  149. data/test/secrets_test.rb +0 -112
  150. data/test/serverless_test.rb +0 -369
  151. data/test/snapshot/deltable_test.rb +0 -17
  152. data/test/snapshot/docker_container_test.rb +0 -82
  153. data/test/snapshot/fargate_container_test.rb +0 -82
  154. data/test/snapshot/fargate_process_test.rb +0 -35
  155. data/test/snapshot/fargate_task_test.rb +0 -49
  156. data/test/snapshot/google_cloud_run_instance_test.rb +0 -74
  157. data/test/snapshot/google_cloud_run_process_test.rb +0 -33
  158. data/test/snapshot/lambda_function_test.rb +0 -37
  159. data/test/snapshot/ruby_process_test.rb +0 -32
  160. data/test/support/apps/active_record/active_record.rb +0 -24
  161. data/test/support/apps/grpc/boot.rb +0 -23
  162. data/test/support/apps/grpc/grpc_server.rb +0 -84
  163. data/test/support/apps/http_endpoint/boot.rb +0 -28
  164. data/test/support/apps/rails/boot.rb +0 -219
  165. data/test/support/apps/rails/models/block.rb +0 -21
  166. data/test/support/apps/rails/models/block6.rb +0 -21
  167. data/test/support/apps/resque/boot.rb +0 -5
  168. data/test/support/apps/resque/jobs/resque_error_job.rb +0 -22
  169. data/test/support/apps/resque/jobs/resque_fast_job.rb +0 -23
  170. data/test/support/apps/sidekiq/boot.rb +0 -25
  171. data/test/support/apps/sidekiq/jobs/sidekiq_job_1.rb +0 -9
  172. data/test/support/apps/sidekiq/jobs/sidekiq_job_2.rb +0 -10
  173. data/test/support/apps/sidekiq/worker.rb +0 -37
  174. data/test/support/helpers.rb +0 -85
  175. data/test/support/mock_timer.rb +0 -20
  176. data/test/test_helper.rb +0 -69
  177. data/test/trace/custom_test.rb +0 -233
  178. data/test/trace/id_management_test.rb +0 -78
  179. data/test/trace/instrumented_logger_test.rb +0 -39
  180. data/test/trace/processor_test.rb +0 -58
  181. data/test/trace/span_context_test.rb +0 -22
  182. data/test/trace/span_test.rb +0 -179
  183. data/test/trace/tracer_async_test.rb +0 -243
  184. data/test/trace/tracer_provider_test.rb +0 -148
  185. data/test/trace/tracer_test.rb +0 -363
  186. data/test/util_test.rb +0 -10
@@ -1,152 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2017
3
-
4
- require 'test_helper'
5
-
6
- class RedisTest < Minitest::Test
7
- def setup
8
- if ENV.key?('REDIS_URL')
9
- @redis_url = ENV['REDIS_URL']
10
- else
11
- @redis_url = "redis://localhost:6379"
12
- end
13
- @redis_client = Redis.new(url: @redis_url)
14
- end
15
-
16
- def test_normal_call
17
- clear_all!
18
-
19
- Instana.tracer.in_span(:redis_test) do
20
- @redis_client.set('hello', 'world')
21
- end
22
-
23
- assert_redis_trace('SET')
24
- end
25
-
26
- def test_normal_call_as_root_exit_span
27
- clear_all!
28
-
29
- ::Instana.config[:allow_exit_as_root] = true
30
-
31
- @redis_client.set('hello', 'world')
32
-
33
- spans = ::Instana.processor.queued_spans
34
- assert_equal 1, spans.length
35
- redis_span = spans[0]
36
-
37
- # first_span is the parent of second_span
38
- assert_equal :redis, redis_span[:n]
39
-
40
- data = redis_span[:data]
41
-
42
- uri = URI.parse(@redis_url)
43
- assert_equal "#{uri.host}:#{uri.port}", data[:redis][:connection]
44
-
45
- assert_equal "0", data[:redis][:db]
46
- assert_equal "SET", data[:redis][:command]
47
- end
48
-
49
- def test_georadius
50
- clear_all!
51
-
52
- Instana.tracer.in_span(:redis_test) do
53
- @redis_client.georadius('Sicily', '15', '37', '200', 'km', 'WITHCOORD', 'WITHDIST')
54
- end
55
-
56
- assert_redis_trace('GEORADIUS')
57
- end
58
-
59
- def test_normal_call_with_error
60
- clear_all!
61
-
62
- Instana.tracer.in_span(:redis_test) do
63
- begin
64
- @redis_client.zadd('hello', 'invalid', 'value')
65
- rescue; end
66
- end
67
-
68
- assert_redis_trace('ZADD', with_error: 'ERR value is not a valid float')
69
- end
70
-
71
- def test_pipeline_call
72
- clear_all!
73
-
74
- Instana.tracer.in_span(:redis_test) do
75
- @redis_client.pipelined do |pipeline|
76
- pipeline.set('hello', 'world')
77
- pipeline.set('other', 'world')
78
- end
79
- end
80
-
81
- assert_redis_trace('PIPELINE')
82
- end
83
-
84
- def test_pipeline_call_with_error
85
- clear_all!
86
-
87
- Instana.tracer.in_span(:redis_test) do
88
- begin
89
- @redis_client.pipelined do |pipeline|
90
- pipeline.set('other', 'world')
91
- pipeline.call('invalid')
92
- end
93
- rescue; end
94
- end
95
-
96
- assert_redis_trace('PIPELINE', with_error: "ERR unknown command 'invalid'")
97
- end
98
-
99
- def test_multi_call
100
- clear_all!
101
-
102
- Instana.tracer.in_span(:redis_test) do
103
- @redis_client.multi do |multi|
104
- multi.set('hello', 'world')
105
- multi.set('other', 'world')
106
- end
107
- end
108
-
109
- assert_redis_trace('MULTI')
110
- end
111
-
112
- def test_multi_call_with_error
113
- clear_all!
114
-
115
- Instana.tracer.in_span(:redis_test) do
116
- begin
117
- @redis_client.multi do |multi|
118
- multi.set('other', 'world')
119
- multi.call('invalid')
120
- end
121
- rescue; end
122
- end
123
-
124
- assert_redis_trace('MULTI', with_error: "ERR unknown command 'invalid'")
125
- end
126
-
127
- private
128
-
129
- def assert_redis_trace(command, with_error: nil)
130
- spans = ::Instana.processor.queued_spans
131
- assert_equal 2, spans.length
132
- first_span, second_span = spans.to_a.reverse
133
-
134
- # first_span is the parent of second_span
135
- assert_equal first_span[:s], second_span[:p]
136
- assert_equal :sdk, first_span[:n]
137
- assert_equal :redis, second_span[:n]
138
-
139
- data = second_span[:data]
140
-
141
- uri = URI.parse(@redis_url)
142
- assert_equal "#{uri.host}:#{uri.port}", data[:redis][:connection]
143
-
144
- assert_equal "0", data[:redis][:db]
145
- assert_equal command, data[:redis][:command]
146
-
147
- if with_error
148
- assert_equal true, data[:redis][:error]
149
- assert data[:log].key?(:message)
150
- end
151
- end
152
- end
@@ -1,188 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2018
3
-
4
- require 'test_helper'
5
- require 'support/apps/resque/boot'
6
-
7
- ::Resque.redis = ENV['REDIS_URL']
8
-
9
- class ResqueClientTest < Minitest::Test
10
- def setup
11
- clear_all!
12
- ENV['FORK_PER_JOB'] = 'false'
13
- Resque.redis.redis.flushall
14
- @worker = Resque::Worker.new(:critical)
15
- end
16
-
17
- def teardown
18
- ::Instana.config[:allow_exit_as_root] = false
19
- end
20
-
21
- def test_enqueue
22
- ::Instana.tracer.in_span(:'resque-client_test') do
23
- ::Resque.enqueue(FastJob)
24
- end
25
-
26
- resque_job = Resque.reserve('critical')
27
- spans = ::Instana.processor.queued_spans
28
- assert_equal 2, spans.length
29
-
30
- sdk_span = find_first_span_by_name(spans, :'resque-client_test')
31
- resque_span = find_first_span_by_name(spans, :'resque-client')
32
-
33
- assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
34
-
35
- assert_equal :"resque-client", resque_span[:n]
36
- assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
37
- assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
38
- assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
39
-
40
- assert_equal resque_job.args.first['trace_id'], resque_span[:t]
41
- assert_equal resque_job.args.first['span_id'], resque_span[:s]
42
- end
43
-
44
- def test_enqueue_as_root_exit_span
45
- ::Instana.config[:allow_exit_as_root] = true
46
- ::Resque.enqueue(FastJob)
47
- ::Instana.config[:allow_exit_as_root] = false
48
-
49
- resque_job = Resque.reserve('critical')
50
- spans = ::Instana.processor.queued_spans
51
- assert_equal 1, spans.length
52
-
53
- resque_span = spans[0]
54
-
55
- assert_equal :"resque-client", resque_span[:n]
56
- assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
57
- assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
58
- assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
59
-
60
- assert_equal resque_job.args.first['trace_id'], resque_span[:t]
61
- assert_equal resque_job.args.first['span_id'], resque_span[:s]
62
- end
63
-
64
- def test_enqueue_to
65
- ::Instana.tracer.in_span(:'resque-client_test') do
66
- ::Resque.enqueue_to(:critical, FastJob)
67
- end
68
-
69
- resque_job = Resque.reserve('critical')
70
- spans = ::Instana.processor.queued_spans
71
- assert_equal 2, spans.length
72
-
73
- sdk_span = find_first_span_by_name(spans, :'resque-client_test')
74
- resque_span = find_first_span_by_name(spans, :'resque-client')
75
-
76
- assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
77
- assert_equal :"resque-client", resque_span[:n]
78
- assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
79
- assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
80
- assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
81
-
82
- assert_equal resque_job.args.first['trace_id'], resque_span[:t]
83
- assert_equal resque_job.args.first['span_id'], resque_span[:s]
84
- end
85
-
86
- def test_dequeue
87
- ::Instana.tracer.in_span(:'resque-client_test') do
88
- ::Resque.dequeue(FastJob, { :generate => :farfalla })
89
- end
90
-
91
- spans = ::Instana.processor.queued_spans
92
- assert_equal 2, spans.length
93
-
94
- sdk_span = find_first_span_by_name(spans, :'resque-client_test')
95
- resque_span = find_first_span_by_name(spans, :'resque-client')
96
-
97
- assert_equal :'resque-client_test', sdk_span[:data][:sdk][:name]
98
- assert_equal :"resque-client", resque_span[:n]
99
- assert_equal "FastJob", resque_span[:data][:'resque-client'][:job]
100
- assert_equal :critical, resque_span[:data][:'resque-client'][:queue]
101
- assert_equal false, resque_span[:data][:'resque-client'].key?(:error)
102
- end
103
-
104
- def test_worker_job
105
- ::Instana.tracer.in_span(:'resque-client_test') do
106
- ::Resque.enqueue_to(:critical, FastJob)
107
- end
108
-
109
- resque_job = Resque.reserve('critical')
110
- @worker.work_one_job(resque_job)
111
-
112
- spans = ::Instana.processor.queued_spans
113
- assert_equal 5, spans.length
114
-
115
- client_span = spans[0]
116
- resque_span = spans[4]
117
- redis1_span = spans[3]
118
- redis2_span = spans[2]
119
-
120
- assert_equal :'resque-client', client_span[:n]
121
-
122
- assert_equal :'resque-worker', resque_span[:n]
123
- assert_equal client_span[:s], resque_span[:p]
124
- assert_equal false, resque_span.key?(:error)
125
- assert_equal false, resque_span.key?(:ec)
126
- assert_equal "FastJob", resque_span[:data][:'resque-worker'][:job]
127
- assert_equal "critical", resque_span[:data][:'resque-worker'][:queue]
128
- assert_equal false, resque_span[:data][:'resque-worker'].key?(:error)
129
-
130
- assert_equal :redis, redis1_span[:n]
131
- assert_equal "SET", redis1_span[:data][:redis][:command]
132
- assert_equal :redis, redis2_span[:n]
133
- assert_equal "SET", redis2_span[:data][:redis][:command]
134
- end
135
-
136
- def test_worker_job_no_propagate
137
- ::Instana.config[:'resque-client'][:propagate] = false
138
- ::Instana.tracer.in_span(:'resque-client_test') do
139
- ::Resque.enqueue_to(:critical, FastJob)
140
- end
141
-
142
- resque_job = Resque.reserve('critical')
143
- @worker.work_one_job(resque_job)
144
-
145
- spans = ::Instana.processor.queued_spans
146
- assert_equal 5, spans.length
147
-
148
- client_span = spans[0]
149
- resque_span = spans[4]
150
- redis1_span = spans[3]
151
- redis2_span = spans[2]
152
-
153
- assert_equal :'resque-client', client_span[:n]
154
-
155
- assert_equal :'resque-worker', resque_span[:n]
156
- refute_equal client_span[:s], resque_span[:p]
157
- assert_equal false, resque_span.key?(:error)
158
- assert_equal false, resque_span.key?(:ec)
159
- assert_equal "FastJob", resque_span[:data][:'resque-worker'][:job]
160
- assert_equal "critical", resque_span[:data][:'resque-worker'][:queue]
161
- assert_equal false, resque_span[:data][:'resque-worker'].key?(:error)
162
-
163
- assert_equal :redis, redis1_span[:n]
164
- assert_equal "SET", redis1_span[:data][:redis][:command]
165
- assert_equal :redis, redis2_span[:n]
166
- assert_equal "SET", redis2_span[:data][:redis][:command]
167
- ensure
168
- ::Instana.config[:'resque-client'][:propagate] = true
169
- end
170
-
171
- def test_worker_error_job
172
- Resque::Job.create(:critical, ErrorJob)
173
- @worker.work(0)
174
-
175
- spans = ::Instana.processor.queued_spans
176
- assert_equal 5, spans.length
177
-
178
- resque_span = find_first_span_by_name(spans, :'resque-worker')
179
-
180
- assert_equal :'resque-worker', resque_span[:n]
181
- assert_equal true, resque_span.key?(:error)
182
- assert_equal 1, resque_span[:ec]
183
- assert_equal "ErrorJob", resque_span[:data][:'resque-worker'][:job]
184
- assert_equal "critical", resque_span[:data][:'resque-worker'][:queue]
185
- assert_equal "Exception: Silly Rabbit, Trix are for kids.", resque_span[:data][:'resque-worker'][:error]
186
- assert_equal Array, resque_span[:stack].class
187
- end
188
- end
@@ -1,106 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2016
3
-
4
- require 'test_helper'
5
- require 'support/apps/http_endpoint/boot'
6
-
7
- class RestClientTest < Minitest::Test
8
- def setup
9
- # See https://github.com/rest-client/rest-client/issues/612
10
- OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers] = OpenSSL::SSL::SSLContext.new.ciphers
11
- end
12
-
13
- def teardown
14
- ::Instana.config[:allow_exit_as_root] = false
15
- end
16
-
17
- def test_config_defaults
18
- assert ::Instana.config[:'rest-client'].is_a?(Hash)
19
- assert ::Instana.config[:'rest-client'].key?(:enabled)
20
- assert_equal true, ::Instana.config[:'rest-client'][:enabled]
21
- end
22
-
23
- def test_basic_get
24
- clear_all!
25
- WebMock.allow_net_connect!
26
-
27
- url = "http://127.0.0.1:6511/"
28
-
29
- Instana.tracer.in_span('restclient-test') do
30
- RestClient.get url
31
- end
32
-
33
- spans = ::Instana.processor.queued_spans
34
- assert_equal 4, spans.length
35
-
36
- rack_span = find_first_span_by_name(spans, :rack)
37
- sdk_span = find_first_span_by_name(spans, :'restclient-test')
38
- rest_span = find_first_span_by_name(spans, :'rest-client')
39
- net_span = find_first_span_by_name(spans, :'net-http')
40
-
41
- validate_sdk_span(sdk_span, {:name => :'restclient-test', :type => :entry})
42
- validate_sdk_span(rest_span, {:name => :'rest-client', :type => :intermediate})
43
-
44
- # Span name validation
45
- assert_equal :rack, rack_span[:n]
46
- assert_equal :sdk, sdk_span[:n]
47
- assert_equal :sdk, rest_span[:n]
48
- assert_equal :"net-http", net_span[:n]
49
-
50
- # Trace IDs and relationships
51
- trace_id = sdk_span[:t]
52
- assert_equal trace_id, rest_span[:t]
53
- assert_equal trace_id, net_span[:t]
54
- assert_equal trace_id, rack_span[:t]
55
-
56
- assert_equal sdk_span[:s], rest_span[:p]
57
- assert_equal rest_span[:s], net_span[:p]
58
- assert_equal net_span[:s], rack_span[:p]
59
-
60
- # data keys/values
61
- refute_nil net_span.key?(:data)
62
- refute_nil net_span[:data].key?(:http)
63
- assert_equal "http://127.0.0.1:6511/", net_span[:data][:http][:url]
64
- assert_equal "200", net_span[:data][:http][:status]
65
-
66
- WebMock.disable_net_connect!
67
- end
68
-
69
- def test_basic_get_as_root_exit_span
70
- clear_all!
71
- ::Instana.config[:allow_exit_as_root] = true
72
- WebMock.allow_net_connect!
73
-
74
- url = "http://127.0.0.1:6511/"
75
-
76
- RestClient.get url
77
-
78
- spans = ::Instana.processor.queued_spans
79
- assert_equal 3, spans.length
80
-
81
- rack_span = find_first_span_by_name(spans, :rack)
82
- rest_span = find_first_span_by_name(spans, :'rest-client')
83
- net_span = find_first_span_by_name(spans, :'net-http')
84
- # Span name validation
85
- assert_equal :rack, rack_span[:n]
86
- assert_equal :sdk, rest_span[:n]
87
- assert_equal :"net-http", net_span[:n]
88
-
89
- # Trace IDs and relationships
90
- trace_id = net_span[:t]
91
- assert_equal trace_id, rest_span[:t]
92
- assert_equal trace_id, rack_span[:t]
93
-
94
- assert_nil rest_span[:p]
95
- assert_equal rest_span[:s], net_span[:p]
96
- assert_equal net_span[:s], rack_span[:p]
97
-
98
- # data keys/values
99
- refute_nil net_span.key?(:data)
100
- refute_nil net_span[:data].key?(:http)
101
- assert_equal "http://127.0.0.1:6511/", net_span[:data][:http][:url]
102
- assert_equal "200", net_span[:data][:http][:status]
103
-
104
- WebMock.disable_net_connect!
105
- end
106
- end
@@ -1,111 +0,0 @@
1
- # (c) Copyright IBM Corp. 2024
2
-
3
- require 'test_helper'
4
- require 'sequel'
5
-
6
- class SequelTest < Minitest::Test
7
- def setup
8
- skip unless ENV['DATABASE_URL']
9
- db_url = ENV['DATABASE_URL'].sub("sqlite3", "sqlite")
10
- @db = Sequel.connect(db_url)
11
- @db.create_table!(:blocks) do
12
- String :name
13
- String :color
14
- end
15
- @model = @db[:blocks]
16
- end
17
-
18
- def teardown
19
- @db.drop_table(:blocks)
20
- @db.disconnect
21
- end
22
-
23
- def test_config_defaults
24
- assert ::Instana.config[:sanitize_sql] == true
25
- assert ::Instana.config[:sequel].is_a?(Hash)
26
- assert ::Instana.config[:sequel].key?(:enabled)
27
- assert_equal true, ::Instana.config[:sequel][:enabled]
28
- end
29
-
30
- def test_create
31
- clear_all!
32
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
33
- @model.insert(name: 'core', color: 'blue')
34
- end
35
- spans = ::Instana.processor.queued_spans
36
- assert_equal 2, spans.length
37
- span = find_first_span_by_name(spans, :sequel)
38
- data = span[:data][:sequel]
39
- assert data[:sql].start_with?('INSERT INTO')
40
- end
41
-
42
- def test_read
43
- clear_all!
44
- @model.insert(name: 'core', color: 'blue')
45
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
46
- @model.where(name: 'core').first
47
- end
48
- spans = ::Instana.processor.queued_spans
49
- assert_equal 2, spans.length
50
- span = find_first_span_by_name(spans, :sequel)
51
- data = span[:data][:sequel]
52
- assert data[:sql].start_with?('SELECT')
53
- assert_nil span[:ec]
54
- end
55
-
56
- def test_update
57
- clear_all!
58
- @model.insert(name: 'core', color: 'blue')
59
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
60
- @model.where(name: 'core').update(color: 'red')
61
- end
62
- spans = ::Instana.processor.queued_spans
63
- assert_equal 2, spans.length
64
- span = find_first_span_by_name(spans, :sequel)
65
- data = span[:data][:sequel]
66
- assert data[:sql].start_with?('UPDATE')
67
- assert_nil span[:ec]
68
- assert_equal 'red', @model.where(name: 'core').first[:color]
69
- end
70
-
71
- def test_delete
72
- clear_all!
73
- @model.insert(name: 'core', color: 'blue')
74
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
75
- @model.where(name: 'core').delete
76
- end
77
- spans = ::Instana.processor.queued_spans
78
- assert_equal 2, spans.length
79
- span = find_first_span_by_name(spans, :sequel)
80
- data = span[:data][:sequel]
81
- assert data[:sql].start_with?('DELETE')
82
- assert_nil span[:ec]
83
- assert_nil @model.where(name: 'core').first
84
- end
85
-
86
- def test_raw
87
- clear_all!
88
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
89
- @db.run('SELECT 1')
90
- end
91
- spans = ::Instana.processor.queued_spans
92
- assert_equal 2, spans.length
93
- span = find_first_span_by_name(spans, :sequel)
94
- data = span[:data][:sequel]
95
- assert 'SELECT 1', data[:sql]
96
- assert_nil span[:ec]
97
- end
98
-
99
- def test_raw_error
100
- clear_all!
101
- assert_raises Sequel::DatabaseError do
102
- Instana.tracer.in_span(:sequel_test, attributes: {}) do
103
- @db.run('INVALID')
104
- end
105
- end
106
- spans = ::Instana.processor.queued_spans
107
- assert_equal 2, spans.length
108
- span = find_first_span_by_name(spans, :sequel)
109
- assert_equal 1, span[:ec]
110
- end
111
- end
@@ -1,47 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
- require 'ostruct'
6
-
7
- class ShoryukenTest < Minitest::Test
8
- def setup
9
- clear_all!
10
- @middleware = Instana::Instrumentation::Shoryuken.new
11
- end
12
-
13
- def test_start_trace_with_context
14
- id = Instana::Util.generate_id
15
- message = OpenStruct.new(
16
- queue_url: 'http://example.com',
17
- message_attributes: {
18
- "X_INSTANA_T" => OpenStruct.new(string_value: id),
19
- "X_INSTANA_S" => OpenStruct.new(string_value: id),
20
- "X_INSTANA_L" => OpenStruct.new(string_value: '1')
21
- }
22
- )
23
-
24
- @middleware.call(nil, nil, message, nil) {}
25
-
26
- span = ::Instana.processor.queued_spans.first
27
-
28
- assert_equal id, span[:t]
29
- assert_equal id, span[:p]
30
- assert_equal 'entry', span[:data][:sqs][:sort]
31
- assert_equal 'http://example.com', span[:data][:sqs][:queue]
32
- end
33
-
34
- def test_start_trace
35
- message = OpenStruct.new(
36
- queue_url: 'http://example.com'
37
- )
38
-
39
- @middleware.call(nil, nil, message, nil) {}
40
-
41
- span = ::Instana.processor.queued_spans.first
42
-
43
- assert_nil span[:p]
44
- assert_equal 'entry', span[:data][:sqs][:sort]
45
- assert_equal 'http://example.com', span[:data][:sqs][:queue]
46
- end
47
- end