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,218 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2017
3
-
4
- require 'test_helper'
5
-
6
- class RailsActionControllerTest < Minitest::Test
7
- include Rack::Test::Methods
8
- begin
9
- ENV['INSTANA_TEST'] = nil
10
- APP = Rack::Builder.parse_file('test/support/apps/action_controller/config.ru')
11
- ensure
12
- ENV['INSTANA_TEST'] = 'true'
13
- end
14
- railties_version = Gem::Specification.find_by_name('railties').version
15
- if railties_version < Gem::Version.new('7.1.0')
16
- APP = APP.first
17
- end
18
-
19
- def app
20
- APP
21
- end
22
-
23
- def test_config_defaults
24
- assert ::Instana.config[:action_controller].is_a?(Hash)
25
- assert ::Instana.config[:action_controller].key?(:enabled)
26
- assert_equal true, ::Instana.config[:action_controller][:enabled]
27
- end
28
-
29
- def test_controller_reporting
30
- clear_all!
31
-
32
- get '/base/world'
33
- assert last_response.ok?
34
-
35
- spans = ::Instana.processor.queued_spans
36
- assert_equal 3, spans.length
37
-
38
- ac_span = find_first_span_by_name(spans, :actioncontroller)
39
-
40
- assert_equal "TestBaseController", ac_span[:data][:actioncontroller][:controller]
41
- assert_equal "world", ac_span[:data][:actioncontroller][:action]
42
- end
43
-
44
- def test_controller_error
45
- clear_all!
46
-
47
- get '/base/error'
48
- refute last_response.ok?
49
-
50
- spans = ::Instana.processor.queued_spans
51
- # 2 + 1 or more error log depending on Rails version
52
- assert spans.length >= 3
53
-
54
- ac_span = find_first_span_by_name(spans, :actioncontroller)
55
-
56
- assert_equal "TestBaseController", ac_span[:data][:actioncontroller][:controller]
57
- assert_equal "error", ac_span[:data][:actioncontroller][:action]
58
- assert ac_span.key?(:error)
59
- assert ac_span.key?(:stack)
60
- assert_equal "Warning: This is a simulated Error", ac_span[:data][:log][:message]
61
- assert_equal "StandardError", ac_span[:data][:log][:parameters]
62
- end
63
-
64
- def test_api_controller_reporting
65
- # Run only when ActionController::API is used/defined
66
- skip unless defined?(::ActionController::API)
67
-
68
- clear_all!
69
-
70
- get '/api/world'
71
- assert last_response.ok?
72
-
73
- spans = ::Instana.processor.queued_spans
74
- # 2 + 1 or more error log depending on Rails version
75
- assert spans.length >= 3
76
-
77
- ac_span = find_first_span_by_name(spans, :actioncontroller)
78
-
79
- assert_equal :actioncontroller, ac_span[:n]
80
- assert_equal "TestApiController", ac_span[:data][:actioncontroller][:controller]
81
- assert_equal "world", ac_span[:data][:actioncontroller][:action]
82
- end
83
-
84
- def test_api_controller_error
85
- # Run only when ActionController::API is used/defined
86
- skip unless defined?(::ActionController::API)
87
-
88
- clear_all!
89
-
90
- get '/api/error'
91
- refute last_response.ok?
92
-
93
- spans = ::Instana.processor.queued_spans
94
- # 2 + 1 or more error log depending on Rails version
95
- assert spans.length >= 3
96
-
97
- ac_span = find_first_span_by_name(spans, :actioncontroller)
98
-
99
- assert_equal "TestApiController", ac_span[:data][:actioncontroller][:controller]
100
- assert_equal "error", ac_span[:data][:actioncontroller][:action]
101
- assert ac_span.key?(:error)
102
- assert ac_span.key?(:stack)
103
- assert_equal "Warning: This is a simulated Socket API Error", ac_span[:data][:log][:message]
104
- assert_equal "StandardError", ac_span[:data][:log][:parameters]
105
- end
106
-
107
- def test_api_controller_not_found
108
- # Run only when ActionController::API is used/defined
109
- skip unless defined?(::ActionController::API)
110
-
111
- clear_all!
112
-
113
- get '/api/thispathdoesnotexist'
114
- refute last_response.ok?
115
-
116
- spans = ::Instana.processor.queued_spans
117
- # 1 + 1 or more error log depending on Rails version
118
- assert spans.length >= 2
119
-
120
- rack_span = find_first_span_by_name(spans, :rack)
121
-
122
- assert_equal false, rack_span.key?(:error)
123
- assert_equal "/api/thispathdoesnotexist", rack_span[:data][:http][:url]
124
- assert_equal 404, rack_span[:data][:http][:status]
125
- assert_equal "GET", rack_span[:data][:http][:method]
126
- end
127
-
128
- def test_api_controller_raise_routing_error
129
- # Run only when ActionController::API is used/defined
130
- skip unless defined?(::ActionController::API)
131
-
132
- clear_all!
133
-
134
- get '/api/raise_route_error'
135
- refute last_response.ok?
136
-
137
- spans = ::Instana.processor.queued_spans
138
-
139
- # 2 + 1 or more error log depending on Rails version
140
- assert spans.length >= 3
141
-
142
- rack_span = find_first_span_by_name(spans, :rack)
143
- ac_span = find_first_span_by_name(spans, :actioncontroller)
144
-
145
- assert_equal false, rack_span.key?(:error)
146
- assert_equal "/api/raise_route_error", rack_span[:data][:http][:url]
147
- assert_equal 404, rack_span[:data][:http][:status]
148
- assert_equal "GET", rack_span[:data][:http][:method]
149
-
150
- assert_equal true, ac_span[:error]
151
- assert ac_span.key?(:stack)
152
- assert 1, ac_span[:ec]
153
- end
154
-
155
- def test_not_found
156
- clear_all!
157
-
158
- get '/base/404'
159
- refute last_response.ok?
160
-
161
- spans = ::Instana.processor.queued_spans
162
- # 1 + 1 or more error log depending on Rails version
163
- assert spans.length >= 2
164
-
165
- rack_span = find_first_span_by_name(spans, :rack)
166
-
167
- assert_equal false, rack_span.key?(:error)
168
- assert_equal 404, rack_span[:data][:http][:status]
169
- end
170
-
171
- def test_raise_routing_error
172
- clear_all!
173
-
174
- get '/base/raise_route_error'
175
- refute last_response.ok?
176
-
177
- spans = ::Instana.processor.queued_spans
178
- # 2 + 1 or more error log depending on Rails version
179
- assert spans.length >= 3
180
-
181
- rack_span = find_first_span_by_name(spans, :rack)
182
- ac_span = find_first_span_by_name(spans, :actioncontroller)
183
-
184
- assert_equal false, rack_span.key?(:error)
185
- assert_equal 404, rack_span[:data][:http][:status]
186
-
187
- assert_equal true, ac_span[:error]
188
- assert ac_span.key?(:stack)
189
- assert 1, ac_span[:ec]
190
- end
191
-
192
- def test_path_template
193
- clear_all!
194
-
195
- get '/base/world'
196
- assert last_response.ok?
197
-
198
- spans = ::Instana.processor.queued_spans
199
- rack_span = find_first_span_by_name(spans, :rack)
200
-
201
- assert_equal false, rack_span.key?(:error)
202
- assert_equal '/base/world(.:format)', rack_span[:data][:http][:path_tpl]
203
- end
204
-
205
- def test_log
206
- clear_all!
207
-
208
- get '/base/log_warning'
209
- assert last_response.ok?
210
-
211
- spans = ::Instana.processor.queued_spans
212
- assert spans[0][:data][:log]
213
- log_span = spans[0][:data][:log]
214
-
215
- assert_equal "Warn", log_span[:level]
216
- assert_equal "This is a test warning", log_span[:message]
217
- end
218
- end
@@ -1,66 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
- require 'action_mailer'
6
-
7
- class RailsActionMailerTest < Minitest::Test
8
- class TestMailer < ActionMailer::Base
9
- def sample_email
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
28
- end
29
- end
30
-
31
- def setup
32
- TestMailer.delivery_method = :sendmail
33
-
34
- clear_all!
35
- end
36
-
37
- def teardown
38
- ::Instana.config[:allow_exit_as_root] = false
39
- end
40
-
41
- def test_mailer
42
- Instana.tracer.in_span(:test) do
43
- TestMailer.sample_email.deliver_now
44
- end
45
-
46
- mail_span, = *::Instana.processor.queued_spans
47
-
48
- assert_equal :"mail.actionmailer", mail_span[:n]
49
- assert_equal 'RailsActionMailerTest::TestMailer', mail_span[:data][:actionmailer][:class]
50
- assert_equal 'sample_email', mail_span[:data][:actionmailer][:method]
51
- end
52
-
53
- def test_mailer_as_root_exit_span
54
- ::Instana.config[:allow_exit_as_root] = true
55
- TestMailer.sample_email.deliver_now
56
- ::Instana.config[:allow_exit_as_root] = false
57
-
58
- queued_spans = Instana.processor.queued_spans
59
- assert_equal 1, queued_spans.length
60
- mail_span = queued_spans[0]
61
-
62
- assert_equal :"mail.actionmailer", mail_span[:n]
63
- assert_equal 'RailsActionMailerTest::TestMailer', mail_span[:data][:actionmailer][:class]
64
- assert_equal 'sample_email', mail_span[:data][:actionmailer][:method]
65
- end
66
- end
@@ -1,154 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class RailsActionViewTest < Minitest::Test
7
- include Rack::Test::Methods
8
- APP = Rack::Builder.parse_file('test/support/apps/action_view/config.ru')
9
- railties_version = Gem::Specification.find_by_name('railties').version
10
- if railties_version < Gem::Version.new('7.1.0')
11
- APP = APP.first
12
- end
13
-
14
- def app
15
- APP
16
- end
17
-
18
- def setup
19
- clear_all!
20
- end
21
-
22
- def test_config_defaults
23
- assert ::Instana.config[:action_view].is_a?(Hash)
24
- assert ::Instana.config[:action_view].key?(:enabled)
25
- assert_equal true, ::Instana.config[:action_view][:enabled]
26
- end
27
-
28
- def test_render_view
29
- get '/render_view'
30
- assert last_response.ok?
31
-
32
- spans = ::Instana.processor.queued_spans
33
- span = find_first_span_by_name(spans, :actionview)
34
-
35
- assert_equal 'Default', span[:data][:actionview][:name]
36
- end
37
-
38
- def test_render_view_direct
39
- get '/render_view_direct'
40
- assert last_response.ok?
41
-
42
- spans = ::Instana.processor.queued_spans
43
- span = find_first_span_by_name(spans, :actionview)
44
-
45
- assert_equal 'Default', span[:data][:actionview][:name]
46
- end
47
-
48
- def test_render_nothing
49
- # `render nothing: true` was removed in 5.1
50
- skip unless Rails::VERSION::MAJOR <= 5 && Rails::VERSION::MINOR <= 1
51
- get '/render_nothing'
52
- assert last_response.ok?
53
-
54
- spans = ::Instana.processor.queued_spans
55
- span = find_first_span_by_name(spans, :actionview)
56
-
57
- assert_equal 'Nothing', span[:data][:actionview][:name]
58
- end
59
-
60
- def test_render_file
61
- get '/render_file'
62
- assert last_response.ok?
63
-
64
- spans = ::Instana.processor.queued_spans
65
- span = find_first_span_by_name(spans, :actionview)
66
-
67
- assert_equal 'test/support/apps/action_view/config.ru', span[:data][:actionview][:name]
68
- end
69
-
70
- def test_render_json
71
- get '/render_json'
72
- assert last_response.ok?
73
-
74
- spans = ::Instana.processor.queued_spans
75
- span = find_first_span_by_name(spans, :actionview)
76
-
77
- assert_equal 'JSON', span[:data][:actionview][:name]
78
- end
79
-
80
- def test_render_xml
81
- get '/render_xml'
82
- assert last_response.ok?
83
-
84
- spans = ::Instana.processor.queued_spans
85
- span = find_first_span_by_name(spans, :actionview)
86
-
87
- assert_equal 'XML', span[:data][:actionview][:name]
88
- end
89
-
90
- def test_render_body
91
- get '/render_rawbody'
92
- assert last_response.ok?
93
-
94
- spans = ::Instana.processor.queued_spans
95
- span = find_first_span_by_name(spans, :actionview)
96
-
97
- assert_equal 'Raw', span[:data][:actionview][:name]
98
- end
99
-
100
- def test_render_js
101
- get '/render_js'
102
- assert last_response.ok?
103
-
104
- spans = ::Instana.processor.queued_spans
105
- span = find_first_span_by_name(spans, :actionview)
106
-
107
- assert_equal 'Javascript', span[:data][:actionview][:name]
108
- end
109
-
110
- def test_render_alternate_layout
111
- get '/render_alternate_layout'
112
- assert last_response.ok?
113
-
114
- spans = ::Instana.processor.queued_spans
115
- span = find_first_span_by_name(spans, :actionview)
116
-
117
- assert_equal 'layouts/mobile', span[:data][:actionview][:name]
118
- end
119
-
120
- def test_render_partial
121
- get '/render_partial'
122
- assert last_response.ok?
123
-
124
- spans = ::Instana.processor.queued_spans
125
- span = find_first_span_by_name(spans, :render)
126
-
127
- assert_equal 'message', span[:data][:render][:name]
128
- end
129
-
130
- def test_render_partial_that_errors
131
- get '/render_partial_that_errors'
132
- refute last_response.ok?
133
-
134
- spans = ::Instana.processor.queued_spans
135
- span = find_first_span_by_name(spans, :render)
136
-
137
- assert_equal :partial, span[:data][:render][:type]
138
- assert_equal 'syntax_error', span[:data][:render][:name]
139
- assert span[:data][:log].key?(:message)
140
- assert span[:data][:log][:parameters].include?('SyntaxError')
141
- assert span[:error]
142
- assert span[:stack]
143
- end
144
-
145
- def test_render_collection
146
- get '/render_collection'
147
- assert last_response.ok?
148
-
149
- spans = ::Instana.processor.queued_spans
150
- span = find_first_span_by_name(spans, :render)
151
- assert_equal :collection, span[:data][:render][:type]
152
- assert_equal 'blocks/block', span[:data][:render][:name]
153
- end
154
- end
@@ -1,65 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- require 'rails'
7
- require 'active_job'
8
-
9
- class RailsActiveJobTest < Minitest::Test
10
- class SampleJob < ActiveJob::Base
11
- queue_as :test_queue
12
-
13
- def perform(*args); end
14
- end
15
-
16
- def setup
17
- @test_adapter = ActiveJob::Base.queue_adapter = ActiveJob::QueueAdapters::TestAdapter.new
18
- ActiveJob::Base.logger = Logger.new('/dev/null')
19
-
20
- clear_all!
21
- end
22
-
23
- def test_perform_now
24
- SampleJob.perform_now("test_perform_now")
25
- spans = ::Instana.processor.queued_spans
26
-
27
- server_span, *rest = spans
28
- assert_equal [], rest
29
-
30
- assert_equal :activejob, server_span[:n]
31
- assert_equal 'RailsActiveJobTest::SampleJob', server_span[:data][:activejob][:job]
32
- assert_equal :perform, server_span[:data][:activejob][:action]
33
- assert_equal 'test_queue', server_span[:data][:activejob][:queue]
34
- end
35
-
36
- def test_enqueue_perform
37
- # ActiveJob::QueueAdapters::TestAdapter.new doesn't work for this test on any version less than 6
38
- skip unless Rails::VERSION::MAJOR >= 6
39
-
40
- Instana.tracer.in_span(:peform_test) do
41
- SampleJob.perform_later("test_enqueue_perform")
42
- end
43
-
44
- job, *rest_jobs = @test_adapter.enqueued_jobs
45
- assert_equal [], rest_jobs
46
-
47
- ActiveJob::Base.execute(job)
48
-
49
- spans = ::Instana.processor.queued_spans
50
- client_span, _test_span, server_span, *rest = spans
51
- assert_equal [], rest
52
-
53
- assert_equal :activejob, server_span[:n]
54
- assert_equal 'RailsActiveJobTest::SampleJob', server_span[:data][:activejob][:job]
55
- assert_equal :perform, server_span[:data][:activejob][:action]
56
-
57
- assert_equal :activejob, client_span[:n]
58
- assert_equal 'RailsActiveJobTest::SampleJob', client_span[:data][:activejob][:job]
59
- assert_equal :enqueue, client_span[:data][:activejob][:action]
60
- assert_equal 'test_queue', server_span[:data][:activejob][:queue]
61
-
62
- assert_equal client_span[:t], server_span[:t]
63
- assert_equal client_span[:s], server_span[:p]
64
- end
65
- end
@@ -1,44 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
- require 'support/apps/active_record/active_record'
6
- require 'fileutils'
7
-
8
- class RailsActiveRecordDatabaseMissingTest < Minitest::Test
9
- def setup
10
- skip unless ENV['DATABASE_URL']
11
- clear_all!
12
- @old_url = ENV['DATABASE_URL']
13
- SQLite3::Database.new('/tmp/test.db')
14
- ENV['DATABASE_URL'] = 'sqlite3:///tmp/test.db'
15
-
16
- @connection_pool = ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
17
- c = ::ActiveRecord::Base.connection
18
- c.execute 'PRAGMA journal_mode=DELETE'
19
- c.execute 'PRAGMA locking_mode=NORMAL'
20
- ActiveRecord::Migration.suppress_messages do
21
- ActiveRecord::Migration.run(CreateBlocks, direction: :up)
22
- end
23
- end
24
-
25
- def teardown
26
- @connection_pool.disconnect
27
- ENV['DATABASE_URL'] = @old_url
28
- end
29
-
30
- def test_error_on_missing_database
31
- assert_raises(ActiveRecord::StatementInvalid) do
32
- Instana.tracer.in_span(:ar_test, attributes: {}) do
33
- b = Block.new
34
- FileUtils.rm('/tmp/test.db')
35
- b.save!
36
- end
37
- end
38
- spans = ::Instana.processor.queued_spans
39
- span = find_first_span_by_name(spans, :activerecord)
40
-
41
- assert_equal 1, span[:ec]
42
- assert span[:data][:activerecord][:error].include?("SQLite3::ReadOnlyException: attempt to write a readonly database")
43
- end
44
- end
@@ -1,116 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
- require 'support/apps/active_record/active_record'
6
-
7
- class RailsActiveRecordTest < Minitest::Test
8
- def setup
9
- clear_all!
10
- skip unless ENV['DATABASE_URL']
11
- @connection = ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
12
- ActiveRecord::Migration.suppress_messages do
13
- ActiveRecord::Migration.run(CreateBlocks, direction: :up)
14
- end
15
- end
16
-
17
- def teardown
18
- ActiveRecord::Migration.suppress_messages do
19
- ActiveRecord::Migration.run(CreateBlocks, direction: :down)
20
- end
21
- ActiveRecord::Base.remove_connection
22
- end
23
-
24
- def test_config_defaults
25
- assert ::Instana.config[:sanitize_sql] == true
26
- assert ::Instana.config[:active_record].is_a?(Hash)
27
- assert ::Instana.config[:active_record].key?(:enabled)
28
- assert_equal true, ::Instana.config[:active_record][:enabled]
29
- end
30
-
31
- def test_create
32
- # clear_all!
33
- Instana.tracer.in_span(:ar_test, attributes: {}) do
34
- Block.create(name: 'core', color: 'blue')
35
- end
36
-
37
- spans = ::Instana.processor.queued_spans
38
- assert_equal 2, spans.length
39
- span = find_first_span_by_name(spans, :activerecord)
40
- data = span[:data][:activerecord]
41
-
42
- assert data[:sql].start_with?('INSERT INTO')
43
- end
44
-
45
- def test_read
46
- Block.create(name: 'core', color: 'blue')
47
- Instana.tracer.in_span(:ar_test, attributes: {}) do
48
- Block.find_by(name: 'core')
49
- end
50
- spans = ::Instana.processor.queued_spans
51
- assert_equal 2, spans.length
52
- span = find_first_span_by_name(spans, :activerecord)
53
- data = span[:data][:activerecord]
54
-
55
- assert data[:sql].start_with?('SELECT')
56
- end
57
-
58
- def test_update
59
- Block.create(name: 'core', color: 'blue')
60
- b = Block.find_by(name: 'core')
61
-
62
- Instana.tracer.in_span(:ar_test, attributes: {}) do
63
- b.color = 'red'
64
- b.save
65
- end
66
-
67
- spans = ::Instana.processor.queued_spans
68
- assert_equal 2, spans.length
69
- span = find_first_span_by_name(spans, :activerecord)
70
- data = span[:data][:activerecord]
71
-
72
- assert data[:sql].start_with?('UPDATE')
73
- end
74
-
75
- def test_delete
76
- b = Block.create(name: 'core', color: 'blue')
77
-
78
- Instana.tracer.in_span(:ar_test, attributes: {}) do
79
- b.delete
80
- end
81
-
82
- spans = ::Instana.processor.queued_spans
83
- assert_equal 2, spans.length
84
- span = find_first_span_by_name(spans, :activerecord)
85
- data = span[:data][:activerecord]
86
-
87
- assert data[:sql].start_with?('DELETE')
88
- end
89
-
90
- def test_raw
91
- Instana.tracer.in_span(:ar_test, attributes: {}) do
92
- ActiveRecord::Base.connection.execute('SELECT 1')
93
- end
94
-
95
- spans = ::Instana.processor.queued_spans
96
- assert_equal 2, spans.length
97
- span = find_first_span_by_name(spans, :activerecord)
98
- data = span[:data][:activerecord]
99
-
100
- assert 'SELECT 1', data[:sql]
101
- end
102
-
103
- def test_raw_error
104
- assert_raises ActiveRecord::StatementInvalid do
105
- Instana.tracer.in_span(:ar_test, attributes: {}) do
106
- ActiveRecord::Base.connection.execute('INVALID')
107
- end
108
- end
109
-
110
- spans = ::Instana.processor.queued_spans
111
- assert_equal 2, spans.length
112
- span = find_first_span_by_name(spans, :activerecord)
113
-
114
- assert_equal 1, span[:ec]
115
- end
116
- end