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,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