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