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,325 +0,0 @@
|
|
1
|
-
# (c) Copyright IBM Corp. 2021
|
2
|
-
# (c) Copyright Instana Inc. 2017
|
3
|
-
|
4
|
-
require 'test_helper'
|
5
|
-
|
6
|
-
class DalliTest < Minitest::Test
|
7
|
-
def setup
|
8
|
-
@memcached_host = ENV['MEMCACHED_HOST'] || '127.0.0.1:11211'
|
9
|
-
@dc = Dalli::Client.new(@memcached_host, :namespace => "instana_test")
|
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[:dalli].is_a?(Hash)
|
18
|
-
assert ::Instana.config[:dalli].key?(:enabled)
|
19
|
-
assert_equal true, ::Instana.config[:dalli][:enabled]
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_basic_get
|
23
|
-
clear_all!
|
24
|
-
|
25
|
-
@dc.set(:instana, :boom)
|
26
|
-
|
27
|
-
result = nil
|
28
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
29
|
-
result = @dc.get(:instana)
|
30
|
-
end
|
31
|
-
|
32
|
-
assert_equal :boom, result
|
33
|
-
|
34
|
-
spans = ::Instana.processor.queued_spans
|
35
|
-
assert_equal 2, spans.length
|
36
|
-
|
37
|
-
first_span = spans[1]
|
38
|
-
second_span = spans[0]
|
39
|
-
|
40
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
41
|
-
|
42
|
-
assert_equal :memcache, second_span[:n]
|
43
|
-
assert_equal false, second_span.key?(:error)
|
44
|
-
assert second_span[:p] == first_span[:s]
|
45
|
-
assert first_span[:t] == first_span[:s]
|
46
|
-
assert second_span[:data].key?(:memcache)
|
47
|
-
assert second_span[:data][:memcache].key?(:command)
|
48
|
-
assert_equal :get, second_span[:data][:memcache][:command]
|
49
|
-
assert second_span[:data][:memcache].key?(:key)
|
50
|
-
assert_equal :instana, second_span[:data][:memcache][:key]
|
51
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
52
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
53
|
-
assert second_span[:data][:memcache].key?(:server)
|
54
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_basic_get_as_root_exit_span
|
58
|
-
clear_all!
|
59
|
-
@dc.set(:instana, :boom)
|
60
|
-
|
61
|
-
::Instana.config[:allow_exit_as_root] = true
|
62
|
-
result = @dc.get(:instana)
|
63
|
-
|
64
|
-
assert_equal :boom, result
|
65
|
-
|
66
|
-
spans = ::Instana.processor.queued_spans
|
67
|
-
assert_equal 1, spans.length
|
68
|
-
|
69
|
-
first_span = spans[0]
|
70
|
-
|
71
|
-
assert_equal :memcache, first_span[:n]
|
72
|
-
assert_equal false, first_span.key?(:error)
|
73
|
-
assert_nil first_span[:p]
|
74
|
-
assert first_span[:t] == first_span[:s]
|
75
|
-
assert first_span[:data].key?(:memcache)
|
76
|
-
assert first_span[:data][:memcache].key?(:command)
|
77
|
-
assert_equal :get, first_span[:data][:memcache][:command]
|
78
|
-
assert first_span[:data][:memcache].key?(:key)
|
79
|
-
assert_equal :instana, first_span[:data][:memcache][:key]
|
80
|
-
assert first_span[:data][:memcache].key?(:namespace)
|
81
|
-
assert_equal 'instana_test', first_span[:data][:memcache][:namespace]
|
82
|
-
assert first_span[:data][:memcache].key?(:server)
|
83
|
-
assert_equal @memcached_host, first_span[:data][:memcache][:server]
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_basic_set
|
87
|
-
clear_all!
|
88
|
-
|
89
|
-
result = nil
|
90
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
91
|
-
result = @dc.set(:instana, :rocks)
|
92
|
-
end
|
93
|
-
|
94
|
-
assert result.is_a?(Integer)
|
95
|
-
|
96
|
-
spans = ::Instana.processor.queued_spans
|
97
|
-
assert_equal 2, spans.length
|
98
|
-
|
99
|
-
first_span = spans[1]
|
100
|
-
second_span = spans[0]
|
101
|
-
|
102
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
103
|
-
|
104
|
-
assert_equal :memcache, second_span[:n]
|
105
|
-
assert_equal false, second_span.key?(:error)
|
106
|
-
assert second_span[:p] == first_span[:s]
|
107
|
-
assert first_span[:t] == first_span[:s]
|
108
|
-
assert second_span[:data].key?(:memcache)
|
109
|
-
assert second_span[:data][:memcache].key?(:command)
|
110
|
-
assert_equal :set, second_span[:data][:memcache][:command]
|
111
|
-
assert second_span[:data][:memcache].key?(:key)
|
112
|
-
assert_equal :instana, second_span[:data][:memcache][:key]
|
113
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
114
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
115
|
-
assert second_span[:data][:memcache].key?(:server)
|
116
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_replace
|
120
|
-
clear_all!
|
121
|
-
|
122
|
-
@dc.set(:instana, :rocks)
|
123
|
-
result = nil
|
124
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
125
|
-
result = @dc.replace(:instana, :rocks)
|
126
|
-
end
|
127
|
-
|
128
|
-
assert result.is_a?(Integer)
|
129
|
-
|
130
|
-
spans = ::Instana.processor.queued_spans
|
131
|
-
assert_equal 2, spans.length
|
132
|
-
|
133
|
-
first_span = spans[1]
|
134
|
-
second_span = spans[0]
|
135
|
-
|
136
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
137
|
-
|
138
|
-
assert_equal :memcache, second_span[:n]
|
139
|
-
assert_equal false, second_span.key?(:error)
|
140
|
-
assert second_span[:p] == first_span[:s]
|
141
|
-
assert first_span[:t] == first_span[:s]
|
142
|
-
assert second_span[:data].key?(:memcache)
|
143
|
-
assert second_span[:data][:memcache].key?(:command)
|
144
|
-
assert_equal :replace, second_span[:data][:memcache][:command]
|
145
|
-
assert second_span[:data][:memcache].key?(:key)
|
146
|
-
assert_equal :instana, second_span[:data][:memcache][:key]
|
147
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
148
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
149
|
-
assert second_span[:data][:memcache].key?(:server)
|
150
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
151
|
-
end
|
152
|
-
|
153
|
-
def test_delete
|
154
|
-
clear_all!
|
155
|
-
|
156
|
-
@dc.set(:instana, :rocks)
|
157
|
-
result = nil
|
158
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
159
|
-
result = @dc.delete(:instana)
|
160
|
-
end
|
161
|
-
|
162
|
-
assert_equal true, result
|
163
|
-
|
164
|
-
spans = ::Instana.processor.queued_spans
|
165
|
-
assert_equal 2, spans.length
|
166
|
-
|
167
|
-
first_span = spans[1]
|
168
|
-
second_span = spans[0]
|
169
|
-
|
170
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
171
|
-
|
172
|
-
assert_equal :memcache, second_span[:n]
|
173
|
-
assert_equal false, second_span.key?(:error)
|
174
|
-
assert second_span[:p] == first_span[:s]
|
175
|
-
assert first_span[:t] == first_span[:s]
|
176
|
-
assert second_span[:data].key?(:memcache)
|
177
|
-
assert second_span[:data][:memcache].key?(:command)
|
178
|
-
assert_equal :delete, second_span[:data][:memcache][:command]
|
179
|
-
assert second_span[:data][:memcache].key?(:key)
|
180
|
-
assert_equal :instana, second_span[:data][:memcache][:key]
|
181
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
182
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
183
|
-
assert second_span[:data][:memcache].key?(:server)
|
184
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
185
|
-
end
|
186
|
-
|
187
|
-
def test_incr
|
188
|
-
clear_all!
|
189
|
-
|
190
|
-
result = nil
|
191
|
-
@dc.set(:counter, 0, nil, :raw => true)
|
192
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
193
|
-
result = @dc.incr(:counter, 1, nil, 0)
|
194
|
-
end
|
195
|
-
|
196
|
-
assert_equal 1, result
|
197
|
-
|
198
|
-
spans = ::Instana.processor.queued_spans
|
199
|
-
assert_equal 2, spans.length
|
200
|
-
|
201
|
-
first_span = spans[1]
|
202
|
-
second_span = spans[0]
|
203
|
-
|
204
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
205
|
-
|
206
|
-
assert_equal :memcache, second_span[:n]
|
207
|
-
assert_equal false, second_span.key?(:error)
|
208
|
-
assert second_span[:p] == first_span[:s]
|
209
|
-
assert first_span[:t] == first_span[:s]
|
210
|
-
assert second_span[:data].key?(:memcache)
|
211
|
-
assert second_span[:data][:memcache].key?(:command)
|
212
|
-
assert_equal :incr, second_span[:data][:memcache][:command]
|
213
|
-
assert second_span[:data][:memcache].key?(:key)
|
214
|
-
assert_equal :counter, second_span[:data][:memcache][:key]
|
215
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
216
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
217
|
-
assert second_span[:data][:memcache].key?(:server)
|
218
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
219
|
-
end
|
220
|
-
|
221
|
-
def test_decr
|
222
|
-
clear_all!
|
223
|
-
|
224
|
-
result = nil
|
225
|
-
@dc.set(:counter, 0, nil, :raw => true)
|
226
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
227
|
-
result = @dc.decr(:counter, 1, nil, 0)
|
228
|
-
end
|
229
|
-
|
230
|
-
assert_equal 0, result
|
231
|
-
|
232
|
-
spans = ::Instana.processor.queued_spans
|
233
|
-
assert_equal 2, spans.length
|
234
|
-
|
235
|
-
first_span = spans[1]
|
236
|
-
second_span = spans[0]
|
237
|
-
|
238
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
239
|
-
|
240
|
-
assert_equal :memcache, second_span[:n]
|
241
|
-
assert_equal false, second_span.key?(:error)
|
242
|
-
assert second_span[:p] == first_span[:s]
|
243
|
-
assert first_span[:t] == first_span[:s]
|
244
|
-
assert second_span[:data].key?(:memcache)
|
245
|
-
assert second_span[:data][:memcache].key?(:command)
|
246
|
-
assert_equal :decr, second_span[:data][:memcache][:command]
|
247
|
-
assert second_span[:data][:memcache].key?(:key)
|
248
|
-
assert_equal :counter, second_span[:data][:memcache][:key]
|
249
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
250
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
251
|
-
assert second_span[:data][:memcache].key?(:server)
|
252
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
253
|
-
end
|
254
|
-
|
255
|
-
def test_get_multi
|
256
|
-
clear_all!
|
257
|
-
|
258
|
-
@dc.set(:one, 1)
|
259
|
-
@dc.set(:three, 3)
|
260
|
-
|
261
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
262
|
-
@dc.get_multi(:one, :two, :three, :four)
|
263
|
-
end
|
264
|
-
|
265
|
-
spans = ::Instana.processor.queued_spans
|
266
|
-
assert_equal 2, spans.length
|
267
|
-
|
268
|
-
first_span = spans[1]
|
269
|
-
second_span = spans[0]
|
270
|
-
|
271
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
272
|
-
|
273
|
-
assert_equal :memcache, second_span[:n]
|
274
|
-
assert_equal false, second_span.key?(:error)
|
275
|
-
assert second_span[:p] == first_span[:s]
|
276
|
-
assert first_span[:t] == first_span[:s]
|
277
|
-
assert second_span[:data].key?(:memcache)
|
278
|
-
assert second_span[:data][:memcache].key?(:command)
|
279
|
-
assert_equal :get_multi, second_span[:data][:memcache][:command]
|
280
|
-
assert second_span[:data][:memcache].key?(:keys)
|
281
|
-
assert_equal "one, two, three, four", second_span[:data][:memcache][:keys]
|
282
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
283
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
284
|
-
assert second_span[:data][:memcache].key?(:server)
|
285
|
-
assert_equal @memcached_host, second_span[:data][:memcache][:server]
|
286
|
-
assert second_span[:data][:memcache].key?(:hits)
|
287
|
-
assert_equal 2, second_span[:data][:memcache][:hits]
|
288
|
-
end
|
289
|
-
|
290
|
-
def test_get_error_logging
|
291
|
-
clear_all!
|
292
|
-
|
293
|
-
# Invalid/broken client not connected to a server
|
294
|
-
broken_dc = Dalli::Client.new('128.0.0.100:11222', :namespace => "instana_test", :expires_in => 1)
|
295
|
-
|
296
|
-
result = nil
|
297
|
-
begin
|
298
|
-
::Instana.tracer.start_or_continue_trace(:dalli_test) do
|
299
|
-
result = broken_dc.get(:instana)
|
300
|
-
end
|
301
|
-
rescue
|
302
|
-
end
|
303
|
-
|
304
|
-
spans = ::Instana.processor.queued_spans
|
305
|
-
assert_equal 2, spans.length
|
306
|
-
|
307
|
-
first_span = spans[1]
|
308
|
-
second_span = spans[0]
|
309
|
-
|
310
|
-
validate_sdk_span(first_span, {:name => :dalli_test, :type => :entry})
|
311
|
-
|
312
|
-
assert_equal :memcache, second_span[:n]
|
313
|
-
assert_equal true, second_span.key?(:error)
|
314
|
-
assert second_span[:p] == first_span[:s]
|
315
|
-
assert first_span[:t] == first_span[:s]
|
316
|
-
assert second_span[:data].key?(:memcache)
|
317
|
-
assert second_span[:data][:memcache].key?(:command)
|
318
|
-
assert_equal :get, second_span[:data][:memcache][:command]
|
319
|
-
assert second_span[:data][:memcache].key?(:key)
|
320
|
-
assert_equal :instana, second_span[:data][:memcache][:key]
|
321
|
-
assert second_span[:data][:memcache].key?(:namespace)
|
322
|
-
assert_equal 'instana_test', second_span[:data][:memcache][:namespace]
|
323
|
-
assert second_span[:data][:memcache].key?(:error)
|
324
|
-
end
|
325
|
-
end
|
@@ -1,204 +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 ExconTest < Minitest::Test
|
8
|
-
def teardown
|
9
|
-
::Instana.config[:allow_exit_as_root] = false
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_config_defaults
|
13
|
-
assert ::Instana.config[:excon].is_a?(Hash)
|
14
|
-
assert ::Instana.config[:excon].key?(:enabled)
|
15
|
-
assert_equal true, ::Instana.config[:excon][:enabled]
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_basic_get
|
19
|
-
clear_all!
|
20
|
-
|
21
|
-
# A slight hack but webmock chokes with pipelined requests.
|
22
|
-
# Delete their excon middleware
|
23
|
-
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
24
|
-
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
25
|
-
|
26
|
-
url = "http://127.0.0.1:6511"
|
27
|
-
|
28
|
-
connection = Excon.new(url)
|
29
|
-
Instana.tracer.start_or_continue_trace(:'excon-test') do
|
30
|
-
connection.get(:path => '/?basic_get')
|
31
|
-
end
|
32
|
-
|
33
|
-
spans = ::Instana.processor.queued_spans
|
34
|
-
assert_equal 3, spans.length
|
35
|
-
|
36
|
-
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
37
|
-
excon_span = find_first_span_by_name(spans, :excon)
|
38
|
-
rack_span = find_first_span_by_name(spans, :rack)
|
39
|
-
|
40
|
-
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :entry})
|
41
|
-
|
42
|
-
# data keys/values
|
43
|
-
refute_nil excon_span.key?(:data)
|
44
|
-
refute_nil excon_span[:data].key?(:http)
|
45
|
-
assert_equal "http://127.0.0.1:6511/", excon_span[:data][:http][:url]
|
46
|
-
assert_equal 200, excon_span[:data][:http][:status]
|
47
|
-
assert_equal 'basic_get', excon_span[:data][:http][:params]
|
48
|
-
|
49
|
-
# excon backtrace not included by default check
|
50
|
-
assert !excon_span.key?(:stack)
|
51
|
-
|
52
|
-
assert_equal sdk_span[:t], excon_span[:t]
|
53
|
-
assert_equal rack_span[:t], excon_span[:t]
|
54
|
-
|
55
|
-
assert_equal rack_span[:p], excon_span[:s]
|
56
|
-
assert_equal excon_span[:p], sdk_span[:s]
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_basic_get_as_root_exit_span
|
60
|
-
clear_all!
|
61
|
-
|
62
|
-
# A slight hack but webmock chokes with pipelined requests.
|
63
|
-
# Delete their excon middleware
|
64
|
-
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
65
|
-
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
66
|
-
|
67
|
-
url = "http://127.0.0.1:6511"
|
68
|
-
|
69
|
-
::Instana.config[:allow_exit_as_root] = true
|
70
|
-
connection = Excon.new(url)
|
71
|
-
connection.get(:path => '/?basic_get')
|
72
|
-
|
73
|
-
spans = ::Instana.processor.queued_spans
|
74
|
-
assert_equal 2, spans.length
|
75
|
-
|
76
|
-
excon_span = find_first_span_by_name(spans, :excon)
|
77
|
-
rack_span = find_first_span_by_name(spans, :rack)
|
78
|
-
|
79
|
-
# data keys/values
|
80
|
-
refute_nil excon_span.key?(:data)
|
81
|
-
refute_nil excon_span[:data].key?(:http)
|
82
|
-
assert_equal "http://127.0.0.1:6511/", excon_span[:data][:http][:url]
|
83
|
-
assert_equal 200, excon_span[:data][:http][:status]
|
84
|
-
assert_equal 'basic_get', excon_span[:data][:http][:params]
|
85
|
-
|
86
|
-
# excon backtrace not included by default check
|
87
|
-
assert !excon_span.key?(:stack)
|
88
|
-
|
89
|
-
assert_equal rack_span[:t], excon_span[:t]
|
90
|
-
|
91
|
-
assert_equal rack_span[:p], excon_span[:s]
|
92
|
-
assert_nil excon_span[:p]
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_basic_get_with_error
|
96
|
-
clear_all!
|
97
|
-
|
98
|
-
# A slight hack but webmock chokes with pipelined requests.
|
99
|
-
# Delete their excon middleware
|
100
|
-
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
101
|
-
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
102
|
-
|
103
|
-
url = "http://127.0.0.1:6511"
|
104
|
-
|
105
|
-
begin
|
106
|
-
connection = Excon.new(url)
|
107
|
-
Instana.tracer.start_or_continue_trace('excon-test') do
|
108
|
-
connection.get(:path => '/error')
|
109
|
-
end
|
110
|
-
rescue
|
111
|
-
end
|
112
|
-
|
113
|
-
spans = ::Instana.processor.queued_spans
|
114
|
-
assert_equal 3, spans.length
|
115
|
-
|
116
|
-
rack_span = find_first_span_by_name(spans, :rack)
|
117
|
-
excon_span = find_first_span_by_name(spans, :excon)
|
118
|
-
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
119
|
-
|
120
|
-
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :entry})
|
121
|
-
|
122
|
-
assert_equal sdk_span[:s], excon_span[:p]
|
123
|
-
assert_equal excon_span[:s], rack_span[:p]
|
124
|
-
|
125
|
-
assert_equal :excon, excon_span[:n]
|
126
|
-
refute_nil excon_span.key?(:data)
|
127
|
-
refute_nil excon_span[:data].key?(:http)
|
128
|
-
assert_equal "http://127.0.0.1:6511/error", excon_span[:data][:http][:url]
|
129
|
-
assert_equal 500, excon_span[:data][:http][:status]
|
130
|
-
|
131
|
-
# error validation
|
132
|
-
assert_equal true, excon_span[:error]
|
133
|
-
assert_equal 1, excon_span[:ec]
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_pipelined_requests
|
137
|
-
clear_all!
|
138
|
-
|
139
|
-
# A slight hack but webmock chokes with pipelined requests.
|
140
|
-
# Delete their excon middleware
|
141
|
-
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
142
|
-
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
143
|
-
|
144
|
-
url = "http://127.0.0.1:6511"
|
145
|
-
|
146
|
-
connection = Excon.new(url)
|
147
|
-
request = { :method => :get, :path => '/?pipelined_request' }
|
148
|
-
Instana.tracer.start_or_continue_trace('excon-test') do
|
149
|
-
connection.requests([request, request, request])
|
150
|
-
end
|
151
|
-
|
152
|
-
spans = ::Instana.processor.queued_spans
|
153
|
-
assert_equal 7, spans.length
|
154
|
-
|
155
|
-
rack_spans = find_spans_by_name(spans, :rack)
|
156
|
-
excon_spans = find_spans_by_name(spans, :excon)
|
157
|
-
sdk_span = find_first_span_by_name(spans, :'excon-test')
|
158
|
-
|
159
|
-
validate_sdk_span(sdk_span, {:name => :'excon-test', :type => :entry})
|
160
|
-
|
161
|
-
assert_equal 3, rack_spans.length
|
162
|
-
assert_equal 3, excon_spans.length
|
163
|
-
|
164
|
-
for rack_span in rack_spans
|
165
|
-
# data keys/values
|
166
|
-
refute_nil rack_span.key?(:data)
|
167
|
-
refute_nil rack_span[:data].key?(:http)
|
168
|
-
assert_equal "/", rack_span[:data][:http][:url]
|
169
|
-
assert_equal 200, rack_span[:data][:http][:status]
|
170
|
-
assert !rack_span.key?(:stack)
|
171
|
-
|
172
|
-
# Make sure a parent is specified and that we have it
|
173
|
-
refute_nil rack_span[:p]
|
174
|
-
excon_span = find_span_by_id(spans, rack_span[:p])
|
175
|
-
assert_equal :excon, excon_span[:n]
|
176
|
-
|
177
|
-
refute_nil excon_span.key?(:data)
|
178
|
-
refute_nil excon_span[:data].key?(:http)
|
179
|
-
assert_equal "http://127.0.0.1:6511/", excon_span[:data][:http][:url]
|
180
|
-
assert_equal 200, excon_span[:data][:http][:status]
|
181
|
-
assert !excon_span.key?(:stack)
|
182
|
-
|
183
|
-
# walk up the line
|
184
|
-
refute_nil excon_span[:p]
|
185
|
-
grandparent_span = find_span_by_id(spans, excon_span[:p])
|
186
|
-
assert_nil grandparent_span[:p]
|
187
|
-
assert_equal :sdk, grandparent_span[:n]
|
188
|
-
end
|
189
|
-
end
|
190
|
-
|
191
|
-
def test_basic_get_no_tracing
|
192
|
-
clear_all!
|
193
|
-
|
194
|
-
# A slight hack but webmock chokes with pipelined requests.
|
195
|
-
# Delete their excon middleware
|
196
|
-
Excon.defaults[:middlewares].delete ::WebMock::HttpLibAdapters::ExconAdapter
|
197
|
-
Excon.defaults[:middlewares].delete ::Excon::Middleware::Mock
|
198
|
-
|
199
|
-
url = "http://127.0.0.1:6511"
|
200
|
-
|
201
|
-
connection = Excon.new(url)
|
202
|
-
connection.get(:path => '/?basic_get')
|
203
|
-
end
|
204
|
-
end
|