instana 1.217.1 → 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.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/lib/instana/base.rb +4 -2
- data/lib/instana/instrumentation/action_cable.rb +8 -4
- data/lib/instana/instrumentation/action_controller.rb +2 -4
- data/lib/instana/instrumentation/action_mailer.rb +1 -1
- data/lib/instana/instrumentation/action_view.rb +4 -4
- data/lib/instana/instrumentation/active_job.rb +20 -5
- data/lib/instana/instrumentation/active_record.rb +1 -1
- data/lib/instana/instrumentation/aws_sdk_dynamodb.rb +1 -1
- data/lib/instana/instrumentation/aws_sdk_lambda.rb +1 -1
- data/lib/instana/instrumentation/aws_sdk_s3.rb +1 -1
- data/lib/instana/instrumentation/aws_sdk_sns.rb +1 -1
- data/lib/instana/instrumentation/aws_sdk_sqs.rb +1 -1
- data/lib/instana/instrumentation/dalli.rb +1 -1
- data/lib/instana/instrumentation/excon.rb +2 -2
- data/lib/instana/instrumentation/graphql.rb +3 -3
- data/lib/instana/instrumentation/grpc.rb +14 -13
- data/lib/instana/instrumentation/mongo.rb +3 -3
- data/lib/instana/instrumentation/net-http.rb +5 -4
- data/lib/instana/instrumentation/rack.rb +36 -4
- data/lib/instana/instrumentation/redis.rb +1 -1
- data/lib/instana/instrumentation/resque.rb +10 -8
- data/lib/instana/instrumentation/rest-client.rb +4 -4
- data/lib/instana/instrumentation/sequel.rb +3 -3
- data/lib/instana/instrumentation/shoryuken.rb +4 -1
- data/lib/instana/instrumentation/sidekiq-client.rb +21 -19
- data/lib/instana/instrumentation/sidekiq-worker.rb +22 -21
- data/lib/instana/instrumented_logger.rb +1 -1
- data/lib/instana/samplers/result.rb +32 -0
- data/lib/instana/samplers/samplers.rb +76 -0
- data/lib/instana/serverless.rb +4 -2
- data/lib/instana/setup.rb +5 -5
- data/lib/instana/span_filtering/condition.rb +134 -0
- data/lib/instana/span_filtering/configuration.rb +262 -0
- data/lib/instana/span_filtering/filter_rule.rb +31 -0
- data/lib/instana/span_filtering.rb +62 -0
- data/lib/instana/trace/export.rb +36 -0
- data/lib/instana/{tracing → trace}/processor.rb +19 -15
- data/lib/instana/trace/span.rb +534 -0
- data/lib/instana/{tracing → trace}/span_context.rb +17 -8
- data/lib/instana/trace/span_kind.rb +51 -0
- data/lib/instana/trace/span_limits.rb +63 -0
- data/lib/instana/{tracer.rb → trace/tracer.rb} +106 -54
- data/lib/instana/trace/tracer_provider.rb +198 -0
- data/lib/instana/trace.rb +74 -0
- data/lib/instana/util.rb +11 -0
- data/lib/instana/version.rb +1 -1
- metadata +89 -267
- data/.circleci/config.yml +0 -485
- data/.codeclimate.yml +0 -23
- data/.editorconfig +0 -10
- data/.fasterer.yml +0 -23
- data/.github/ISSUE_TEMPLATE/bug.yml +0 -39
- data/.github/ISSUE_TEMPLATE/config.yml +0 -8
- data/.github/workflows/pr_commits_signed_off.yml +0 -16
- data/.github/workflows/release-notification-on-slack.yml +0 -34
- data/.gitignore +0 -19
- data/.rubocop.yml +0 -34
- data/.rubocop_todo.yml +0 -1140
- data/.tekton/.currency/docs/report.md +0 -20
- data/.tekton/.currency/resources/requirements.txt +0 -4
- data/.tekton/.currency/resources/table.json +0 -100
- data/.tekton/.currency/scripts/generate_report.py +0 -136
- data/.tekton/README.md +0 -278
- data/.tekton/github-interceptor-secret.yaml +0 -8
- data/.tekton/github-pr-eventlistener.yaml +0 -104
- data/.tekton/github-pr-pipeline.yaml.part +0 -38
- data/.tekton/github-set-status-task.yaml +0 -43
- data/.tekton/github-webhook-ingress.yaml +0 -20
- data/.tekton/pipeline.yaml +0 -571
- data/.tekton/pipelinerun.yaml +0 -21
- data/.tekton/ruby-tracer-prepuller.yaml +0 -87
- data/.tekton/run_unittests.sh +0 -87
- data/.tekton/scheduled-eventlistener.yaml +0 -108
- data/.tekton/task.yaml +0 -449
- data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
- data/Appraisals +0 -124
- data/CONTRIBUTING.md +0 -86
- data/Gemfile +0 -17
- data/LICENSE +0 -22
- data/MAINTAINERS.md +0 -3
- data/Rakefile +0 -49
- data/bin/announce_release_on_slack.py +0 -103
- data/docker-compose.yml +0 -20
- data/download.sh +0 -85
- data/examples/opentracing.rb +0 -35
- data/examples/tracing.rb +0 -84
- data/extras/license_header.rb +0 -44
- data/gemfiles/.bundle/config +0 -2
- data/gemfiles/aws_30.gemfile +0 -21
- data/gemfiles/aws_60.gemfile +0 -16
- data/gemfiles/cuba_30.gemfile +0 -16
- data/gemfiles/cuba_40.gemfile +0 -13
- data/gemfiles/dalli_20.gemfile +0 -15
- data/gemfiles/dalli_30.gemfile +0 -12
- data/gemfiles/dalli_32.gemfile +0 -12
- data/gemfiles/excon_0100.gemfile +0 -14
- data/gemfiles/excon_021.gemfile +0 -17
- data/gemfiles/excon_079.gemfile +0 -17
- data/gemfiles/excon_100.gemfile +0 -14
- data/gemfiles/graphql_10.gemfile +0 -16
- data/gemfiles/graphql_20.gemfile +0 -15
- data/gemfiles/grpc_10.gemfile +0 -15
- data/gemfiles/mongo_216.gemfile +0 -15
- data/gemfiles/mongo_219.gemfile +0 -12
- data/gemfiles/net_http_01.gemfile +0 -17
- data/gemfiles/rack_16.gemfile +0 -15
- data/gemfiles/rack_20.gemfile +0 -15
- data/gemfiles/rack_30.gemfile +0 -13
- data/gemfiles/rails_42.gemfile +0 -18
- data/gemfiles/rails_50.gemfile +0 -19
- data/gemfiles/rails_52.gemfile +0 -19
- data/gemfiles/rails_60.gemfile +0 -19
- data/gemfiles/rails_61.gemfile +0 -20
- data/gemfiles/rails_70.gemfile +0 -17
- data/gemfiles/rails_71.gemfile +0 -17
- data/gemfiles/rails_80.gemfile +0 -17
- data/gemfiles/redis_40.gemfile +0 -15
- data/gemfiles/redis_50.gemfile +0 -13
- data/gemfiles/redis_51.gemfile +0 -13
- data/gemfiles/resque_122.gemfile +0 -16
- data/gemfiles/resque_1274_3scale.gemfile +0 -17
- data/gemfiles/resque_20.gemfile +0 -16
- data/gemfiles/rest_client_16.gemfile +0 -17
- data/gemfiles/rest_client_20.gemfile +0 -17
- data/gemfiles/roda_20.gemfile +0 -16
- data/gemfiles/roda_30.gemfile +0 -16
- data/gemfiles/rubocop_162.gemfile +0 -6
- data/gemfiles/sequel_56.gemfile +0 -16
- data/gemfiles/sequel_57.gemfile +0 -16
- data/gemfiles/sequel_58.gemfile +0 -16
- data/gemfiles/shoryuken_50.gemfile +0 -16
- data/gemfiles/shoryuken_60.gemfile +0 -13
- data/gemfiles/sidekiq_42.gemfile +0 -15
- data/gemfiles/sidekiq_50.gemfile +0 -15
- data/gemfiles/sidekiq_60.gemfile +0 -12
- data/gemfiles/sidekiq_65.gemfile +0 -12
- data/gemfiles/sidekiq_70.gemfile +0 -12
- data/gemfiles/sinatra_14.gemfile +0 -15
- data/gemfiles/sinatra_22.gemfile +0 -12
- data/gemfiles/sinatra_30.gemfile +0 -12
- data/gemfiles/sinatra_40.gemfile +0 -12
- data/instana.gemspec +0 -48
- data/lib/instana/open_tracing/carrier.rb +0 -7
- data/lib/instana/open_tracing/instana_tracer.rb +0 -99
- data/lib/instana/tracing/span.rb +0 -431
- data/lib/opentracing.rb +0 -32
- data/log/.keep +0 -0
- data/sonar-project.properties +0 -9
- data/test/activator_test.rb +0 -50
- data/test/backend/agent_test.rb +0 -80
- data/test/backend/gc_snapshot_test.rb +0 -11
- data/test/backend/host_agent_activation_observer_test.rb +0 -73
- data/test/backend/host_agent_lookup_test.rb +0 -78
- data/test/backend/host_agent_reporting_observer_test.rb +0 -276
- data/test/backend/host_agent_test.rb +0 -89
- data/test/backend/process_info_test.rb +0 -83
- data/test/backend/request_client_test.rb +0 -39
- data/test/backend/serverless_agent_test.rb +0 -83
- data/test/benchmarks/bench_id_generation.rb +0 -15
- data/test/benchmarks/bench_opentracing.rb +0 -16
- data/test/config_test.rb +0 -34
- data/test/frameworks/cuba_test.rb +0 -61
- data/test/frameworks/roda_test.rb +0 -60
- data/test/frameworks/sinatra_test.rb +0 -71
- data/test/instana_test.rb +0 -37
- data/test/instrumentation/aws_test.rb +0 -241
- data/test/instrumentation/dalli_test.rb +0 -325
- data/test/instrumentation/excon_test.rb +0 -204
- data/test/instrumentation/graphql_test.rb +0 -289
- data/test/instrumentation/grpc_test.rb +0 -420
- data/test/instrumentation/mongo_test.rb +0 -68
- data/test/instrumentation/net_http_test.rb +0 -220
- data/test/instrumentation/rack_instrumented_request_test.rb +0 -211
- data/test/instrumentation/rack_test.rb +0 -415
- data/test/instrumentation/rails_action_cable_test.rb +0 -135
- data/test/instrumentation/rails_action_controller_test.rb +0 -218
- data/test/instrumentation/rails_action_mailer_test.rb +0 -66
- data/test/instrumentation/rails_action_view_test.rb +0 -154
- data/test/instrumentation/rails_active_job_test.rb +0 -65
- data/test/instrumentation/rails_active_record_database_missing_test.rb +0 -45
- data/test/instrumentation/rails_active_record_test.rb +0 -115
- data/test/instrumentation/redis_test.rb +0 -152
- data/test/instrumentation/resque_test.rb +0 -188
- data/test/instrumentation/rest_client_test.rb +0 -107
- data/test/instrumentation/sequel_test.rb +0 -105
- data/test/instrumentation/shoryuken_test.rb +0 -47
- data/test/instrumentation/sidekiq-client_test.rb +0 -169
- data/test/instrumentation/sidekiq-worker_test.rb +0 -180
- data/test/secrets_test.rb +0 -112
- data/test/serverless_test.rb +0 -369
- data/test/snapshot/deltable_test.rb +0 -17
- data/test/snapshot/docker_container_test.rb +0 -82
- data/test/snapshot/fargate_container_test.rb +0 -82
- data/test/snapshot/fargate_process_test.rb +0 -35
- data/test/snapshot/fargate_task_test.rb +0 -49
- data/test/snapshot/google_cloud_run_instance_test.rb +0 -74
- data/test/snapshot/google_cloud_run_process_test.rb +0 -33
- data/test/snapshot/lambda_function_test.rb +0 -37
- data/test/snapshot/ruby_process_test.rb +0 -32
- data/test/support/apps/active_record/active_record.rb +0 -24
- data/test/support/apps/grpc/boot.rb +0 -23
- data/test/support/apps/grpc/grpc_server.rb +0 -84
- data/test/support/apps/http_endpoint/boot.rb +0 -28
- data/test/support/apps/rails/boot.rb +0 -219
- data/test/support/apps/rails/models/block.rb +0 -21
- data/test/support/apps/rails/models/block6.rb +0 -21
- data/test/support/apps/resque/boot.rb +0 -5
- data/test/support/apps/resque/jobs/resque_error_job.rb +0 -22
- data/test/support/apps/resque/jobs/resque_fast_job.rb +0 -23
- data/test/support/apps/sidekiq/boot.rb +0 -25
- data/test/support/apps/sidekiq/jobs/sidekiq_job_1.rb +0 -9
- data/test/support/apps/sidekiq/jobs/sidekiq_job_2.rb +0 -10
- data/test/support/apps/sidekiq/worker.rb +0 -37
- data/test/support/helpers.rb +0 -85
- data/test/support/mock_timer.rb +0 -20
- data/test/test_helper.rb +0 -69
- data/test/tracing/custom_test.rb +0 -226
- data/test/tracing/id_management_test.rb +0 -80
- data/test/tracing/instrumented_logger_test.rb +0 -39
- data/test/tracing/opentracing_test.rb +0 -382
- data/test/tracing/processor_test.rb +0 -58
- data/test/tracing/span_context_test.rb +0 -22
- data/test/tracing/span_test.rb +0 -179
- data/test/tracing/tracer_async_test.rb +0 -230
- data/test/tracing/tracer_test.rb +0 -352
- 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.start_or_continue_trace(: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.start_or_continue_trace(: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,45 +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
|
-
|
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.start_or_continue_trace(:ar_test, {}) do
|
33
|
-
b = Block.new
|
34
|
-
FileUtils.rm('/tmp/test.db')
|
35
|
-
b.save!
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
spans = ::Instana.processor.queued_spans
|
40
|
-
span = find_first_span_by_name(spans, :activerecord)
|
41
|
-
|
42
|
-
assert_equal 1, span[:ec]
|
43
|
-
assert span[:data][:activerecord][:error].include?("SQLite3::ReadOnlyException: attempt to write a readonly database")
|
44
|
-
end
|
45
|
-
end
|
@@ -1,115 +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
|
-
skip unless ENV['DATABASE_URL']
|
10
|
-
@connection = ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
|
11
|
-
ActiveRecord::Migration.suppress_messages do
|
12
|
-
ActiveRecord::Migration.run(CreateBlocks, direction: :up)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def teardown
|
17
|
-
ActiveRecord::Migration.suppress_messages do
|
18
|
-
ActiveRecord::Migration.run(CreateBlocks, direction: :down)
|
19
|
-
end
|
20
|
-
ActiveRecord::Base.remove_connection
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_config_defaults
|
24
|
-
assert ::Instana.config[:sanitize_sql] == true
|
25
|
-
assert ::Instana.config[:active_record].is_a?(Hash)
|
26
|
-
assert ::Instana.config[:active_record].key?(:enabled)
|
27
|
-
assert_equal true, ::Instana.config[:active_record][:enabled]
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_create
|
31
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
32
|
-
Block.create(name: 'core', color: 'blue')
|
33
|
-
end
|
34
|
-
|
35
|
-
spans = ::Instana.processor.queued_spans
|
36
|
-
assert_equal 2, spans.length
|
37
|
-
span = find_first_span_by_name(spans, :activerecord)
|
38
|
-
data = span[:data][:activerecord]
|
39
|
-
|
40
|
-
assert data[:sql].start_with?('INSERT INTO')
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_read
|
44
|
-
Block.create(name: 'core', color: 'blue')
|
45
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
46
|
-
Block.find_by(name: 'core')
|
47
|
-
end
|
48
|
-
|
49
|
-
spans = ::Instana.processor.queued_spans
|
50
|
-
assert_equal 2, spans.length
|
51
|
-
span = find_first_span_by_name(spans, :activerecord)
|
52
|
-
data = span[:data][:activerecord]
|
53
|
-
|
54
|
-
assert data[:sql].start_with?('SELECT')
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_update
|
58
|
-
Block.create(name: 'core', color: 'blue')
|
59
|
-
b = Block.find_by(name: 'core')
|
60
|
-
|
61
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
62
|
-
b.color = 'red'
|
63
|
-
b.save
|
64
|
-
end
|
65
|
-
|
66
|
-
spans = ::Instana.processor.queued_spans
|
67
|
-
assert_equal 2, spans.length
|
68
|
-
span = find_first_span_by_name(spans, :activerecord)
|
69
|
-
data = span[:data][:activerecord]
|
70
|
-
|
71
|
-
assert data[:sql].start_with?('UPDATE')
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_delete
|
75
|
-
b = Block.create(name: 'core', color: 'blue')
|
76
|
-
|
77
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
78
|
-
b.delete
|
79
|
-
end
|
80
|
-
|
81
|
-
spans = ::Instana.processor.queued_spans
|
82
|
-
assert_equal 2, spans.length
|
83
|
-
span = find_first_span_by_name(spans, :activerecord)
|
84
|
-
data = span[:data][:activerecord]
|
85
|
-
|
86
|
-
assert data[:sql].start_with?('DELETE')
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_raw
|
90
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
91
|
-
ActiveRecord::Base.connection.execute('SELECT 1')
|
92
|
-
end
|
93
|
-
|
94
|
-
spans = ::Instana.processor.queued_spans
|
95
|
-
assert_equal 2, spans.length
|
96
|
-
span = find_first_span_by_name(spans, :activerecord)
|
97
|
-
data = span[:data][:activerecord]
|
98
|
-
|
99
|
-
assert 'SELECT 1', data[:sql]
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_raw_error
|
103
|
-
assert_raises ActiveRecord::StatementInvalid do
|
104
|
-
Instana::Tracer.start_or_continue_trace(:ar_test, {}) do
|
105
|
-
ActiveRecord::Base.connection.execute('INVALID')
|
106
|
-
end
|
107
|
-
end
|
108
|
-
|
109
|
-
spans = ::Instana.processor.queued_spans
|
110
|
-
assert_equal 2, spans.length
|
111
|
-
span = find_first_span_by_name(spans, :activerecord)
|
112
|
-
|
113
|
-
assert_equal 1, span[:ec]
|
114
|
-
end
|
115
|
-
end
|