instana 2.0.0 → 2.2.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 (192) hide show
  1. checksums.yaml +4 -4
  2. data/lib/instana/instrumentation/instrumented_request.rb +2 -0
  3. data/lib/instana/instrumentation/net-http.rb +2 -1
  4. data/lib/instana/instrumentation/rack.rb +86 -66
  5. data/lib/instana/setup.rb +1 -0
  6. data/lib/instana/span_filtering/condition.rb +134 -0
  7. data/lib/instana/span_filtering/configuration.rb +262 -0
  8. data/lib/instana/span_filtering/filter_rule.rb +31 -0
  9. data/lib/instana/span_filtering.rb +62 -0
  10. data/lib/instana/trace/span.rb +5 -3
  11. data/lib/instana/trace/span_context.rb +10 -2
  12. data/lib/instana/trace/tracer.rb +0 -21
  13. data/lib/instana/util.rb +13 -0
  14. data/lib/instana/version.rb +1 -1
  15. metadata +7 -258
  16. data/.circleci/config.yml +0 -361
  17. data/.codeclimate.yml +0 -23
  18. data/.editorconfig +0 -10
  19. data/.fasterer.yml +0 -23
  20. data/.github/ISSUE_TEMPLATE/bug.yml +0 -39
  21. data/.github/ISSUE_TEMPLATE/config.yml +0 -8
  22. data/.github/workflows/pr_commits_signed_off.yml +0 -16
  23. data/.github/workflows/release-notification-on-slack.yml +0 -34
  24. data/.gitignore +0 -19
  25. data/.rubocop.yml +0 -34
  26. data/.rubocop_todo.yml +0 -1140
  27. data/.tekton/.currency/docs/report.md +0 -20
  28. data/.tekton/.currency/resources/requirements.txt +0 -4
  29. data/.tekton/.currency/resources/table.json +0 -100
  30. data/.tekton/.currency/scripts/generate_report.py +0 -308
  31. data/.tekton/README.md +0 -278
  32. data/.tekton/github-interceptor-secret.yaml +0 -8
  33. data/.tekton/github-pr-eventlistener.yaml +0 -104
  34. data/.tekton/github-pr-pipeline.yaml.part +0 -38
  35. data/.tekton/github-set-status-task.yaml +0 -43
  36. data/.tekton/github-webhook-ingress.yaml +0 -20
  37. data/.tekton/pipeline.yaml +0 -484
  38. data/.tekton/pipelinerun.yaml +0 -21
  39. data/.tekton/prepuller-restart-service-account.yaml +0 -31
  40. data/.tekton/ruby-tracer-prepuller-cronjob.yaml +0 -20
  41. data/.tekton/ruby-tracer-prepuller.yaml +0 -88
  42. data/.tekton/run_unittests.sh +0 -87
  43. data/.tekton/scheduled-eventlistener.yaml +0 -108
  44. data/.tekton/task.yaml +0 -453
  45. data/.tekton/tekton-triggers-eventlistener-serviceaccount.yaml +0 -29
  46. data/Appraisals +0 -124
  47. data/CONTRIBUTING.md +0 -86
  48. data/Gemfile +0 -22
  49. data/LICENSE +0 -22
  50. data/MAINTAINERS.md +0 -3
  51. data/Rakefile +0 -49
  52. data/bin/announce_release_on_slack.py +0 -103
  53. data/docker-compose.yml +0 -20
  54. data/download.sh +0 -85
  55. data/examples/otel.rb +0 -98
  56. data/examples/tracing.rb +0 -85
  57. data/extras/license_header.rb +0 -44
  58. data/gemfiles/.bundle/config +0 -2
  59. data/gemfiles/aws_30.gemfile +0 -21
  60. data/gemfiles/aws_60.gemfile +0 -16
  61. data/gemfiles/cuba_30.gemfile +0 -16
  62. data/gemfiles/cuba_40.gemfile +0 -13
  63. data/gemfiles/dalli_20.gemfile +0 -15
  64. data/gemfiles/dalli_30.gemfile +0 -12
  65. data/gemfiles/dalli_32.gemfile +0 -12
  66. data/gemfiles/excon_0100.gemfile +0 -14
  67. data/gemfiles/excon_021.gemfile +0 -17
  68. data/gemfiles/excon_079.gemfile +0 -17
  69. data/gemfiles/excon_100.gemfile +0 -14
  70. data/gemfiles/graphql_10.gemfile +0 -16
  71. data/gemfiles/graphql_20.gemfile +0 -15
  72. data/gemfiles/grpc_10.gemfile +0 -15
  73. data/gemfiles/mongo_216.gemfile +0 -15
  74. data/gemfiles/mongo_219.gemfile +0 -12
  75. data/gemfiles/net_http_01.gemfile +0 -17
  76. data/gemfiles/rack_16.gemfile +0 -15
  77. data/gemfiles/rack_20.gemfile +0 -15
  78. data/gemfiles/rack_30.gemfile +0 -13
  79. data/gemfiles/rails_42.gemfile +0 -18
  80. data/gemfiles/rails_50.gemfile +0 -19
  81. data/gemfiles/rails_52.gemfile +0 -19
  82. data/gemfiles/rails_60.gemfile +0 -19
  83. data/gemfiles/rails_61.gemfile +0 -21
  84. data/gemfiles/rails_70.gemfile +0 -18
  85. data/gemfiles/rails_71.gemfile +0 -17
  86. data/gemfiles/rails_80.gemfile +0 -17
  87. data/gemfiles/redis_40.gemfile +0 -15
  88. data/gemfiles/redis_50.gemfile +0 -13
  89. data/gemfiles/redis_51.gemfile +0 -13
  90. data/gemfiles/resque_122.gemfile +0 -16
  91. data/gemfiles/resque_1274_3scale.gemfile +0 -17
  92. data/gemfiles/resque_20.gemfile +0 -16
  93. data/gemfiles/rest_client_16.gemfile +0 -17
  94. data/gemfiles/rest_client_20.gemfile +0 -17
  95. data/gemfiles/roda_20.gemfile +0 -16
  96. data/gemfiles/roda_30.gemfile +0 -16
  97. data/gemfiles/rubocop_162.gemfile +0 -6
  98. data/gemfiles/sequel_56.gemfile +0 -16
  99. data/gemfiles/sequel_57.gemfile +0 -16
  100. data/gemfiles/sequel_58.gemfile +0 -16
  101. data/gemfiles/shoryuken_50.gemfile +0 -16
  102. data/gemfiles/shoryuken_60.gemfile +0 -13
  103. data/gemfiles/sidekiq_42.gemfile +0 -15
  104. data/gemfiles/sidekiq_50.gemfile +0 -15
  105. data/gemfiles/sidekiq_60.gemfile +0 -12
  106. data/gemfiles/sidekiq_65.gemfile +0 -12
  107. data/gemfiles/sidekiq_70.gemfile +0 -12
  108. data/gemfiles/sinatra_14.gemfile +0 -15
  109. data/gemfiles/sinatra_22.gemfile +0 -12
  110. data/gemfiles/sinatra_30.gemfile +0 -12
  111. data/gemfiles/sinatra_40.gemfile +0 -12
  112. data/instana.gemspec +0 -53
  113. data/log/.keep +0 -0
  114. data/sonar-project.properties +0 -9
  115. data/test/activator_test.rb +0 -50
  116. data/test/backend/agent_test.rb +0 -80
  117. data/test/backend/gc_snapshot_test.rb +0 -11
  118. data/test/backend/host_agent_activation_observer_test.rb +0 -73
  119. data/test/backend/host_agent_lookup_test.rb +0 -78
  120. data/test/backend/host_agent_reporting_observer_test.rb +0 -276
  121. data/test/backend/host_agent_test.rb +0 -89
  122. data/test/backend/process_info_test.rb +0 -83
  123. data/test/backend/request_client_test.rb +0 -39
  124. data/test/backend/serverless_agent_test.rb +0 -83
  125. data/test/benchmarks/bench_id_generation.rb +0 -15
  126. data/test/benchmarks/bench_opentracing.rb +0 -16
  127. data/test/config_test.rb +0 -34
  128. data/test/frameworks/cuba_test.rb +0 -61
  129. data/test/frameworks/roda_test.rb +0 -60
  130. data/test/frameworks/sinatra_test.rb +0 -71
  131. data/test/instana_test.rb +0 -37
  132. data/test/instrumentation/aws_test.rb +0 -241
  133. data/test/instrumentation/dalli_test.rb +0 -325
  134. data/test/instrumentation/excon_test.rb +0 -204
  135. data/test/instrumentation/graphql_test.rb +0 -289
  136. data/test/instrumentation/grpc_test.rb +0 -420
  137. data/test/instrumentation/mongo_test.rb +0 -68
  138. data/test/instrumentation/net_http_test.rb +0 -220
  139. data/test/instrumentation/rack_instrumented_request_test.rb +0 -211
  140. data/test/instrumentation/rack_test.rb +0 -415
  141. data/test/instrumentation/rails_action_cable_test.rb +0 -135
  142. data/test/instrumentation/rails_action_controller_test.rb +0 -218
  143. data/test/instrumentation/rails_action_mailer_test.rb +0 -66
  144. data/test/instrumentation/rails_action_view_test.rb +0 -154
  145. data/test/instrumentation/rails_active_job_test.rb +0 -65
  146. data/test/instrumentation/rails_active_record_database_missing_test.rb +0 -44
  147. data/test/instrumentation/rails_active_record_test.rb +0 -116
  148. data/test/instrumentation/redis_test.rb +0 -152
  149. data/test/instrumentation/resque_test.rb +0 -188
  150. data/test/instrumentation/rest_client_test.rb +0 -106
  151. data/test/instrumentation/sequel_test.rb +0 -111
  152. data/test/instrumentation/shoryuken_test.rb +0 -47
  153. data/test/instrumentation/sidekiq-client_test.rb +0 -169
  154. data/test/instrumentation/sidekiq-worker_test.rb +0 -180
  155. data/test/secrets_test.rb +0 -112
  156. data/test/serverless_test.rb +0 -369
  157. data/test/snapshot/deltable_test.rb +0 -17
  158. data/test/snapshot/docker_container_test.rb +0 -82
  159. data/test/snapshot/fargate_container_test.rb +0 -82
  160. data/test/snapshot/fargate_process_test.rb +0 -35
  161. data/test/snapshot/fargate_task_test.rb +0 -49
  162. data/test/snapshot/google_cloud_run_instance_test.rb +0 -74
  163. data/test/snapshot/google_cloud_run_process_test.rb +0 -33
  164. data/test/snapshot/lambda_function_test.rb +0 -37
  165. data/test/snapshot/ruby_process_test.rb +0 -32
  166. data/test/support/apps/active_record/active_record.rb +0 -24
  167. data/test/support/apps/grpc/boot.rb +0 -23
  168. data/test/support/apps/grpc/grpc_server.rb +0 -84
  169. data/test/support/apps/http_endpoint/boot.rb +0 -28
  170. data/test/support/apps/rails/boot.rb +0 -219
  171. data/test/support/apps/rails/models/block.rb +0 -21
  172. data/test/support/apps/rails/models/block6.rb +0 -21
  173. data/test/support/apps/resque/boot.rb +0 -5
  174. data/test/support/apps/resque/jobs/resque_error_job.rb +0 -22
  175. data/test/support/apps/resque/jobs/resque_fast_job.rb +0 -23
  176. data/test/support/apps/sidekiq/boot.rb +0 -25
  177. data/test/support/apps/sidekiq/jobs/sidekiq_job_1.rb +0 -9
  178. data/test/support/apps/sidekiq/jobs/sidekiq_job_2.rb +0 -10
  179. data/test/support/apps/sidekiq/worker.rb +0 -37
  180. data/test/support/helpers.rb +0 -85
  181. data/test/support/mock_timer.rb +0 -20
  182. data/test/test_helper.rb +0 -69
  183. data/test/trace/custom_test.rb +0 -233
  184. data/test/trace/id_management_test.rb +0 -78
  185. data/test/trace/instrumented_logger_test.rb +0 -39
  186. data/test/trace/processor_test.rb +0 -58
  187. data/test/trace/span_context_test.rb +0 -22
  188. data/test/trace/span_test.rb +0 -179
  189. data/test/trace/tracer_async_test.rb +0 -243
  190. data/test/trace/tracer_provider_test.rb +0 -148
  191. data/test/trace/tracer_test.rb +0 -363
  192. data/test/util_test.rb +0 -10
@@ -1,369 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class ServerlessTest < Minitest::Test
7
- def setup
8
- @mock_agent = Minitest::Mock.new
9
- @mock_agent.expect(:send_bundle, true, [])
10
- @subject = Instana::Serverless.new(agent: @mock_agent)
11
- end
12
-
13
- def teardown
14
- @mock_agent.verify
15
- end
16
-
17
- def test_lambda_send_error
18
- mock_logger = Minitest::Mock.new
19
- mock_logger.expect(:error, true, [String])
20
-
21
- @mock_agent.expect(:send_bundle, true) { |_args| raise StandardError, 'error' }
22
-
23
- mock_context = OpenStruct.new(
24
- invoked_function_arn: 'test_arn',
25
- function_name: 'test_function',
26
- function_version: '$TEST'
27
- )
28
-
29
- subject = Instana::Serverless.new(agent: @mock_agent, logger: mock_logger)
30
- subject.wrap_aws(nil, mock_context) { 0 }
31
- subject.wrap_aws(nil, mock_context) { 0 }
32
-
33
- mock_logger.verify
34
- end
35
-
36
- def test_lambda_data
37
- clear_all!
38
-
39
- mock_context = OpenStruct.new(
40
- invoked_function_arn: 'test_arn',
41
- function_name: 'test_function',
42
- function_version: '$TEST'
43
- )
44
-
45
- @subject.wrap_aws(nil, mock_context) { 0 }
46
-
47
- lambda_span, *rest = Instana.processor.queued_spans
48
- assert rest.empty?
49
-
50
- data = lambda_span[:data][:lambda]
51
-
52
- assert_equal 'aws:api.gateway.noproxy', lambda_span[:data][:lambda][:trigger]
53
-
54
- assert_equal mock_context.invoked_function_arn, data[:arn]
55
- assert_equal mock_context.function_name, data[:functionName]
56
- assert_equal mock_context.function_version, data[:functionVersion]
57
- assert_equal 'ruby', data[:runtime]
58
- end
59
-
60
- def test_lambda_http
61
- clear_all!
62
-
63
- mock_id = Instana::Util.generate_id
64
- mock_context = OpenStruct.new(
65
- invoked_function_arn: 'test_arn',
66
- function_name: 'test_function',
67
- function_version: '$TEST'
68
- )
69
- mock_http = {
70
- "headers" => {
71
- "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
72
- "Accept-Encoding" => "gzip, deflate",
73
- "Accept-Language" => "en-US,en;q=0.5",
74
- "Connection" => "keep-alive",
75
- "Host" => "127.0.0.1:3000",
76
- "Upgrade-Insecure-Requests" => "1",
77
- "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0",
78
- "X-Forwarded-Port" => "3000",
79
- "X-Forwarded-Proto" => "http",
80
- 'X-Instana-S' => mock_id,
81
- 'X-Instana-T' => mock_id,
82
- 'X-Instana-L' => '1'
83
- },
84
- "httpMethod" => "GET",
85
- "path" => "/hello",
86
- "queryStringParameters" => {"test" => "abcde"}
87
- }
88
-
89
- @subject.wrap_aws(mock_http, mock_context) { 0 }
90
-
91
- lambda_span, *rest = Instana.processor.queued_spans
92
- assert rest.empty?
93
-
94
- data = lambda_span[:data][:http]
95
-
96
- assert_equal 'aws:api.gateway', lambda_span[:data][:lambda][:trigger]
97
- assert_equal mock_id, lambda_span[:t]
98
- assert_equal mock_id, lambda_span[:p]
99
-
100
- assert_equal 'GET', data[:method]
101
- assert_equal '/hello', data[:url]
102
- assert_equal '127.0.0.1:3000', data[:host]
103
- assert_equal 'test=abcde', data[:params]
104
- end
105
-
106
- def test_lambda_alb
107
- clear_all!
108
-
109
- mock_id = Instana::Util.generate_id
110
- mock_context = OpenStruct.new(
111
- invoked_function_arn: 'test_arn',
112
- function_name: 'test_function',
113
- function_version: '$TEST'
114
- )
115
- mock_http = {
116
- "headers" => {
117
- "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
118
- "Accept-Encoding" => "gzip, deflate",
119
- "Accept-Language" => "en-US,en;q=0.5",
120
- "Connection" => "keep-alive",
121
- "Host" => "127.0.0.1:3000",
122
- "Upgrade-Insecure-Requests" => "1",
123
- "User-Agent" => "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:87.0) Gecko/20100101 Firefox/87.0",
124
- "X-Forwarded-Port" => "3000",
125
- "X-Forwarded-Proto" => "http",
126
- 'X-Instana-S' => mock_id,
127
- 'X-Instana-T' => mock_id,
128
- 'X-Instana-L' => '1'
129
- },
130
- "httpMethod" => "GET",
131
- "path" => "/hello",
132
- "requestContext" => { "elb" => {} }
133
- }
134
-
135
- @subject.wrap_aws(mock_http, mock_context) { 0 }
136
-
137
- lambda_span, *rest = Instana.processor.queued_spans
138
- assert rest.empty?
139
-
140
- data = lambda_span[:data][:http]
141
-
142
- assert_equal 'aws:application.load.balancer', lambda_span[:data][:lambda][:trigger]
143
- assert_equal mock_id, lambda_span[:t]
144
- assert_equal mock_id, lambda_span[:p]
145
-
146
- assert_equal 'GET', data[:method]
147
- assert_equal '/hello', data[:url]
148
- assert_equal '127.0.0.1:3000', data[:host]
149
- assert_equal '', data[:params]
150
- end
151
-
152
- def test_lambda_cw_event
153
- clear_all!
154
-
155
- mock_context = OpenStruct.new(
156
- invoked_function_arn: 'test_arn',
157
- function_name: 'test_function',
158
- function_version: '$TEST'
159
- )
160
- mock_event = {
161
- "detail-type" => "Scheduled Event",
162
- "source" => "aws.events",
163
- "id" => "test",
164
- "resources" => ["test"]
165
- }
166
-
167
- @subject.wrap_aws(mock_event, mock_context) { 0 }
168
-
169
- lambda_span, *rest = Instana.processor.queued_spans
170
- assert rest.empty?
171
-
172
- data = lambda_span[:data][:lambda][:cw][:events]
173
-
174
- assert_equal 'aws:cloudwatch.events', lambda_span[:data][:lambda][:trigger]
175
- assert_equal 'test', data[:id]
176
- assert_equal ["test"], data[:resources]
177
- end
178
-
179
- def test_lambda_cw_logs
180
- clear_all!
181
-
182
- mock_context = OpenStruct.new(
183
- invoked_function_arn: 'test_arn',
184
- function_name: 'test_function',
185
- function_version: '$TEST'
186
- )
187
- mock_event = {
188
- "awslogs" => {"data" => File.read('test/support/serverless/cloudwatch_log.bin')}
189
- }
190
-
191
- @subject.wrap_aws(mock_event, mock_context) { 0 }
192
-
193
- lambda_span, *rest = Instana.processor.queued_spans
194
- assert rest.empty?
195
-
196
- data = lambda_span[:data][:lambda][:cw][:logs]
197
-
198
- assert_equal 'aws:cloudwatch.logs', lambda_span[:data][:lambda][:trigger]
199
- assert_equal '/aws/lambda/echo-nodejs', data[:group]
200
- assert_equal '2019/03/13/[$LATEST]94fa867e5374431291a7fc14e2f56ae7', data[:stream]
201
- end
202
-
203
- def test_lambda_cw_error
204
- clear_all!
205
-
206
- mock_context = OpenStruct.new(
207
- invoked_function_arn: 'test_arn',
208
- function_name: 'test_function',
209
- function_version: '$TEST'
210
- )
211
- mock_event = {
212
- "awslogs" => {"data" => "error"}
213
- }
214
-
215
- @subject.wrap_aws(mock_event, mock_context) { 0 }
216
-
217
- lambda_span, *rest = Instana.processor.queued_spans
218
- assert rest.empty?
219
-
220
- data = lambda_span[:data][:lambda][:cw][:logs]
221
-
222
- assert_equal 'aws:cloudwatch.logs', lambda_span[:data][:lambda][:trigger]
223
- assert_equal 'incorrect header check', data[:decodingError]
224
- end
225
-
226
- def test_lambda_s3
227
- clear_all!
228
-
229
- mock_context = OpenStruct.new(
230
- invoked_function_arn: 'test_arn',
231
- function_name: 'test_function',
232
- function_version: '$TEST'
233
- )
234
- mock_event = {
235
- "Records" => [
236
- {
237
- "source" => "aws:s3",
238
- "eventName" => "test",
239
- "s3" => {
240
- "bucket" => {"name" => "test_bucket"},
241
- "object" => {"key" => "test_key"}
242
- }
243
- }
244
- ]
245
- }
246
-
247
- @subject.wrap_aws(mock_event, mock_context) { 0 }
248
-
249
- lambda_span, *rest = Instana.processor.queued_spans
250
- assert rest.empty?
251
-
252
- data = lambda_span[:data][:lambda][:s3]
253
-
254
- assert_equal 'aws:s3', lambda_span[:data][:lambda][:trigger]
255
- assert_equal 1, data[:events].length
256
-
257
- assert_equal 'test', data[:events].first[:name]
258
- assert_equal 'test_bucket', data[:events].first[:bucket]
259
- assert_equal 'test_key', data[:events].first[:object]
260
- end
261
-
262
- def test_lambda_s3_no_object
263
- clear_all!
264
-
265
- mock_context = OpenStruct.new(
266
- invoked_function_arn: 'test_arn',
267
- function_name: 'test_function',
268
- function_version: '$TEST'
269
- )
270
- mock_event = {
271
- "Records" => [
272
- {
273
- "source" => "aws:s3",
274
- "eventName" => "test"
275
- }
276
- ]
277
- }
278
-
279
- @subject.wrap_aws(mock_event, mock_context) { 0 }
280
-
281
- lambda_span, *rest = Instana.processor.queued_spans
282
- assert rest.empty?
283
-
284
- data = lambda_span[:data][:lambda][:s3]
285
-
286
- assert_equal 'aws:s3', lambda_span[:data][:lambda][:trigger]
287
- assert_equal 1, data[:events].length
288
-
289
- assert_equal 'test', data[:events].first[:name]
290
- assert_nil data[:events].first[:bucket]
291
- assert_nil data[:events].first[:object]
292
- end
293
-
294
- def test_lambda_sqs
295
- clear_all!
296
-
297
- mock_context = OpenStruct.new(
298
- invoked_function_arn: 'test_arn',
299
- function_name: 'test_function',
300
- function_version: '$TEST'
301
- )
302
- mock_event = {
303
- "Records" => [
304
- {
305
- "source" => "aws:sqs",
306
- "eventSourceARN" => "test_arn"
307
- }
308
- ]
309
- }
310
-
311
- @subject.wrap_aws(mock_event, mock_context) { 0 }
312
-
313
- lambda_span, *rest = Instana.processor.queued_spans
314
- assert rest.empty?
315
-
316
- data = lambda_span[:data][:lambda][:sqs]
317
-
318
- assert_equal 'aws:sqs', lambda_span[:data][:lambda][:trigger]
319
- assert_equal 1, data[:messages].length
320
-
321
- assert_equal 'test_arn', data[:messages].first[:queue]
322
- end
323
-
324
- def test_lambda_client_context
325
- clear_all!
326
-
327
- mock_context = OpenStruct.new(
328
- invoked_function_arn: 'test_arn',
329
- function_name: 'test_function',
330
- function_version: '$TEST',
331
- client_context: "eyJYLUlOU1RBTkEtVCI6IjEyMyIsIlgtSU5TVEFOQS1TIjoiNDU2IiwiWC1J\nTlNUQU5BLUwiOiIxIn0=\n"
332
- )
333
- mock_event = {
334
- "Invoked" => true
335
- }
336
-
337
- @subject.wrap_aws(mock_event, mock_context) { 0 }
338
-
339
- lambda_span, *rest = Instana.processor.queued_spans
340
- assert rest.empty?
341
-
342
- assert_equal 'aws.lambda.invoke', lambda_span[:data][:lambda][:trigger]
343
- assert_equal '123', lambda_span[:t]
344
- assert_equal '456', lambda_span[:p]
345
- end
346
-
347
- def test_lambda_client_context_error
348
- clear_all!
349
-
350
- mock_context = OpenStruct.new(
351
- invoked_function_arn: 'test_arn',
352
- function_name: 'test_function',
353
- function_version: '$TEST',
354
- client_context: "eyJYLUlOU1RBkEtVCI6IjEyMyIsIlgtSU5TVEFOQS1TIjoiNDU2IiwiWC1J\nTlNUQU5BLUwiOiIxIn0=\n"
355
- )
356
- mock_event = {
357
- "Invoked" => true
358
- }
359
-
360
- @subject.wrap_aws(mock_event, mock_context) { 0 }
361
-
362
- lambda_span, *rest = Instana.processor.queued_spans
363
- assert rest.empty?
364
-
365
- refute_equal 'aws.lambda.invoke', lambda_span[:data][:lambda][:trigger]
366
- refute_equal '123', lambda_span[:t]
367
- refute_equal '456', lambda_span[:p]
368
- end
369
- end
@@ -1,17 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class DeltableTest < Minitest::Test
7
- include Instana::Snapshot::Deltable
8
-
9
- def test_delta
10
- subject = {a: {b: 5}}
11
-
12
- assert_equal 5, delta(:a, :b, obj: subject, compute: ->(o, n) { o + n })
13
- assert_equal 10, delta(:a, :b, obj: subject, compute: ->(o, n) { o + n })
14
-
15
- assert_nil delta(:a, :c, obj: subject, compute: ->(o, n) { o + n })
16
- end
17
- end
@@ -1,82 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class DockerContainerTest < Minitest::Test
7
- def test_container
8
- stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
9
- .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
10
-
11
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
12
- subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
13
-
14
- snapshot = subject.snapshot
15
-
16
- assert_equal Instana::Snapshot::DockerContainer::ID, snapshot[:name]
17
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::~internal~ecs~pause', snapshot[:entityId]
18
-
19
- assert_equal "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c", snapshot[:data][:Id]
20
- assert_equal "2018-02-01T20:55:08.366329616Z", snapshot[:data][:Created]
21
- assert_equal "2018-02-01T20:55:09.058354915Z", snapshot[:data][:Started]
22
- assert_equal "amazon/amazon-ecs-pause:0.1.0", snapshot[:data][:Image]
23
- assert_equal container['Labels'], snapshot[:data][:Labels]
24
- assert_nil snapshot[:data][:Ports]
25
- assert_equal "awsvpc", snapshot[:data][:NetworkMode]
26
- end
27
-
28
- def test_container_metrics
29
- stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
30
- .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
31
-
32
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].last
33
- subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
34
-
35
- snapshot = subject.snapshot
36
-
37
- assert_equal Instana::Snapshot::DockerContainer::ID, snapshot[:name]
38
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl', snapshot[:entityId]
39
-
40
- assert_equal 0.0030905127838258164, snapshot[:data][:cpu][:total_usage]
41
- assert_equal 0.0022809745982374286, snapshot[:data][:cpu][:user_usage]
42
- assert_equal 0.00031104199066874026, snapshot[:data][:cpu][:system_usage]
43
- assert_equal 0, snapshot[:data][:cpu][:throttling_count]
44
- assert_equal 0, snapshot[:data][:cpu][:throttling_time]
45
- assert_equal 5_890_048, snapshot[:data][:blkio][:blk_read]
46
- assert_equal 12288, snapshot[:data][:blkio][:blk_write]
47
- assert_equal 6_610_944, snapshot[:data][:memory][:active_anon]
48
- assert_equal 0, snapshot[:data][:memory][:active_file]
49
- assert_equal 0, snapshot[:data][:memory][:inactive_anon]
50
- assert_equal 2_158_592, snapshot[:data][:memory][:inactive_file]
51
- assert_equal 0, snapshot[:data][:memory][:total_cache]
52
- assert_equal 8_769_536, snapshot[:data][:memory][:total_rss]
53
- assert_equal 10_035_200, snapshot[:data][:memory][:usage]
54
- assert_equal 12_677_120, snapshot[:data][:memory][:max_usage]
55
- assert_equal 4_134_825_984, snapshot[:data][:memory][:limit]
56
- assert_equal({bytes: 40_000_257, dropped: 7, errors: 2, packet: 200_017}, snapshot[:data][:network][:rx])
57
- assert_equal({bytes: 20_000_511, dropped: 200_007, errors: 5, packet: 2}, snapshot[:data][:network][:tx])
58
- end
59
-
60
- def test_container_no_network
61
- stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
62
- .to_return(status: 200, body: File.read('test/support/ecs/stats.json'))
63
-
64
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'][1]
65
- subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
66
-
67
- snapshot = subject.snapshot
68
- assert_nil snapshot[:data][:network]
69
- end
70
-
71
- def test_snapshot_error
72
- stub_request(:get, 'https://10.10.10.10:8080/v3/task/stats')
73
- .to_return(status: 500)
74
-
75
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
76
- subject = Instana::Snapshot::DockerContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
77
-
78
- assert_raises do
79
- subject.snapshot
80
- end
81
- end
82
- end
@@ -1,82 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class FargateContainerTest < Minitest::Test
7
- def test_snapshot_observed
8
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
9
- subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
10
-
11
- stub_request(:get, 'https://10.10.10.10:8080/v3')
12
- .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
13
-
14
- snapshot = subject.snapshot
15
-
16
- assert_equal Instana::Snapshot::FargateContainer::ID, snapshot[:name]
17
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::~internal~ecs~pause', snapshot[:entityId]
18
-
19
- assert_equal "731a0d6a3b4210e2448339bc7015aaa79bfe4fa256384f4102db86ef94cbbc4c", snapshot[:data][:dockerId]
20
- assert_equal "ecs-nginx-5-internalecspause-acc699c0cbf2d6d11700", snapshot[:data][:dockerName]
21
- assert_equal "~internal~ecs~pause", snapshot[:data][:containerName]
22
- assert_equal "amazon/amazon-ecs-pause:0.1.0", snapshot[:data][:image]
23
- assert_equal "", snapshot[:data][:imageId]
24
- assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
25
- assert_nil snapshot[:data][:taskDefinition]
26
- assert_nil snapshot[:data][:taskDefinitionVersion]
27
- assert_equal "default", snapshot[:data][:clusterArn]
28
- assert_equal "RESOURCES_PROVISIONED", snapshot[:data][:desiredStatus]
29
- assert_equal "RESOURCES_PROVISIONED", snapshot[:data][:knownStatus]
30
- assert_nil snapshot[:data][:ports]
31
- assert_equal({:cpu => 0, :memory => 0}, snapshot[:data][:limits])
32
- assert_equal "2018-02-01T20:55:08.366329616Z", snapshot[:data][:createdAt]
33
- assert_equal "2018-02-01T20:55:09.058354915Z", snapshot[:data][:startedAt]
34
-
35
- assert_nil subject.source
36
- end
37
-
38
- def test_snapshot_current
39
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].last
40
- subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
41
-
42
- stub_request(:get, 'https://10.10.10.10:8080/v3')
43
- .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
44
-
45
- snapshot = subject.snapshot
46
-
47
- assert_equal Instana::Snapshot::FargateContainer::ID, snapshot[:name]
48
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl', snapshot[:entityId]
49
-
50
- assert_equal "43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946", snapshot[:data][:dockerId]
51
- assert_equal "ecs-nginx-5-nginx-curl-ccccb9f49db0dfe0d901", snapshot[:data][:dockerName]
52
- assert_equal "nginx-curl", snapshot[:data][:containerName]
53
- assert_equal "nrdlngr/nginx-curl", snapshot[:data][:image]
54
- assert_equal "sha256:2e00ae64383cfc865ba0a2ba37f61b50a120d2d9378559dcd458dc0de47bc165", snapshot[:data][:imageId]
55
- assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
56
- assert_nil snapshot[:data][:taskDefinition]
57
- assert_nil snapshot[:data][:taskDefinitionVersion]
58
- assert_equal "default", snapshot[:data][:clusterArn]
59
- assert_equal "RUNNING", snapshot[:data][:desiredStatus]
60
- assert_equal "RUNNING", snapshot[:data][:knownStatus]
61
- assert_nil snapshot[:data][:ports]
62
- assert_equal({:cpu => 512, :memory => 512}, snapshot[:data][:limits])
63
- assert_equal "2018-02-01T20:55:10.554941919Z", snapshot[:data][:createdAt]
64
- assert_equal "2018-02-01T20:55:11.064236631Z", snapshot[:data][:startedAt]
65
- assert_equal true, snapshot[:data][:instrumented]
66
- assert_equal "ruby", snapshot[:data][:runtime]
67
-
68
- assert_equal({hl: true, cp: "aws", e: "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3::nginx-curl"}, subject.source)
69
- end
70
-
71
- def test_snapshot_error
72
- stub_request(:get, 'https://10.10.10.10:8080/v3')
73
- .to_return(status: 500)
74
-
75
- container = JSON.parse(File.read('test/support/ecs/task.json'))['Containers'].first
76
- subject = Instana::Snapshot::FargateContainer.new(container, metadata_uri: 'https://10.10.10.10:8080/v3')
77
-
78
- assert_raises do
79
- subject.snapshot
80
- end
81
- end
82
- end
@@ -1,35 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class FargateProcessTest < Minitest::Test
7
- def setup
8
- @subject = Instana::Snapshot::FargateProcess.new(metadata_uri: 'https://10.10.10.10:8080/v3')
9
- end
10
-
11
- def test_snapshot
12
- stub_request(:get, 'https://10.10.10.10:8080/v3')
13
- .to_return(status: 200, body: File.read('test/support/ecs/container.json'))
14
- stub_request(:get, 'https://10.10.10.10:8080/v3/task')
15
- .to_return(status: 200, body: File.read('test/support/ecs/task.json'))
16
-
17
- snapshot = @subject.snapshot
18
-
19
- assert_equal Instana::Snapshot::FargateProcess::ID, snapshot[:name]
20
- assert_equal Process.pid.to_s, snapshot[:entityId]
21
-
22
- assert_equal 'docker', snapshot[:data][:containerType]
23
- assert_equal '43481a6ce4842eec8fe72fc28500c6b52edcc0917f105b83379f88cac1ff3946', snapshot[:data][:container]
24
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3', snapshot[:data][:'com.instana.plugin.host.name']
25
- end
26
-
27
- def test_snapshot_error
28
- stub_request(:get, 'https://10.10.10.10:8080/v3')
29
- .to_return(status: 500)
30
-
31
- assert_raises do
32
- @subject.snapshot
33
- end
34
- end
35
- end
@@ -1,49 +0,0 @@
1
- # (c) Copyright IBM Corp. 2021
2
- # (c) Copyright Instana Inc. 2021
3
-
4
- require 'test_helper'
5
-
6
- class FargateTaskTest < Minitest::Test
7
- def setup
8
- @subject = Instana::Snapshot::FargateTask.new(metadata_uri: 'https://10.10.10.10:8080/v3')
9
-
10
- ENV['INSTANA_ZONE'] = 'test'
11
- ENV['INSTANA_TAGS'] = 'test=a,b,c'
12
- end
13
-
14
- def teardown
15
- ENV['INSTANA_ZONE'] = nil
16
- ENV['INSTANA_TAGS'] = nil
17
- end
18
-
19
- def test_snapshot
20
- stub_request(:get, 'https://10.10.10.10:8080/v3/task')
21
- .to_return(status: 200, body: File.read('test/support/ecs/task.json'))
22
-
23
- snapshot = @subject.snapshot
24
-
25
- assert_equal Instana::Snapshot::FargateTask::ID, snapshot[:name]
26
- assert_equal 'arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3', snapshot[:entityId]
27
-
28
- assert_equal "arn:aws:ecs:us-east-2:012345678910:task/9781c248-0edd-4cdb-9a93-f63cb662a5d3", snapshot[:data][:taskArn]
29
- assert_equal "default", snapshot[:data][:clusterArn]
30
- assert_equal "nginx", snapshot[:data][:taskDefinition]
31
- assert_equal "5", snapshot[:data][:taskDefinitionVersion]
32
- assert_equal "us-east-2b", snapshot[:data][:availabilityZone]
33
- assert_equal "RUNNING", snapshot[:data][:desiredStatus]
34
- assert_equal "RUNNING", snapshot[:data][:knownStatus]
35
- assert_equal "2018-02-01T20:55:09.372495529Z", snapshot[:data][:pullStartedAt]
36
- assert_equal "2018-02-01T20:55:10.552018345Z", snapshot[:data][:pullStoppedAt]
37
- assert_equal "test", snapshot[:data][:instanaZone]
38
- assert_equal({"test" => "a", "b" => nil, "c" => nil}, snapshot[:data][:tags])
39
- end
40
-
41
- def test_snapshot_error
42
- stub_request(:get, 'https://10.10.10.10:8080/v3/task')
43
- .to_return(status: 500)
44
-
45
- assert_raises do
46
- @subject.snapshot
47
- end
48
- end
49
- end