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,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.in_span(: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.in_span(: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.in_span(: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.in_span(: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.in_span(: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.in_span(: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.in_span(: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.in_span(: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.in_span(:'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.in_span('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.in_span('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