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.
Files changed (228) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/instana/base.rb +4 -2
  4. data/lib/instana/instrumentation/action_cable.rb +8 -4
  5. data/lib/instana/instrumentation/action_controller.rb +2 -4
  6. data/lib/instana/instrumentation/action_mailer.rb +1 -1
  7. data/lib/instana/instrumentation/action_view.rb +4 -4
  8. data/lib/instana/instrumentation/active_job.rb +20 -5
  9. data/lib/instana/instrumentation/active_record.rb +1 -1
  10. data/lib/instana/instrumentation/aws_sdk_dynamodb.rb +1 -1
  11. data/lib/instana/instrumentation/aws_sdk_lambda.rb +1 -1
  12. data/lib/instana/instrumentation/aws_sdk_s3.rb +1 -1
  13. data/lib/instana/instrumentation/aws_sdk_sns.rb +1 -1
  14. data/lib/instana/instrumentation/aws_sdk_sqs.rb +1 -1
  15. data/lib/instana/instrumentation/dalli.rb +1 -1
  16. data/lib/instana/instrumentation/excon.rb +2 -2
  17. data/lib/instana/instrumentation/graphql.rb +3 -3
  18. data/lib/instana/instrumentation/grpc.rb +14 -13
  19. data/lib/instana/instrumentation/mongo.rb +3 -3
  20. data/lib/instana/instrumentation/net-http.rb +5 -4
  21. data/lib/instana/instrumentation/rack.rb +36 -4
  22. data/lib/instana/instrumentation/redis.rb +1 -1
  23. data/lib/instana/instrumentation/resque.rb +10 -8
  24. data/lib/instana/instrumentation/rest-client.rb +4 -4
  25. data/lib/instana/instrumentation/sequel.rb +3 -3
  26. data/lib/instana/instrumentation/shoryuken.rb +4 -1
  27. data/lib/instana/instrumentation/sidekiq-client.rb +21 -19
  28. data/lib/instana/instrumentation/sidekiq-worker.rb +22 -21
  29. data/lib/instana/instrumented_logger.rb +1 -1
  30. data/lib/instana/samplers/result.rb +32 -0
  31. data/lib/instana/samplers/samplers.rb +76 -0
  32. data/lib/instana/serverless.rb +4 -2
  33. data/lib/instana/setup.rb +5 -5
  34. data/lib/instana/span_filtering/condition.rb +134 -0
  35. data/lib/instana/span_filtering/configuration.rb +262 -0
  36. data/lib/instana/span_filtering/filter_rule.rb +31 -0
  37. data/lib/instana/span_filtering.rb +62 -0
  38. data/lib/instana/trace/export.rb +36 -0
  39. data/lib/instana/{tracing → trace}/processor.rb +19 -15
  40. data/lib/instana/trace/span.rb +534 -0
  41. data/lib/instana/{tracing → trace}/span_context.rb +17 -8
  42. data/lib/instana/trace/span_kind.rb +51 -0
  43. data/lib/instana/trace/span_limits.rb +63 -0
  44. data/lib/instana/{tracer.rb → trace/tracer.rb} +106 -54
  45. data/lib/instana/trace/tracer_provider.rb +198 -0
  46. data/lib/instana/trace.rb +74 -0
  47. data/lib/instana/util.rb +11 -0
  48. data/lib/instana/version.rb +1 -1
  49. metadata +89 -267
  50. data/.circleci/config.yml +0 -485
  51. data/.codeclimate.yml +0 -23
  52. data/.editorconfig +0 -10
  53. data/.fasterer.yml +0 -23
  54. data/.github/ISSUE_TEMPLATE/bug.yml +0 -39
  55. data/.github/ISSUE_TEMPLATE/config.yml +0 -8
  56. data/.github/workflows/pr_commits_signed_off.yml +0 -16
  57. data/.github/workflows/release-notification-on-slack.yml +0 -34
  58. data/.gitignore +0 -19
  59. data/.rubocop.yml +0 -34
  60. data/.rubocop_todo.yml +0 -1140
  61. data/.tekton/.currency/docs/report.md +0 -20
  62. data/.tekton/.currency/resources/requirements.txt +0 -4
  63. data/.tekton/.currency/resources/table.json +0 -100
  64. data/.tekton/.currency/scripts/generate_report.py +0 -136
  65. data/.tekton/README.md +0 -278
  66. data/.tekton/github-interceptor-secret.yaml +0 -8
  67. data/.tekton/github-pr-eventlistener.yaml +0 -104
  68. data/.tekton/github-pr-pipeline.yaml.part +0 -38
  69. data/.tekton/github-set-status-task.yaml +0 -43
  70. data/.tekton/github-webhook-ingress.yaml +0 -20
  71. data/.tekton/pipeline.yaml +0 -571
  72. data/.tekton/pipelinerun.yaml +0 -21
  73. data/.tekton/ruby-tracer-prepuller.yaml +0 -87
  74. data/.tekton/run_unittests.sh +0 -87
  75. data/.tekton/scheduled-eventlistener.yaml +0 -108
  76. data/.tekton/task.yaml +0 -449
  77. data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
  78. data/Appraisals +0 -124
  79. data/CONTRIBUTING.md +0 -86
  80. data/Gemfile +0 -17
  81. data/LICENSE +0 -22
  82. data/MAINTAINERS.md +0 -3
  83. data/Rakefile +0 -49
  84. data/bin/announce_release_on_slack.py +0 -103
  85. data/docker-compose.yml +0 -20
  86. data/download.sh +0 -85
  87. data/examples/opentracing.rb +0 -35
  88. data/examples/tracing.rb +0 -84
  89. data/extras/license_header.rb +0 -44
  90. data/gemfiles/.bundle/config +0 -2
  91. data/gemfiles/aws_30.gemfile +0 -21
  92. data/gemfiles/aws_60.gemfile +0 -16
  93. data/gemfiles/cuba_30.gemfile +0 -16
  94. data/gemfiles/cuba_40.gemfile +0 -13
  95. data/gemfiles/dalli_20.gemfile +0 -15
  96. data/gemfiles/dalli_30.gemfile +0 -12
  97. data/gemfiles/dalli_32.gemfile +0 -12
  98. data/gemfiles/excon_0100.gemfile +0 -14
  99. data/gemfiles/excon_021.gemfile +0 -17
  100. data/gemfiles/excon_079.gemfile +0 -17
  101. data/gemfiles/excon_100.gemfile +0 -14
  102. data/gemfiles/graphql_10.gemfile +0 -16
  103. data/gemfiles/graphql_20.gemfile +0 -15
  104. data/gemfiles/grpc_10.gemfile +0 -15
  105. data/gemfiles/mongo_216.gemfile +0 -15
  106. data/gemfiles/mongo_219.gemfile +0 -12
  107. data/gemfiles/net_http_01.gemfile +0 -17
  108. data/gemfiles/rack_16.gemfile +0 -15
  109. data/gemfiles/rack_20.gemfile +0 -15
  110. data/gemfiles/rack_30.gemfile +0 -13
  111. data/gemfiles/rails_42.gemfile +0 -18
  112. data/gemfiles/rails_50.gemfile +0 -19
  113. data/gemfiles/rails_52.gemfile +0 -19
  114. data/gemfiles/rails_60.gemfile +0 -19
  115. data/gemfiles/rails_61.gemfile +0 -20
  116. data/gemfiles/rails_70.gemfile +0 -17
  117. data/gemfiles/rails_71.gemfile +0 -17
  118. data/gemfiles/rails_80.gemfile +0 -17
  119. data/gemfiles/redis_40.gemfile +0 -15
  120. data/gemfiles/redis_50.gemfile +0 -13
  121. data/gemfiles/redis_51.gemfile +0 -13
  122. data/gemfiles/resque_122.gemfile +0 -16
  123. data/gemfiles/resque_1274_3scale.gemfile +0 -17
  124. data/gemfiles/resque_20.gemfile +0 -16
  125. data/gemfiles/rest_client_16.gemfile +0 -17
  126. data/gemfiles/rest_client_20.gemfile +0 -17
  127. data/gemfiles/roda_20.gemfile +0 -16
  128. data/gemfiles/roda_30.gemfile +0 -16
  129. data/gemfiles/rubocop_162.gemfile +0 -6
  130. data/gemfiles/sequel_56.gemfile +0 -16
  131. data/gemfiles/sequel_57.gemfile +0 -16
  132. data/gemfiles/sequel_58.gemfile +0 -16
  133. data/gemfiles/shoryuken_50.gemfile +0 -16
  134. data/gemfiles/shoryuken_60.gemfile +0 -13
  135. data/gemfiles/sidekiq_42.gemfile +0 -15
  136. data/gemfiles/sidekiq_50.gemfile +0 -15
  137. data/gemfiles/sidekiq_60.gemfile +0 -12
  138. data/gemfiles/sidekiq_65.gemfile +0 -12
  139. data/gemfiles/sidekiq_70.gemfile +0 -12
  140. data/gemfiles/sinatra_14.gemfile +0 -15
  141. data/gemfiles/sinatra_22.gemfile +0 -12
  142. data/gemfiles/sinatra_30.gemfile +0 -12
  143. data/gemfiles/sinatra_40.gemfile +0 -12
  144. data/instana.gemspec +0 -48
  145. data/lib/instana/open_tracing/carrier.rb +0 -7
  146. data/lib/instana/open_tracing/instana_tracer.rb +0 -99
  147. data/lib/instana/tracing/span.rb +0 -431
  148. data/lib/opentracing.rb +0 -32
  149. data/log/.keep +0 -0
  150. data/sonar-project.properties +0 -9
  151. data/test/activator_test.rb +0 -50
  152. data/test/backend/agent_test.rb +0 -80
  153. data/test/backend/gc_snapshot_test.rb +0 -11
  154. data/test/backend/host_agent_activation_observer_test.rb +0 -73
  155. data/test/backend/host_agent_lookup_test.rb +0 -78
  156. data/test/backend/host_agent_reporting_observer_test.rb +0 -276
  157. data/test/backend/host_agent_test.rb +0 -89
  158. data/test/backend/process_info_test.rb +0 -83
  159. data/test/backend/request_client_test.rb +0 -39
  160. data/test/backend/serverless_agent_test.rb +0 -83
  161. data/test/benchmarks/bench_id_generation.rb +0 -15
  162. data/test/benchmarks/bench_opentracing.rb +0 -16
  163. data/test/config_test.rb +0 -34
  164. data/test/frameworks/cuba_test.rb +0 -61
  165. data/test/frameworks/roda_test.rb +0 -60
  166. data/test/frameworks/sinatra_test.rb +0 -71
  167. data/test/instana_test.rb +0 -37
  168. data/test/instrumentation/aws_test.rb +0 -241
  169. data/test/instrumentation/dalli_test.rb +0 -325
  170. data/test/instrumentation/excon_test.rb +0 -204
  171. data/test/instrumentation/graphql_test.rb +0 -289
  172. data/test/instrumentation/grpc_test.rb +0 -420
  173. data/test/instrumentation/mongo_test.rb +0 -68
  174. data/test/instrumentation/net_http_test.rb +0 -220
  175. data/test/instrumentation/rack_instrumented_request_test.rb +0 -211
  176. data/test/instrumentation/rack_test.rb +0 -415
  177. data/test/instrumentation/rails_action_cable_test.rb +0 -135
  178. data/test/instrumentation/rails_action_controller_test.rb +0 -218
  179. data/test/instrumentation/rails_action_mailer_test.rb +0 -66
  180. data/test/instrumentation/rails_action_view_test.rb +0 -154
  181. data/test/instrumentation/rails_active_job_test.rb +0 -65
  182. data/test/instrumentation/rails_active_record_database_missing_test.rb +0 -45
  183. data/test/instrumentation/rails_active_record_test.rb +0 -115
  184. data/test/instrumentation/redis_test.rb +0 -152
  185. data/test/instrumentation/resque_test.rb +0 -188
  186. data/test/instrumentation/rest_client_test.rb +0 -107
  187. data/test/instrumentation/sequel_test.rb +0 -105
  188. data/test/instrumentation/shoryuken_test.rb +0 -47
  189. data/test/instrumentation/sidekiq-client_test.rb +0 -169
  190. data/test/instrumentation/sidekiq-worker_test.rb +0 -180
  191. data/test/secrets_test.rb +0 -112
  192. data/test/serverless_test.rb +0 -369
  193. data/test/snapshot/deltable_test.rb +0 -17
  194. data/test/snapshot/docker_container_test.rb +0 -82
  195. data/test/snapshot/fargate_container_test.rb +0 -82
  196. data/test/snapshot/fargate_process_test.rb +0 -35
  197. data/test/snapshot/fargate_task_test.rb +0 -49
  198. data/test/snapshot/google_cloud_run_instance_test.rb +0 -74
  199. data/test/snapshot/google_cloud_run_process_test.rb +0 -33
  200. data/test/snapshot/lambda_function_test.rb +0 -37
  201. data/test/snapshot/ruby_process_test.rb +0 -32
  202. data/test/support/apps/active_record/active_record.rb +0 -24
  203. data/test/support/apps/grpc/boot.rb +0 -23
  204. data/test/support/apps/grpc/grpc_server.rb +0 -84
  205. data/test/support/apps/http_endpoint/boot.rb +0 -28
  206. data/test/support/apps/rails/boot.rb +0 -219
  207. data/test/support/apps/rails/models/block.rb +0 -21
  208. data/test/support/apps/rails/models/block6.rb +0 -21
  209. data/test/support/apps/resque/boot.rb +0 -5
  210. data/test/support/apps/resque/jobs/resque_error_job.rb +0 -22
  211. data/test/support/apps/resque/jobs/resque_fast_job.rb +0 -23
  212. data/test/support/apps/sidekiq/boot.rb +0 -25
  213. data/test/support/apps/sidekiq/jobs/sidekiq_job_1.rb +0 -9
  214. data/test/support/apps/sidekiq/jobs/sidekiq_job_2.rb +0 -10
  215. data/test/support/apps/sidekiq/worker.rb +0 -37
  216. data/test/support/helpers.rb +0 -85
  217. data/test/support/mock_timer.rb +0 -20
  218. data/test/test_helper.rb +0 -69
  219. data/test/tracing/custom_test.rb +0 -226
  220. data/test/tracing/id_management_test.rb +0 -80
  221. data/test/tracing/instrumented_logger_test.rb +0 -39
  222. data/test/tracing/opentracing_test.rb +0 -382
  223. data/test/tracing/processor_test.rb +0 -58
  224. data/test/tracing/span_context_test.rb +0 -22
  225. data/test/tracing/span_test.rb +0 -179
  226. data/test/tracing/tracer_async_test.rb +0 -230
  227. data/test/tracing/tracer_test.rb +0 -352
  228. 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