ddtrace 0.42.0 → 0.47.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +274 -137
  3. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  4. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2-latest} +2 -1
  5. data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +73 -0
  6. data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
  7. data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
  8. data/.github/workflows/create-next-milestone.yml +20 -0
  9. data/.rubocop.yml +250 -7
  10. data/.rubocop_todo.yml +397 -0
  11. data/.simplecov +9 -0
  12. data/Appraisals +386 -142
  13. data/CHANGELOG.md +1218 -362
  14. data/CONTRIBUTING.md +1 -1
  15. data/Gemfile +55 -3
  16. data/LICENSE-3rdparty.csv +2 -0
  17. data/README.md +1 -0
  18. data/Rakefile +216 -29
  19. data/ddtrace.gemspec +4 -36
  20. data/docker-compose.yml +105 -7
  21. data/docs/DevelopmentGuide.md +30 -2
  22. data/docs/GettingStarted.md +242 -22
  23. data/integration/README.md +68 -0
  24. data/integration/apps/rack/.dockerignore +1 -0
  25. data/integration/apps/rack/.envrc.sample +1 -0
  26. data/integration/apps/rack/.gitignore +4 -0
  27. data/integration/apps/rack/.rspec +1 -0
  28. data/integration/apps/rack/Dockerfile +25 -0
  29. data/integration/apps/rack/Dockerfile-ci +11 -0
  30. data/integration/apps/rack/Gemfile +24 -0
  31. data/integration/apps/rack/README.md +93 -0
  32. data/integration/apps/rack/app/acme.rb +80 -0
  33. data/integration/apps/rack/app/datadog.rb +17 -0
  34. data/integration/apps/rack/bin/run +22 -0
  35. data/integration/apps/rack/bin/setup +17 -0
  36. data/integration/apps/rack/bin/test +24 -0
  37. data/integration/apps/rack/config.ru +6 -0
  38. data/integration/apps/rack/config/puma.rb +14 -0
  39. data/integration/apps/rack/config/unicorn.rb +23 -0
  40. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  41. data/integration/apps/rack/docker-compose.yml +78 -0
  42. data/integration/apps/rack/script/build-images +38 -0
  43. data/integration/apps/rack/script/ci +50 -0
  44. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  45. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  46. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  47. data/integration/apps/rails-five/.dockerignore +1 -0
  48. data/integration/apps/rails-five/.env +3 -0
  49. data/integration/apps/rails-five/.envrc.sample +1 -0
  50. data/integration/apps/rails-five/.gitignore +30 -0
  51. data/integration/apps/rails-five/Dockerfile +25 -0
  52. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  53. data/integration/apps/rails-five/Gemfile +104 -0
  54. data/integration/apps/rails-five/README.md +94 -0
  55. data/integration/apps/rails-five/Rakefile +6 -0
  56. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  57. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  58. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  59. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  60. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  61. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  62. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  63. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  64. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  65. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  66. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  67. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  68. data/integration/apps/rails-five/app/models/test.rb +2 -0
  69. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  70. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  71. data/integration/apps/rails-five/bin/bundle +3 -0
  72. data/integration/apps/rails-five/bin/rails +9 -0
  73. data/integration/apps/rails-five/bin/rake +9 -0
  74. data/integration/apps/rails-five/bin/run +24 -0
  75. data/integration/apps/rails-five/bin/setup +27 -0
  76. data/integration/apps/rails-five/bin/spring +17 -0
  77. data/integration/apps/rails-five/bin/test +21 -0
  78. data/integration/apps/rails-five/bin/update +28 -0
  79. data/integration/apps/rails-five/config.ru +5 -0
  80. data/integration/apps/rails-five/config/application.rb +97 -0
  81. data/integration/apps/rails-five/config/boot.rb +4 -0
  82. data/integration/apps/rails-five/config/cable.yml +10 -0
  83. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  84. data/integration/apps/rails-five/config/database.yml +28 -0
  85. data/integration/apps/rails-five/config/environment.rb +5 -0
  86. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  87. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  88. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  89. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  90. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  91. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  92. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  93. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  94. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  95. data/integration/apps/rails-five/config/puma.rb +24 -0
  96. data/integration/apps/rails-five/config/routes.rb +11 -0
  97. data/integration/apps/rails-five/config/spring.rb +6 -0
  98. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  99. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  100. data/integration/apps/rails-five/db/schema.rb +23 -0
  101. data/integration/apps/rails-five/db/seeds.rb +7 -0
  102. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  103. data/integration/apps/rails-five/docker-compose.yml +100 -0
  104. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  105. data/integration/apps/rails-five/log/.keep +0 -0
  106. data/integration/apps/rails-five/public/robots.txt +1 -0
  107. data/integration/apps/rails-five/script/build-images +35 -0
  108. data/integration/apps/rails-five/script/ci +50 -0
  109. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  110. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  111. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  112. data/integration/apps/rails-five/storage/.keep +0 -0
  113. data/integration/apps/rails-five/tmp/.keep +0 -0
  114. data/integration/apps/rails-five/vendor/.keep +0 -0
  115. data/integration/apps/ruby/.dockerignore +1 -0
  116. data/integration/apps/ruby/.envrc.sample +1 -0
  117. data/integration/apps/ruby/.gitignore +2 -0
  118. data/integration/apps/ruby/Dockerfile +25 -0
  119. data/integration/apps/ruby/Dockerfile-ci +11 -0
  120. data/integration/apps/ruby/Gemfile +11 -0
  121. data/integration/apps/ruby/README.md +70 -0
  122. data/integration/apps/ruby/agent.yaml +3 -0
  123. data/integration/apps/ruby/app/datadog.rb +13 -0
  124. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  125. data/integration/apps/ruby/bin/run +20 -0
  126. data/integration/apps/ruby/bin/setup +17 -0
  127. data/integration/apps/ruby/bin/test +21 -0
  128. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  129. data/integration/apps/ruby/docker-compose.yml +63 -0
  130. data/integration/apps/ruby/script/build-images +38 -0
  131. data/integration/apps/ruby/script/ci +50 -0
  132. data/integration/images/agent/Dockerfile +2 -0
  133. data/integration/images/agent/agent.yaml +3 -0
  134. data/integration/images/include/datadog/analyzer.rb +71 -0
  135. data/integration/images/include/datadog/demo_env.rb +101 -0
  136. data/integration/images/include/http-health-check +33 -0
  137. data/integration/images/ruby/2.0/Dockerfile +54 -0
  138. data/integration/images/ruby/2.1/Dockerfile +54 -0
  139. data/integration/images/ruby/2.2/Dockerfile +54 -0
  140. data/integration/images/ruby/2.3/Dockerfile +70 -0
  141. data/integration/images/ruby/2.4/Dockerfile +54 -0
  142. data/integration/images/ruby/2.5/Dockerfile +54 -0
  143. data/integration/images/ruby/2.6/Dockerfile +54 -0
  144. data/integration/images/ruby/2.7/Dockerfile +54 -0
  145. data/integration/images/ruby/3.0/Dockerfile +54 -0
  146. data/integration/images/wrk/Dockerfile +33 -0
  147. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  148. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  149. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  150. data/integration/script/build-images +43 -0
  151. data/lib/ddtrace.rb +10 -5
  152. data/lib/ddtrace/analytics.rb +2 -0
  153. data/lib/ddtrace/auto_instrument.rb +3 -0
  154. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  155. data/lib/ddtrace/buffer.rb +4 -4
  156. data/lib/ddtrace/configuration.rb +108 -23
  157. data/lib/ddtrace/configuration/base.rb +1 -1
  158. data/lib/ddtrace/configuration/components.rb +2 -2
  159. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  160. data/lib/ddtrace/configuration/options.rb +4 -7
  161. data/lib/ddtrace/configuration/settings.rb +21 -5
  162. data/lib/ddtrace/context.rb +23 -6
  163. data/lib/ddtrace/context_provider.rb +12 -2
  164. data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
  165. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  166. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
  167. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  168. data/lib/ddtrace/contrib/action_view/event.rb +1 -5
  169. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  170. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  171. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  172. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  173. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +101 -18
  174. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  175. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  176. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
  177. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
  178. data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
  179. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  180. data/lib/ddtrace/contrib/active_support/notifications/event.rb +12 -1
  181. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
  182. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  183. data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
  184. data/lib/ddtrace/contrib/aws/instrumentation.rb +2 -1
  185. data/lib/ddtrace/contrib/aws/patcher.rb +1 -1
  186. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  187. data/lib/ddtrace/contrib/configurable.rb +63 -37
  188. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  189. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -20
  190. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  191. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +28 -0
  192. data/lib/ddtrace/contrib/cucumber/ext.rb +17 -0
  193. data/lib/ddtrace/contrib/cucumber/formatter.rb +98 -0
  194. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
  195. data/lib/ddtrace/contrib/cucumber/integration.rb +45 -0
  196. data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
  197. data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
  198. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
  199. data/lib/ddtrace/contrib/delayed_job/plugin.rb +2 -1
  200. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  201. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  202. data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
  203. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  204. data/lib/ddtrace/contrib/excon/middleware.rb +9 -7
  205. data/lib/ddtrace/contrib/extensions.rb +53 -3
  206. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  207. data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
  208. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
  209. data/lib/ddtrace/contrib/grape/endpoint.rb +47 -21
  210. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  211. data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
  212. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  213. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  214. data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
  215. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  216. data/lib/ddtrace/contrib/http/instrumentation.rb +7 -7
  217. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  218. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  219. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  220. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  221. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  222. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  223. data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
  224. data/lib/ddtrace/contrib/kafka/event.rb +1 -1
  225. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
  226. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  227. data/lib/ddtrace/contrib/patchable.rb +18 -7
  228. data/lib/ddtrace/contrib/patcher.rb +9 -6
  229. data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
  230. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  231. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  232. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  233. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  234. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  235. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  236. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  237. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  238. data/lib/ddtrace/contrib/que/tracer.rb +3 -2
  239. data/lib/ddtrace/contrib/racecar/event.rb +1 -0
  240. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  241. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  242. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  243. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  244. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  245. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  246. data/lib/ddtrace/contrib/rails/patcher.rb +11 -4
  247. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  248. data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
  249. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  250. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  251. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  252. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  253. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  254. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  255. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  256. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  257. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  258. data/lib/ddtrace/contrib/registry.rb +2 -2
  259. data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
  260. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  261. data/lib/ddtrace/contrib/resque/resque_job.rb +3 -1
  262. data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
  263. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +28 -0
  264. data/lib/ddtrace/contrib/rspec/example.rb +75 -0
  265. data/lib/ddtrace/contrib/rspec/ext.rb +16 -0
  266. data/lib/ddtrace/contrib/rspec/integration.rb +46 -0
  267. data/lib/ddtrace/contrib/rspec/patcher.rb +23 -0
  268. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  269. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  270. data/lib/ddtrace/contrib/shoryuken/tracer.rb +3 -1
  271. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  272. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +5 -7
  273. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  274. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  275. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  276. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  277. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  278. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  279. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  280. data/lib/ddtrace/contrib/sneakers/tracer.rb +16 -21
  281. data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
  282. data/lib/ddtrace/correlation.rb +1 -0
  283. data/lib/ddtrace/diagnostics/environment_logger.rb +2 -1
  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/ext/app_types.rb +1 -0
  287. data/lib/ddtrace/ext/ci.rb +297 -0
  288. data/lib/ddtrace/ext/distributed.rb +8 -2
  289. data/lib/ddtrace/ext/git.rb +11 -0
  290. data/lib/ddtrace/ext/http.rb +1 -1
  291. data/lib/ddtrace/ext/runtime.rb +4 -1
  292. data/lib/ddtrace/ext/test.rb +24 -0
  293. data/lib/ddtrace/forced_tracing.rb +2 -0
  294. data/lib/ddtrace/logger.rb +1 -1
  295. data/lib/ddtrace/metrics.rb +10 -6
  296. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  297. data/lib/ddtrace/opentracer/span.rb +2 -6
  298. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  299. data/lib/ddtrace/patcher.rb +25 -4
  300. data/lib/ddtrace/pin.rb +8 -61
  301. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  302. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  303. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  304. data/lib/ddtrace/quantization/http.rb +1 -0
  305. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  306. data/lib/ddtrace/runtime/container.rb +27 -29
  307. data/lib/ddtrace/runtime/identity.rb +12 -5
  308. data/lib/ddtrace/sampler.rb +1 -1
  309. data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
  310. data/lib/ddtrace/sampling/rule_sampler.rb +1 -0
  311. data/lib/ddtrace/span.rb +7 -7
  312. data/lib/ddtrace/sync_writer.rb +12 -12
  313. data/lib/ddtrace/tracer.rb +21 -6
  314. data/lib/ddtrace/transport/http.rb +15 -8
  315. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  316. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  317. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  318. data/lib/ddtrace/transport/http/builder.rb +7 -1
  319. data/lib/ddtrace/transport/http/env.rb +8 -0
  320. data/lib/ddtrace/transport/http/traces.rb +2 -3
  321. data/lib/ddtrace/transport/io.rb +1 -1
  322. data/lib/ddtrace/transport/io/response.rb +1 -3
  323. data/lib/ddtrace/transport/io/traces.rb +6 -0
  324. data/lib/ddtrace/transport/traces.rb +18 -1
  325. data/lib/ddtrace/utils.rb +10 -11
  326. data/lib/ddtrace/utils/compression.rb +27 -0
  327. data/lib/ddtrace/utils/forking.rb +52 -0
  328. data/lib/ddtrace/utils/object_set.rb +41 -0
  329. data/lib/ddtrace/utils/only_once.rb +40 -0
  330. data/lib/ddtrace/utils/sequence.rb +17 -0
  331. data/lib/ddtrace/utils/string_table.rb +45 -0
  332. data/lib/ddtrace/utils/time.rb +32 -1
  333. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  334. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  335. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  336. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  337. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  338. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  339. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  340. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  341. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  342. data/lib/ddtrace/version.rb +1 -1
  343. data/lib/ddtrace/workers.rb +5 -0
  344. data/lib/ddtrace/workers/async.rb +11 -3
  345. data/lib/ddtrace/workers/loop.rb +17 -3
  346. data/lib/ddtrace/workers/polling.rb +1 -0
  347. data/lib/ddtrace/workers/queue.rb +1 -0
  348. data/lib/ddtrace/workers/runtime_metrics.rb +7 -3
  349. data/lib/ddtrace/workers/trace_writer.rb +10 -10
  350. data/lib/ddtrace/writer.rb +26 -5
  351. metadata +186 -373
  352. data/lib/ddtrace/augmentation.rb +0 -13
  353. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  354. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  355. data/lib/ddtrace/augmentation/shim.rb +0 -102
  356. data/lib/ddtrace/monkey.rb +0 -58
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 356d9acad651e21531cb323e2894fd187a02e91bd1c68973bf8030b2aa1512a3
4
- data.tar.gz: e9997b324030189490fc43e67dc3a9e4ba4ec9c334e9fe7a08c14ea66b25145b
2
+ SHA1:
3
+ metadata.gz: 9cf1ef2c94e28df64fe5d26a43c3cfb1c31cc9be
4
+ data.tar.gz: a7daf78f76f691e785946f0e3f2763b424cd6127
5
5
  SHA512:
6
- metadata.gz: 2e276f69c9c8c39c63c6b5c8abc7572d18d635f549f0a152acd2fbbd9a3cfe4cb151112fb2a928f0785c054a416087d97fd6650ce057b199598123f89df43e57
7
- data.tar.gz: edc8ad3cd84b445c276f8d26f76ab9d404ce234154ea916fac94c65122628ce2b6cd6f74df450af19e231fe1d20a7f21ed8ee8707c70a7647f58fee51ee16912
6
+ metadata.gz: 3d4f7408c4ef0b587c3a078cb29b5165a43cbb03bb204b72d04a989de1567cd0ff9ae8c7c0649f6269a531a4041c156970fc0470c7f124b208f7a98435c942e8
7
+ data.tar.gz: a8e0484124bc54ef8c69e3af13f6f06e8b0070223a6316922e38d2df2d97004d306f3d205babfdfe876dad6f76c69ccfba77ffc5de58c7bb6fc441856f85df60
data/.circleci/config.yml CHANGED
@@ -2,41 +2,83 @@ version: 2.1
2
2
 
3
3
  # Common variables, containers, jobs and steps.
4
4
  job_defaults: &job_defaults
5
+ # TODO: We should move away from using a directory
6
+ # TODO: that requires root permission to be created.
7
+ # TODO: Changing this requires rebuilding all docker images.
5
8
  working_directory: /app
6
9
  shell: /bin/bash --login
7
10
 
8
11
  test_containers:
12
+ - &job_parameters
13
+ parameters:
14
+ ruby_version:
15
+ description: Ruby version
16
+ type: string
17
+ image:
18
+ description: Docker image location
19
+ type: string
20
+ jit:
21
+ description: Jit enabled?
22
+ type: boolean
23
+ default: false
24
+ resource_class_to_use:
25
+ description: Resource class to use
26
+ type: string
27
+ default: medium
28
+ - &container_base_environment
29
+ BUNDLE_GEMFILE: /app/Gemfile
30
+ JRUBY_OPTS: --dev # Faster JVM startup: https://github.com/jruby/jruby/wiki/Improving-startup-time#use-the---dev-flag
31
+ - &container_parameters_environment
32
+ - *container_base_environment
33
+ - RUBY_OPT: <<# parameters.jit >>--jit<</ parameters.jit >>
34
+ - TEST_DATADOG_INTEGRATION: 1
35
+ - COVERAGE_BASE_DIR: coverage
9
36
  - &container_base
37
+ image: <<parameters.image>>
10
38
  environment:
11
- - BUNDLE_GEMFILE=/app/Gemfile
39
+ *container_parameters_environment
40
+ - &test_job_default
41
+ <<: *job_defaults
42
+ <<: *job_parameters
43
+ docker:
44
+ - *container_base
12
45
  - &container_postgres
13
46
  image: postgres:9.6
14
47
  environment:
15
48
  - POSTGRES_PASSWORD=postgres
16
49
  - POSTGRES_USER=postgres
17
50
  - POSTGRES_DB=postgres
51
+ - &postgres_port 5432
18
52
  - &container_presto
19
- image: prestosql/presto
53
+ # Move to trinodb/trino after https://github.com/treasure-data/presto-client-ruby/issues/64 is resolved.
54
+ image: starburstdata/presto:332-e.9
55
+ - &presto_port 8080
20
56
  - &container_mysql
21
57
  image: mysql:5.6
22
58
  environment:
23
59
  - MYSQL_ROOT_PASSWORD=root
24
60
  - MYSQL_PASSWORD=mysql
25
61
  - MYSQL_USER=mysql
62
+ - &mysql_port 3306
26
63
  - &container_elasticsearch
27
64
  image: elasticsearch:2.4
65
+ - &elasticsearch_port 9200
28
66
  - &container_redis
29
67
  image: redis:3.0
68
+ - &redis_port 6379
30
69
  - &container_mongo
31
70
  image: mongo:3.5
71
+ - &mongo_port 27017
32
72
  - &container_memcached
33
73
  image: memcached:1.5-alpine
74
+ - &memcached_port 11211
34
75
  - &container_agent
35
76
  image: datadog/docker-dd-agent
36
77
  environment:
37
78
  - DD_APM_ENABLED=true
38
79
  - DD_BIND_HOST=0.0.0.0
39
80
  - DD_API_KEY=invalid_key_but_this_is_fine
81
+ - &agent_port 8126
40
82
 
41
83
  step_init_bundle_checksum: &step_init_bundle_checksum
42
84
  run:
@@ -68,7 +110,13 @@ step_compute_bundle_checksum: &step_compute_bundle_checksum
68
110
  step_run_all_tests: &step_run_all_tests
69
111
  run:
70
112
  name: Run tests
71
- command: bundle exec rake ci
113
+ command: |
114
+ echo "
115
+ --format=progress
116
+ --format=RspecJunitFormatter
117
+ --out='/tmp/rspec/-<%= ARGV.join.gsub('/', '-') %>.xml'
118
+ " > .rspec-local # Configure RSpec metadata exporter
119
+ bundle exec rake ci
72
120
  step_release_docs: &step_release_docs
73
121
  run:
74
122
  name: Upload release docs
@@ -88,41 +136,14 @@ filters_only_release_tags: &filters_only_release_tags
88
136
  orbs:
89
137
  orb:
90
138
  jobs:
91
- checkout:
92
- <<: *job_defaults
93
- parameters:
94
- ruby_version:
95
- description: Ruby version
96
- type: string
97
- image:
98
- description: Docker image location
99
- type: string
100
- docker:
101
- - <<: *container_base
102
- image: <<parameters.image>>
103
- steps:
104
- - checkout
105
- - save_cache:
106
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
107
- paths:
108
- - /app
109
139
  build:
110
- <<: *job_defaults
111
- parameters:
112
- ruby_version:
113
- description: Ruby version
114
- type: string
115
- image:
116
- description: Docker image location
117
- type: string
118
- docker:
119
- - <<: *container_base
120
- image: <<parameters.image>>
140
+ <<: *test_job_default
141
+ resource_class: <<parameters.resource_class_to_use>>
121
142
  steps:
143
+ - checkout
122
144
  - restore_cache:
123
145
  keys:
124
146
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
125
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
126
147
  - restore_cache:
127
148
  keys:
128
149
  - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
@@ -147,22 +168,38 @@ orbs:
147
168
  key: bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}-{{ checksum ".circleci/bundle_checksum" }}'
148
169
  paths:
149
170
  - /usr/local/bundle
150
- test:
151
- <<: *job_defaults
171
+ build_and_test_integration:
172
+ executor: docker-integration
152
173
  parameters:
153
174
  ruby_version:
154
175
  description: Ruby version
155
176
  type: string
156
- image:
157
- description: Docker image location
177
+ integration_apps:
178
+ description: Integration apps
158
179
  type: string
180
+ steps:
181
+ - checkout
182
+ - setup_remote_docker:
183
+ docker_layer_caching: true
184
+ - run:
185
+ name: Build integration base images
186
+ command: ./integration/script/build-images -v <<parameters.ruby_version>>
187
+ - run:
188
+ name: Build integration app images
189
+ command: |
190
+ for i in <<parameters.integration_apps>>; do
191
+ ./integration/apps/$i/script/build-images -v <<parameters.ruby_version>>
192
+ done
193
+ - run:
194
+ name: Test integration apps
195
+ command: |
196
+ for i in <<parameters.integration_apps>>; do
197
+ ./integration/apps/$i/script/ci -v <<parameters.ruby_version>>
198
+ done
199
+ test:
200
+ <<: *test_job_default
159
201
  docker:
160
202
  - <<: *container_base
161
- image: <<parameters.image>>
162
- environment:
163
- - BUNDLE_GEMFILE: /app/Gemfile
164
- - TEST_DATADOG_INTEGRATION: 1
165
- - COVERAGE_BASE_DIR: coverage
166
203
  - *container_postgres
167
204
  - *container_presto
168
205
  - *container_mysql
@@ -184,26 +221,34 @@ orbs:
184
221
  command: |
185
222
  # Create a unique coverage directory for this job, to avoid conflicts when merging all results
186
223
  echo 'export COVERAGE_DIR="$COVERAGE_BASE_DIR/versions/$CIRCLE_JOB/$CIRCLE_NODE_INDEX"' >> $BASH_ENV
224
+ # Wait for containers to start
225
+ - docker-wait:
226
+ port: *postgres_port
227
+ - docker-wait:
228
+ port: *presto_port
229
+ - docker-wait:
230
+ port: *mysql_port
231
+ - docker-wait:
232
+ port: *elasticsearch_port
233
+ - docker-wait:
234
+ port: *redis_port
235
+ - docker-wait:
236
+ port: *mongo_port
237
+ - docker-wait:
238
+ port: *memcached_port
239
+ - docker-wait:
240
+ port: *agent_port
187
241
  - *step_run_all_tests
242
+ - store_test_results:
243
+ path: /tmp/rspec
188
244
  - persist_to_workspace:
189
245
  root: .
190
246
  paths:
191
247
  - coverage
192
248
  benchmark:
193
- <<: *job_defaults
194
- parameters:
195
- ruby_version:
196
- description: Ruby version
197
- type: string
198
- image:
199
- description: Docker image location
200
- type: string
249
+ <<: *test_job_default
201
250
  docker:
202
251
  - <<: *container_base
203
- image: <<parameters.image>>
204
- environment:
205
- - BUNDLE_GEMFILE: /app/Gemfile
206
- - TEST_DATADOG_INTEGRATION: 1
207
252
  - *container_postgres
208
253
  - *container_redis
209
254
  - *container_agent
@@ -221,19 +266,7 @@ orbs:
221
266
  name: Run Benchmark without ddtracer
222
267
  command: rm -f lib/ddtrace.rb && bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
223
268
  lint:
224
- <<: *job_defaults
225
- parameters:
226
- ruby_version:
227
- description: Ruby version
228
- type: string
229
- image:
230
- description: Docker image location
231
- type: string
232
- docker:
233
- - <<: *container_base
234
- image: <<parameters.image>>
235
- environment:
236
- - BUNDLE_GEMFILE: /app/Gemfile
269
+ <<: *test_job_default
237
270
  steps:
238
271
  - restore_cache:
239
272
  keys:
@@ -243,19 +276,7 @@ orbs:
243
276
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
244
277
  - *step_rubocop
245
278
  coverage:
246
- <<: *job_defaults
247
- parameters:
248
- ruby_version:
249
- description: Ruby version
250
- type: string
251
- image:
252
- description: Docker image location
253
- type: string
254
- docker:
255
- - <<: *container_base
256
- image: <<parameters.image>>
257
- environment:
258
- - BUNDLE_GEMFILE: /app/Gemfile
279
+ <<: *test_job_default
259
280
  steps:
260
281
  - restore_cache:
261
282
  keys:
@@ -265,6 +286,9 @@ orbs:
265
286
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
266
287
  - attach_workspace:
267
288
  at: /tmp/workspace
289
+ - run:
290
+ name: Install codecov
291
+ command: bundle add codecov
268
292
  - run:
269
293
  name: Generate coverage report artifact "coverage/index.html"
270
294
  command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
@@ -274,14 +298,52 @@ orbs:
274
298
  - store_artifacts:
275
299
  path: /tmp/workspace/coverage/report/
276
300
  destination: coverage
301
+ changelog:
302
+ <<: *test_job_default
303
+ steps:
304
+ - restore_cache:
305
+ keys:
306
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
307
+ - restore_cache:
308
+ keys:
309
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
310
+ - attach_workspace:
311
+ at: /tmp/workspace
312
+ - run:
313
+ name: Format changelog
314
+ command: bundle exec rake changelog:format
315
+ - run:
316
+ name: Check if changelog was unformatted
317
+ command: |
318
+ if ! git diff-files --quiet; then
319
+ echo "Please run 'bundle exec rake changelog:format' and commit the results."
320
+ fi
277
321
  commands:
322
+ docker-wait:
323
+ description: Wait for containers to listen on a TCP port.
324
+ parameters:
325
+ port:
326
+ description: TCP port the container is listening on.
327
+ type: integer
328
+ timeout:
329
+ description: How long to wait for the port to be responsive.
330
+ type: string
331
+ default: 1m
332
+ steps:
333
+ - run:
334
+ name: Wait for container on port <<parameters.port>>
335
+ command: dockerize -wait 'tcp://localhost:<<parameters.port>>' -timeout '<<parameters.timeout>>'
278
336
  executors:
337
+ docker-integration:
338
+ docker:
339
+ - image: circleci/buildpack-deps:stretch
279
340
 
280
341
  jobs:
281
342
  "deploy release":
282
343
  <<: *job_defaults
283
344
  docker:
284
- - <<: *container_base
345
+ - environment:
346
+ *container_base_environment
285
347
  image: marcotc/docker-library:ddtrace_rb_2_5_6
286
348
  steps:
287
349
  - checkout
@@ -301,7 +363,8 @@ jobs:
301
363
  "deploy prerelease Gem":
302
364
  <<: *job_defaults
303
365
  docker:
304
- - <<: *container_base
366
+ - environment:
367
+ *container_base_environment
305
368
  image: marcotc/docker-library:ddtrace_rb_2_5_6
306
369
  steps:
307
370
  - run:
@@ -367,11 +430,30 @@ job_configuration:
367
430
  <<: *filters_all_branches_and_tags
368
431
  ruby_version: '2.7'
369
432
  image: marcotc/docker-library:ddtrace_rb_2_7_0
433
+ - &config-3_0
434
+ <<: *filters_all_branches_and_tags
435
+ ruby_version: '3.0'
436
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
437
+ - &config-3_0-jit
438
+ <<: *filters_all_branches_and_tags
439
+ ruby_version: '3.0'
440
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
441
+ jit: true
370
442
  # JRuby
371
- - &config-jruby-9_2
443
+ - &config-jruby-9_2_0_0 # Oldest supported version
444
+ <<: *filters_all_branches_and_tags
445
+ ruby_version: 'jruby-9.2.0.0'
446
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_0_0
447
+ - &config-jruby-9_2-latest # More recent release of 9.2
448
+ <<: *filters_all_branches_and_tags
449
+ ruby_version: 'jruby-9.2-latest'
450
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2_11_1
451
+ # TruffleRuby
452
+ - &config-truffleruby-21_0_0
372
453
  <<: *filters_all_branches_and_tags
373
- ruby_version: 'jruby-9.2'
374
- image: marcotc/docker-library:ddtrace_rb_jruby_9_2
454
+ ruby_version: 'truffleruby-21.0.0'
455
+ image: ivoanjo/docker-library:ddtrace_rb_truffleruby_21_0_0
456
+ resource_class_to_use: large
375
457
 
376
458
  workflows:
377
459
  version: 2
@@ -394,55 +476,93 @@ workflows:
394
476
  - test-2.5
395
477
  - test-2.6
396
478
  - test-2.7
397
- - test-jruby-9.2
479
+ - test-3.0
480
+ - test-jruby-9.2.0.0
481
+ - test-jruby-9.2-latest
482
+ # soon™️ - test-truffleruby-21.0.0
483
+ - orb/changelog:
484
+ <<: *config-2_7
485
+ name: changelog
486
+ requires:
487
+ - build-2.7
488
+ filters:
489
+ branches:
490
+ only: /bump_to_version_.*/
491
+ # Integration
492
+ - orb/build_and_test_integration:
493
+ name: build_and_test_integration-2.0
494
+ integration_apps: 'ruby rack'
495
+ ruby_version: '2.0'
496
+ <<: *filters_all_branches_and_tags
497
+ - orb/build_and_test_integration:
498
+ name: build_and_test_integration-2.1
499
+ integration_apps: 'ruby rack'
500
+ ruby_version: '2.1'
501
+ <<: *filters_all_branches_and_tags
502
+ - orb/build_and_test_integration:
503
+ name: build_and_test_integration-2.2
504
+ integration_apps: 'ruby rack'
505
+ ruby_version: '2.2'
506
+ <<: *filters_all_branches_and_tags
507
+ - orb/build_and_test_integration:
508
+ name: build_and_test_integration-2.3
509
+ integration_apps: 'ruby rack rails-five'
510
+ ruby_version: '2.3'
511
+ <<: *filters_all_branches_and_tags
512
+ - orb/build_and_test_integration:
513
+ name: build_and_test_integration-2.4
514
+ integration_apps: 'ruby rack rails-five'
515
+ ruby_version: '2.4'
516
+ <<: *filters_all_branches_and_tags
517
+ - orb/build_and_test_integration:
518
+ name: build_and_test_integration-2.5
519
+ integration_apps: 'ruby rack rails-five'
520
+ ruby_version: '2.5'
521
+ <<: *filters_all_branches_and_tags
522
+ - orb/build_and_test_integration:
523
+ name: build_and_test_integration-2.6
524
+ integration_apps: 'ruby rack rails-five'
525
+ ruby_version: '2.6'
526
+ <<: *filters_all_branches_and_tags
527
+ - orb/build_and_test_integration:
528
+ name: build_and_test_integration-2.7
529
+ integration_apps: 'ruby rack rails-five'
530
+ ruby_version: '2.7'
531
+ <<: *filters_all_branches_and_tags
532
+ - orb/build_and_test_integration:
533
+ name: build_and_test_integration-3.0
534
+ # TODO: Get Rack & Rails apps working with Ruby 3.0
535
+ integration_apps: 'ruby'
536
+ ruby_version: '3.0'
537
+ <<: *filters_all_branches_and_tags
398
538
  # MRI
399
- - orb/checkout:
400
- <<: *config-2_0
401
- name: checkout-2.0
402
539
  - orb/build:
403
540
  <<: *config-2_0
404
541
  name: build-2.0
405
- requires:
406
- - checkout-2.0
407
542
  - orb/test:
408
543
  <<: *config-2_0
409
544
  name: test-2.0
410
545
  requires:
411
546
  - build-2.0
412
- - orb/checkout:
413
- <<: *config-2_1
414
- name: checkout-2.1
415
547
  - orb/build:
416
548
  <<: *config-2_1
417
549
  name: build-2.1
418
- requires:
419
- - checkout-2.1
420
550
  - orb/test:
421
551
  <<: *config-2_1
422
552
  name: test-2.1
423
553
  requires:
424
554
  - build-2.1
425
- - orb/checkout:
426
- <<: *config-2_2
427
- name: checkout-2.2
428
555
  - orb/build:
429
556
  <<: *config-2_2
430
557
  name: build-2.2
431
- requires:
432
- - checkout-2.2
433
558
  - orb/test:
434
559
  <<: *config-2_2
435
560
  name: test-2.2
436
561
  requires:
437
562
  - build-2.2
438
- - orb/checkout:
439
- <<: *config-2_3
440
- name: checkout-2.3
441
563
  - orb/build:
442
564
  <<: *config-2_3
443
565
  name: build-2.3
444
- requires:
445
- - checkout-2.3
446
566
  - orb/test:
447
567
  <<: *config-2_3
448
568
  name: test-2.3
@@ -453,72 +573,81 @@ workflows:
453
573
  name: benchmark-2.3
454
574
  requires:
455
575
  - build-2.3
456
- - orb/checkout:
457
- <<: *config-2_4
458
- name: checkout-2.4
459
576
  - orb/build:
460
577
  <<: *config-2_4
461
578
  name: build-2.4
462
- requires:
463
- - checkout-2.4
464
579
  - orb/test:
465
580
  <<: *config-2_4
466
581
  name: test-2.4
467
582
  requires:
468
583
  - build-2.4
469
- - orb/checkout:
470
- <<: *config-2_5
471
- name: checkout-2.5
472
584
  - orb/build:
473
585
  <<: *config-2_5
474
586
  name: build-2.5
475
- requires:
476
- - checkout-2.5
477
587
  - orb/test:
478
588
  <<: *config-2_5
479
589
  name: test-2.5
480
590
  requires:
481
591
  - build-2.5
482
- - orb/checkout:
483
- <<: *config-2_6
484
- name: checkout-2.6
485
592
  - orb/build:
486
593
  <<: *config-2_6
487
594
  name: build-2.6
488
- requires:
489
- - checkout-2.6
490
595
  - orb/test:
491
596
  <<: *config-2_6
492
597
  name: test-2.6
493
598
  requires:
494
599
  - build-2.6
495
- - orb/checkout:
496
- <<: *config-2_7
497
- name: checkout-2.7
498
600
  - orb/build:
499
601
  <<: *config-2_7
500
602
  name: build-2.7
501
- requires:
502
- - checkout-2.7
503
603
  - orb/test:
504
604
  <<: *config-2_7
505
605
  name: test-2.7
506
606
  requires:
507
607
  - build-2.7
608
+ - orb/build:
609
+ <<: *config-3_0
610
+ name: build-3.0
611
+ - orb/test:
612
+ <<: *config-3_0
613
+ name: test-3.0
614
+ requires:
615
+ - build-3.0
616
+ - orb/build:
617
+ <<: *config-3_0-jit
618
+ name: build-3.0-jit
619
+ - orb/test:
620
+ <<: *config-3_0-jit
621
+ name: test-3.0-jit
622
+ requires:
623
+ - build-3.0-jit
508
624
  # JRuby
509
- - orb/checkout:
510
- <<: *config-jruby-9_2
511
- name: checkout-jruby-9.2
512
625
  - orb/build:
513
- <<: *config-jruby-9_2
514
- name: build-jruby-9.2
626
+ <<: *config-jruby-9_2_0_0
627
+ name: build-jruby-9.2.0.0
628
+ - orb/test:
629
+ <<: *config-jruby-9_2_0_0
630
+ name: test-jruby-9.2.0.0
515
631
  requires:
516
- - checkout-jruby-9.2
632
+ - build-jruby-9.2.0.0
633
+ - orb/build:
634
+ <<: *config-jruby-9_2-latest
635
+ name: build-jruby-9.2-latest
517
636
  - orb/test:
518
- <<: *config-jruby-9_2
519
- name: test-jruby-9.2
637
+ <<: *config-jruby-9_2-latest
638
+ name: test-jruby-9.2-latest
520
639
  requires:
521
- - build-jruby-9.2
640
+ - build-jruby-9.2-latest
641
+ # TruffleRuby
642
+ # soon™️
643
+ # - orb/build:
644
+ # <<: *config-truffleruby-21_0_0
645
+ # name: build-truffleruby-21.0.0
646
+ # - orb/test:
647
+ # <<: *config-truffleruby-21_0_0
648
+ # name: test-truffleruby-21.0.0
649
+ # requires:
650
+ # - build-truffleruby-21.0.0
522
651
  # Release jobs
523
652
  - "deploy prerelease Gem":
524
653
  <<: *filters_all_branches_and_tags
@@ -532,7 +661,11 @@ workflows:
532
661
  - test-2.5
533
662
  - test-2.6
534
663
  - test-2.7
535
- - test-jruby-9.2
664
+ - test-3.0
665
+ - test-3.0-jit
666
+ - test-jruby-9.2.0.0
667
+ - test-jruby-9.2-latest
668
+ # soon™️ - test-truffleruby-21.0.0
536
669
  - "deploy release":
537
670
  <<: *filters_only_release_tags
538
671
  requires:
@@ -545,4 +678,8 @@ workflows:
545
678
  - test-2.5
546
679
  - test-2.6
547
680
  - test-2.7
548
- - test-jruby-9.2
681
+ - test-3.0
682
+ - test-3.0-jit
683
+ - test-jruby-9.2.0.0
684
+ - test-jruby-9.2-latest
685
+ # soon™️ - test-truffleruby-21.0.0