ddtrace 0.43.0 → 0.48.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (400) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +278 -139
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  10. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  11. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  12. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  13. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  14. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
  16. data/.github/workflows/create-next-milestone.yml +2 -2
  17. data/.gitlab-ci.yml +18 -18
  18. data/.rubocop.yml +269 -7
  19. data/.rubocop_todo.yml +438 -0
  20. data/.simplecov +10 -1
  21. data/Appraisals +285 -15
  22. data/CHANGELOG.md +1243 -377
  23. data/Gemfile +65 -3
  24. data/LICENSE-3rdparty.csv +2 -0
  25. data/README.md +1 -0
  26. data/Rakefile +186 -29
  27. data/bin/ddtracerb +15 -0
  28. data/ddtrace.gemspec +7 -37
  29. data/docker-compose.yml +105 -7
  30. data/docs/DevelopmentGuide.md +28 -0
  31. data/docs/GettingStarted.md +208 -75
  32. data/docs/ProfilingDevelopment.md +88 -0
  33. data/integration/README.md +67 -0
  34. data/integration/apps/rack/.dockerignore +1 -0
  35. data/integration/apps/rack/.envrc.sample +1 -0
  36. data/integration/apps/rack/.gitignore +4 -0
  37. data/integration/apps/rack/.rspec +1 -0
  38. data/integration/apps/rack/Dockerfile +28 -0
  39. data/integration/apps/rack/Dockerfile-ci +11 -0
  40. data/integration/apps/rack/Gemfile +24 -0
  41. data/integration/apps/rack/README.md +93 -0
  42. data/integration/apps/rack/app/acme.rb +80 -0
  43. data/integration/apps/rack/app/datadog.rb +17 -0
  44. data/integration/apps/rack/bin/run +22 -0
  45. data/integration/apps/rack/bin/setup +17 -0
  46. data/integration/apps/rack/bin/test +24 -0
  47. data/integration/apps/rack/config.ru +6 -0
  48. data/integration/apps/rack/config/puma.rb +14 -0
  49. data/integration/apps/rack/config/unicorn.rb +23 -0
  50. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  51. data/integration/apps/rack/docker-compose.yml +78 -0
  52. data/integration/apps/rack/script/build-images +38 -0
  53. data/integration/apps/rack/script/ci +50 -0
  54. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  55. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  56. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  57. data/integration/apps/rails-five/.dockerignore +1 -0
  58. data/integration/apps/rails-five/.env +3 -0
  59. data/integration/apps/rails-five/.envrc.sample +1 -0
  60. data/integration/apps/rails-five/.gitignore +30 -0
  61. data/integration/apps/rails-five/Dockerfile +25 -0
  62. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  63. data/integration/apps/rails-five/Gemfile +104 -0
  64. data/integration/apps/rails-five/README.md +94 -0
  65. data/integration/apps/rails-five/Rakefile +6 -0
  66. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  67. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  68. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  69. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  70. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  71. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  72. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  73. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  74. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  75. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  76. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  77. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  78. data/integration/apps/rails-five/app/models/test.rb +2 -0
  79. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  80. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  81. data/integration/apps/rails-five/bin/bundle +3 -0
  82. data/integration/apps/rails-five/bin/rails +9 -0
  83. data/integration/apps/rails-five/bin/rake +9 -0
  84. data/integration/apps/rails-five/bin/run +24 -0
  85. data/integration/apps/rails-five/bin/setup +27 -0
  86. data/integration/apps/rails-five/bin/spring +17 -0
  87. data/integration/apps/rails-five/bin/test +21 -0
  88. data/integration/apps/rails-five/bin/update +28 -0
  89. data/integration/apps/rails-five/config.ru +5 -0
  90. data/integration/apps/rails-five/config/application.rb +97 -0
  91. data/integration/apps/rails-five/config/boot.rb +4 -0
  92. data/integration/apps/rails-five/config/cable.yml +10 -0
  93. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  94. data/integration/apps/rails-five/config/database.yml +28 -0
  95. data/integration/apps/rails-five/config/environment.rb +5 -0
  96. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  97. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  98. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  99. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  100. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  101. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  102. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  103. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  104. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  105. data/integration/apps/rails-five/config/puma.rb +24 -0
  106. data/integration/apps/rails-five/config/routes.rb +11 -0
  107. data/integration/apps/rails-five/config/spring.rb +6 -0
  108. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  109. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  110. data/integration/apps/rails-five/db/schema.rb +23 -0
  111. data/integration/apps/rails-five/db/seeds.rb +7 -0
  112. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  113. data/integration/apps/rails-five/docker-compose.yml +100 -0
  114. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  115. data/integration/apps/rails-five/log/.keep +0 -0
  116. data/integration/apps/rails-five/public/robots.txt +1 -0
  117. data/integration/apps/rails-five/script/build-images +35 -0
  118. data/integration/apps/rails-five/script/ci +50 -0
  119. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  120. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  121. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  122. data/integration/apps/rails-five/storage/.keep +0 -0
  123. data/integration/apps/rails-five/tmp/.keep +0 -0
  124. data/integration/apps/rails-five/vendor/.keep +0 -0
  125. data/integration/apps/ruby/.dockerignore +1 -0
  126. data/integration/apps/ruby/.envrc.sample +1 -0
  127. data/integration/apps/ruby/.gitignore +2 -0
  128. data/integration/apps/ruby/Dockerfile +25 -0
  129. data/integration/apps/ruby/Dockerfile-ci +11 -0
  130. data/integration/apps/ruby/Gemfile +11 -0
  131. data/integration/apps/ruby/README.md +70 -0
  132. data/integration/apps/ruby/agent.yaml +3 -0
  133. data/integration/apps/ruby/app/datadog.rb +13 -0
  134. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  135. data/integration/apps/ruby/bin/run +20 -0
  136. data/integration/apps/ruby/bin/setup +17 -0
  137. data/integration/apps/ruby/bin/test +21 -0
  138. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  139. data/integration/apps/ruby/docker-compose.yml +63 -0
  140. data/integration/apps/ruby/script/build-images +38 -0
  141. data/integration/apps/ruby/script/ci +50 -0
  142. data/integration/images/agent/Dockerfile +2 -0
  143. data/integration/images/agent/agent.yaml +3 -0
  144. data/integration/images/include/datadog/analyzer.rb +71 -0
  145. data/integration/images/include/datadog/demo_env.rb +101 -0
  146. data/integration/images/include/http-health-check +33 -0
  147. data/integration/images/ruby/2.0/Dockerfile +54 -0
  148. data/integration/images/ruby/2.1/Dockerfile +54 -0
  149. data/integration/images/ruby/2.2/Dockerfile +54 -0
  150. data/integration/images/ruby/2.3/Dockerfile +70 -0
  151. data/integration/images/ruby/2.4/Dockerfile +54 -0
  152. data/integration/images/ruby/2.5/Dockerfile +54 -0
  153. data/integration/images/ruby/2.6/Dockerfile +54 -0
  154. data/integration/images/ruby/2.7/Dockerfile +54 -0
  155. data/integration/images/ruby/3.0/Dockerfile +54 -0
  156. data/integration/images/wrk/Dockerfile +33 -0
  157. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  158. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  159. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  160. data/integration/script/build-images +43 -0
  161. data/lib/ddtrace.rb +9 -5
  162. data/lib/ddtrace/analytics.rb +2 -0
  163. data/lib/ddtrace/auto_instrument.rb +3 -0
  164. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  165. data/lib/ddtrace/buffer.rb +4 -4
  166. data/lib/ddtrace/configuration.rb +121 -26
  167. data/lib/ddtrace/configuration/base.rb +1 -1
  168. data/lib/ddtrace/configuration/components.rb +87 -5
  169. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  170. data/lib/ddtrace/configuration/options.rb +4 -7
  171. data/lib/ddtrace/configuration/settings.rb +48 -3
  172. data/lib/ddtrace/context.rb +5 -6
  173. data/lib/ddtrace/context_provider.rb +0 -1
  174. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  175. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  176. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  177. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  178. data/lib/ddtrace/contrib/action_view/event.rb +1 -5
  179. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  180. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  181. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  182. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  183. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  184. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  185. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  186. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  187. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  188. data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
  189. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  190. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  191. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  192. data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
  193. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  194. data/lib/ddtrace/contrib/configurable.rb +63 -39
  195. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  196. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -19
  197. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  198. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
  199. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
  200. data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
  201. data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
  202. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  203. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  204. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  205. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  206. data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
  207. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  208. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  209. data/lib/ddtrace/contrib/extensions.rb +53 -3
  210. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  211. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  212. data/lib/ddtrace/contrib/grape/endpoint.rb +37 -26
  213. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  214. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  215. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  216. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  217. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  218. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  219. data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
  220. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  221. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  222. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  223. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  224. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  225. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  226. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  227. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  228. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  229. data/lib/ddtrace/contrib/patchable.rb +18 -7
  230. data/lib/ddtrace/contrib/patcher.rb +9 -6
  231. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  232. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  233. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  234. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  235. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  236. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  237. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  238. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  239. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  240. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  241. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  242. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  243. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  244. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  245. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  246. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  247. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  248. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  249. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  250. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  251. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  252. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  253. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  254. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  255. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  256. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  257. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  258. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  259. data/lib/ddtrace/contrib/registry.rb +2 -2
  260. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  261. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  262. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  263. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  264. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  265. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
  266. data/lib/ddtrace/contrib/rspec/example.rb +24 -10
  267. data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
  268. data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
  269. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
  270. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  271. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  272. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  273. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  274. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  275. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  276. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  277. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  278. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  279. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  280. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  281. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  282. data/lib/ddtrace/correlation.rb +1 -0
  283. data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
  284. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  285. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  286. data/lib/ddtrace/error.rb +2 -0
  287. data/lib/ddtrace/ext/ci.rb +43 -11
  288. data/lib/ddtrace/ext/distributed.rb +1 -1
  289. data/lib/ddtrace/ext/git.rb +0 -1
  290. data/lib/ddtrace/ext/http.rb +1 -1
  291. data/lib/ddtrace/ext/profiling.rb +52 -0
  292. data/lib/ddtrace/ext/runtime.rb +3 -1
  293. data/lib/ddtrace/ext/transport.rb +1 -0
  294. data/lib/ddtrace/forced_tracing.rb +2 -0
  295. data/lib/ddtrace/logger.rb +1 -1
  296. data/lib/ddtrace/metrics.rb +14 -6
  297. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  298. data/lib/ddtrace/opentracer/span.rb +2 -6
  299. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  300. data/lib/ddtrace/patcher.rb +25 -4
  301. data/lib/ddtrace/pin.rb +8 -61
  302. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  303. data/lib/ddtrace/profiling.rb +54 -0
  304. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  305. data/lib/ddtrace/profiling/buffer.rb +41 -0
  306. data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
  307. data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
  308. data/lib/ddtrace/profiling/event.rb +13 -0
  309. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  310. data/lib/ddtrace/profiling/exporter.rb +23 -0
  311. data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
  312. data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
  313. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  314. data/lib/ddtrace/profiling/flush.rb +41 -0
  315. data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
  316. data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
  317. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  318. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  319. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  320. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  321. data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
  322. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  323. data/lib/ddtrace/profiling/pprof/template.rb +114 -0
  324. data/lib/ddtrace/profiling/preload.rb +3 -0
  325. data/lib/ddtrace/profiling/profiler.rb +28 -0
  326. data/lib/ddtrace/profiling/recorder.rb +87 -0
  327. data/lib/ddtrace/profiling/scheduler.rb +84 -0
  328. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  329. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  330. data/lib/ddtrace/profiling/transport/http.rb +122 -0
  331. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  332. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
  333. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  334. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  335. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  336. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  337. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  338. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  339. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  340. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  341. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  342. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  343. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  344. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  345. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  346. data/lib/ddtrace/quantization/http.rb +1 -0
  347. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  348. data/lib/ddtrace/runtime/container.rb +32 -26
  349. data/lib/ddtrace/runtime/identity.rb +8 -0
  350. data/lib/ddtrace/sampler.rb +1 -1
  351. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  352. data/lib/ddtrace/span.rb +7 -7
  353. data/lib/ddtrace/sync_writer.rb +12 -12
  354. data/lib/ddtrace/tasks/exec.rb +48 -0
  355. data/lib/ddtrace/tasks/help.rb +14 -0
  356. data/lib/ddtrace/tracer.rb +28 -5
  357. data/lib/ddtrace/transport/http.rb +15 -8
  358. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  359. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  360. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  361. data/lib/ddtrace/transport/http/builder.rb +7 -1
  362. data/lib/ddtrace/transport/http/env.rb +8 -0
  363. data/lib/ddtrace/transport/http/traces.rb +2 -3
  364. data/lib/ddtrace/transport/io.rb +1 -1
  365. data/lib/ddtrace/transport/io/client.rb +15 -8
  366. data/lib/ddtrace/transport/io/response.rb +1 -3
  367. data/lib/ddtrace/transport/io/traces.rb +6 -0
  368. data/lib/ddtrace/transport/parcel.rb +4 -0
  369. data/lib/ddtrace/transport/traces.rb +18 -1
  370. data/lib/ddtrace/utils/compression.rb +27 -0
  371. data/lib/ddtrace/utils/object_set.rb +41 -0
  372. data/lib/ddtrace/utils/only_once.rb +40 -0
  373. data/lib/ddtrace/utils/sequence.rb +17 -0
  374. data/lib/ddtrace/utils/string_table.rb +45 -0
  375. data/lib/ddtrace/utils/time.rb +32 -1
  376. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  377. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  378. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  379. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  380. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  381. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  382. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  383. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  384. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  385. data/lib/ddtrace/version.rb +3 -1
  386. data/lib/ddtrace/workers.rb +5 -0
  387. data/lib/ddtrace/workers/async.rb +11 -3
  388. data/lib/ddtrace/workers/loop.rb +17 -3
  389. data/lib/ddtrace/workers/polling.rb +1 -0
  390. data/lib/ddtrace/workers/queue.rb +1 -0
  391. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  392. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  393. data/lib/ddtrace/writer.rb +7 -4
  394. metadata +224 -342
  395. data/lib/ddtrace/augmentation.rb +0 -13
  396. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  397. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  398. data/lib/ddtrace/augmentation/shim.rb +0 -102
  399. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  400. data/lib/ddtrace/monkey.rb +0 -58
data/Gemfile CHANGED
@@ -2,6 +2,68 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
- # Add debugger for pry that's compatible with 0.10.4
6
- gem 'pry-nav', git: 'https://github.com/nixme/pry-nav.git', branch: 'master'
7
- # This file was generated by Appraisal
5
+ # Development dependencies
6
+ gem 'addressable', '~> 2.4.0' # locking transitive dependency of webmock
7
+ gem 'appraisal', '~> 2.2'
8
+ gem 'benchmark-ips', '~> 2.8'
9
+ gem 'benchmark-memory', '~> 0.1'
10
+ gem 'builder'
11
+ gem 'climate_control', '~> 0.2.0'
12
+ # Leave it open as we also have it as an integration and want Appraisal to control the version under test.
13
+ gem 'concurrent-ruby'
14
+ gem 'memory_profiler', '~> 0.9'
15
+ gem 'minitest', '= 5.10.1'
16
+ gem 'minitest-around', '0.5.0'
17
+ gem 'minitest-stub_any_instance', '1.0.2'
18
+ gem 'pimpmychangelog', '>= 0.1.2'
19
+ gem 'pry'
20
+ if RUBY_PLATFORM != 'java'
21
+ # There's a few incompatibilities between pry/pry-byebug on older Rubies
22
+ gem 'pry-byebug' if RUBY_VERSION >= '2.6.0' && RUBY_ENGINE != 'truffleruby'
23
+ gem 'pry-nav' if RUBY_VERSION < '2.6.0'
24
+ gem 'pry-stack_explorer'
25
+ else
26
+ gem 'pry-debugger-jruby'
27
+ end
28
+ gem 'rake', '>= 10.5'
29
+ gem 'redcarpet', '~> 3.4' if RUBY_PLATFORM != 'java'
30
+ gem 'rspec', '~> 3.10'
31
+ gem 'rspec-collection_matchers', '~> 1.1'
32
+ gem 'rspec_junit_formatter', '>= 0.4.1'
33
+ gem 'rspec_n', '~> 1.3' if RUBY_VERSION >= '2.3.0'
34
+ gem 'ruby-prof', '~> 1.4' if RUBY_PLATFORM != 'java' && RUBY_VERSION >= '2.4.0'
35
+ if RUBY_VERSION >= '2.5.0'
36
+ # Merging branch coverage results does not work for old, unsupported rubies.
37
+ # We have a fix up for review, https://github.com/simplecov-ruby/simplecov/pull/972,
38
+ # but given it only affects unsupported version of Ruby, it might not get merged.
39
+ gem 'simplecov', git: 'https://github.com/DataDog/simplecov', ref: '3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db'
40
+ else
41
+ # Compatible with older rubies. This version still produces compatible output
42
+ # with a newer version when the reports are merged.
43
+ gem 'simplecov', '~> 0.17'
44
+ end
45
+ gem 'warning', '~> 1' if RUBY_VERSION >= '2.5.0'
46
+ gem 'webmock', '>= 3.10.0'
47
+ if RUBY_VERSION < '2.3.0'
48
+ gem 'rexml', '< 3.2.5' # Pinned due to https://github.com/ruby/rexml/issues/69
49
+ end
50
+ gem 'webrick', '>= 1.7.0' if RUBY_VERSION >= '3.0.0' # No longer bundled by default since Ruby 3.0
51
+ gem 'yard', '~> 0.9'
52
+
53
+ if RUBY_VERSION >= '2.4.0'
54
+ gem 'rubocop', '~> 1.10', require: false
55
+ gem 'rubocop-performance', '~> 1.9', require: false
56
+ gem 'rubocop-rspec', '~> 2.2', require: false
57
+ end
58
+
59
+ # Optional extensions
60
+ # TODO: Move this to Appraisals?
61
+ gem 'dogstatsd-ruby', '>= 3.3.0'
62
+ gem 'opentracing', '>= 0.4.1'
63
+
64
+ # Profiler optional dependencies
65
+ # NOTE: We're excluding versions 3.7.0 and 3.7.1 for the reasons documented in #1424 and the big comment in
66
+ # lib/ddtrace/profiling.rb: it breaks for some older rubies in CI without BUNDLE_FORCE_RUBY_PLATFORM=true.
67
+ # Since most of our customers won't have BUNDLE_FORCE_RUBY_PLATFORM=true, it's not something we want to add
68
+ # to our CI, so we just shortcut and exclude specific versions that were affecting our CI.
69
+ gem 'google-protobuf', ['~> 3.0', '!= 3.7.0', '!= 3.7.1'] if RUBY_PLATFORM != 'java'
@@ -0,0 +1,2 @@
1
+ Component,Origin,License,Copyright
2
+ ddtrace/vendor/multipart-post,https://github.com/socketry/multipart-post,MIT,"Copyright (c) 2007-2013 Nick Sieger."
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Datadog Trace Client
2
2
 
3
3
  [![CircleCI](https://circleci.com/gh/DataDog/dd-trace-rb/tree/master.svg?style=svg&circle-token=b0bd5ef866ec7f7b018f48731bb495f2d1372cc1)](https://circleci.com/gh/DataDog/dd-trace-rb/tree/master)
4
+ [![codecov](https://codecov.io/gh/DataDog/dd-trace-rb/branch/master/graph/badge.svg)](https://app.codecov.io/gh/DataDog/dd-trace-rb/branch/master)
4
5
 
5
6
  ``ddtrace`` is Datadog’s tracing client for Ruby. It is used to trace requests as they flow across web servers,
6
7
  databases and microservices so that developers have great visiblity into bottlenecks and troublesome requests.
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'ddtrace/version'
3
- require 'rubocop/rake_task' if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.1.0')
3
+ require 'rubocop/rake_task' if Gem.loaded_specs.key? 'rubocop'
4
4
  require 'rspec/core/rake_task'
5
5
  require 'rake/testtask'
6
6
  require 'appraisal'
@@ -17,7 +17,8 @@ namespace :spec do
17
17
 
18
18
  RSpec::Core::RakeTask.new(:main) do |t, args|
19
19
  t.pattern = 'spec/**/*_spec.rb'
20
- t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,opentracer,opentelemetry}/**/*_spec.rb'
20
+ t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,opentracer,opentelemetry,auto_instrument}/**/*_spec.rb,'\
21
+ ' spec/**/auto_instrument_spec.rb'
21
22
  t.rspec_opts = args.to_a.join(' ')
22
23
  end
23
24
 
@@ -38,7 +39,7 @@ namespace :spec do
38
39
 
39
40
  RSpec::Core::RakeTask.new(:rails) do |t, args|
40
41
  t.pattern = 'spec/ddtrace/contrib/rails/**/*_spec.rb'
41
- t.exclude_pattern = 'spec/ddtrace/contrib/rails/**/*{active_job,disable_env,redis_cache}*_spec.rb'
42
+ t.exclude_pattern = 'spec/ddtrace/contrib/rails/**/*{active_job,disable_env,redis_cache,auto_instrument}*_spec.rb'
42
43
  t.rspec_opts = args.to_a.join(' ')
43
44
  end
44
45
 
@@ -57,6 +58,16 @@ namespace :spec do
57
58
  t.rspec_opts = args.to_a.join(' ')
58
59
  end
59
60
 
61
+ RSpec::Core::RakeTask.new(:railsautoinstrument) do |t, args|
62
+ t.pattern = 'spec/ddtrace/contrib/rails/**/*auto_instrument*_spec.rb'
63
+ t.rspec_opts = args.to_a.join(' ')
64
+ end
65
+
66
+ RSpec::Core::RakeTask.new(:autoinstrument) do |t, args|
67
+ t.pattern = 'spec/ddtrace/auto_instrument_spec.rb'
68
+ t.rspec_opts = args.to_a.join(' ')
69
+ end
70
+
60
71
  RSpec::Core::RakeTask.new(:contrib) do |t, args|
61
72
  contrib_paths = [
62
73
  'analytics',
@@ -96,11 +107,13 @@ namespace :spec do
96
107
  :graphql,
97
108
  :grpc,
98
109
  :http,
110
+ :httpclient,
99
111
  :httprb,
100
112
  :kafka,
101
113
  :mongodb,
102
114
  :mysql2,
103
115
  :presto,
116
+ :qless,
104
117
  :que,
105
118
  :racecar,
106
119
  :rack,
@@ -126,16 +139,14 @@ end
126
139
 
127
140
  namespace :test do
128
141
  task all: [:main,
129
- :rails,
130
- :monkey]
142
+ :rails]
131
143
 
132
144
  Rake::TestTask.new(:main) do |t|
133
145
  t.libs << %w[test lib]
134
146
  t.test_files = FileList['test/**/*_test.rb'].reject do |path|
135
147
  path.include?('contrib') ||
136
148
  path.include?('benchmark') ||
137
- path.include?('redis') ||
138
- path.include?('monkey_test.rb')
149
+ path.include?('redis')
139
150
  end
140
151
  end
141
152
 
@@ -143,19 +154,6 @@ namespace :test do
143
154
  t.libs << %w[test lib]
144
155
  t.test_files = FileList['test/contrib/rails/**/*_test.rb']
145
156
  end
146
-
147
- [
148
- ].each do |contrib|
149
- Rake::TestTask.new(contrib) do |t|
150
- t.libs << %w[test lib]
151
- t.test_files = FileList["test/contrib/#{contrib}/*_test.rb"]
152
- end
153
- end
154
-
155
- Rake::TestTask.new(:monkey) do |t|
156
- t.libs << %w[test lib]
157
- t.test_files = FileList['test/monkey_test.rb']
158
- end
159
157
  end
160
158
 
161
159
  Rake::TestTask.new(:benchmark) do |t|
@@ -163,7 +161,7 @@ Rake::TestTask.new(:benchmark) do |t|
163
161
  t.test_files = FileList['test/benchmark_test.rb']
164
162
  end
165
163
 
166
- if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.1.0')
164
+ if defined?(RuboCop::RakeTask)
167
165
  RuboCop::RakeTask.new(:rubocop) do |t|
168
166
  t.options << ['-D', '--force-exclusion']
169
167
  t.patterns = ['lib/**/*.rb', 'test/**/*.rb', 'spec/**/*.rb', 'Gemfile', 'Rakefile']
@@ -183,6 +181,7 @@ S3_DIR = ENV['S3_DIR']
183
181
  desc 'release the docs website'
184
182
  task :'release:docs' => :docs do
185
183
  raise 'Missing environment variable S3_DIR' if !S3_DIR || S3_DIR.empty?
184
+
186
185
  sh "aws s3 cp --recursive doc/ s3://#{S3_BUCKET}/#{S3_DIR}/docs/"
187
186
  end
188
187
 
@@ -210,15 +209,15 @@ task :ci do
210
209
  # Main library
211
210
  declare 'bundle exec rake test:main'
212
211
  declare 'bundle exec rake spec:main'
212
+ declare 'bundle exec appraisal core-old rake spec:main'
213
213
  declare 'bundle exec rake spec:contrib'
214
214
 
215
215
  if RUBY_PLATFORM != 'java'
216
- # Contrib minitests
217
- declare 'bundle exec appraisal contrib-old rake test:monkey'
218
216
  # Contrib specs
219
217
  declare 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
220
218
  declare 'bundle exec appraisal contrib-old rake spec:active_record'
221
219
  declare 'bundle exec appraisal contrib-old rake spec:active_support'
220
+ declare 'bundle exec appraisal contrib-old rake spec:autoinstrument'
222
221
  declare 'bundle exec appraisal contrib-old rake spec:aws'
223
222
  declare 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
224
223
  declare 'bundle exec appraisal contrib-old rake spec:dalli'
@@ -228,6 +227,7 @@ task :ci do
228
227
  declare 'bundle exec appraisal contrib-old rake spec:excon'
229
228
  declare 'bundle exec appraisal contrib-old rake spec:faraday'
230
229
  declare 'bundle exec appraisal contrib-old rake spec:http'
230
+ declare 'bundle exec appraisal contrib-old rake spec:httpclient'
231
231
  declare 'bundle exec appraisal contrib-old rake spec:httprb'
232
232
  declare 'bundle exec appraisal contrib-old rake spec:mongodb'
233
233
  declare 'bundle exec appraisal contrib-old rake spec:mysql2'
@@ -245,10 +245,12 @@ task :ci do
245
245
  # Rails minitests
246
246
  declare 'bundle exec appraisal rails30-postgres rake test:rails'
247
247
  declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
248
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsautoinstrument'
248
249
  declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
249
250
  declare 'bundle exec appraisal rails32-postgres rake test:rails'
250
251
  declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
251
252
  declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
253
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsautoinstrument'
252
254
  # Rails specs
253
255
  declare 'bundle exec appraisal rails30-postgres rake spec:rails'
254
256
  declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
@@ -264,16 +266,16 @@ task :ci do
264
266
  # Main library
265
267
  declare 'bundle exec rake test:main'
266
268
  declare 'bundle exec rake spec:main'
269
+ declare 'bundle exec appraisal core-old rake spec:main'
267
270
  declare 'bundle exec rake spec:contrib'
268
271
  declare 'bundle exec rake spec:opentracer'
269
272
 
270
273
  if RUBY_PLATFORM != 'java'
271
- # Contrib minitests
272
- declare 'bundle exec appraisal contrib-old rake test:monkey'
273
274
  # Contrib specs
274
275
  declare 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
275
276
  declare 'bundle exec appraisal contrib-old rake spec:active_record'
276
277
  declare 'bundle exec appraisal contrib-old rake spec:active_support'
278
+ declare 'bundle exec appraisal contrib-old rake spec:autoinstrument'
277
279
  declare 'bundle exec appraisal contrib-old rake spec:aws'
278
280
  declare 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
279
281
  declare 'bundle exec appraisal contrib-old rake spec:dalli'
@@ -283,6 +285,7 @@ task :ci do
283
285
  declare 'bundle exec appraisal contrib-old rake spec:excon'
284
286
  declare 'bundle exec appraisal contrib-old rake spec:faraday'
285
287
  declare 'bundle exec appraisal contrib-old rake spec:http'
288
+ declare 'bundle exec appraisal contrib-old rake spec:httpclient'
286
289
  declare 'bundle exec appraisal contrib-old rake spec:httprb'
287
290
  declare 'bundle exec appraisal contrib-old rake spec:kafka'
288
291
  declare 'bundle exec appraisal contrib-old rake spec:mongodb'
@@ -302,14 +305,17 @@ task :ci do
302
305
  # Rails minitests
303
306
  declare 'bundle exec appraisal rails30-postgres rake test:rails'
304
307
  declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
308
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsautoinstrument'
305
309
  declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
306
310
  declare 'bundle exec appraisal rails32-postgres rake test:rails'
307
311
  declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
308
312
  declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
313
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsautoinstrument'
309
314
  declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
310
315
  declare 'bundle exec appraisal rails4-postgres rake test:rails'
311
316
  declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
312
317
  declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
318
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsautoinstrument'
313
319
  # Rails specs
314
320
  declare 'bundle exec appraisal rails30-postgres rake spec:rails'
315
321
  declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
@@ -327,6 +333,7 @@ task :ci do
327
333
  # Main library
328
334
  declare 'bundle exec rake test:main'
329
335
  declare 'bundle exec rake spec:main'
336
+ declare 'bundle exec appraisal core-old rake spec:main'
330
337
  declare 'bundle exec rake spec:contrib'
331
338
  declare 'bundle exec rake spec:opentracer'
332
339
 
@@ -338,6 +345,7 @@ task :ci do
338
345
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
339
346
  declare 'bundle exec appraisal contrib rake spec:active_record'
340
347
  declare 'bundle exec appraisal contrib rake spec:active_support'
348
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
341
349
  declare 'bundle exec appraisal contrib rake spec:aws'
342
350
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
343
351
  declare 'bundle exec appraisal contrib rake spec:dalli'
@@ -350,11 +358,13 @@ task :ci do
350
358
  declare 'bundle exec appraisal contrib rake spec:graphql'
351
359
  declare 'bundle exec appraisal contrib rake spec:grpc'
352
360
  declare 'bundle exec appraisal contrib rake spec:http'
361
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
353
362
  declare 'bundle exec appraisal contrib rake spec:httprb'
354
363
  declare 'bundle exec appraisal contrib rake spec:kafka'
355
364
  declare 'bundle exec appraisal contrib rake spec:mongodb'
356
365
  declare 'bundle exec appraisal contrib rake spec:mysql2'
357
366
  declare 'bundle exec appraisal contrib rake spec:presto'
367
+ declare 'bundle exec appraisal contrib rake spec:qless'
358
368
  declare 'bundle exec appraisal contrib rake spec:que'
359
369
  declare 'bundle exec appraisal contrib rake spec:racecar'
360
370
  declare 'bundle exec appraisal contrib rake spec:rack'
@@ -373,14 +383,17 @@ task :ci do
373
383
  # Rails minitests
374
384
  declare 'bundle exec appraisal rails30-postgres rake test:rails'
375
385
  declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
386
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsautoinstrument'
376
387
  declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
377
388
  declare 'bundle exec appraisal rails32-postgres rake test:rails'
378
389
  declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
379
390
  declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
391
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsautoinstrument'
380
392
  declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
381
393
  declare 'bundle exec appraisal rails4-postgres rake test:rails'
382
394
  declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
383
395
  declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
396
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsautoinstrument'
384
397
  declare 'bundle exec appraisal rails4-postgres-sidekiq rake spec:railsactivejob'
385
398
  declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
386
399
  declare 'bundle exec appraisal rails5-postgres rake test:rails'
@@ -388,6 +401,7 @@ task :ci do
388
401
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
389
402
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
390
403
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
404
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
391
405
  # Rails specs
392
406
  declare 'bundle exec appraisal rails30-postgres rake spec:rails'
393
407
  declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
@@ -402,6 +416,7 @@ task :ci do
402
416
  # Main library
403
417
  declare 'bundle exec rake test:main'
404
418
  declare 'bundle exec rake spec:main'
419
+ declare 'bundle exec appraisal core-old rake spec:main'
405
420
  declare 'bundle exec rake spec:contrib'
406
421
  declare 'bundle exec rake spec:opentracer'
407
422
 
@@ -413,6 +428,7 @@ task :ci do
413
428
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
414
429
  declare 'bundle exec appraisal contrib rake spec:active_record'
415
430
  declare 'bundle exec appraisal contrib rake spec:active_support'
431
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
416
432
  declare 'bundle exec appraisal contrib rake spec:aws'
417
433
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
418
434
  declare 'bundle exec appraisal contrib rake spec:dalli'
@@ -425,6 +441,7 @@ task :ci do
425
441
  declare 'bundle exec appraisal contrib rake spec:graphql'
426
442
  declare 'bundle exec appraisal contrib rake spec:grpc'
427
443
  declare 'bundle exec appraisal contrib rake spec:http'
444
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
428
445
  declare 'bundle exec appraisal contrib rake spec:httprb'
429
446
  declare 'bundle exec appraisal contrib rake spec:kafka'
430
447
  declare 'bundle exec appraisal contrib rake spec:mongodb'
@@ -450,14 +467,17 @@ task :ci do
450
467
  # Rails minitests
451
468
  declare 'bundle exec appraisal rails30-postgres rake test:rails'
452
469
  declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
470
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsautoinstrument'
453
471
  declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
454
472
  declare 'bundle exec appraisal rails32-postgres rake test:rails'
455
473
  declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
456
474
  declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
475
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsautoinstrument'
457
476
  declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
458
477
  declare 'bundle exec appraisal rails4-postgres rake test:rails'
459
478
  declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
460
479
  declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
480
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsautoinstrument'
461
481
  declare 'bundle exec appraisal rails4-postgres-sidekiq rake spec:railsactivejob'
462
482
  declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
463
483
  declare 'bundle exec appraisal rails5-postgres rake test:rails'
@@ -465,6 +485,7 @@ task :ci do
465
485
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
466
486
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
467
487
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
488
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
468
489
  # Rails specs
469
490
  declare 'bundle exec appraisal rails30-postgres rake spec:rails'
470
491
  declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
@@ -483,6 +504,7 @@ task :ci do
483
504
  # Main library
484
505
  declare 'bundle exec rake test:main'
485
506
  declare 'bundle exec rake spec:main'
507
+ declare 'bundle exec appraisal core-old rake spec:main'
486
508
  declare 'bundle exec rake spec:contrib'
487
509
  declare 'bundle exec rake spec:opentracer'
488
510
  declare 'bundle exec rake spec:opentelemetry'
@@ -495,6 +517,7 @@ task :ci do
495
517
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
496
518
  declare 'bundle exec appraisal contrib rake spec:active_record'
497
519
  declare 'bundle exec appraisal contrib rake spec:active_support'
520
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
498
521
  declare 'bundle exec appraisal contrib rake spec:aws'
499
522
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
500
523
  declare 'bundle exec appraisal contrib rake spec:dalli'
@@ -507,6 +530,7 @@ task :ci do
507
530
  declare 'bundle exec appraisal contrib rake spec:graphql'
508
531
  declare 'bundle exec appraisal contrib rake spec:grpc'
509
532
  declare 'bundle exec appraisal contrib rake spec:http'
533
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
510
534
  declare 'bundle exec appraisal contrib rake spec:httprb'
511
535
  declare 'bundle exec appraisal contrib rake spec:kafka'
512
536
  declare 'bundle exec appraisal contrib rake spec:mongodb'
@@ -537,6 +561,7 @@ task :ci do
537
561
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
538
562
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
539
563
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
564
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
540
565
  # Rails specs
541
566
  declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
542
567
  declare 'bundle exec appraisal rails5-postgres rake spec:rails'
@@ -554,6 +579,7 @@ task :ci do
554
579
  # Main library
555
580
  declare 'bundle exec rake test:main'
556
581
  declare 'bundle exec rake spec:main'
582
+ declare 'bundle exec appraisal core-old rake spec:main'
557
583
  declare 'bundle exec rake spec:contrib'
558
584
  declare 'bundle exec rake spec:opentracer'
559
585
  declare 'bundle exec rake spec:opentelemetry'
@@ -564,6 +590,7 @@ task :ci do
564
590
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
565
591
  declare 'bundle exec appraisal contrib rake spec:active_record'
566
592
  declare 'bundle exec appraisal contrib rake spec:active_support'
593
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
567
594
  declare 'bundle exec appraisal contrib rake spec:aws'
568
595
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
569
596
  declare 'bundle exec appraisal contrib rake spec:cucumber'
@@ -577,11 +604,13 @@ task :ci do
577
604
  declare 'bundle exec appraisal contrib rake spec:graphql'
578
605
  declare 'bundle exec appraisal contrib rake spec:grpc' if RUBY_PLATFORM != 'java' # protobuf not supported
579
606
  declare 'bundle exec appraisal contrib rake spec:http'
607
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
580
608
  declare 'bundle exec appraisal contrib rake spec:httprb'
581
609
  declare 'bundle exec appraisal contrib rake spec:kafka'
582
610
  declare 'bundle exec appraisal contrib rake spec:mongodb'
583
611
  declare 'bundle exec appraisal contrib rake spec:mysql2' if RUBY_PLATFORM != 'java' # built-in jdbc is used instead
584
612
  declare 'bundle exec appraisal contrib rake spec:presto'
613
+ declare 'bundle exec appraisal contrib rake spec:qless'
585
614
  declare 'bundle exec appraisal contrib rake spec:que'
586
615
  declare 'bundle exec appraisal contrib rake spec:racecar'
587
616
  declare 'bundle exec appraisal contrib rake spec:rack'
@@ -607,19 +636,29 @@ task :ci do
607
636
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
608
637
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
609
638
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
639
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
610
640
  declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
611
641
  declare 'bundle exec appraisal rails6-postgres rake test:rails'
612
642
  declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
613
643
  declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
614
644
  declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
615
645
  declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
646
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsautoinstrument'
616
647
  # Rails specs
617
648
  declare 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
618
649
  declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
619
650
  declare 'bundle exec appraisal rails5-postgres rake spec:rails'
620
- # declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
651
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable'
621
652
  declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
622
653
  declare 'bundle exec appraisal rails6-postgres rake spec:rails'
654
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:action_cable'
655
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:rails'
656
+ declare 'bundle exec appraisal rails61-mysql2 rake test:rails'
657
+ declare 'bundle exec appraisal rails61-postgres rake spec:rails'
658
+ declare 'bundle exec appraisal rails61-postgres rake spec:railsdisableenv'
659
+ declare 'bundle exec appraisal rails61-postgres rake test:rails'
660
+ declare 'bundle exec appraisal rails61-postgres-redis rake spec:railsredis'
661
+ declare 'bundle exec appraisal rails61-postgres-sidekiq rake spec:railsactivejob'
623
662
 
624
663
  # explicitly test resque-2x compatability
625
664
  declare 'bundle exec appraisal resque2-redis3 rake spec:resque'
@@ -634,6 +673,7 @@ task :ci do
634
673
  # Main library
635
674
  declare 'bundle exec rake test:main'
636
675
  declare 'bundle exec rake spec:main'
676
+ declare 'bundle exec appraisal core-old rake spec:main'
637
677
  declare 'bundle exec rake spec:contrib'
638
678
  declare 'bundle exec rake spec:opentracer'
639
679
  declare 'bundle exec rake spec:opentelemetry'
@@ -646,6 +686,7 @@ task :ci do
646
686
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
647
687
  declare 'bundle exec appraisal contrib rake spec:active_record'
648
688
  declare 'bundle exec appraisal contrib rake spec:active_support'
689
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
649
690
  declare 'bundle exec appraisal contrib rake spec:aws'
650
691
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
651
692
  declare 'bundle exec appraisal contrib rake spec:cucumber'
@@ -659,11 +700,13 @@ task :ci do
659
700
  declare 'bundle exec appraisal contrib rake spec:graphql'
660
701
  declare 'bundle exec appraisal contrib rake spec:grpc'
661
702
  declare 'bundle exec appraisal contrib rake spec:http'
703
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
662
704
  declare 'bundle exec appraisal contrib rake spec:httprb'
663
705
  declare 'bundle exec appraisal contrib rake spec:kafka'
664
706
  declare 'bundle exec appraisal contrib rake spec:mongodb'
665
707
  declare 'bundle exec appraisal contrib rake spec:mysql2'
666
708
  declare 'bundle exec appraisal contrib rake spec:presto'
709
+ declare 'bundle exec appraisal contrib rake spec:qless'
667
710
  declare 'bundle exec appraisal contrib rake spec:que'
668
711
  declare 'bundle exec appraisal contrib rake spec:racecar'
669
712
  declare 'bundle exec appraisal contrib rake spec:rack'
@@ -679,6 +722,7 @@ task :ci do
679
722
  declare 'bundle exec appraisal contrib rake spec:sneakers'
680
723
  declare 'bundle exec appraisal contrib rake spec:sucker_punch'
681
724
  declare 'bundle exec appraisal contrib rake spec:suite'
725
+
682
726
  # Contrib specs with old gem versions
683
727
  declare 'bundle exec appraisal contrib-old rake spec:faraday'
684
728
  # Rails minitests
@@ -689,19 +733,29 @@ task :ci do
689
733
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
690
734
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
691
735
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
736
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
692
737
  declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
693
738
  declare 'bundle exec appraisal rails6-postgres rake test:rails'
694
739
  declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
695
740
  declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
696
741
  declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
697
742
  declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
743
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsautoinstrument'
698
744
  # Rails specs
699
745
  declare 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
700
746
  declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
701
747
  declare 'bundle exec appraisal rails5-postgres rake spec:rails'
702
- # declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
748
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable'
703
749
  declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
704
750
  declare 'bundle exec appraisal rails6-postgres rake spec:rails'
751
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:action_cable'
752
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:rails'
753
+ declare 'bundle exec appraisal rails61-mysql2 rake test:rails'
754
+ declare 'bundle exec appraisal rails61-postgres rake spec:rails'
755
+ declare 'bundle exec appraisal rails61-postgres rake spec:railsdisableenv'
756
+ declare 'bundle exec appraisal rails61-postgres rake test:rails'
757
+ declare 'bundle exec appraisal rails61-postgres-redis rake spec:railsredis'
758
+ declare 'bundle exec appraisal rails61-postgres-sidekiq rake spec:railsactivejob'
705
759
 
706
760
  # explicitly test resque-2x compatability
707
761
  declare 'bundle exec appraisal resque2-redis3 rake spec:resque'
@@ -712,10 +766,12 @@ task :ci do
712
766
  declare 'bundle exec appraisal cucumber4 rake spec:cucumber'
713
767
  declare 'bundle exec appraisal cucumber5 rake spec:cucumber'
714
768
  end
715
- elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
769
+ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION) \
770
+ && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('3.0.0')
716
771
  # Main library
717
772
  declare 'bundle exec rake test:main'
718
773
  declare 'bundle exec rake spec:main'
774
+ declare 'bundle exec appraisal core-old rake spec:main'
719
775
  declare 'bundle exec rake spec:contrib'
720
776
  declare 'bundle exec rake spec:opentracer'
721
777
  declare 'bundle exec rake spec:opentelemetry'
@@ -728,6 +784,7 @@ task :ci do
728
784
  declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
729
785
  declare 'bundle exec appraisal contrib rake spec:active_record'
730
786
  declare 'bundle exec appraisal contrib rake spec:active_support'
787
+ declare 'bundle exec appraisal contrib rake spec:autoinstrument'
731
788
  declare 'bundle exec appraisal contrib rake spec:aws'
732
789
  declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
733
790
  declare 'bundle exec appraisal contrib rake spec:cucumber'
@@ -741,11 +798,13 @@ task :ci do
741
798
  declare 'bundle exec appraisal contrib rake spec:graphql'
742
799
  declare 'bundle exec appraisal contrib rake spec:grpc'
743
800
  declare 'bundle exec appraisal contrib rake spec:http'
801
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
744
802
  declare 'bundle exec appraisal contrib rake spec:httprb'
745
803
  declare 'bundle exec appraisal contrib rake spec:kafka'
746
804
  declare 'bundle exec appraisal contrib rake spec:mongodb'
747
805
  declare 'bundle exec appraisal contrib rake spec:mysql2'
748
806
  declare 'bundle exec appraisal contrib rake spec:presto'
807
+ declare 'bundle exec appraisal contrib rake spec:qless'
749
808
  declare 'bundle exec appraisal contrib rake spec:que'
750
809
  declare 'bundle exec appraisal contrib rake spec:racecar'
751
810
  declare 'bundle exec appraisal contrib rake spec:rack'
@@ -761,6 +820,7 @@ task :ci do
761
820
  declare 'bundle exec appraisal contrib rake spec:sneakers'
762
821
  declare 'bundle exec appraisal contrib rake spec:sucker_punch'
763
822
  declare 'bundle exec appraisal contrib rake spec:suite'
823
+
764
824
  # Contrib specs with old gem versions
765
825
  declare 'bundle exec appraisal contrib-old rake spec:faraday'
766
826
  # Rails minitests
@@ -771,17 +831,100 @@ task :ci do
771
831
  declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
772
832
  declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
773
833
  declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
834
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsautoinstrument'
774
835
  declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
775
836
  declare 'bundle exec appraisal rails6-postgres rake test:rails'
776
837
  declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
777
838
  declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
778
839
  declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
779
840
  declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
841
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsautoinstrument'
780
842
  # Rails specs
781
843
  declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
782
844
  declare 'bundle exec appraisal rails5-postgres rake spec:rails'
845
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable'
783
846
  declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
784
847
  declare 'bundle exec appraisal rails6-postgres rake spec:rails'
848
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:action_cable'
849
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:rails'
850
+ declare 'bundle exec appraisal rails61-mysql2 rake test:rails'
851
+ declare 'bundle exec appraisal rails61-postgres rake spec:rails'
852
+ declare 'bundle exec appraisal rails61-postgres rake spec:railsdisableenv'
853
+ declare 'bundle exec appraisal rails61-postgres rake test:rails'
854
+ declare 'bundle exec appraisal rails61-postgres-redis rake spec:railsredis'
855
+ declare 'bundle exec appraisal rails61-postgres-sidekiq rake spec:railsactivejob'
856
+
857
+ # explicitly test resque-2x compatability
858
+ declare 'bundle exec appraisal resque2-redis3 rake spec:resque'
859
+ declare 'bundle exec appraisal resque2-redis4 rake spec:resque'
860
+
861
+ # explicitly test cucumber compatibility
862
+ declare 'bundle exec appraisal cucumber3 rake spec:cucumber'
863
+ declare 'bundle exec appraisal cucumber4 rake spec:cucumber'
864
+ declare 'bundle exec appraisal cucumber5 rake spec:cucumber'
865
+ end
866
+ elsif Gem::Version.new('3.0.0') <= Gem::Version.new(RUBY_VERSION)
867
+ # Main library
868
+ declare 'bundle exec rake test:main'
869
+ declare 'bundle exec rake spec:main'
870
+ declare 'bundle exec appraisal core-old rake spec:main'
871
+ declare 'bundle exec rake spec:contrib'
872
+ declare 'bundle exec rake spec:opentracer'
873
+ declare 'bundle exec rake spec:opentelemetry'
874
+
875
+ if RUBY_PLATFORM != 'java'
876
+ # Contrib minitests
877
+ # Contrib specs
878
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
879
+ declare 'bundle exec appraisal contrib rake spec:action_view'
880
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
881
+ declare 'bundle exec appraisal contrib rake spec:active_record'
882
+ declare 'bundle exec appraisal contrib rake spec:active_support'
883
+ declare 'bundle exec appraisal contrib rake spec:aws'
884
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
885
+ declare 'bundle exec appraisal contrib rake spec:cucumber'
886
+ declare 'bundle exec appraisal contrib rake spec:dalli'
887
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
888
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
889
+ declare 'bundle exec appraisal contrib rake spec:ethon'
890
+ declare 'bundle exec appraisal contrib rake spec:excon'
891
+ declare 'bundle exec appraisal contrib rake spec:faraday'
892
+ declare 'bundle exec appraisal contrib rake spec:grape'
893
+ declare 'bundle exec appraisal contrib rake spec:graphql'
894
+ # declare 'bundle exec appraisal contrib rake spec:grpc' # Pending https://github.com/protocolbuffers/protobuf/issues/7922
895
+ declare 'bundle exec appraisal contrib rake spec:http'
896
+ declare 'bundle exec appraisal contrib rake spec:httpclient'
897
+ declare 'bundle exec appraisal contrib rake spec:httprb'
898
+ declare 'bundle exec appraisal contrib rake spec:kafka'
899
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
900
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
901
+ declare 'bundle exec appraisal contrib rake spec:presto'
902
+ declare 'bundle exec appraisal contrib rake spec:qless'
903
+ declare 'bundle exec appraisal contrib rake spec:que'
904
+ # declare 'bundle exec appraisal contrib rake spec:racecar' # Pending release of our fix: https://github.com/appsignal/rdkafka-ruby/pull/144
905
+ declare 'bundle exec appraisal contrib rake spec:rack'
906
+ declare 'bundle exec appraisal contrib rake spec:rake'
907
+ declare 'bundle exec appraisal contrib rake spec:redis'
908
+ declare 'bundle exec appraisal contrib rake spec:resque'
909
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
910
+ declare 'bundle exec appraisal contrib rake spec:rspec'
911
+ declare 'bundle exec appraisal contrib rake spec:sequel'
912
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
913
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
914
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
915
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
916
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
917
+ declare 'bundle exec appraisal contrib rake spec:suite'
918
+
919
+ # Rails
920
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:action_cable'
921
+ declare 'bundle exec appraisal rails61-mysql2 rake spec:rails'
922
+ declare 'bundle exec appraisal rails61-mysql2 rake test:rails'
923
+ declare 'bundle exec appraisal rails61-postgres rake spec:rails'
924
+ declare 'bundle exec appraisal rails61-postgres rake spec:railsdisableenv'
925
+ declare 'bundle exec appraisal rails61-postgres rake test:rails'
926
+ declare 'bundle exec appraisal rails61-postgres-redis rake spec:railsredis'
927
+ declare 'bundle exec appraisal rails61-postgres-sidekiq rake spec:railsactivejob'
785
928
 
786
929
  # explicitly test resque-2x compatability
787
930
  declare 'bundle exec appraisal resque2-redis3 rake spec:resque'
@@ -805,7 +948,13 @@ namespace :coverage do
805
948
 
806
949
  SimpleCov.collate resultset_files do
807
950
  coverage_dir "#{ENV.fetch('COVERAGE_DIR', 'coverage')}/report"
808
- formatter SimpleCov::Formatter::HTMLFormatter
951
+ if ENV['CI'] == 'true'
952
+ require 'codecov'
953
+ formatter SimpleCov::Formatter::MultiFormatter.new([SimpleCov::Formatter::HTMLFormatter,
954
+ SimpleCov::Formatter::Codecov])
955
+ else
956
+ formatter SimpleCov::Formatter::HTMLFormatter
957
+ end
809
958
  end
810
959
  end
811
960
 
@@ -824,4 +973,12 @@ namespace :coverage do
824
973
  end
825
974
  end
826
975
 
976
+ namespace :changelog do
977
+ task :format do
978
+ require 'pimpmychangelog'
979
+
980
+ PimpMyChangelog::CLI.run!
981
+ end
982
+ end
983
+
827
984
  task default: :test