ddtrace 0.35.1 → 0.39.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +3 -1
  3. data/.gitignore +2 -0
  4. data/.gitlab-ci.yml +26 -0
  5. data/.rubocop.yml +4 -0
  6. data/Appraisals +52 -11
  7. data/CHANGELOG.md +135 -1
  8. data/Rakefile +109 -75
  9. data/ddtrace.gemspec +5 -0
  10. data/docker-compose.yml +37 -2
  11. data/docs/GettingStarted.md +146 -82
  12. data/lib/ddtrace.rb +3 -0
  13. data/lib/ddtrace/configuration/base.rb +1 -1
  14. data/lib/ddtrace/configuration/options.rb +1 -1
  15. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  16. data/lib/ddtrace/configuration/settings.rb +27 -3
  17. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +7 -2
  18. data/lib/ddtrace/contrib/action_cable/ext.rb +5 -2
  19. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +7 -0
  20. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  21. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  22. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  23. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  24. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  25. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  26. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  27. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  28. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  29. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  30. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  31. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  32. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +1 -1
  33. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  34. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  35. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  36. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  37. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  38. data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
  39. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  40. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  41. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -5
  42. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  43. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  44. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  45. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  46. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -2
  47. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +7 -2
  48. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  49. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  50. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  51. data/lib/ddtrace/contrib/extensions.rb +39 -5
  52. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  53. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  54. data/lib/ddtrace/contrib/faraday/middleware.rb +5 -3
  55. data/lib/ddtrace/contrib/faraday/patcher.rb +13 -5
  56. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  57. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  58. data/lib/ddtrace/contrib/grape/patcher.rb +1 -1
  59. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  60. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  61. data/lib/ddtrace/contrib/graphql/patcher.rb +6 -3
  62. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  63. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  64. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -3
  65. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  66. data/lib/ddtrace/contrib/grpc/patcher.rb +1 -5
  67. data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
  68. data/lib/ddtrace/contrib/http/configuration/settings.rb +7 -2
  69. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  70. data/lib/ddtrace/contrib/http/instrumentation.rb +13 -8
  71. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  72. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  73. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  74. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  75. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  76. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  77. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  78. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  79. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  80. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  81. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  82. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  83. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  84. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  85. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  86. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  87. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  88. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  89. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  90. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  91. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  92. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  93. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  94. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  95. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  96. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  97. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  98. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  99. data/lib/ddtrace/contrib/patcher.rb +14 -8
  100. data/lib/ddtrace/contrib/presto/configuration/settings.rb +7 -2
  101. data/lib/ddtrace/contrib/presto/ext.rb +5 -2
  102. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  103. data/lib/ddtrace/contrib/racecar/ext.rb +5 -2
  104. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  105. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  106. data/lib/ddtrace/contrib/rack/middlewares.rb +15 -12
  107. data/lib/ddtrace/contrib/rails/configuration/settings.rb +20 -13
  108. data/lib/ddtrace/contrib/rails/ext.rb +5 -2
  109. data/lib/ddtrace/contrib/rails/framework.rb +52 -46
  110. data/lib/ddtrace/contrib/rails/integration.rb +1 -1
  111. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  112. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  113. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  114. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  115. data/lib/ddtrace/contrib/redis/patcher.rb +1 -1
  116. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  117. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  118. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  119. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  120. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  121. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  122. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  123. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  124. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  125. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  126. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  127. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +7 -2
  128. data/lib/ddtrace/contrib/sidekiq/ext.rb +6 -2
  129. data/lib/ddtrace/contrib/sidekiq/patcher.rb +8 -1
  130. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +1 -0
  131. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  132. data/lib/ddtrace/contrib/sinatra/ext.rb +5 -2
  133. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  134. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  135. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  136. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  137. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  138. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  139. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  140. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +1 -1
  141. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  142. data/lib/ddtrace/environment.rb +17 -3
  143. data/lib/ddtrace/ext/diagnostics.rb +3 -0
  144. data/lib/ddtrace/ext/environment.rb +2 -0
  145. data/lib/ddtrace/ext/transport.rb +1 -0
  146. data/lib/ddtrace/logger.rb +1 -1
  147. data/lib/ddtrace/pin.rb +39 -15
  148. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  149. data/lib/ddtrace/runtime/metrics.rb +18 -4
  150. data/lib/ddtrace/sampler.rb +2 -0
  151. data/lib/ddtrace/span.rb +10 -0
  152. data/lib/ddtrace/tracer.rb +15 -8
  153. data/lib/ddtrace/transport/http.rb +15 -0
  154. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  155. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  156. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  157. data/lib/ddtrace/transport/response.rb +11 -0
  158. data/lib/ddtrace/version.rb +2 -2
  159. data/lib/ddtrace/workers/trace_writer.rb +3 -0
  160. data/lib/ddtrace/writer.rb +33 -12
  161. metadata +114 -29
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ Dir.glob('tasks/*.rake').each { |r| import r }
11
11
  desc 'Run RSpec'
12
12
  # rubocop:disable Metrics/BlockLength
13
13
  namespace :spec do
14
- task all: [:main,
14
+ task all: [:main, :benchmark,
15
15
  :rails, :railsredis, :railsactivejob,
16
16
  :elasticsearch, :http, :redis, :sidekiq, :sinatra]
17
17
 
@@ -21,6 +21,11 @@ namespace :spec do
21
21
  t.rspec_opts = args.to_a.join(' ')
22
22
  end
23
23
 
24
+ RSpec::Core::RakeTask.new(:benchmark) do |t, args|
25
+ t.pattern = 'spec/ddtrace/benchmark/**/*_spec.rb'
26
+ t.rspec_opts = args.to_a.join(' ')
27
+ end
28
+
24
29
  RSpec::Core::RakeTask.new(:opentracer) do |t, args|
25
30
  t.pattern = 'spec/ddtrace/opentracer/**/*_spec.rb'
26
31
  t.rspec_opts = args.to_a.join(' ')
@@ -90,6 +95,8 @@ namespace :spec do
90
95
  :graphql,
91
96
  :grpc,
92
97
  :http,
98
+ :httprb,
99
+ :kafka,
93
100
  :mongodb,
94
101
  :mysql2,
95
102
  :presto,
@@ -100,10 +107,12 @@ namespace :spec do
100
107
  :resque,
101
108
  :rest_client,
102
109
  :sequel,
110
+ :shoryuken,
103
111
  :sidekiq,
104
112
  :sinatra,
113
+ :sneakers,
105
114
  :sucker_punch,
106
- :shoryuken
115
+ :suite
107
116
  ].each do |contrib|
108
117
  RSpec::Core::RakeTask.new(contrib) do |t, args|
109
118
  t.pattern = "spec/ddtrace/contrib/#{contrib}/**/*_spec.rb"
@@ -115,7 +124,7 @@ end
115
124
  namespace :test do
116
125
  task all: [:main,
117
126
  :rails,
118
- :sidekiq, :monkey]
127
+ :monkey]
119
128
 
120
129
  Rake::TestTask.new(:main) do |t|
121
130
  t.libs << %w[test lib]
@@ -134,7 +143,6 @@ namespace :test do
134
143
 
135
144
  [
136
145
  :grape,
137
- :sidekiq,
138
146
  :sucker_punch
139
147
  ].each do |contrib|
140
148
  Rake::TestTask.new(contrib) do |t|
@@ -187,11 +195,12 @@ task :ci do
187
195
  sh 'bundle exec rake test:main'
188
196
  sh 'bundle exec rake spec:main'
189
197
  sh 'bundle exec rake spec:contrib'
198
+ # Benchmarks
199
+ sh 'bundle exec rake spec:benchmark'
190
200
 
191
201
  if RUBY_PLATFORM != 'java'
192
202
  # Contrib minitests
193
203
  sh 'bundle exec appraisal contrib-old rake test:monkey'
194
- sh 'bundle exec appraisal contrib-old rake test:sidekiq'
195
204
  sh 'bundle exec appraisal contrib-old rake test:sucker_punch'
196
205
  # Contrib specs
197
206
  sh 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
@@ -206,6 +215,7 @@ task :ci do
206
215
  sh 'bundle exec appraisal contrib-old rake spec:excon'
207
216
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
208
217
  sh 'bundle exec appraisal contrib-old rake spec:http'
218
+ sh 'bundle exec appraisal contrib-old rake spec:httprb'
209
219
  sh 'bundle exec appraisal contrib-old rake spec:mongodb'
210
220
  sh 'bundle exec appraisal contrib-old rake spec:mysql2'
211
221
  sh 'bundle exec appraisal contrib-old rake spec:rack'
@@ -217,6 +227,7 @@ task :ci do
217
227
  sh 'bundle exec appraisal contrib-old rake spec:sidekiq'
218
228
  sh 'bundle exec appraisal contrib-old rake spec:sinatra'
219
229
  sh 'bundle exec appraisal contrib-old rake spec:sucker_punch'
230
+ sh 'bundle exec appraisal contrib-old rake spec:suite'
220
231
  # Rails minitests
221
232
  sh 'bundle exec appraisal rails30-postgres rake test:rails'
222
233
  sh 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
@@ -241,11 +252,12 @@ task :ci do
241
252
  sh 'bundle exec rake spec:main'
242
253
  sh 'bundle exec rake spec:contrib'
243
254
  sh 'bundle exec rake spec:opentracer'
255
+ # Benchmarks
256
+ sh 'bundle exec rake spec:benchmark'
244
257
 
245
258
  if RUBY_PLATFORM != 'java'
246
259
  # Contrib minitests
247
260
  sh 'bundle exec appraisal contrib-old rake test:monkey'
248
- sh 'bundle exec appraisal contrib-old rake test:sidekiq'
249
261
  sh 'bundle exec appraisal contrib-old rake test:sucker_punch'
250
262
  # Contrib specs
251
263
  sh 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
@@ -260,6 +272,7 @@ task :ci do
260
272
  sh 'bundle exec appraisal contrib-old rake spec:excon'
261
273
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
262
274
  sh 'bundle exec appraisal contrib-old rake spec:http'
275
+ sh 'bundle exec appraisal contrib-old rake spec:httprb'
263
276
  sh 'bundle exec appraisal contrib-old rake spec:mongodb'
264
277
  sh 'bundle exec appraisal contrib-old rake spec:mysql2'
265
278
  sh 'bundle exec appraisal contrib-old rake spec:presto'
@@ -272,6 +285,7 @@ task :ci do
272
285
  sh 'bundle exec appraisal contrib-old rake spec:sidekiq'
273
286
  sh 'bundle exec appraisal contrib-old rake spec:sinatra'
274
287
  sh 'bundle exec appraisal contrib-old rake spec:sucker_punch'
288
+ sh 'bundle exec appraisal contrib-old rake spec:suite'
275
289
  # Rails minitests
276
290
  sh 'bundle exec appraisal rails30-postgres rake test:rails'
277
291
  sh 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
@@ -302,11 +316,12 @@ task :ci do
302
316
  sh 'bundle exec rake spec:main'
303
317
  sh 'bundle exec rake spec:contrib'
304
318
  sh 'bundle exec rake spec:opentracer'
319
+ # Benchmarks
320
+ sh 'bundle exec rake spec:benchmark'
305
321
 
306
322
  if RUBY_PLATFORM != 'java'
307
323
  # Contrib minitests
308
324
  sh 'bundle exec appraisal contrib rake test:grape'
309
- sh 'bundle exec appraisal contrib rake test:sidekiq'
310
325
  sh 'bundle exec appraisal contrib rake test:sucker_punch'
311
326
  # Contrib specs
312
327
  sh 'bundle exec appraisal contrib rake spec:action_pack'
@@ -326,6 +341,7 @@ task :ci do
326
341
  sh 'bundle exec appraisal contrib rake spec:graphql'
327
342
  sh 'bundle exec appraisal contrib rake spec:grpc'
328
343
  sh 'bundle exec appraisal contrib rake spec:http'
344
+ sh 'bundle exec appraisal contrib rake spec:httprb'
329
345
  sh 'bundle exec appraisal contrib rake spec:mongodb'
330
346
  sh 'bundle exec appraisal contrib rake spec:mysql2'
331
347
  sh 'bundle exec appraisal contrib rake spec:presto'
@@ -339,7 +355,9 @@ task :ci do
339
355
  sh 'bundle exec appraisal contrib rake spec:shoryuken'
340
356
  sh 'bundle exec appraisal contrib rake spec:sidekiq'
341
357
  sh 'bundle exec appraisal contrib rake spec:sinatra'
358
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
342
359
  sh 'bundle exec appraisal contrib rake spec:sucker_punch'
360
+ sh 'bundle exec appraisal contrib rake spec:suite'
343
361
  # Rails minitests
344
362
  sh 'bundle exec appraisal rails30-postgres rake test:rails'
345
363
  sh 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
@@ -374,11 +392,12 @@ task :ci do
374
392
  sh 'bundle exec rake spec:main'
375
393
  sh 'bundle exec rake spec:contrib'
376
394
  sh 'bundle exec rake spec:opentracer'
395
+ # Benchmarks
396
+ sh 'bundle exec rake spec:benchmark'
377
397
 
378
398
  if RUBY_PLATFORM != 'java'
379
399
  # Contrib minitests
380
400
  sh 'bundle exec appraisal contrib rake test:grape'
381
- sh 'bundle exec appraisal contrib rake test:sidekiq'
382
401
  sh 'bundle exec appraisal contrib rake test:sucker_punch'
383
402
  # Contrib specs
384
403
  sh 'bundle exec appraisal contrib rake spec:action_pack'
@@ -398,6 +417,7 @@ task :ci do
398
417
  sh 'bundle exec appraisal contrib rake spec:graphql'
399
418
  sh 'bundle exec appraisal contrib rake spec:grpc'
400
419
  sh 'bundle exec appraisal contrib rake spec:http'
420
+ sh 'bundle exec appraisal contrib rake spec:httprb'
401
421
  sh 'bundle exec appraisal contrib rake spec:mongodb'
402
422
  sh 'bundle exec appraisal contrib rake spec:mysql2'
403
423
  sh 'bundle exec appraisal contrib rake spec:presto'
@@ -411,7 +431,9 @@ task :ci do
411
431
  sh 'bundle exec appraisal contrib rake spec:shoryuken'
412
432
  sh 'bundle exec appraisal contrib rake spec:sidekiq'
413
433
  sh 'bundle exec appraisal contrib rake spec:sinatra'
434
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
414
435
  sh 'bundle exec appraisal contrib rake spec:sucker_punch'
436
+ sh 'bundle exec appraisal contrib rake spec:suite'
415
437
  # Contrib specs with old gem versions
416
438
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
417
439
  # Rails minitests
@@ -449,13 +471,14 @@ task :ci do
449
471
  sh 'bundle exec rake spec:contrib'
450
472
  sh 'bundle exec rake spec:opentracer'
451
473
  sh 'bundle exec rake spec:opentelemetry'
474
+ # Benchmarks
475
+ sh 'bundle exec rake spec:benchmark'
452
476
 
453
477
  if RUBY_PLATFORM != 'java'
454
478
  # Benchmarks
455
479
  sh 'bundle exec rake benchmark'
456
480
  # Contrib minitests
457
481
  sh 'bundle exec appraisal contrib rake test:grape'
458
- sh 'bundle exec appraisal contrib rake test:sidekiq'
459
482
  sh 'bundle exec appraisal contrib rake test:sucker_punch'
460
483
  # Contrib specs
461
484
  sh 'bundle exec appraisal contrib rake spec:action_pack'
@@ -475,6 +498,7 @@ task :ci do
475
498
  sh 'bundle exec appraisal contrib rake spec:graphql'
476
499
  sh 'bundle exec appraisal contrib rake spec:grpc'
477
500
  sh 'bundle exec appraisal contrib rake spec:http'
501
+ sh 'bundle exec appraisal contrib rake spec:httprb'
478
502
  sh 'bundle exec appraisal contrib rake spec:mongodb'
479
503
  sh 'bundle exec appraisal contrib rake spec:mysql2'
480
504
  sh 'bundle exec appraisal contrib rake spec:presto'
@@ -488,7 +512,9 @@ task :ci do
488
512
  sh 'bundle exec appraisal contrib rake spec:shoryuken'
489
513
  sh 'bundle exec appraisal contrib rake spec:sidekiq'
490
514
  sh 'bundle exec appraisal contrib rake spec:sinatra'
515
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
491
516
  sh 'bundle exec appraisal contrib rake spec:sucker_punch'
517
+ sh 'bundle exec appraisal contrib rake spec:suite'
492
518
  # Contrib specs with old gem versions
493
519
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
494
520
  # Rails minitests
@@ -511,70 +537,70 @@ task :ci do
511
537
  sh 'bundle exec rake spec:contrib'
512
538
  sh 'bundle exec rake spec:opentracer'
513
539
  sh 'bundle exec rake spec:opentelemetry'
514
-
515
- if RUBY_PLATFORM != 'java'
516
- # Benchmarks
517
- sh 'bundle exec rake benchmark'
518
- # Contrib minitests
519
- sh 'bundle exec appraisal contrib rake test:grape'
520
- sh 'bundle exec appraisal contrib rake test:sidekiq'
521
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
522
- # Contrib specs
523
- sh 'bundle exec appraisal contrib rake spec:action_pack'
524
- sh 'bundle exec appraisal contrib rake spec:action_view'
525
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
526
- sh 'bundle exec appraisal contrib rake spec:active_record'
527
- sh 'bundle exec appraisal contrib rake spec:active_support'
528
- sh 'bundle exec appraisal contrib rake spec:aws'
529
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
530
- sh 'bundle exec appraisal contrib rake spec:dalli'
531
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
532
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
533
- sh 'bundle exec appraisal contrib rake spec:ethon'
534
- sh 'bundle exec appraisal contrib rake spec:excon'
535
- sh 'bundle exec appraisal contrib rake spec:faraday'
536
- sh 'bundle exec appraisal contrib rake spec:grape'
537
- sh 'bundle exec appraisal contrib rake spec:graphql'
538
- sh 'bundle exec appraisal contrib rake spec:grpc'
539
- sh 'bundle exec appraisal contrib rake spec:http'
540
- sh 'bundle exec appraisal contrib rake spec:mongodb'
541
- sh 'bundle exec appraisal contrib rake spec:mysql2'
542
- sh 'bundle exec appraisal contrib rake spec:presto'
543
- sh 'bundle exec appraisal contrib rake spec:racecar'
544
- sh 'bundle exec appraisal contrib rake spec:rack'
545
- sh 'bundle exec appraisal contrib rake spec:rake'
546
- sh 'bundle exec appraisal contrib rake spec:redis'
547
- sh 'bundle exec appraisal contrib rake spec:resque'
548
- sh 'bundle exec appraisal contrib rake spec:rest_client'
549
- sh 'bundle exec appraisal contrib rake spec:sequel'
550
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
551
- sh 'bundle exec appraisal contrib rake spec:sidekiq'
552
- sh 'bundle exec appraisal contrib rake spec:sinatra'
553
- sh 'bundle exec appraisal contrib rake spec:sucker_punch'
554
- # Contrib specs with old gem versions
555
- sh 'bundle exec appraisal contrib-old rake spec:faraday'
556
- # Rails minitests
557
- # We only test Rails 5+ because older versions require Bundler < 2.0
558
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
559
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
560
- sh 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
561
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
562
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
563
- sh 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
564
- sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
565
- sh 'bundle exec appraisal rails6-postgres rake test:rails'
566
- sh 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
567
- sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
568
- sh 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
569
- sh 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
570
- # Rails specs
571
- sh 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
572
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
573
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
574
- # sh 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
575
- sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
576
- sh 'bundle exec appraisal rails6-postgres rake spec:rails'
577
- end
540
+ # Benchmarks
541
+ sh 'bundle exec rake spec:benchmark' if RUBY_PLATFORM != 'java' # Too slow due to repeated JVM instantiation
542
+ sh 'bundle exec rake benchmark'
543
+ # Contrib minitests
544
+ sh 'bundle exec appraisal contrib rake test:grape'
545
+ sh 'bundle exec appraisal contrib rake test:sucker_punch'
546
+ # Contrib specs
547
+ sh 'bundle exec appraisal contrib rake spec:action_pack'
548
+ sh 'bundle exec appraisal contrib rake spec:action_view'
549
+ sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
550
+ sh 'bundle exec appraisal contrib rake spec:active_record'
551
+ sh 'bundle exec appraisal contrib rake spec:active_support'
552
+ sh 'bundle exec appraisal contrib rake spec:aws'
553
+ sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
554
+ sh 'bundle exec appraisal contrib rake spec:dalli'
555
+ sh 'bundle exec appraisal contrib rake spec:delayed_job'
556
+ sh 'bundle exec appraisal contrib rake spec:elasticsearch'
557
+ sh 'bundle exec appraisal contrib rake spec:ethon'
558
+ sh 'bundle exec appraisal contrib rake spec:excon'
559
+ sh 'bundle exec appraisal contrib rake spec:faraday'
560
+ sh 'bundle exec appraisal contrib rake spec:grape'
561
+ sh 'bundle exec appraisal contrib rake spec:graphql'
562
+ sh 'bundle exec appraisal contrib rake spec:grpc' if RUBY_PLATFORM != 'java' # protobuf not supported
563
+ sh 'bundle exec appraisal contrib rake spec:http'
564
+ sh 'bundle exec appraisal contrib rake spec:httprb'
565
+ sh 'bundle exec appraisal contrib rake spec:mongodb'
566
+ sh 'bundle exec appraisal contrib rake spec:mysql2' if RUBY_PLATFORM != 'java' # built-in jdbc is used instead
567
+ sh 'bundle exec appraisal contrib rake spec:presto'
568
+ sh 'bundle exec appraisal contrib rake spec:racecar'
569
+ sh 'bundle exec appraisal contrib rake spec:rack'
570
+ sh 'bundle exec appraisal contrib rake spec:rake'
571
+ sh 'bundle exec appraisal contrib rake spec:redis'
572
+ sh 'bundle exec appraisal contrib rake spec:resque'
573
+ sh 'bundle exec appraisal contrib rake spec:rest_client'
574
+ sh 'bundle exec appraisal contrib rake spec:sequel'
575
+ sh 'bundle exec appraisal contrib rake spec:shoryuken'
576
+ sh 'bundle exec appraisal contrib rake spec:sidekiq'
577
+ sh 'bundle exec appraisal contrib rake spec:sinatra'
578
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
579
+ sh 'bundle exec appraisal contrib rake spec:sucker_punch'
580
+ sh 'bundle exec appraisal contrib rake spec:suite'
581
+ # Contrib specs with old gem versions
582
+ sh 'bundle exec appraisal contrib-old rake spec:faraday'
583
+ # Rails minitests
584
+ # We only test Rails 5+ because older versions require Bundler < 2.0
585
+ sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
586
+ sh 'bundle exec appraisal rails5-postgres rake test:rails'
587
+ sh 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
588
+ sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
589
+ sh 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
590
+ sh 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
591
+ sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
592
+ sh 'bundle exec appraisal rails6-postgres rake test:rails'
593
+ sh 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
594
+ sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
595
+ sh 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
596
+ sh 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
597
+ # Rails specs
598
+ sh 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
599
+ sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
600
+ sh 'bundle exec appraisal rails5-postgres rake spec:rails'
601
+ # sh 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
602
+ sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
603
+ sh 'bundle exec appraisal rails6-postgres rake spec:rails'
578
604
  elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
579
605
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
580
606
  # Main library
@@ -583,13 +609,14 @@ task :ci do
583
609
  sh 'bundle exec rake spec:contrib'
584
610
  sh 'bundle exec rake spec:opentracer'
585
611
  sh 'bundle exec rake spec:opentelemetry'
612
+ # Benchmarks
613
+ sh 'bundle exec rake spec:benchmark'
586
614
 
587
615
  if RUBY_PLATFORM != 'java'
588
616
  # Benchmarks
589
617
  sh 'bundle exec rake benchmark'
590
618
  # Contrib minitests
591
619
  sh 'bundle exec appraisal contrib rake test:grape'
592
- sh 'bundle exec appraisal contrib rake test:sidekiq'
593
620
  sh 'bundle exec appraisal contrib rake test:sucker_punch'
594
621
  # Contrib specs
595
622
  sh 'bundle exec appraisal contrib rake spec:action_pack'
@@ -609,6 +636,7 @@ task :ci do
609
636
  sh 'bundle exec appraisal contrib rake spec:graphql'
610
637
  sh 'bundle exec appraisal contrib rake spec:grpc'
611
638
  sh 'bundle exec appraisal contrib rake spec:http'
639
+ sh 'bundle exec appraisal contrib rake spec:httprb'
612
640
  sh 'bundle exec appraisal contrib rake spec:mongodb'
613
641
  sh 'bundle exec appraisal contrib rake spec:mysql2'
614
642
  sh 'bundle exec appraisal contrib rake spec:presto'
@@ -622,7 +650,9 @@ task :ci do
622
650
  sh 'bundle exec appraisal contrib rake spec:shoryuken'
623
651
  sh 'bundle exec appraisal contrib rake spec:sidekiq'
624
652
  sh 'bundle exec appraisal contrib rake spec:sinatra'
653
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
625
654
  sh 'bundle exec appraisal contrib rake spec:sucker_punch'
655
+ sh 'bundle exec appraisal contrib rake spec:suite'
626
656
  # Contrib specs with old gem versions
627
657
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
628
658
  # Rails minitests
@@ -654,13 +684,14 @@ task :ci do
654
684
  sh 'bundle exec rake spec:contrib'
655
685
  sh 'bundle exec rake spec:opentracer'
656
686
  sh 'bundle exec rake spec:opentelemetry'
687
+ # Benchmarks
688
+ sh 'bundle exec rake spec:benchmark'
657
689
 
658
690
  if RUBY_PLATFORM != 'java'
659
691
  # Benchmarks
660
692
  sh 'bundle exec rake benchmark'
661
693
  # Contrib minitests
662
694
  sh 'bundle exec appraisal contrib rake test:grape'
663
- sh 'bundle exec appraisal contrib rake test:sidekiq'
664
695
  sh 'bundle exec appraisal contrib rake test:sucker_punch'
665
696
  # Contrib specs
666
697
  sh 'bundle exec appraisal contrib rake spec:action_pack'
@@ -680,6 +711,7 @@ task :ci do
680
711
  sh 'bundle exec appraisal contrib rake spec:graphql'
681
712
  sh 'bundle exec appraisal contrib rake spec:grpc'
682
713
  sh 'bundle exec appraisal contrib rake spec:http'
714
+ sh 'bundle exec appraisal contrib rake spec:httprb'
683
715
  sh 'bundle exec appraisal contrib rake spec:mongodb'
684
716
  sh 'bundle exec appraisal contrib rake spec:mysql2'
685
717
  sh 'bundle exec appraisal contrib rake spec:presto'
@@ -693,7 +725,9 @@ task :ci do
693
725
  sh 'bundle exec appraisal contrib rake spec:shoryuken'
694
726
  sh 'bundle exec appraisal contrib rake spec:sidekiq'
695
727
  sh 'bundle exec appraisal contrib rake spec:sinatra'
728
+ sh 'bundle exec appraisal contrib rake spec:sneakers'
696
729
  sh 'bundle exec appraisal contrib rake spec:sucker_punch'
730
+ sh 'bundle exec appraisal contrib rake spec:suite'
697
731
  # Contrib specs with old gem versions
698
732
  sh 'bundle exec appraisal contrib-old rake spec:faraday'
699
733
  # Rails minitests
@@ -46,6 +46,8 @@ Gem::Specification.new do |spec|
46
46
  spec.add_development_dependency 'rspec', '~> 3.0'
47
47
  spec.add_development_dependency 'rspec-collection_matchers', '~> 1.1'
48
48
  spec.add_development_dependency 'minitest', '= 5.10.1'
49
+ spec.add_development_dependency 'minitest-around', '0.5.0'
50
+ spec.add_development_dependency 'minitest-stub_any_instance', '1.0.2'
49
51
  spec.add_development_dependency 'appraisal', '~> 2.2'
50
52
  spec.add_development_dependency 'yard', '~> 0.9'
51
53
  spec.add_development_dependency 'webmock', '~> 2.0'
@@ -59,6 +61,9 @@ Gem::Specification.new do |spec|
59
61
 
60
62
  # locking transitive dependency of webmock
61
63
  spec.add_development_dependency 'addressable', '~> 2.4.0'
64
+ spec.add_development_dependency 'benchmark-ips', '~> 2.8'
65
+ spec.add_development_dependency 'benchmark-memory', '~> 0.1'
66
+ spec.add_development_dependency 'memory_profiler', '~> 0.9'
62
67
  spec.add_development_dependency 'redcarpet', '~> 3.4' if RUBY_PLATFORM != 'java'
63
68
  spec.add_development_dependency 'pry', '~> 0.10.4'
64
69
  spec.add_development_dependency 'pry-stack_explorer', '~> 0.4.9.2'
@@ -1,5 +1,6 @@
1
1
  version: '3.2'
2
2
  services:
3
+ # MRI
3
4
  tracer-2.0:
4
5
  image: palazzem/docker-library:ddtrace_rb_2_0_0
5
6
  command: /bin/bash
@@ -247,12 +248,44 @@ services:
247
248
  - .:/app
248
249
  - bundle-2.7:/usr/local/bundle
249
250
  - gemfiles-2.7:/app/gemfiles
251
+ # JRuby
252
+ tracer-jruby-9.2:
253
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2
254
+ command: /bin/bash
255
+ depends_on:
256
+ - ddagent
257
+ - elasticsearch
258
+ - memcached
259
+ - mongodb
260
+ - mysql
261
+ - postgres
262
+ - presto
263
+ - redis
264
+ env_file: ./.env
265
+ environment:
266
+ - BUNDLE_GEMFILE=/app/Gemfile
267
+ - DD_AGENT_HOST=ddagent
268
+ - TEST_DATADOG_INTEGRATION=1
269
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
270
+ - TEST_MEMCACHED_HOST=memcached
271
+ - TEST_MONGODB_HOST=mongodb
272
+ - TEST_MYSQL_HOST=mysql
273
+ - TEST_POSTGRES_HOST=postgres
274
+ - TEST_PRESTO_HOST=presto
275
+ - TEST_PRESTO_PORT=8080
276
+ - TEST_REDIS_HOST=redis
277
+ stdin_open: true
278
+ tty: true
279
+ volumes:
280
+ - .:/app
281
+ - bundle-jruby-9.2:/usr/local/bundle
282
+ - gemfiles-jruby-9.2:/app/gemfiles
250
283
  ddagent:
251
- image: datadog/docker-dd-agent
284
+ image: datadog/agent
252
285
  environment:
253
286
  - DD_APM_ENABLED=true
254
287
  - DD_BIND_HOST=0.0.0.0
255
- - DD_API_KEY=invalid_key_but_this_is_fine
288
+ - DD_API_KEY=00000000000000000000000000000000
256
289
  expose:
257
290
  - "8125/udp"
258
291
  - "8126"
@@ -325,6 +358,7 @@ volumes:
325
358
  bundle-2.5:
326
359
  bundle-2.6:
327
360
  bundle-2.7:
361
+ bundle-jruby-9.2:
328
362
  gemfiles-2.0:
329
363
  gemfiles-2.1:
330
364
  gemfiles-2.2:
@@ -333,3 +367,4 @@ volumes:
333
367
  gemfiles-2.5:
334
368
  gemfiles-2.6:
335
369
  gemfiles-2.7:
370
+ gemfiles-jruby-9.2: