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.
- checksums.yaml +4 -4
- data/lib/instana/setup.rb +1 -0
- 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/span.rb +5 -3
- data/lib/instana/version.rb +1 -1
- metadata +7 -258
- data/.circleci/config.yml +0 -361
- 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 -308
- 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 -484
- data/.tekton/pipelinerun.yaml +0 -21
- data/.tekton/prepuller-restart-service-account.yaml +0 -31
- data/.tekton/ruby-tracer-prepuller-cronjob.yaml +0 -20
- data/.tekton/ruby-tracer-prepuller.yaml +0 -88
- data/.tekton/run_unittests.sh +0 -87
- data/.tekton/scheduled-eventlistener.yaml +0 -108
- data/.tekton/task.yaml +0 -453
- data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
- data/Appraisals +0 -124
- data/CONTRIBUTING.md +0 -86
- data/Gemfile +0 -22
- 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/otel.rb +0 -98
- data/examples/tracing.rb +0 -85
- 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 -21
- data/gemfiles/rails_70.gemfile +0 -18
- 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 -53
- 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 -44
- data/test/instrumentation/rails_active_record_test.rb +0 -116
- data/test/instrumentation/redis_test.rb +0 -152
- data/test/instrumentation/resque_test.rb +0 -188
- data/test/instrumentation/rest_client_test.rb +0 -106
- data/test/instrumentation/sequel_test.rb +0 -111
- 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/trace/custom_test.rb +0 -233
- data/test/trace/id_management_test.rb +0 -78
- data/test/trace/instrumented_logger_test.rb +0 -39
- data/test/trace/processor_test.rb +0 -58
- data/test/trace/span_context_test.rb +0 -22
- data/test/trace/span_test.rb +0 -179
- data/test/trace/tracer_async_test.rb +0 -243
- data/test/trace/tracer_provider_test.rb +0 -148
- data/test/trace/tracer_test.rb +0 -363
- data/test/util_test.rb +0 -10
@@ -1,169 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2017
|
3
|
-
|
4
|
-
require 'test_helper'
|
5
|
-
require 'support/apps/sidekiq/boot'
|
6
|
-
|
7
|
-
class SidekiqClientTest < Minitest::Test
|
8
|
-
def setup
|
9
|
-
::Sidekiq::Queue.new('some_random_queue').clear
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
::Instana.config[:allow_exit_as_root] = false
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_config_defaults
|
17
|
-
assert ::Instana.config[:'sidekiq-client'].is_a?(Hash)
|
18
|
-
assert ::Instana.config[:'sidekiq-client'].key?(:enabled)
|
19
|
-
assert_equal true, ::Instana.config[:'sidekiq-client'][:enabled]
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_enqueue
|
23
|
-
clear_all!
|
24
|
-
Instana.tracer.in_span(:sidekiqtests) do
|
25
|
-
disable_redis_instrumentation
|
26
|
-
::Sidekiq::Client.push(
|
27
|
-
'queue' => 'some_random_queue',
|
28
|
-
'class' => ::SidekiqJobOne,
|
29
|
-
'args' => [1, 2, 3],
|
30
|
-
'retry' => false
|
31
|
-
)
|
32
|
-
enable_redis_instrumentation
|
33
|
-
end
|
34
|
-
|
35
|
-
queue = ::Sidekiq::Queue.new('some_random_queue')
|
36
|
-
job = queue.first
|
37
|
-
|
38
|
-
assert_job_enqueued(job)
|
39
|
-
assert_normal_trace_recorded(job)
|
40
|
-
end
|
41
|
-
|
42
|
-
def test_enqueue_as_root_exit_span
|
43
|
-
clear_all!
|
44
|
-
::Instana.config[:allow_exit_as_root] = true
|
45
|
-
disable_redis_instrumentation
|
46
|
-
::Sidekiq::Client.push(
|
47
|
-
'queue' => 'some_random_queue',
|
48
|
-
'class' => ::SidekiqJobOne,
|
49
|
-
'args' => [1, 2, 3],
|
50
|
-
'retry' => false
|
51
|
-
)
|
52
|
-
::Instana.config[:allow_exit_as_root] = false
|
53
|
-
enable_redis_instrumentation
|
54
|
-
|
55
|
-
queue = ::Sidekiq::Queue.new('some_random_queue')
|
56
|
-
job = queue.first
|
57
|
-
|
58
|
-
assert_job_enqueued(job)
|
59
|
-
spans = ::Instana.processor.queued_spans
|
60
|
-
assert_equal 1, spans.length
|
61
|
-
|
62
|
-
first_span = spans[0]
|
63
|
-
|
64
|
-
assert_equal :'sidekiq-client', first_span[:n]
|
65
|
-
assert_equal 'some_random_queue', first_span[:data][:'sidekiq-client'][:queue]
|
66
|
-
assert_equal 'SidekiqJobOne', first_span[:data][:'sidekiq-client'][:job]
|
67
|
-
assert_equal "false", first_span[:data][:'sidekiq-client'][:retry]
|
68
|
-
assert first_span[:data][:'sidekiq-client'][:'redis-url']
|
69
|
-
assert_equal job['jid'], first_span[:data][:'sidekiq-client'][:job_id]
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_enqueue_failure
|
73
|
-
clear_all!
|
74
|
-
|
75
|
-
Instana.tracer.in_span(:sidekiqtests) do
|
76
|
-
disable_redis_instrumentation
|
77
|
-
add_sidekiq_exception_middleware
|
78
|
-
begin
|
79
|
-
::Sidekiq::Client.push(
|
80
|
-
'queue' => 'some_random_queue',
|
81
|
-
'class' => ::SidekiqJobTwo,
|
82
|
-
'args' => [1, 2, 3],
|
83
|
-
'retry' => false
|
84
|
-
)
|
85
|
-
rescue; end
|
86
|
-
enable_redis_instrumentation
|
87
|
-
remove_sidekiq_exception_middleware
|
88
|
-
end
|
89
|
-
|
90
|
-
queue = ::Sidekiq::Queue.new('some_random_queue')
|
91
|
-
assert_equal 0, queue.size
|
92
|
-
|
93
|
-
assert_failure_trace_recorded
|
94
|
-
end
|
95
|
-
|
96
|
-
private
|
97
|
-
|
98
|
-
def assert_job_enqueued(job)
|
99
|
-
job_message = JSON.parse(job.value)
|
100
|
-
|
101
|
-
assert_equal 'some_random_queue', job_message['queue']
|
102
|
-
assert_equal 'SidekiqJobOne', job_message['class']
|
103
|
-
assert_equal [1, 2, 3], job_message['args']
|
104
|
-
assert_equal false, job_message['retry']
|
105
|
-
refute_nil job_message['X-Instana-T']
|
106
|
-
refute_nil job_message['X-Instana-S']
|
107
|
-
end
|
108
|
-
|
109
|
-
def assert_normal_trace_recorded(job)
|
110
|
-
spans = ::Instana.processor.queued_spans
|
111
|
-
assert_equal 2, spans.length
|
112
|
-
|
113
|
-
first_span = spans[1]
|
114
|
-
second_span = spans[0]
|
115
|
-
|
116
|
-
assert_equal first_span[:s], second_span[:p]
|
117
|
-
validate_sdk_span(first_span, {:name => :sidekiqtests, :type => :entry})
|
118
|
-
|
119
|
-
assert_equal :'sidekiq-client', second_span[:n]
|
120
|
-
assert_equal 'some_random_queue', second_span[:data][:'sidekiq-client'][:queue]
|
121
|
-
assert_equal 'SidekiqJobOne', second_span[:data][:'sidekiq-client'][:job]
|
122
|
-
assert_equal "false", second_span[:data][:'sidekiq-client'][:retry]
|
123
|
-
assert second_span[:data][:'sidekiq-client'][:'redis-url']
|
124
|
-
assert_equal job['jid'], second_span[:data][:'sidekiq-client'][:job_id]
|
125
|
-
end
|
126
|
-
|
127
|
-
def assert_failure_trace_recorded
|
128
|
-
spans = ::Instana.processor.queued_spans
|
129
|
-
assert_equal 2, spans.length
|
130
|
-
|
131
|
-
first_span = spans[1]
|
132
|
-
second_span = spans[0]
|
133
|
-
|
134
|
-
assert_equal first_span[:s], second_span[:p]
|
135
|
-
validate_sdk_span(first_span, {:name => :sidekiqtests, :type => :entry})
|
136
|
-
|
137
|
-
assert_equal :'sidekiq-client', second_span[:n]
|
138
|
-
assert_equal true, second_span[:error]
|
139
|
-
refute_nil second_span[:stack]
|
140
|
-
|
141
|
-
assert_equal 'some_random_queue', second_span[:data][:'sidekiq-client'][:queue]
|
142
|
-
assert_equal 'SidekiqJobTwo', second_span[:data][:'sidekiq-client'][:job]
|
143
|
-
assert_equal "false", second_span[:data][:'sidekiq-client'][:retry]
|
144
|
-
assert second_span[:data][:'sidekiq-client'][:'redis-url']
|
145
|
-
assert_equal 'Fail to enqueue job', second_span[:data][:log][:message]
|
146
|
-
end
|
147
|
-
|
148
|
-
SidekiqMiddlewareException = Class.new do
|
149
|
-
def call(*_args)
|
150
|
-
raise 'Fail to enqueue job'
|
151
|
-
end
|
152
|
-
end
|
153
|
-
|
154
|
-
def add_sidekiq_exception_middleware
|
155
|
-
Sidekiq.configure_client do |config|
|
156
|
-
config.client_middleware do |chain|
|
157
|
-
chain.add SidekiqMiddlewareException
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
def remove_sidekiq_exception_middleware
|
163
|
-
Sidekiq.configure_client do |config|
|
164
|
-
config.client_middleware do |chain|
|
165
|
-
chain.remove SidekiqMiddlewareException
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
end
|
@@ -1,180 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2017
|
3
|
-
|
4
|
-
require 'test_helper'
|
5
|
-
require 'support/apps/sidekiq/boot'
|
6
|
-
|
7
|
-
class SidekiqServerTest < Minitest::Test
|
8
|
-
def test_config_defaults
|
9
|
-
assert ::Instana.config[:'sidekiq-worker'].is_a?(Hash)
|
10
|
-
assert ::Instana.config[:'sidekiq-worker'].key?(:enabled)
|
11
|
-
assert_equal true, ::Instana.config[:'sidekiq-worker'][:enabled]
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_successful_worker_starts_new_trace
|
15
|
-
clear_all!
|
16
|
-
$sidekiq_mode = :server
|
17
|
-
inject_instrumentation
|
18
|
-
|
19
|
-
disable_redis_instrumentation
|
20
|
-
::Sidekiq.redis_pool.with do |redis|
|
21
|
-
redis.sadd('queues'.freeze, 'important')
|
22
|
-
redis.lpush(
|
23
|
-
'queue:important',
|
24
|
-
<<-JSON
|
25
|
-
{
|
26
|
-
"class":"SidekiqJobOne",
|
27
|
-
"args":[1,2,3],
|
28
|
-
"queue":"important",
|
29
|
-
"jid":"123456789"
|
30
|
-
}
|
31
|
-
JSON
|
32
|
-
)
|
33
|
-
end
|
34
|
-
enable_redis_instrumentation
|
35
|
-
sleep 1
|
36
|
-
|
37
|
-
spans = Instana.processor.queued_spans
|
38
|
-
worker_span = find_spans_by_name(spans, :'sidekiq-worker').first
|
39
|
-
assert_successful_worker_span(worker_span)
|
40
|
-
|
41
|
-
$sidekiq_mode = :client
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_failed_worker_starts_new_trace
|
45
|
-
clear_all!
|
46
|
-
$sidekiq_mode = :server
|
47
|
-
inject_instrumentation
|
48
|
-
|
49
|
-
disable_redis_instrumentation
|
50
|
-
::Sidekiq.redis_pool.with do |redis|
|
51
|
-
redis.sadd('queues'.freeze, 'important')
|
52
|
-
redis.lpush(
|
53
|
-
'queue:important',
|
54
|
-
<<-JSON
|
55
|
-
{
|
56
|
-
"class":"SidekiqJobTwo",
|
57
|
-
"args":[1,2,3],
|
58
|
-
"queue":"important",
|
59
|
-
"jid":"123456789"
|
60
|
-
}
|
61
|
-
JSON
|
62
|
-
)
|
63
|
-
end
|
64
|
-
enable_redis_instrumentation
|
65
|
-
|
66
|
-
sleep 1
|
67
|
-
|
68
|
-
spans = Instana.processor.queued_spans
|
69
|
-
worker_span = find_spans_by_name(spans, :'sidekiq-worker').first
|
70
|
-
assert_failed_worker_span(worker_span)
|
71
|
-
|
72
|
-
$sidekiq_mode = :client
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_successful_worker_continues_previous_trace
|
76
|
-
clear_all!
|
77
|
-
$sidekiq_mode = :server
|
78
|
-
inject_instrumentation
|
79
|
-
|
80
|
-
Instana.tracer.in_span(:sidekiqtests) do
|
81
|
-
disable_redis_instrumentation
|
82
|
-
::Sidekiq::Client.push(
|
83
|
-
'queue' => 'important',
|
84
|
-
'class' => ::SidekiqJobOne,
|
85
|
-
'args' => [1, 2, 3]
|
86
|
-
)
|
87
|
-
enable_redis_instrumentation
|
88
|
-
end
|
89
|
-
sleep 1
|
90
|
-
spans = Instana.processor.queued_spans
|
91
|
-
|
92
|
-
sdk_span = find_spans_by_name(spans, :sidekiqtests).first
|
93
|
-
validate_sdk_span(sdk_span)
|
94
|
-
|
95
|
-
client_span = find_spans_by_name(spans, :'sidekiq-client').first
|
96
|
-
assert_client_span(client_span, ::SidekiqJobOne)
|
97
|
-
|
98
|
-
worker_span = find_spans_by_name(spans, :'sidekiq-worker').first
|
99
|
-
assert_successful_worker_span(worker_span)
|
100
|
-
|
101
|
-
# Worker trace and client trace are in the same trace
|
102
|
-
assert_equal worker_span[:t], client_span[:t]
|
103
|
-
assert_equal worker_span[:p], client_span[:s]
|
104
|
-
|
105
|
-
$sidekiq_mode = :client
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_failed_worker_continues_previous_trace
|
109
|
-
clear_all!
|
110
|
-
$sidekiq_mode = :server
|
111
|
-
inject_instrumentation
|
112
|
-
|
113
|
-
Instana.tracer.in_span(:sidekiqtests) do
|
114
|
-
disable_redis_instrumentation
|
115
|
-
::Sidekiq::Client.push(
|
116
|
-
'queue' => 'important',
|
117
|
-
'class' => ::SidekiqJobTwo,
|
118
|
-
'args' => [1, 2, 3]
|
119
|
-
)
|
120
|
-
enable_redis_instrumentation
|
121
|
-
end
|
122
|
-
sleep 1
|
123
|
-
|
124
|
-
spans = Instana.processor.queued_spans
|
125
|
-
|
126
|
-
sdk_span = find_spans_by_name(spans, :sidekiqtests).first
|
127
|
-
validate_sdk_span(sdk_span)
|
128
|
-
|
129
|
-
client_span = find_spans_by_name(spans, :'sidekiq-client').first
|
130
|
-
assert_client_span(client_span, ::SidekiqJobTwo)
|
131
|
-
|
132
|
-
worker_span = find_spans_by_name(spans, :'sidekiq-worker').first
|
133
|
-
assert_failed_worker_span(worker_span)
|
134
|
-
|
135
|
-
# Worker trace and client trace are in the same trace
|
136
|
-
assert_equal worker_span[:t], client_span[:t]
|
137
|
-
assert_equal worker_span[:p], client_span[:s]
|
138
|
-
|
139
|
-
$sidekiq_mode = :client
|
140
|
-
end
|
141
|
-
|
142
|
-
private
|
143
|
-
|
144
|
-
def inject_instrumentation
|
145
|
-
# Add the instrumentation again to ensure injection in server mode
|
146
|
-
::Sidekiq.configure_server do |cfg|
|
147
|
-
cfg.server_middleware do |chain|
|
148
|
-
chain.add ::Instana::Instrumentation::SidekiqWorker
|
149
|
-
end
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
def assert_successful_worker_span(worker_span)
|
154
|
-
assert_equal :'sidekiq-worker', worker_span[:n]
|
155
|
-
|
156
|
-
assert_equal 'important', worker_span[:data][:'sidekiq-worker'][:queue]
|
157
|
-
assert_equal 'SidekiqJobOne', worker_span[:data][:'sidekiq-worker'][:job]
|
158
|
-
assert worker_span[:data][:'sidekiq-worker'][:'redis-url']
|
159
|
-
refute_nil worker_span[:data][:'sidekiq-worker'][:job_id]
|
160
|
-
end
|
161
|
-
|
162
|
-
def assert_failed_worker_span(worker_span)
|
163
|
-
assert_equal :'sidekiq-worker', worker_span[:n]
|
164
|
-
|
165
|
-
assert_equal 'important', worker_span[:data][:'sidekiq-worker'][:queue]
|
166
|
-
assert_equal 'SidekiqJobTwo', worker_span[:data][:'sidekiq-worker'][:job]
|
167
|
-
assert worker_span[:data][:'sidekiq-worker'][:'redis-url']
|
168
|
-
refute_nil worker_span[:data][:'sidekiq-worker'][:job_id]
|
169
|
-
|
170
|
-
assert_equal true, worker_span[:data][:'sidekiq-worker'][:error]
|
171
|
-
assert_equal 'Fail to execute the job', worker_span[:data][:log][:message]
|
172
|
-
end
|
173
|
-
|
174
|
-
def assert_client_span(client_span, job)
|
175
|
-
assert_equal :'sidekiq-client', client_span[:n]
|
176
|
-
assert_equal 'important', client_span[:data][:'sidekiq-client'][:queue]
|
177
|
-
assert client_span[:data][:'sidekiq-client'][:'redis-url']
|
178
|
-
assert_equal job.name, client_span[:data][:'sidekiq-client'][:job]
|
179
|
-
end
|
180
|
-
end
|
data/test/secrets_test.rb
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2021
|
3
|
-
|
4
|
-
require 'test_helper'
|
5
|
-
|
6
|
-
class SecretsTest < Minitest::Test
|
7
|
-
def setup
|
8
|
-
@subject = Instana::Secrets.new(logger: Logger.new('/dev/null'))
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_equals_ignore_case
|
12
|
-
sample_config = {
|
13
|
-
"matcher"=>"equals-ignore-case",
|
14
|
-
"list"=>["key"]
|
15
|
-
}
|
16
|
-
|
17
|
-
url = url_for(%w(key Str kEy KEY))
|
18
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(key kEy KEY)
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_equals
|
22
|
-
sample_config = {
|
23
|
-
"matcher"=>"equals",
|
24
|
-
"list"=>["key", "kEy"]
|
25
|
-
}
|
26
|
-
|
27
|
-
url = url_for(%w(key Str kEy KEY))
|
28
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(key kEy)
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_contains_ignore_case
|
32
|
-
sample_config = {
|
33
|
-
"matcher"=>"contains-ignore-case",
|
34
|
-
"list"=>["stan"]
|
35
|
-
}
|
36
|
-
|
37
|
-
url = url_for(%w(instantiate conTESTant sample))
|
38
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(instantiate conTESTant)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_contains
|
42
|
-
sample_config = {
|
43
|
-
"matcher"=>"contains",
|
44
|
-
"list"=>["stan"]
|
45
|
-
}
|
46
|
-
|
47
|
-
url = url_for(%w(instantiate conTESTant sample))
|
48
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(instantiate)
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_regexp
|
52
|
-
sample_config = {
|
53
|
-
"matcher"=>"regex",
|
54
|
-
"list"=>["l{2}"]
|
55
|
-
}
|
56
|
-
|
57
|
-
url = url_for(%w(ball foot move))
|
58
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(ball)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_invalid
|
62
|
-
sample_config = {
|
63
|
-
"matcher"=>"test_invalid",
|
64
|
-
"list"=>["key"]
|
65
|
-
}
|
66
|
-
|
67
|
-
url = url_for(%w(key Str kEy KEY))
|
68
|
-
assert_redacted @subject.remove_from_query(url, sample_config), []
|
69
|
-
end
|
70
|
-
|
71
|
-
def test_without_scheme
|
72
|
-
sample_config = {
|
73
|
-
"matcher"=>"contains",
|
74
|
-
"list"=>["stan"]
|
75
|
-
}
|
76
|
-
|
77
|
-
url = 'example.com?instantiate=true'
|
78
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(instantiate)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_without_url
|
82
|
-
sample_config = {
|
83
|
-
"matcher"=>"contains",
|
84
|
-
"list"=>["stan"]
|
85
|
-
}
|
86
|
-
|
87
|
-
url = 'filter[instantiate]=true'
|
88
|
-
assert_redacted @subject.remove_from_query(url, sample_config), %w(filter[instantiate]), raw_str: true
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_with_nil
|
92
|
-
sample_config = {
|
93
|
-
"matcher"=>"contains",
|
94
|
-
"list"=>["stan"]
|
95
|
-
}
|
96
|
-
|
97
|
-
assert_nil @subject.remove_from_query(nil, sample_config)
|
98
|
-
end
|
99
|
-
|
100
|
-
private
|
101
|
-
|
102
|
-
def url_for(keys)
|
103
|
-
url = URI('http://example.com')
|
104
|
-
url.query = URI.encode_www_form(keys.map { |k| [k, rand(1..100)]})
|
105
|
-
url.to_s
|
106
|
-
end
|
107
|
-
|
108
|
-
def assert_redacted(str, keys, raw_str: false)
|
109
|
-
params = raw_str ? CGI.parse(str) : CGI.parse(URI(str).query)
|
110
|
-
assert_equal keys, params.select { |_, v| v == %w(<redacted>) }.keys, 'to be redacted'
|
111
|
-
end
|
112
|
-
end
|