ddtrace 0.45.0 → 0.52.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 (586) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +22 -0
  3. data/.gitignore +7 -1
  4. data/CHANGELOG.md +406 -1
  5. data/CONTRIBUTING.md +1 -5
  6. data/LICENSE-3rdparty.csv +2 -0
  7. data/bin/ddtracerb +15 -0
  8. data/ddtrace.gemspec +19 -38
  9. data/docs/DevelopmentGuide.md +43 -0
  10. data/docs/GettingStarted.md +164 -76
  11. data/docs/ProfilingDevelopment.md +107 -0
  12. data/ext/ddtrace_profiling_native_extension/extconf.rb +28 -0
  13. data/ext/ddtrace_profiling_native_extension/profiling.c +17 -0
  14. data/lib/datadog/ci/configuration/components.rb +31 -0
  15. data/lib/datadog/ci/configuration/settings.rb +37 -0
  16. data/lib/datadog/ci/context_flush.rb +29 -0
  17. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +31 -0
  18. data/lib/datadog/ci/contrib/cucumber/ext.rb +20 -0
  19. data/lib/datadog/ci/contrib/cucumber/formatter.rb +98 -0
  20. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +27 -0
  21. data/lib/datadog/ci/contrib/cucumber/integration.rb +48 -0
  22. data/lib/datadog/ci/contrib/cucumber/patcher.rb +26 -0
  23. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +31 -0
  24. data/lib/datadog/ci/contrib/rspec/example.rb +74 -0
  25. data/lib/datadog/ci/contrib/rspec/ext.rb +19 -0
  26. data/lib/datadog/ci/contrib/rspec/integration.rb +49 -0
  27. data/lib/datadog/ci/contrib/rspec/patcher.rb +26 -0
  28. data/lib/datadog/ci/ext/app_types.rb +10 -0
  29. data/lib/datadog/ci/ext/environment.rb +443 -0
  30. data/lib/datadog/ci/ext/settings.rb +11 -0
  31. data/lib/datadog/ci/ext/test.rb +35 -0
  32. data/lib/datadog/ci/extensions.rb +18 -0
  33. data/lib/datadog/ci/test.rb +77 -0
  34. data/lib/datadog/ci.rb +17 -0
  35. data/lib/datadog/contrib.rb +69 -0
  36. data/lib/datadog/core/environment/cgroup.rb +52 -0
  37. data/lib/datadog/core/environment/class_count.rb +20 -0
  38. data/lib/datadog/core/environment/container.rb +91 -0
  39. data/lib/datadog/core/environment/ext.rb +27 -0
  40. data/lib/datadog/core/environment/gc.rb +19 -0
  41. data/lib/datadog/core/environment/identity.rb +51 -0
  42. data/lib/datadog/core/environment/socket.rb +17 -0
  43. data/lib/datadog/core/environment/thread_count.rb +19 -0
  44. data/lib/datadog/core/environment/variable_helpers.rb +42 -0
  45. data/lib/ddtrace/analytics.rb +3 -0
  46. data/lib/ddtrace/auto_instrument.rb +2 -0
  47. data/lib/ddtrace/auto_instrument_base.rb +1 -0
  48. data/lib/ddtrace/buffer.rb +10 -8
  49. data/lib/ddtrace/chunker.rb +1 -0
  50. data/lib/ddtrace/configuration/agent_settings_resolver.rb +231 -0
  51. data/lib/ddtrace/configuration/base.rb +9 -11
  52. data/lib/ddtrace/configuration/components.rb +167 -26
  53. data/lib/ddtrace/configuration/dependency_resolver.rb +1 -0
  54. data/lib/ddtrace/configuration/option.rb +1 -0
  55. data/lib/ddtrace/configuration/option_definition.rb +2 -3
  56. data/lib/ddtrace/configuration/option_definition_set.rb +1 -0
  57. data/lib/ddtrace/configuration/option_set.rb +1 -0
  58. data/lib/ddtrace/configuration/options.rb +7 -9
  59. data/lib/ddtrace/configuration/pin_setup.rb +1 -0
  60. data/lib/ddtrace/configuration/settings.rb +128 -10
  61. data/lib/ddtrace/configuration.rb +118 -26
  62. data/lib/ddtrace/context.rb +23 -20
  63. data/lib/ddtrace/context_flush.rb +15 -2
  64. data/lib/ddtrace/context_provider.rb +1 -1
  65. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +1 -0
  66. data/lib/ddtrace/contrib/action_cable/event.rb +6 -4
  67. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +1 -0
  68. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +1 -0
  69. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +1 -0
  70. data/lib/ddtrace/contrib/action_cable/events.rb +1 -0
  71. data/lib/ddtrace/contrib/action_cable/ext.rb +1 -0
  72. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +1 -0
  73. data/lib/ddtrace/contrib/action_cable/integration.rb +1 -0
  74. data/lib/ddtrace/contrib/action_cable/patcher.rb +1 -0
  75. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +22 -13
  76. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +2 -1
  77. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +1 -0
  78. data/lib/ddtrace/contrib/action_pack/ext.rb +1 -0
  79. data/lib/ddtrace/contrib/action_pack/integration.rb +1 -0
  80. data/lib/ddtrace/contrib/action_pack/patcher.rb +1 -0
  81. data/lib/ddtrace/contrib/action_pack/utils.rb +2 -1
  82. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +1 -0
  83. data/lib/ddtrace/contrib/action_view/event.rb +4 -3
  84. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  85. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  86. data/lib/ddtrace/contrib/action_view/events.rb +1 -0
  87. data/lib/ddtrace/contrib/action_view/ext.rb +1 -0
  88. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
  89. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +1 -0
  90. data/lib/ddtrace/contrib/action_view/integration.rb +1 -0
  91. data/lib/ddtrace/contrib/action_view/patcher.rb +5 -4
  92. data/lib/ddtrace/contrib/action_view/utils.rb +2 -1
  93. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +1 -0
  94. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -2
  95. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +1 -0
  96. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +1 -0
  97. data/lib/ddtrace/contrib/active_model_serializers/events.rb +1 -0
  98. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +1 -0
  99. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +1 -0
  100. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +1 -0
  101. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +31 -0
  102. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +108 -18
  103. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +1 -0
  104. data/lib/ddtrace/contrib/active_record/event.rb +3 -2
  105. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +1 -0
  106. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -0
  107. data/lib/ddtrace/contrib/active_record/events.rb +1 -0
  108. data/lib/ddtrace/contrib/active_record/ext.rb +1 -0
  109. data/lib/ddtrace/contrib/active_record/integration.rb +1 -0
  110. data/lib/ddtrace/contrib/active_record/patcher.rb +1 -0
  111. data/lib/ddtrace/contrib/active_record/utils.rb +5 -3
  112. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +1 -0
  113. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +8 -7
  114. data/lib/ddtrace/contrib/active_support/cache/redis.rb +2 -5
  115. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +1 -0
  116. data/lib/ddtrace/contrib/active_support/ext.rb +1 -0
  117. data/lib/ddtrace/contrib/active_support/integration.rb +1 -0
  118. data/lib/ddtrace/contrib/active_support/notifications/event.rb +5 -3
  119. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +3 -1
  120. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +10 -5
  121. data/lib/ddtrace/contrib/active_support/patcher.rb +1 -0
  122. data/lib/ddtrace/contrib/analytics.rb +1 -0
  123. data/lib/ddtrace/contrib/auto_instrument.rb +4 -3
  124. data/lib/ddtrace/contrib/aws/configuration/settings.rb +1 -0
  125. data/lib/ddtrace/contrib/aws/ext.rb +1 -0
  126. data/lib/ddtrace/contrib/aws/instrumentation.rb +30 -0
  127. data/lib/ddtrace/contrib/aws/integration.rb +1 -0
  128. data/lib/ddtrace/contrib/aws/parsed_context.rb +1 -0
  129. data/lib/ddtrace/contrib/aws/patcher.rb +6 -0
  130. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  131. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +1 -0
  132. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -0
  133. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  134. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +1 -0
  135. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +1 -0
  136. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +3 -1
  137. data/lib/ddtrace/contrib/configurable.rb +65 -40
  138. data/lib/ddtrace/contrib/configuration/resolver.rb +71 -5
  139. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -20
  140. data/lib/ddtrace/contrib/configuration/settings.rb +8 -6
  141. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +1 -0
  142. data/lib/ddtrace/contrib/dalli/ext.rb +1 -0
  143. data/lib/ddtrace/contrib/dalli/instrumentation.rb +2 -1
  144. data/lib/ddtrace/contrib/dalli/integration.rb +1 -0
  145. data/lib/ddtrace/contrib/dalli/patcher.rb +2 -39
  146. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -0
  147. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
  148. data/lib/ddtrace/contrib/delayed_job/ext.rb +1 -0
  149. data/lib/ddtrace/contrib/delayed_job/integration.rb +1 -0
  150. data/lib/ddtrace/contrib/delayed_job/patcher.rb +1 -0
  151. data/lib/ddtrace/contrib/delayed_job/plugin.rb +1 -1
  152. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +1 -0
  153. data/lib/ddtrace/contrib/elasticsearch/ext.rb +1 -0
  154. data/lib/ddtrace/contrib/elasticsearch/integration.rb +1 -0
  155. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +2 -0
  156. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +6 -2
  157. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +1 -0
  158. data/lib/ddtrace/contrib/ethon/easy_patch.rb +7 -6
  159. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  160. data/lib/ddtrace/contrib/ethon/integration.rb +1 -0
  161. data/lib/ddtrace/contrib/ethon/multi_patch.rb +2 -1
  162. data/lib/ddtrace/contrib/ethon/patcher.rb +4 -2
  163. data/lib/ddtrace/contrib/excon/configuration/settings.rb +1 -0
  164. data/lib/ddtrace/contrib/excon/ext.rb +1 -0
  165. data/lib/ddtrace/contrib/excon/integration.rb +1 -0
  166. data/lib/ddtrace/contrib/excon/middleware.rb +3 -6
  167. data/lib/ddtrace/contrib/excon/patcher.rb +1 -0
  168. data/lib/ddtrace/contrib/extensions.rb +64 -14
  169. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +1 -0
  170. data/lib/ddtrace/contrib/faraday/connection.rb +1 -0
  171. data/lib/ddtrace/contrib/faraday/ext.rb +1 -0
  172. data/lib/ddtrace/contrib/faraday/integration.rb +1 -0
  173. data/lib/ddtrace/contrib/faraday/middleware.rb +2 -3
  174. data/lib/ddtrace/contrib/faraday/patcher.rb +3 -38
  175. data/lib/ddtrace/contrib/faraday/rack_builder.rb +1 -0
  176. data/lib/ddtrace/contrib/grape/configuration/settings.rb +1 -0
  177. data/lib/ddtrace/contrib/grape/endpoint.rb +34 -31
  178. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  179. data/lib/ddtrace/contrib/grape/instrumentation.rb +4 -3
  180. data/lib/ddtrace/contrib/grape/integration.rb +1 -0
  181. data/lib/ddtrace/contrib/grape/patcher.rb +2 -43
  182. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +1 -0
  183. data/lib/ddtrace/contrib/graphql/ext.rb +1 -0
  184. data/lib/ddtrace/contrib/graphql/integration.rb +1 -0
  185. data/lib/ddtrace/contrib/graphql/patcher.rb +1 -0
  186. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +2 -0
  187. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +1 -0
  188. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +4 -4
  189. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +13 -8
  190. data/lib/ddtrace/contrib/grpc/ext.rb +1 -0
  191. data/lib/ddtrace/contrib/grpc/integration.rb +1 -0
  192. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +1 -0
  193. data/lib/ddtrace/contrib/grpc/patcher.rb +3 -37
  194. data/lib/ddtrace/contrib/http/circuit_breaker.rb +2 -3
  195. data/lib/ddtrace/contrib/http/configuration/settings.rb +1 -0
  196. data/lib/ddtrace/contrib/http/ext.rb +1 -0
  197. data/lib/ddtrace/contrib/http/instrumentation.rb +7 -6
  198. data/lib/ddtrace/contrib/http/integration.rb +1 -0
  199. data/lib/ddtrace/contrib/http/patcher.rb +2 -1
  200. data/lib/ddtrace/contrib/http_annotation_helper.rb +1 -0
  201. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +1 -0
  202. data/lib/ddtrace/contrib/httpclient/ext.rb +1 -0
  203. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +16 -20
  204. data/lib/ddtrace/contrib/httpclient/integration.rb +1 -0
  205. data/lib/ddtrace/contrib/httpclient/patcher.rb +8 -4
  206. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +1 -0
  207. data/lib/ddtrace/contrib/httprb/ext.rb +1 -0
  208. data/lib/ddtrace/contrib/httprb/instrumentation.rb +16 -21
  209. data/lib/ddtrace/contrib/httprb/integration.rb +1 -0
  210. data/lib/ddtrace/contrib/httprb/patcher.rb +8 -4
  211. data/lib/ddtrace/contrib/integration.rb +4 -3
  212. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +1 -0
  213. data/lib/ddtrace/contrib/kafka/consumer_event.rb +1 -0
  214. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +1 -0
  215. data/lib/ddtrace/contrib/kafka/event.rb +3 -2
  216. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +1 -0
  217. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +1 -0
  218. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +1 -0
  219. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
  220. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +1 -0
  221. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
  222. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
  223. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
  224. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +1 -0
  225. data/lib/ddtrace/contrib/kafka/events.rb +1 -0
  226. data/lib/ddtrace/contrib/kafka/ext.rb +1 -0
  227. data/lib/ddtrace/contrib/kafka/integration.rb +1 -0
  228. data/lib/ddtrace/contrib/kafka/patcher.rb +1 -0
  229. data/lib/ddtrace/contrib/lograge/configuration/settings.rb +19 -0
  230. data/lib/ddtrace/contrib/lograge/ext.rb +11 -0
  231. data/lib/ddtrace/contrib/lograge/instrumentation.rb +39 -0
  232. data/lib/ddtrace/contrib/lograge/integration.rb +46 -0
  233. data/lib/ddtrace/contrib/{cucumber → lograge}/patcher.rb +7 -4
  234. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +1 -0
  235. data/lib/ddtrace/contrib/mongodb/ext.rb +1 -0
  236. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +5 -2
  237. data/lib/ddtrace/contrib/mongodb/integration.rb +1 -0
  238. data/lib/ddtrace/contrib/mongodb/parsers.rb +1 -0
  239. data/lib/ddtrace/contrib/mongodb/patcher.rb +3 -2
  240. data/lib/ddtrace/contrib/mongodb/subscribers.rb +3 -3
  241. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +1 -0
  242. data/lib/ddtrace/contrib/mysql2/ext.rb +1 -0
  243. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +2 -1
  244. data/lib/ddtrace/contrib/mysql2/integration.rb +1 -0
  245. data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -1
  246. data/lib/ddtrace/contrib/patchable.rb +3 -2
  247. data/lib/ddtrace/contrib/patcher.rb +12 -8
  248. data/lib/ddtrace/contrib/presto/configuration/settings.rb +1 -0
  249. data/lib/ddtrace/contrib/presto/ext.rb +1 -0
  250. data/lib/ddtrace/contrib/presto/instrumentation.rb +2 -1
  251. data/lib/ddtrace/contrib/presto/integration.rb +1 -0
  252. data/lib/ddtrace/contrib/presto/patcher.rb +7 -3
  253. data/lib/ddtrace/contrib/qless/configuration/settings.rb +1 -0
  254. data/lib/ddtrace/contrib/qless/ext.rb +1 -0
  255. data/lib/ddtrace/contrib/qless/integration.rb +1 -0
  256. data/lib/ddtrace/contrib/qless/patcher.rb +5 -5
  257. data/lib/ddtrace/contrib/qless/qless_job.rb +2 -0
  258. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +2 -0
  259. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  260. data/lib/ddtrace/contrib/que/ext.rb +20 -19
  261. data/lib/ddtrace/contrib/que/integration.rb +1 -0
  262. data/lib/ddtrace/contrib/que/patcher.rb +1 -0
  263. data/lib/ddtrace/contrib/que/tracer.rb +2 -1
  264. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -0
  265. data/lib/ddtrace/contrib/racecar/event.rb +4 -2
  266. data/lib/ddtrace/contrib/racecar/events/batch.rb +1 -0
  267. data/lib/ddtrace/contrib/racecar/events/consume.rb +1 -0
  268. data/lib/ddtrace/contrib/racecar/events/message.rb +1 -0
  269. data/lib/ddtrace/contrib/racecar/events.rb +1 -0
  270. data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
  271. data/lib/ddtrace/contrib/racecar/integration.rb +1 -0
  272. data/lib/ddtrace/contrib/racecar/patcher.rb +1 -0
  273. data/lib/ddtrace/contrib/rack/configuration/settings.rb +4 -3
  274. data/lib/ddtrace/contrib/rack/ext.rb +1 -0
  275. data/lib/ddtrace/contrib/rack/integration.rb +1 -0
  276. data/lib/ddtrace/contrib/rack/middlewares.rb +7 -11
  277. data/lib/ddtrace/contrib/rack/patcher.rb +2 -3
  278. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -0
  279. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +1 -0
  280. data/lib/ddtrace/contrib/rails/configuration/settings.rb +1 -0
  281. data/lib/ddtrace/contrib/rails/ext.rb +1 -0
  282. data/lib/ddtrace/contrib/rails/framework.rb +26 -1
  283. data/lib/ddtrace/contrib/rails/integration.rb +1 -0
  284. data/lib/ddtrace/contrib/rails/log_injection.rb +1 -40
  285. data/lib/ddtrace/contrib/rails/middlewares.rb +1 -0
  286. data/lib/ddtrace/contrib/rails/patcher.rb +18 -11
  287. data/lib/ddtrace/contrib/rails/railtie.rb +1 -0
  288. data/lib/ddtrace/contrib/rails/utils.rb +1 -0
  289. data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -0
  290. data/lib/ddtrace/contrib/rake/ext.rb +1 -0
  291. data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -3
  292. data/lib/ddtrace/contrib/rake/integration.rb +1 -0
  293. data/lib/ddtrace/contrib/rake/patcher.rb +2 -1
  294. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +12 -4
  295. data/lib/ddtrace/contrib/redis/configuration/settings.rb +1 -0
  296. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  297. data/lib/ddtrace/contrib/redis/integration.rb +1 -0
  298. data/lib/ddtrace/contrib/redis/patcher.rb +1 -0
  299. data/lib/ddtrace/contrib/redis/quantize.rb +2 -0
  300. data/lib/ddtrace/contrib/redis/tags.rb +1 -0
  301. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  302. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +7 -7
  303. data/lib/ddtrace/contrib/registerable.rb +5 -4
  304. data/lib/ddtrace/contrib/registry.rb +3 -2
  305. data/lib/ddtrace/contrib/resque/configuration/settings.rb +18 -1
  306. data/lib/ddtrace/contrib/resque/ext.rb +1 -0
  307. data/lib/ddtrace/contrib/resque/integration.rb +2 -1
  308. data/lib/ddtrace/contrib/resque/patcher.rb +5 -4
  309. data/lib/ddtrace/contrib/resque/resque_job.rb +25 -1
  310. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +1 -0
  311. data/lib/ddtrace/contrib/rest_client/ext.rb +1 -0
  312. data/lib/ddtrace/contrib/rest_client/integration.rb +1 -0
  313. data/lib/ddtrace/contrib/rest_client/patcher.rb +3 -1
  314. data/lib/ddtrace/contrib/rest_client/request_patch.rb +3 -4
  315. data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +19 -0
  316. data/lib/ddtrace/contrib/semantic_logger/ext.rb +11 -0
  317. data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +43 -0
  318. data/lib/ddtrace/contrib/semantic_logger/integration.rb +48 -0
  319. data/lib/ddtrace/contrib/semantic_logger/patcher.rb +26 -0
  320. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +1 -0
  321. data/lib/ddtrace/contrib/sequel/database.rb +2 -1
  322. data/lib/ddtrace/contrib/sequel/dataset.rb +2 -1
  323. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  324. data/lib/ddtrace/contrib/sequel/integration.rb +1 -0
  325. data/lib/ddtrace/contrib/sequel/patcher.rb +3 -2
  326. data/lib/ddtrace/contrib/sequel/utils.rb +6 -6
  327. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +2 -0
  328. data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -0
  329. data/lib/ddtrace/contrib/shoryuken/integration.rb +1 -0
  330. data/lib/ddtrace/contrib/shoryuken/patcher.rb +1 -0
  331. data/lib/ddtrace/contrib/shoryuken/tracer.rb +8 -4
  332. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +1 -0
  333. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  334. data/lib/ddtrace/contrib/sidekiq/ext.rb +1 -0
  335. data/lib/ddtrace/contrib/sidekiq/integration.rb +1 -0
  336. data/lib/ddtrace/contrib/sidekiq/patcher.rb +1 -0
  337. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +3 -7
  338. data/lib/ddtrace/contrib/sidekiq/tracing.rb +1 -1
  339. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +1 -0
  340. data/lib/ddtrace/contrib/sinatra/env.rb +2 -3
  341. data/lib/ddtrace/contrib/sinatra/ext.rb +1 -0
  342. data/lib/ddtrace/contrib/sinatra/headers.rb +2 -3
  343. data/lib/ddtrace/contrib/sinatra/integration.rb +1 -0
  344. data/lib/ddtrace/contrib/sinatra/patcher.rb +3 -1
  345. data/lib/ddtrace/contrib/sinatra/tracer.rb +14 -6
  346. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +11 -4
  347. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  348. data/lib/ddtrace/contrib/sneakers/ext.rb +12 -11
  349. data/lib/ddtrace/contrib/sneakers/integration.rb +1 -0
  350. data/lib/ddtrace/contrib/sneakers/patcher.rb +1 -0
  351. data/lib/ddtrace/contrib/sneakers/tracer.rb +3 -4
  352. data/lib/ddtrace/contrib/status_code_matcher.rb +6 -3
  353. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -0
  354. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +5 -6
  355. data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -0
  356. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +5 -0
  357. data/lib/ddtrace/contrib/sucker_punch/integration.rb +1 -0
  358. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +2 -0
  359. data/lib/ddtrace/correlation.rb +3 -1
  360. data/lib/ddtrace/diagnostics/environment_logger.rb +9 -7
  361. data/lib/ddtrace/diagnostics/health.rb +1 -0
  362. data/lib/ddtrace/distributed_tracing/headers/b3.rb +1 -0
  363. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +1 -0
  364. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -0
  365. data/lib/ddtrace/distributed_tracing/headers/headers.rb +2 -0
  366. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +2 -3
  367. data/lib/ddtrace/encoding.rb +3 -0
  368. data/lib/ddtrace/error.rb +78 -8
  369. data/lib/ddtrace/event.rb +1 -0
  370. data/lib/ddtrace/ext/analytics.rb +1 -0
  371. data/lib/ddtrace/ext/app_types.rb +1 -1
  372. data/lib/ddtrace/ext/correlation.rb +1 -0
  373. data/lib/ddtrace/ext/diagnostics.rb +1 -0
  374. data/lib/ddtrace/ext/distributed.rb +2 -1
  375. data/lib/ddtrace/ext/environment.rb +8 -0
  376. data/lib/ddtrace/ext/errors.rb +1 -0
  377. data/lib/ddtrace/ext/forced_tracing.rb +1 -0
  378. data/lib/ddtrace/ext/git.rb +10 -1
  379. data/lib/ddtrace/ext/http.rb +2 -1
  380. data/lib/ddtrace/ext/integration.rb +1 -0
  381. data/lib/ddtrace/ext/manual_tracing.rb +1 -0
  382. data/lib/ddtrace/ext/metrics.rb +1 -0
  383. data/lib/ddtrace/ext/net.rb +1 -0
  384. data/lib/ddtrace/ext/priority.rb +1 -0
  385. data/lib/ddtrace/ext/profiling.rb +56 -0
  386. data/lib/ddtrace/ext/runtime.rb +1 -7
  387. data/lib/ddtrace/ext/sampling.rb +1 -0
  388. data/lib/ddtrace/ext/sql.rb +1 -0
  389. data/lib/ddtrace/ext/test.rb +3 -18
  390. data/lib/ddtrace/ext/transport.rb +3 -0
  391. data/lib/ddtrace/forced_tracing.rb +3 -0
  392. data/lib/ddtrace/logger.rb +2 -1
  393. data/lib/ddtrace/metrics.rb +84 -24
  394. data/lib/ddtrace/opentelemetry/extensions.rb +2 -1
  395. data/lib/ddtrace/opentelemetry/span.rb +1 -0
  396. data/lib/ddtrace/opentracer/binary_propagator.rb +1 -0
  397. data/lib/ddtrace/opentracer/carrier.rb +1 -0
  398. data/lib/ddtrace/opentracer/distributed_headers.rb +4 -0
  399. data/lib/ddtrace/opentracer/global_tracer.rb +1 -0
  400. data/lib/ddtrace/opentracer/propagator.rb +1 -0
  401. data/lib/ddtrace/opentracer/rack_propagator.rb +1 -0
  402. data/lib/ddtrace/opentracer/scope.rb +1 -0
  403. data/lib/ddtrace/opentracer/scope_manager.rb +1 -0
  404. data/lib/ddtrace/opentracer/span.rb +3 -6
  405. data/lib/ddtrace/opentracer/span_context.rb +1 -0
  406. data/lib/ddtrace/opentracer/span_context_factory.rb +1 -0
  407. data/lib/ddtrace/opentracer/text_map_propagator.rb +1 -0
  408. data/lib/ddtrace/opentracer/thread_local_scope.rb +2 -0
  409. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +1 -0
  410. data/lib/ddtrace/opentracer/tracer.rb +1 -0
  411. data/lib/ddtrace/opentracer.rb +21 -39
  412. data/lib/ddtrace/patcher.rb +28 -6
  413. data/lib/ddtrace/pin.rb +9 -61
  414. data/lib/ddtrace/pipeline/span_filter.rb +2 -1
  415. data/lib/ddtrace/pipeline/span_processor.rb +1 -0
  416. data/lib/ddtrace/pipeline.rb +1 -0
  417. data/lib/ddtrace/profiling/backtrace_location.rb +33 -0
  418. data/lib/ddtrace/profiling/buffer.rb +42 -0
  419. data/lib/ddtrace/profiling/collectors/stack.rb +257 -0
  420. data/lib/ddtrace/profiling/encoding/profile.rb +38 -0
  421. data/lib/ddtrace/profiling/event.rb +14 -0
  422. data/lib/ddtrace/profiling/events/stack.rb +81 -0
  423. data/lib/ddtrace/profiling/exporter.rb +24 -0
  424. data/lib/ddtrace/profiling/ext/cpu.rb +67 -0
  425. data/lib/ddtrace/profiling/ext/cthread.rb +156 -0
  426. data/lib/ddtrace/profiling/ext/forking.rb +98 -0
  427. data/lib/ddtrace/profiling/flush.rb +44 -0
  428. data/lib/ddtrace/profiling/native_extension.rb +18 -0
  429. data/lib/ddtrace/profiling/pprof/builder.rb +120 -0
  430. data/lib/ddtrace/profiling/pprof/converter.rb +90 -0
  431. data/lib/ddtrace/profiling/pprof/message_set.rb +15 -0
  432. data/lib/ddtrace/profiling/pprof/payload.rb +19 -0
  433. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  434. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +82 -0
  435. data/lib/ddtrace/profiling/pprof/stack_sample.rb +117 -0
  436. data/lib/ddtrace/profiling/pprof/string_table.rb +11 -0
  437. data/lib/ddtrace/profiling/pprof/template.rb +119 -0
  438. data/lib/ddtrace/profiling/preload.rb +4 -0
  439. data/lib/ddtrace/profiling/profiler.rb +31 -0
  440. data/lib/ddtrace/profiling/recorder.rb +96 -0
  441. data/lib/ddtrace/profiling/scheduler.rb +134 -0
  442. data/lib/ddtrace/profiling/tasks/setup.rb +82 -0
  443. data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +41 -0
  444. data/lib/ddtrace/profiling/trace_identifiers/helper.rb +46 -0
  445. data/lib/ddtrace/profiling/transport/client.rb +15 -0
  446. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +101 -0
  447. data/lib/ddtrace/profiling/transport/http/api/instance.rb +37 -0
  448. data/lib/ddtrace/profiling/transport/http/api/spec.rb +41 -0
  449. data/lib/ddtrace/profiling/transport/http/api.rb +44 -0
  450. data/lib/ddtrace/profiling/transport/http/builder.rb +29 -0
  451. data/lib/ddtrace/profiling/transport/http/client.rb +34 -0
  452. data/lib/ddtrace/profiling/transport/http/response.rb +22 -0
  453. data/lib/ddtrace/profiling/transport/http.rb +120 -0
  454. data/lib/ddtrace/profiling/transport/io/client.rb +28 -0
  455. data/lib/ddtrace/profiling/transport/io/response.rb +17 -0
  456. data/lib/ddtrace/profiling/transport/io.rb +31 -0
  457. data/lib/ddtrace/profiling/transport/parcel.rb +18 -0
  458. data/lib/ddtrace/profiling/transport/request.rb +16 -0
  459. data/lib/ddtrace/profiling/transport/response.rb +9 -0
  460. data/lib/ddtrace/profiling.rb +151 -0
  461. data/lib/ddtrace/propagation/grpc_propagator.rb +2 -0
  462. data/lib/ddtrace/propagation/http_propagator.rb +3 -2
  463. data/lib/ddtrace/quantization/hash.rb +1 -0
  464. data/lib/ddtrace/quantization/http.rb +4 -0
  465. data/lib/ddtrace/runtime/metrics.rb +21 -14
  466. data/lib/ddtrace/sampler.rb +2 -1
  467. data/lib/ddtrace/sampling/matcher.rb +1 -0
  468. data/lib/ddtrace/sampling/rate_limiter.rb +1 -0
  469. data/lib/ddtrace/sampling/rule.rb +2 -1
  470. data/lib/ddtrace/sampling/rule_sampler.rb +6 -10
  471. data/lib/ddtrace/sampling.rb +1 -0
  472. data/lib/ddtrace/span.rb +44 -19
  473. data/lib/ddtrace/sync_writer.rb +17 -15
  474. data/lib/ddtrace/tasks/exec.rb +47 -0
  475. data/lib/ddtrace/tasks/help.rb +15 -0
  476. data/lib/ddtrace/tracer.rb +48 -50
  477. data/lib/ddtrace/transport/http/adapters/net.rb +28 -8
  478. data/lib/ddtrace/transport/http/adapters/registry.rb +2 -0
  479. data/lib/ddtrace/transport/http/adapters/test.rb +1 -0
  480. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +3 -4
  481. data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
  482. data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
  483. data/lib/ddtrace/transport/http/api/instance.rb +1 -0
  484. data/lib/ddtrace/transport/http/api/map.rb +1 -0
  485. data/lib/ddtrace/transport/http/api/spec.rb +1 -0
  486. data/lib/ddtrace/transport/http/api.rb +1 -0
  487. data/lib/ddtrace/transport/http/builder.rb +8 -1
  488. data/lib/ddtrace/transport/http/client.rb +3 -1
  489. data/lib/ddtrace/transport/http/env.rb +9 -0
  490. data/lib/ddtrace/transport/http/response.rb +1 -0
  491. data/lib/ddtrace/transport/http/statistics.rb +3 -2
  492. data/lib/ddtrace/transport/http/traces.rb +6 -6
  493. data/lib/ddtrace/transport/http.rb +51 -38
  494. data/lib/ddtrace/transport/io/client.rb +17 -9
  495. data/lib/ddtrace/transport/io/response.rb +2 -3
  496. data/lib/ddtrace/transport/io/traces.rb +10 -1
  497. data/lib/ddtrace/transport/io.rb +2 -1
  498. data/lib/ddtrace/transport/parcel.rb +7 -0
  499. data/lib/ddtrace/transport/request.rb +1 -0
  500. data/lib/ddtrace/transport/response.rb +1 -0
  501. data/lib/ddtrace/transport/statistics.rb +1 -0
  502. data/lib/ddtrace/transport/traces.rb +21 -3
  503. data/lib/ddtrace/utils/compression.rb +28 -0
  504. data/lib/ddtrace/utils/database.rb +1 -0
  505. data/lib/ddtrace/utils/forking.rb +2 -1
  506. data/lib/ddtrace/utils/object_set.rb +40 -0
  507. data/lib/ddtrace/utils/only_once.rb +41 -0
  508. data/lib/ddtrace/utils/sequence.rb +18 -0
  509. data/lib/ddtrace/utils/string_table.rb +46 -0
  510. data/lib/ddtrace/utils/time.rb +34 -2
  511. data/lib/ddtrace/utils.rb +14 -2
  512. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  513. data/lib/ddtrace/vendor/active_record/connection_specification.rb +1 -0
  514. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  515. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +117 -0
  516. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +58 -0
  517. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +136 -0
  518. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +10 -0
  519. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +9 -0
  520. data/lib/ddtrace/vendor/multipart-post/multipart.rb +13 -0
  521. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +33 -0
  522. data/lib/ddtrace/version.rb +15 -2
  523. data/lib/ddtrace/worker.rb +1 -0
  524. data/lib/ddtrace/workers/async.rb +15 -5
  525. data/lib/ddtrace/workers/loop.rb +32 -5
  526. data/lib/ddtrace/workers/polling.rb +13 -5
  527. data/lib/ddtrace/workers/queue.rb +3 -1
  528. data/lib/ddtrace/workers/runtime_metrics.rb +15 -1
  529. data/lib/ddtrace/workers/trace_writer.rb +14 -16
  530. data/lib/ddtrace/workers.rb +8 -2
  531. data/lib/ddtrace/writer.rb +14 -7
  532. data/lib/ddtrace.rb +20 -56
  533. metadata +130 -446
  534. data/.circleci/config.yml +0 -566
  535. data/.circleci/images/primary/Dockerfile-2.0.0 +0 -73
  536. data/.circleci/images/primary/Dockerfile-2.1.10 +0 -73
  537. data/.circleci/images/primary/Dockerfile-2.2.10 +0 -73
  538. data/.circleci/images/primary/Dockerfile-2.3.8 +0 -75
  539. data/.circleci/images/primary/Dockerfile-2.4.6 +0 -73
  540. data/.circleci/images/primary/Dockerfile-2.5.6 +0 -73
  541. data/.circleci/images/primary/Dockerfile-2.6.4 +0 -73
  542. data/.circleci/images/primary/Dockerfile-2.7.0 +0 -73
  543. data/.circleci/images/primary/Dockerfile-3.0.0 +0 -73
  544. data/.circleci/images/primary/Dockerfile-jruby-9.2 +0 -77
  545. data/.dockerignore +0 -1
  546. data/.env +0 -26
  547. data/.github/CODEOWNERS +0 -1
  548. data/.github/workflows/add-milestone-to-pull-requests.yml +0 -42
  549. data/.github/workflows/create-next-milestone.yml +0 -20
  550. data/.gitlab-ci.yml +0 -27
  551. data/.rspec +0 -1
  552. data/.rubocop.yml +0 -85
  553. data/.simplecov +0 -41
  554. data/Appraisals +0 -1350
  555. data/Gemfile +0 -9
  556. data/Rakefile +0 -993
  557. data/benchmarks/postgres_database.yml +0 -9
  558. data/benchmarks/sidekiq_test.rb +0 -154
  559. data/docker-compose.yml +0 -400
  560. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  561. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  562. data/lib/ddtrace/augmentation/shim.rb +0 -102
  563. data/lib/ddtrace/augmentation.rb +0 -13
  564. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -38
  565. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -19
  566. data/lib/ddtrace/contrib/cucumber/formatter.rb +0 -104
  567. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +0 -24
  568. data/lib/ddtrace/contrib/cucumber/integration.rb +0 -45
  569. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -38
  570. data/lib/ddtrace/contrib/rspec/example.rb +0 -61
  571. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  572. data/lib/ddtrace/contrib/rspec/ext.rb +0 -19
  573. data/lib/ddtrace/contrib/rspec/integration.rb +0 -46
  574. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -25
  575. data/lib/ddtrace/environment.rb +0 -41
  576. data/lib/ddtrace/ext/ci.rb +0 -297
  577. data/lib/ddtrace/monkey.rb +0 -58
  578. data/lib/ddtrace/runtime/cgroup.rb +0 -44
  579. data/lib/ddtrace/runtime/class_count.rb +0 -17
  580. data/lib/ddtrace/runtime/container.rb +0 -73
  581. data/lib/ddtrace/runtime/gc.rb +0 -16
  582. data/lib/ddtrace/runtime/identity.rb +0 -40
  583. data/lib/ddtrace/runtime/object_space.rb +0 -19
  584. data/lib/ddtrace/runtime/socket.rb +0 -14
  585. data/lib/ddtrace/runtime/thread_count.rb +0 -16
  586. data/tasks/release_gem.rake +0 -28
data/.circleci/config.yml DELETED
@@ -1,566 +0,0 @@
1
- version: 2.1
2
-
3
- # Common variables, containers, jobs and steps.
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.
8
- working_directory: /app
9
- shell: /bin/bash --login
10
-
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
- - &container_parameters_environment
27
- - *container_base_environment
28
- - RUBY_OPT: <<# parameters.jit >>--jit<</ parameters.jit >>
29
- - TEST_DATADOG_INTEGRATION: 1
30
- - COVERAGE_BASE_DIR: coverage
31
- - &container_base
32
- image: <<parameters.image>>
33
- environment:
34
- *container_parameters_environment
35
- - &test_job_default
36
- <<: *job_defaults
37
- <<: *job_parameters
38
- docker:
39
- - *container_base
40
- - &container_postgres
41
- image: postgres:9.6
42
- environment:
43
- - POSTGRES_PASSWORD=postgres
44
- - POSTGRES_USER=postgres
45
- - POSTGRES_DB=postgres
46
- - &postgres_port 5432
47
- - &container_presto
48
- image: prestosql/presto
49
- - &presto_port 8080
50
- - &container_mysql
51
- image: mysql:5.6
52
- environment:
53
- - MYSQL_ROOT_PASSWORD=root
54
- - MYSQL_PASSWORD=mysql
55
- - MYSQL_USER=mysql
56
- - &mysql_port 3306
57
- - &container_elasticsearch
58
- image: elasticsearch:2.4
59
- - &elasticsearch_port 9200
60
- - &container_redis
61
- image: redis:3.0
62
- - &redis_port 6379
63
- - &container_mongo
64
- image: mongo:3.5
65
- - &mongo_port 27017
66
- - &container_memcached
67
- image: memcached:1.5-alpine
68
- - &memcached_port 11211
69
- - &container_agent
70
- image: datadog/docker-dd-agent
71
- environment:
72
- - DD_APM_ENABLED=true
73
- - DD_BIND_HOST=0.0.0.0
74
- - DD_API_KEY=invalid_key_but_this_is_fine
75
- - &agent_port 8126
76
-
77
- step_init_bundle_checksum: &step_init_bundle_checksum
78
- run:
79
- name: Initialize bundle cache key
80
- command: |
81
- touch .circleci/bundle_checksum
82
- step_bundle_install: &step_bundle_install
83
- run:
84
- name: Install gem dependencies
85
- command: bundle install
86
- step_rubocop: &step_rubocop
87
- run:
88
- name: Delint with Rubocop
89
- command: bundle exec rake rubocop
90
- step_appraisal_install: &step_appraisal_install
91
- run:
92
- name: Install Appraisal gems
93
- command: |
94
- bundle exec appraisal clean # Ensure we fetch the latest version of dependencies
95
- bundle exec appraisal install
96
- step_compute_bundle_checksum: &step_compute_bundle_checksum
97
- run:
98
- name: Compute bundle checksum
99
- command: |
100
- # JRuby: Ensure files exist when Appraisal generates no output
101
- mkdir gemfiles
102
- touch gemfiles/_.gemfile.lock
103
- cat Gemfile.lock gemfiles/*.gemfile.lock > .circleci/bundle_checksum
104
- step_run_all_tests: &step_run_all_tests
105
- run:
106
- name: Run tests
107
- command: |
108
- echo "
109
- --format=progress
110
- --format=RspecJunitFormatter
111
- --out='/tmp/rspec/-<%= ARGV.join.gsub('/', '-') %>.xml'
112
- " > .rspec-local # Configure RSpec metadata exporter
113
- bundle exec rake ci
114
- step_release_docs: &step_release_docs
115
- run:
116
- name: Upload release docs
117
- command: S3_DIR=trace bundle exec rake release:docs
118
-
119
- filters_all_branches_and_tags: &filters_all_branches_and_tags
120
- filters:
121
- tags:
122
- only: /.*/
123
- filters_only_release_tags: &filters_only_release_tags
124
- filters:
125
- branches:
126
- ignore: /.*/
127
- tags:
128
- only: /^v\d+(\.\d+){0,3}(\.(alpha|beta|rc)\d+)?$/
129
-
130
- orbs:
131
- orb:
132
- jobs:
133
- build:
134
- <<: *test_job_default
135
- steps:
136
- - checkout
137
- - restore_cache:
138
- keys:
139
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
140
- - restore_cache:
141
- keys:
142
- - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
143
- - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-
144
- - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}
145
- - *step_init_bundle_checksum
146
- - restore_cache:
147
- keys:
148
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
149
- - *step_bundle_install
150
- - *step_appraisal_install
151
- - *step_compute_bundle_checksum
152
- - save_cache:
153
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
154
- paths:
155
- - /app
156
- - save_cache:
157
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
158
- paths:
159
- - /usr/local/bundle
160
- - save_cache:
161
- 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" }}'
162
- paths:
163
- - /usr/local/bundle
164
- test:
165
- <<: *test_job_default
166
- docker:
167
- - <<: *container_base
168
- - *container_postgres
169
- - *container_presto
170
- - *container_mysql
171
- - *container_elasticsearch
172
- - *container_redis
173
- - *container_mongo
174
- - *container_memcached
175
- - *container_agent
176
- parallelism: 22
177
- steps:
178
- - restore_cache:
179
- keys:
180
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
181
- - restore_cache:
182
- keys:
183
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
184
- - run:
185
- name: Set coverage report directory
186
- command: |
187
- # Create a unique coverage directory for this job, to avoid conflicts when merging all results
188
- echo 'export COVERAGE_DIR="$COVERAGE_BASE_DIR/versions/$CIRCLE_JOB/$CIRCLE_NODE_INDEX"' >> $BASH_ENV
189
- # Wait for containers to start
190
- - docker-wait:
191
- port: *postgres_port
192
- - docker-wait:
193
- port: *presto_port
194
- - docker-wait:
195
- port: *mysql_port
196
- - docker-wait:
197
- port: *elasticsearch_port
198
- - docker-wait:
199
- port: *redis_port
200
- - docker-wait:
201
- port: *mongo_port
202
- - docker-wait:
203
- port: *memcached_port
204
- - docker-wait:
205
- port: *agent_port
206
- - *step_run_all_tests
207
- - store_test_results:
208
- path: /tmp/rspec
209
- - persist_to_workspace:
210
- root: .
211
- paths:
212
- - coverage
213
- benchmark:
214
- <<: *test_job_default
215
- docker:
216
- - <<: *container_base
217
- - *container_postgres
218
- - *container_redis
219
- - *container_agent
220
- steps:
221
- - restore_cache:
222
- keys:
223
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
224
- - restore_cache:
225
- keys:
226
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
227
- - run:
228
- name: Run Benchmark
229
- command: bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
230
- - run:
231
- name: Run Benchmark without ddtracer
232
- 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
233
- lint:
234
- <<: *test_job_default
235
- steps:
236
- - restore_cache:
237
- keys:
238
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
239
- - restore_cache:
240
- keys:
241
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
242
- - *step_rubocop
243
- coverage:
244
- <<: *test_job_default
245
- steps:
246
- - restore_cache:
247
- keys:
248
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
249
- - restore_cache:
250
- keys:
251
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
252
- - attach_workspace:
253
- at: /tmp/workspace
254
- - run:
255
- name: Install codecov
256
- command: bundle add codecov
257
- - run:
258
- name: Generate coverage report artifact "coverage/index.html"
259
- command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
260
- - run:
261
- name: Generate coverage report artifact "coverage/versions/*/index.html"
262
- command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report_per_ruby_version
263
- - store_artifacts:
264
- path: /tmp/workspace/coverage/report/
265
- destination: coverage
266
- changelog:
267
- <<: *test_job_default
268
- steps:
269
- - restore_cache:
270
- keys:
271
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
272
- - restore_cache:
273
- keys:
274
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
275
- - attach_workspace:
276
- at: /tmp/workspace
277
- - run:
278
- name: Format changelog
279
- command: bundle exec rake changelog:format
280
- - run:
281
- name: Check if changelog was unformatted
282
- command: |
283
- if ! git diff-files --quiet; then
284
- echo "Please run 'bundle exec rake changelog:format' and commit the results."
285
- fi
286
- commands:
287
- docker-wait:
288
- description: Wait for containers to listen on a TCP port.
289
- parameters:
290
- port:
291
- description: TCP port the container is listening on.
292
- type: integer
293
- timeout:
294
- description: How long to wait for the port to be responsive.
295
- type: string
296
- default: 1m
297
- steps:
298
- - run:
299
- name: Wait for container on port <<parameters.port>>
300
- command: dockerize -wait 'tcp://localhost:<<parameters.port>>' -timeout '<<parameters.timeout>>'
301
- executors:
302
-
303
- jobs:
304
- "deploy release":
305
- <<: *job_defaults
306
- docker:
307
- - environment:
308
- *container_base_environment
309
- image: marcotc/docker-library:ddtrace_rb_2_5_6
310
- steps:
311
- - checkout
312
- - run:
313
- name: Install AWS CLI
314
- command: |
315
- apt-get -y -qq update
316
- apt-get -y -qq install awscli
317
- - *step_bundle_install
318
- - *step_release_docs
319
- - run:
320
- name: Upload release Gem and rebuild index
321
- command: S3_DIR=release bundle exec rake release:gem
322
- - store_artifacts:
323
- path: pkg/
324
- destination: gem
325
- "deploy prerelease Gem":
326
- <<: *job_defaults
327
- docker:
328
- - environment:
329
- *container_base_environment
330
- image: marcotc/docker-library:ddtrace_rb_2_5_6
331
- steps:
332
- - run:
333
- name: Check if this commit author has publishing credentials
334
- command: |
335
- if [[ -z "${AWS_ACCESS_KEY_ID}" ]]
336
- then
337
- echo 'No AWS credentials, skipping publish of pre-release build.'
338
- circleci task halt
339
- fi
340
- - checkout
341
- - run:
342
- name: Install AWS CLI
343
- command: |
344
- apt-get -y -qq update
345
- apt-get -y -qq install awscli
346
- - *step_bundle_install
347
- - run:
348
- name: Rename to pre-release version based on branch name and build number
349
- command: |
350
- # create safe version string
351
- PRE=$(echo "${CIRCLE_BRANCH:-unknown}.${CIRCLE_BUILD_NUM:-R$RANDOM}" | sed -e 's/[^a-zA-Z0-9+]\{1,\}/./g')
352
- echo PRE=$PRE
353
- sed lib/ddtrace/version.rb -i -e "s/^\([\t ]*PRE\) *=*/\1 = \'${PRE}\' #/g"
354
- - run:
355
- name: Upload prereleas Gem and rebuild index
356
- command: S3_DIR=prerelease bundle exec rake release:gem
357
- - store_artifacts:
358
- path: pkg/
359
- destination: gem
360
-
361
- job_configuration:
362
- # MRI
363
- - &config-2_0
364
- <<: *filters_all_branches_and_tags
365
- ruby_version: '2.0'
366
- image: palazzem/docker-library:ddtrace_rb_2_0_0
367
- - &config-2_1
368
- <<: *filters_all_branches_and_tags
369
- ruby_version: '2.1'
370
- image: palazzem/docker-library:ddtrace_rb_2_1_10
371
- - &config-2_2
372
- <<: *filters_all_branches_and_tags
373
- ruby_version: '2.2'
374
- image: palazzem/docker-library:ddtrace_rb_2_2_10
375
- - &config-2_3
376
- <<: *filters_all_branches_and_tags
377
- ruby_version: '2.3'
378
- image: palazzem/docker-library:ddtrace_rb_2_3_8
379
- - &config-2_4
380
- <<: *filters_all_branches_and_tags
381
- ruby_version: '2.4'
382
- image: palazzem/docker-library:ddtrace_rb_2_4_6
383
- - &config-2_5
384
- <<: *filters_all_branches_and_tags
385
- ruby_version: '2.5'
386
- image: marcotc/docker-library:ddtrace_rb_2_5_6
387
- - &config-2_6
388
- <<: *filters_all_branches_and_tags
389
- ruby_version: '2.6'
390
- image: marcotc/docker-library:ddtrace_rb_2_6_4
391
- - &config-2_7
392
- <<: *filters_all_branches_and_tags
393
- ruby_version: '2.7'
394
- image: marcotc/docker-library:ddtrace_rb_2_7_0
395
- - &config-3_0
396
- <<: *filters_all_branches_and_tags
397
- ruby_version: '3.0'
398
- image: marcotc/docker-library:ddtrace_rb_3.0.0
399
- - &config-3_0-jit
400
- <<: *filters_all_branches_and_tags
401
- ruby_version: '3.0'
402
- image: marcotc/docker-library:ddtrace_rb_3.0.0
403
- jit: true
404
- # JRuby
405
- - &config-jruby-9_2
406
- <<: *filters_all_branches_and_tags
407
- ruby_version: 'jruby-9.2'
408
- image: marcotc/docker-library:ddtrace_rb_jruby_9_2
409
-
410
- workflows:
411
- version: 2
412
- build-and-test:
413
- jobs:
414
- - orb/lint:
415
- <<: *config-2_6
416
- name: lint
417
- requires:
418
- - build-2.6
419
- - orb/coverage:
420
- <<: *config-2_7
421
- name: coverage
422
- requires:
423
- - test-2.0
424
- - test-2.1
425
- - test-2.2
426
- - test-2.3
427
- - test-2.4
428
- - test-2.5
429
- - test-2.6
430
- - test-2.7
431
- - test-3.0
432
- - test-jruby-9.2
433
- - orb/changelog:
434
- <<: *config-2_7
435
- name: changelog
436
- requires:
437
- - build-2.7
438
- filters:
439
- branches:
440
- only: /bump_to_version_.*/
441
- # MRI
442
- - orb/build:
443
- <<: *config-2_0
444
- name: build-2.0
445
- - orb/test:
446
- <<: *config-2_0
447
- name: test-2.0
448
- requires:
449
- - build-2.0
450
- - orb/build:
451
- <<: *config-2_1
452
- name: build-2.1
453
- - orb/test:
454
- <<: *config-2_1
455
- name: test-2.1
456
- requires:
457
- - build-2.1
458
- - orb/build:
459
- <<: *config-2_2
460
- name: build-2.2
461
- - orb/test:
462
- <<: *config-2_2
463
- name: test-2.2
464
- requires:
465
- - build-2.2
466
- - orb/build:
467
- <<: *config-2_3
468
- name: build-2.3
469
- - orb/test:
470
- <<: *config-2_3
471
- name: test-2.3
472
- requires:
473
- - build-2.3
474
- - orb/benchmark:
475
- <<: *config-2_3
476
- name: benchmark-2.3
477
- requires:
478
- - build-2.3
479
- - orb/build:
480
- <<: *config-2_4
481
- name: build-2.4
482
- - orb/test:
483
- <<: *config-2_4
484
- name: test-2.4
485
- requires:
486
- - build-2.4
487
- - orb/build:
488
- <<: *config-2_5
489
- name: build-2.5
490
- - orb/test:
491
- <<: *config-2_5
492
- name: test-2.5
493
- requires:
494
- - build-2.5
495
- - orb/build:
496
- <<: *config-2_6
497
- name: build-2.6
498
- - orb/test:
499
- <<: *config-2_6
500
- name: test-2.6
501
- requires:
502
- - build-2.6
503
- - orb/build:
504
- <<: *config-2_7
505
- name: build-2.7
506
- - orb/test:
507
- <<: *config-2_7
508
- name: test-2.7
509
- requires:
510
- - build-2.7
511
- - orb/build:
512
- <<: *config-3_0
513
- name: build-3.0
514
- - orb/test:
515
- <<: *config-3_0
516
- name: test-3.0
517
- requires:
518
- - build-3.0
519
- - orb/build:
520
- <<: *config-3_0-jit
521
- name: build-3.0-jit
522
- - orb/test:
523
- <<: *config-3_0-jit
524
- name: test-3.0-jit
525
- requires:
526
- - build-3.0-jit
527
- # JRuby
528
- - orb/build:
529
- <<: *config-jruby-9_2
530
- name: build-jruby-9.2
531
- - orb/test:
532
- <<: *config-jruby-9_2
533
- name: test-jruby-9.2
534
- requires:
535
- - build-jruby-9.2
536
- # Release jobs
537
- - "deploy prerelease Gem":
538
- <<: *filters_all_branches_and_tags
539
- requires:
540
- - lint
541
- - test-2.0
542
- - test-2.1
543
- - test-2.2
544
- - test-2.3
545
- - test-2.4
546
- - test-2.5
547
- - test-2.6
548
- - test-2.7
549
- - test-3.0
550
- - test-3.0-jit
551
- - test-jruby-9.2
552
- - "deploy release":
553
- <<: *filters_only_release_tags
554
- requires:
555
- - lint
556
- - test-2.0
557
- - test-2.1
558
- - test-2.2
559
- - test-2.3
560
- - test-2.4
561
- - test-2.5
562
- - test-2.6
563
- - test-2.7
564
- - test-3.0
565
- - test-3.0-jit
566
- - test-jruby-9.2
@@ -1,73 +0,0 @@
1
- # Last version: https://github.com/docker-library/ruby/blob/c387c6c3a2505060514e31c247cb37d22c944e55/2.0/Dockerfile
2
- FROM ruby:2.0.0
3
-
4
- # Add Jessie repos
5
- # Fixes https://superuser.com/questions/1423486/issue-with-fetching-http-deb-debian-org-debian-dists-jessie-updates-inrelease
6
- RUN printf "deb http://archive.debian.org/debian/ jessie main\ndeb-src http://archive.debian.org/debian/ jessie main\ndeb http://security.debian.org jessie/updates main\ndeb-src http://security.debian.org jessie/updates main" > /etc/apt/sources.list
7
-
8
- # Make apt non-interactive
9
- RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/90circleci \
10
- && echo 'DPkg::Options "--force-confnew";' >> /etc/apt/apt.conf.d/90circleci
11
-
12
- ENV DEBIAN_FRONTEND=noninteractive
13
-
14
- # Install required packages
15
- RUN set -ex; \
16
- apt-get update; \
17
- mkdir -p /usr/share/man/man1; \
18
- apt-get install -y --no-install-recommends \
19
- git mercurial xvfb \
20
- locales sudo openssh-client ca-certificates tar gzip parallel \
21
- net-tools netcat unzip zip bzip2 gnupg curl wget \
22
- tzdata rsync vim; \
23
- rm -rf /var/lib/apt/lists/*;
24
-
25
- # Set timezone to UTC by default
26
- RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
27
-
28
- # Set language
29
- RUN locale-gen en_US.UTF-8
30
- ENV LANG en_US.UTF-8
31
- ENV LANGUAGE en_US:en
32
-
33
- # Install jq
34
- RUN JQ_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/jq-latest" \
35
- && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/jq $JQ_URL \
36
- && chmod +x /usr/bin/jq \
37
- && jq --version
38
-
39
- # Install Docker
40
- RUN set -ex \
41
- && export DOCKER_VERSION=$(curl --silent --fail --retry 3 https://download.docker.com/linux/static/stable/x86_64/ | grep -o -e 'docker-[.0-9]*-ce\.tgz' | sort -r | head -n 1) \
42
- && DOCKER_URL="https://download.docker.com/linux/static/stable/x86_64/${DOCKER_VERSION}" \
43
- && echo Docker URL: $DOCKER_URL \
44
- && curl --silent --show-error --location --fail --retry 3 --output /tmp/docker.tgz "${DOCKER_URL}" \
45
- && ls -lha /tmp/docker.tgz \
46
- && tar -xz -C /tmp -f /tmp/docker.tgz \
47
- && mv /tmp/docker/* /usr/bin \
48
- && rm -rf /tmp/docker /tmp/docker.tgz \
49
- && which docker \
50
- && (docker version || true)
51
-
52
- # Install Docker Compose
53
- RUN COMPOSE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/docker-compose-latest" \
54
- && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/docker-compose $COMPOSE_URL \
55
- && chmod +x /usr/bin/docker-compose \
56
- && docker-compose version
57
-
58
- # Install Dockerize
59
- RUN DOCKERIZE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/dockerize-latest.tar.gz" \
60
- && curl --silent --show-error --location --fail --retry 3 --output /tmp/dockerize-linux-amd64.tar.gz $DOCKERIZE_URL \
61
- && tar -C /usr/local/bin -xzvf /tmp/dockerize-linux-amd64.tar.gz \
62
- && rm -rf /tmp/dockerize-linux-amd64.tar.gz \
63
- && dockerize --version
64
-
65
- # Install RubyGems
66
- RUN gem update --system 2.7.9
67
- RUN gem install bundler -v '1.17.3'
68
- ENV BUNDLE_SILENCE_ROOT_WARNING 1
69
-
70
- RUN mkdir /app
71
- WORKDIR /app
72
-
73
- CMD ["/bin/sh"]