ls-trace 0.1.2 → 0.2.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 (337) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +419 -544
  3. data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  4. data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
  5. data/.env +2 -0
  6. data/.gitignore +2 -0
  7. data/.gitlab-ci.yml +27 -0
  8. data/.rubocop.yml +8 -0
  9. data/.simplecov +38 -0
  10. data/Appraisals +299 -48
  11. data/CHANGELOG.md +3 -4
  12. data/LICENSE +4 -22
  13. data/LICENSE.Apache +200 -0
  14. data/LICENSE.BSD3 +24 -0
  15. data/NOTICE +4 -0
  16. data/README.md +4 -3
  17. data/Rakefile +561 -405
  18. data/ddtrace.gemspec +13 -4
  19. data/docker-compose.yml +96 -2
  20. data/docs/DevelopmentGuide.md +17 -1
  21. data/docs/GettingStarted.md +433 -138
  22. data/lib/ddtrace.rb +15 -0
  23. data/lib/ddtrace/analytics.rb +7 -0
  24. data/lib/ddtrace/buffer.rb +9 -9
  25. data/lib/ddtrace/chunker.rb +34 -0
  26. data/lib/ddtrace/configuration.rb +59 -5
  27. data/lib/ddtrace/configuration/base.rb +4 -2
  28. data/lib/ddtrace/configuration/components.rb +151 -0
  29. data/lib/ddtrace/configuration/option.rb +12 -3
  30. data/lib/ddtrace/configuration/option_definition.rb +1 -5
  31. data/lib/ddtrace/configuration/options.rb +6 -1
  32. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  33. data/lib/ddtrace/configuration/settings.rb +214 -40
  34. data/lib/ddtrace/context.rb +84 -63
  35. data/lib/ddtrace/context_flush.rb +51 -114
  36. data/lib/ddtrace/context_provider.rb +50 -0
  37. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
  38. data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
  39. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  40. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  41. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  42. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  43. data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
  44. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  45. data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
  46. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  47. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +6 -2
  48. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +3 -15
  49. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  50. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  51. data/lib/ddtrace/contrib/action_pack/integration.rb +5 -3
  52. data/lib/ddtrace/contrib/action_pack/patcher.rb +3 -9
  53. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  54. data/lib/ddtrace/contrib/action_view/event.rb +39 -0
  55. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  56. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
  57. data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
  58. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  59. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +9 -13
  60. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +16 -16
  61. data/lib/ddtrace/contrib/action_view/integration.rb +5 -3
  62. data/lib/ddtrace/contrib/action_view/patcher.rb +19 -25
  63. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  64. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
  65. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  66. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +6 -5
  67. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +3 -10
  68. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
  69. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  70. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +4 -1
  71. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
  72. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  73. data/lib/ddtrace/contrib/active_record/integration.rb +5 -3
  74. data/lib/ddtrace/contrib/active_record/patcher.rb +3 -9
  75. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
  76. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +10 -24
  77. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  78. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  79. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  80. data/lib/ddtrace/contrib/active_support/integration.rb +5 -3
  81. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  82. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
  83. data/lib/ddtrace/contrib/active_support/patcher.rb +3 -9
  84. data/lib/ddtrace/contrib/analytics.rb +5 -1
  85. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  86. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  87. data/lib/ddtrace/contrib/aws/integration.rb +8 -2
  88. data/lib/ddtrace/contrib/aws/patcher.rb +15 -15
  89. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  90. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  91. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  92. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +8 -2
  93. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +4 -11
  94. data/lib/ddtrace/contrib/configurable.rb +30 -13
  95. data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
  96. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  97. data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
  98. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  99. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  100. data/lib/ddtrace/contrib/dalli/integration.rb +5 -3
  101. data/lib/ddtrace/contrib/dalli/patcher.rb +6 -16
  102. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
  103. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  104. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  105. data/lib/ddtrace/contrib/delayed_job/integration.rb +8 -2
  106. data/lib/ddtrace/contrib/delayed_job/patcher.rb +4 -10
  107. data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
  108. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  109. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  110. data/lib/ddtrace/contrib/elasticsearch/integration.rb +5 -3
  111. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +10 -17
  112. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -2
  113. data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
  114. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  115. data/lib/ddtrace/contrib/ethon/integration.rb +14 -2
  116. data/lib/ddtrace/contrib/ethon/patcher.rb +7 -9
  117. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  118. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  119. data/lib/ddtrace/contrib/excon/integration.rb +13 -2
  120. data/lib/ddtrace/contrib/excon/middleware.rb +15 -12
  121. data/lib/ddtrace/contrib/excon/patcher.rb +4 -11
  122. data/lib/ddtrace/contrib/extensions.rb +39 -5
  123. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  124. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  125. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  126. data/lib/ddtrace/contrib/faraday/integration.rb +10 -3
  127. data/lib/ddtrace/contrib/faraday/middleware.rb +24 -34
  128. data/lib/ddtrace/contrib/faraday/patcher.rb +26 -19
  129. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  130. data/lib/ddtrace/contrib/grape/endpoint.rb +14 -5
  131. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  132. data/lib/ddtrace/contrib/grape/integration.rb +6 -3
  133. data/lib/ddtrace/contrib/grape/patcher.rb +9 -15
  134. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  135. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  136. data/lib/ddtrace/contrib/graphql/integration.rb +6 -5
  137. data/lib/ddtrace/contrib/graphql/patcher.rb +11 -14
  138. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  139. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  140. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +2 -4
  141. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  142. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  143. data/lib/ddtrace/contrib/grpc/integration.rb +5 -3
  144. data/lib/ddtrace/contrib/grpc/patcher.rb +9 -19
  145. data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
  146. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -2
  147. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  148. data/lib/ddtrace/contrib/http/instrumentation.rb +89 -28
  149. data/lib/ddtrace/contrib/http/integration.rb +13 -0
  150. data/lib/ddtrace/contrib/http/patcher.rb +3 -9
  151. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  152. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  153. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  154. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  155. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  156. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  157. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  158. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  159. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  160. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  161. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  162. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  163. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  164. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  165. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  166. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  167. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  168. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  169. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  170. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  171. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  172. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  173. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  174. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  175. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  176. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  177. data/lib/ddtrace/contrib/mongodb/integration.rb +5 -3
  178. data/lib/ddtrace/contrib/mongodb/patcher.rb +5 -11
  179. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
  180. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  181. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  182. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  183. data/lib/ddtrace/contrib/mysql2/integration.rb +8 -2
  184. data/lib/ddtrace/contrib/mysql2/patcher.rb +3 -9
  185. data/lib/ddtrace/contrib/patchable.rb +21 -4
  186. data/lib/ddtrace/contrib/patcher.rb +44 -10
  187. data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
  188. data/lib/ddtrace/contrib/presto/ext.rb +28 -0
  189. data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
  190. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  191. data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
  192. data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
  193. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  194. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  195. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  196. data/lib/ddtrace/contrib/que/tracer.rb +56 -0
  197. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  198. data/lib/ddtrace/contrib/racecar/event.rb +4 -0
  199. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  200. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  201. data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
  202. data/lib/ddtrace/contrib/racecar/integration.rb +6 -3
  203. data/lib/ddtrace/contrib/racecar/patcher.rb +4 -10
  204. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  205. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  206. data/lib/ddtrace/contrib/rack/integration.rb +8 -2
  207. data/lib/ddtrace/contrib/rack/middlewares.rb +23 -14
  208. data/lib/ddtrace/contrib/rack/patcher.rb +57 -22
  209. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
  210. data/lib/ddtrace/contrib/rails/configuration/settings.rb +23 -10
  211. data/lib/ddtrace/contrib/rails/ext.rb +7 -2
  212. data/lib/ddtrace/contrib/rails/framework.rb +59 -35
  213. data/lib/ddtrace/contrib/rails/integration.rb +12 -5
  214. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  215. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  216. data/lib/ddtrace/contrib/rails/patcher.rb +19 -8
  217. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  218. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  219. data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -2
  220. data/lib/ddtrace/contrib/rake/integration.rb +8 -2
  221. data/lib/ddtrace/contrib/rake/patcher.rb +4 -10
  222. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
  223. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  224. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  225. data/lib/ddtrace/contrib/redis/integration.rb +9 -3
  226. data/lib/ddtrace/contrib/redis/patcher.rb +20 -17
  227. data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
  228. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
  229. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  230. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  231. data/lib/ddtrace/contrib/resque/integration.rb +12 -2
  232. data/lib/ddtrace/contrib/resque/patcher.rb +4 -10
  233. data/lib/ddtrace/contrib/resque/resque_job.rb +6 -2
  234. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  235. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  236. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -2
  237. data/lib/ddtrace/contrib/rest_client/patcher.rb +5 -7
  238. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  239. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  240. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  241. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  242. data/lib/ddtrace/contrib/sequel/integration.rb +8 -2
  243. data/lib/ddtrace/contrib/sequel/patcher.rb +4 -10
  244. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  245. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  246. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  247. data/lib/ddtrace/contrib/shoryuken/integration.rb +11 -7
  248. data/lib/ddtrace/contrib/shoryuken/patcher.rb +4 -10
  249. data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
  250. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +12 -2
  251. data/lib/ddtrace/contrib/sidekiq/ext.rb +8 -2
  252. data/lib/ddtrace/contrib/sidekiq/integration.rb +5 -3
  253. data/lib/ddtrace/contrib/sidekiq/patcher.rb +19 -18
  254. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +12 -3
  255. data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
  256. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  257. data/lib/ddtrace/contrib/sinatra/env.rb +25 -4
  258. data/lib/ddtrace/contrib/sinatra/ext.rb +11 -2
  259. data/lib/ddtrace/contrib/sinatra/integration.rb +5 -3
  260. data/lib/ddtrace/contrib/sinatra/patcher.rb +5 -10
  261. data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -34
  262. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +48 -15
  263. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  264. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  265. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  266. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  267. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  268. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  269. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  270. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
  271. data/lib/ddtrace/contrib/sucker_punch/integration.rb +5 -3
  272. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +8 -14
  273. data/lib/ddtrace/correlation.rb +15 -5
  274. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  275. data/lib/ddtrace/diagnostics/health.rb +11 -8
  276. data/lib/ddtrace/encoding.rb +15 -11
  277. data/lib/ddtrace/environment.rb +21 -3
  278. data/lib/ddtrace/event.rb +52 -0
  279. data/lib/ddtrace/ext/analytics.rb +1 -0
  280. data/lib/ddtrace/ext/correlation.rb +11 -0
  281. data/lib/ddtrace/ext/diagnostics.rb +11 -0
  282. data/lib/ddtrace/ext/environment.rb +16 -0
  283. data/lib/ddtrace/ext/forced_tracing.rb +1 -1
  284. data/lib/ddtrace/ext/sampling.rb +16 -0
  285. data/lib/ddtrace/ext/transport.rb +1 -0
  286. data/lib/ddtrace/logger.rb +4 -3
  287. data/lib/ddtrace/metrics.rb +12 -5
  288. data/lib/ddtrace/monkey.rb +1 -1
  289. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  290. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  291. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  292. data/lib/ddtrace/pin.rb +40 -16
  293. data/lib/ddtrace/pipeline.rb +1 -1
  294. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  295. data/lib/ddtrace/propagation/http_propagator.rb +2 -2
  296. data/lib/ddtrace/runtime/cgroup.rb +1 -1
  297. data/lib/ddtrace/runtime/container.rb +1 -1
  298. data/lib/ddtrace/runtime/metrics.rb +23 -6
  299. data/lib/ddtrace/sampler.rb +126 -29
  300. data/lib/ddtrace/sampling.rb +2 -0
  301. data/lib/ddtrace/sampling/matcher.rb +57 -0
  302. data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
  303. data/lib/ddtrace/sampling/rule.rb +61 -0
  304. data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
  305. data/lib/ddtrace/span.rb +54 -7
  306. data/lib/ddtrace/sync_writer.rb +13 -8
  307. data/lib/ddtrace/tracer.rb +72 -92
  308. data/lib/ddtrace/transport/http.rb +16 -1
  309. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  310. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  311. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  312. data/lib/ddtrace/transport/http/api/instance.rb +4 -0
  313. data/lib/ddtrace/transport/http/builder.rb +3 -5
  314. data/lib/ddtrace/transport/http/client.rb +7 -64
  315. data/lib/ddtrace/transport/http/response.rb +1 -1
  316. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  317. data/lib/ddtrace/transport/http/traces.rb +10 -7
  318. data/lib/ddtrace/transport/io.rb +26 -0
  319. data/lib/ddtrace/transport/io/client.rb +76 -0
  320. data/lib/ddtrace/transport/io/response.rb +25 -0
  321. data/lib/ddtrace/transport/io/traces.rb +91 -0
  322. data/lib/ddtrace/transport/response.rb +11 -0
  323. data/lib/ddtrace/transport/statistics.rb +2 -2
  324. data/lib/ddtrace/transport/traces.rb +160 -10
  325. data/lib/ddtrace/utils.rb +1 -1
  326. data/lib/ddtrace/version.rb +2 -2
  327. data/lib/ddtrace/worker.rb +20 -0
  328. data/lib/ddtrace/workers.rb +5 -13
  329. data/lib/ddtrace/workers/async.rb +165 -0
  330. data/lib/ddtrace/workers/loop.rb +105 -0
  331. data/lib/ddtrace/workers/polling.rb +48 -0
  332. data/lib/ddtrace/workers/queue.rb +39 -0
  333. data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
  334. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  335. data/lib/ddtrace/writer.rb +56 -38
  336. metadata +185 -25
  337. data/lib/ddtrace/provider.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 23b563efb9937c9361e2cdc8112b9f07c56ee527a6f4c0427e7e401f3d0a4d9c
4
- data.tar.gz: b78f6a15c995f62c4f60bc95e033fd807731aa23080e74aebf7df8dc1db425fd
3
+ metadata.gz: 69e1169797953f3fda0637271a3cb3e99c4f389ce9577e4e36d7183cf23ee3a0
4
+ data.tar.gz: aa9122a012f5db464ed4443fac17bd9c8fbf1248c69d8e314f4b4863a4554d96
5
5
  SHA512:
6
- metadata.gz: 9ba6750910fc405ccad0f4ccad2503767fa48a3f21099089084ae4a6c36e6f04e207b4bf593b0dd132c66de661e055c27868f90c063403dbb7be19630383e7ea
7
- data.tar.gz: b72608bbe8c7fc462e07a80bb585c7de21a049a4a7a0b61145c3ceb0cec383417b39a3b792b40d99bd31bb537a6160b7fb9a7fb9d606ce99fa29d7fd3d614be3
6
+ metadata.gz: 2ce41180b43c231d32e2ee513824fba6dfaa93dfcd5d2c918ebdcd33770e19dcc0d724e05a7cea34ed09085e932474d4e0e6436606c87e4dd97757738820879c
7
+ data.tar.gz: 5eb7cedb0a5dd135a33d4fd9899a5ed3bb3c479dea82a3966ffb08a5108df8f3e3233369318075398968df65fa6e7244bfbfda2529d3e9e6282a754122627d5c
@@ -1,45 +1,22 @@
1
+ version: 2.1
2
+
1
3
  # Common variables, containers, jobs and steps.
2
4
  job_defaults: &job_defaults
3
5
  working_directory: /app
4
6
  shell: /bin/bash --login
5
7
 
6
- ruby_containers: &ruby_containers
7
- - &container-2_0
8
- image: palazzem/docker-library:ddtrace_rb_2_0_0
9
- environment:
10
- - BUNDLE_GEMFILE=/app/Gemfile
11
- - &container-2_1
12
- image: palazzem/docker-library:ddtrace_rb_2_1_10
13
- environment:
14
- - BUNDLE_GEMFILE=/app/Gemfile
15
- - &container-2_2
16
- image: palazzem/docker-library:ddtrace_rb_2_2_10
17
- environment:
18
- - BUNDLE_GEMFILE=/app/Gemfile
19
- - &container-2_3
20
- image: palazzem/docker-library:ddtrace_rb_2_3_8
21
- environment:
22
- - BUNDLE_GEMFILE=/app/Gemfile
23
- - &container-2_4
24
- image: palazzem/docker-library:ddtrace_rb_2_4_6
25
- environment:
26
- - BUNDLE_GEMFILE=/app/Gemfile
27
- - &container-2_5
28
- image: marcotc/docker-library:ddtrace_rb_2_5_6
29
- environment:
30
- - BUNDLE_GEMFILE=/app/Gemfile
31
- - &container-2_6
32
- image: marcotc/docker-library:ddtrace_rb_2_6_4
8
+ test_containers:
9
+ - &container_base
33
10
  environment:
34
11
  - BUNDLE_GEMFILE=/app/Gemfile
35
-
36
- test_containers: &test_containers
37
12
  - &container_postgres
38
13
  image: postgres:9.6
39
14
  environment:
40
15
  - POSTGRES_PASSWORD=postgres
41
16
  - POSTGRES_USER=postgres
42
17
  - POSTGRES_DB=postgres
18
+ - &container_presto
19
+ image: prestosql/presto
43
20
  - &container_mysql
44
21
  image: mysql:5.6
45
22
  environment:
@@ -77,11 +54,16 @@ step_rubocop: &step_rubocop
77
54
  step_appraisal_install: &step_appraisal_install
78
55
  run:
79
56
  name: Install Appraisal gems
80
- command: bundle exec appraisal install
57
+ command: |
58
+ bundle exec appraisal clean # Ensure we fetch the latest version of dependencies
59
+ bundle exec appraisal install
81
60
  step_compute_bundle_checksum: &step_compute_bundle_checksum
82
61
  run:
83
62
  name: Compute bundle checksum
84
63
  command: |
64
+ # JRuby: Ensure files exist when Appraisal generates no output
65
+ mkdir gemfiles
66
+ touch gemfiles/_.gemfile.lock
85
67
  cat Gemfile.lock gemfiles/*.gemfile.lock > .circleci/bundle_checksum
86
68
  step_run_all_tests: &step_run_all_tests
87
69
  run:
@@ -103,432 +85,208 @@ filters_only_release_tags: &filters_only_release_tags
103
85
  tags:
104
86
  only: /^v\d+(\.\d+){0,3}(\.(alpha|beta|rc)\d+)?$/
105
87
 
106
- version: 2.0
107
- jobs:
108
- checkout-2.0:
109
- <<: *job_defaults
110
- docker:
111
- - *container-2_0
112
- steps:
113
- - checkout
114
- - save_cache:
115
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
116
- paths:
117
- - /app
118
- build-2.0:
119
- <<: *job_defaults
120
- docker:
121
- - *container-2_0
122
- steps:
123
- - restore_cache:
124
- keys:
125
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
126
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
127
- - *step_init_bundle_checksum
128
- - restore_cache:
129
- keys:
130
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
131
- - *step_bundle_install
132
- - *step_appraisal_install
133
- - *step_compute_bundle_checksum
134
- - save_cache:
135
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
136
- paths:
137
- - /app
138
- - save_cache:
139
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
140
- paths:
141
- - /usr/local/bundle
142
- test-2.0:
143
- <<: *job_defaults
144
- docker:
145
- - <<: *container-2_0
146
- environment:
147
- - TEST_DATADOG_INTEGRATION: 1
148
- - *container_postgres
149
- - *container_mysql
150
- - *container_elasticsearch
151
- - *container_redis
152
- - *container_mongo
153
- - *container_memcached
154
- - *container_agent
155
- steps:
156
- - restore_cache:
157
- keys:
158
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.0-{{ .Environment.CIRCLE_SHA1 }}'
159
- - restore_cache:
160
- keys:
161
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.0-{{ checksum ".circleci/bundle_checksum" }}'
162
- - *step_run_all_tests
163
- checkout-2.1:
164
- <<: *job_defaults
165
- docker:
166
- - *container-2_1
167
- steps:
168
- - checkout
169
- - save_cache:
170
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
171
- paths:
172
- - /app
173
- build-2.1:
174
- <<: *job_defaults
175
- docker:
176
- - *container-2_1
177
- steps:
178
- - restore_cache:
179
- keys:
180
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
181
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
182
- - *step_init_bundle_checksum
183
- - restore_cache:
184
- keys:
185
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
186
- - *step_bundle_install
187
- - *step_rubocop
188
- - *step_appraisal_install
189
- - *step_compute_bundle_checksum
190
- - save_cache:
191
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
192
- paths:
193
- - /app
194
- - save_cache:
195
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
196
- paths:
197
- - /usr/local/bundle
198
- test-2.1:
199
- <<: *job_defaults
200
- docker:
201
- - <<: *container-2_1
202
- environment:
203
- - TEST_DATADOG_INTEGRATION: 1
204
- - *container_postgres
205
- - *container_mysql
206
- - *container_elasticsearch
207
- - *container_redis
208
- - *container_mongo
209
- - *container_memcached
210
- - *container_agent
211
- steps:
212
- - restore_cache:
213
- keys:
214
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.1-{{ .Environment.CIRCLE_SHA1 }}'
215
- - restore_cache:
216
- keys:
217
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.1-{{ checksum ".circleci/bundle_checksum" }}'
218
- - *step_run_all_tests
219
- checkout-2.2:
220
- <<: *job_defaults
221
- docker:
222
- - *container-2_2
223
- steps:
224
- - checkout
225
- - save_cache:
226
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
227
- paths:
228
- - /app
229
- build-2.2:
230
- <<: *job_defaults
231
- docker:
232
- - *container-2_2
233
- steps:
234
- - restore_cache:
235
- keys:
236
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
237
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
238
- - *step_init_bundle_checksum
239
- - restore_cache:
240
- keys:
241
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
242
- - *step_bundle_install
243
- - *step_rubocop
244
- - *step_appraisal_install
245
- - *step_compute_bundle_checksum
246
- - save_cache:
247
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
248
- paths:
249
- - /app
250
- - save_cache:
251
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
252
- paths:
253
- - /usr/local/bundle
254
- test-2.2:
255
- <<: *job_defaults
256
- docker:
257
- - <<: *container-2_2
258
- environment:
259
- - TEST_DATADOG_INTEGRATION: 1
260
- - *container_postgres
261
- - *container_mysql
262
- - *container_elasticsearch
263
- - *container_redis
264
- - *container_mongo
265
- - *container_memcached
266
- - *container_agent
267
- steps:
268
- - restore_cache:
269
- keys:
270
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.2-{{ .Environment.CIRCLE_SHA1 }}'
271
- - restore_cache:
272
- keys:
273
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.2-{{ checksum ".circleci/bundle_checksum" }}'
274
- - *step_run_all_tests
275
- checkout-2.3:
276
- <<: *job_defaults
277
- docker:
278
- - *container-2_3
279
- steps:
280
- - checkout
281
- - save_cache:
282
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
283
- paths:
284
- - /app
285
- build-2.3:
286
- <<: *job_defaults
287
- docker:
288
- - *container-2_3
289
- steps:
290
- - restore_cache:
291
- keys:
292
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
293
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
294
- - *step_init_bundle_checksum
295
- - restore_cache:
296
- keys:
297
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
298
- - *step_bundle_install
299
- - *step_rubocop
300
- - *step_appraisal_install
301
- - *step_compute_bundle_checksum
302
- - save_cache:
303
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
304
- paths:
305
- - /app
306
- - save_cache:
307
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
308
- paths:
309
- - /usr/local/bundle
310
- test-2.3:
311
- <<: *job_defaults
312
- docker:
313
- - <<: *container-2_3
314
- environment:
315
- - TEST_DATADOG_INTEGRATION: 1
316
- - *container_postgres
317
- - *container_mysql
318
- - *container_elasticsearch
319
- - *container_redis
320
- - *container_mongo
321
- - *container_memcached
322
- - *container_agent
323
- steps:
324
- - restore_cache:
325
- keys:
326
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
327
- - restore_cache:
328
- keys:
329
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
330
- - *step_run_all_tests
331
- benchmark-2.3:
332
- <<: *job_defaults
333
- docker:
334
- - <<: *container-2_3
335
- environment:
336
- - TEST_DATADOG_INTEGRATION: 1
337
- - *container_postgres
338
- - *container_redis
339
- - *container_agent
340
- steps:
341
- - restore_cache:
342
- keys:
343
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.3-{{ .Environment.CIRCLE_SHA1 }}'
344
- - restore_cache:
345
- keys:
346
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.3-{{ checksum ".circleci/bundle_checksum" }}'
347
- - run:
348
- name: Run Benchmark
349
- command: bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
350
- - run:
351
- name: Run Benchmark without ddtracer
352
- 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
353
-
354
- checkout-2.4:
355
- <<: *job_defaults
356
- docker:
357
- - *container-2_4
358
- steps:
359
- - checkout
360
- - save_cache:
361
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
362
- paths:
363
- - /app
364
- build-2.4:
365
- <<: *job_defaults
366
- docker:
367
- - *container-2_4
368
- steps:
369
- - restore_cache:
370
- keys:
371
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
372
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
373
- - *step_init_bundle_checksum
374
- - restore_cache:
375
- keys:
376
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
377
- - *step_bundle_install
378
- - *step_rubocop
379
- - *step_appraisal_install
380
- - *step_compute_bundle_checksum
381
- - save_cache:
382
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
383
- paths:
384
- - /app
385
- - save_cache:
386
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
387
- paths:
388
- - /usr/local/bundle
389
- test-2.4:
390
- <<: *job_defaults
391
- docker:
392
- - <<: *container-2_4
393
- environment:
394
- - TEST_DATADOG_INTEGRATION: 1
395
- - *container_postgres
396
- - *container_mysql
397
- - *container_elasticsearch
398
- - *container_redis
399
- - *container_mongo
400
- - *container_memcached
401
- - *container_agent
402
- steps:
403
- - restore_cache:
404
- keys:
405
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.4-{{ .Environment.CIRCLE_SHA1 }}'
406
- - restore_cache:
407
- keys:
408
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.4-{{ checksum ".circleci/bundle_checksum" }}'
409
- - *step_run_all_tests
410
-
411
- checkout-2.5:
412
- <<: *job_defaults
413
- docker:
414
- - *container-2_5
415
- steps:
416
- - checkout
417
- - save_cache:
418
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.5-{{ .Environment.CIRCLE_SHA1 }}'
419
- paths:
420
- - /app
421
- build-2.5:
422
- <<: *job_defaults
423
- docker:
424
- - *container-2_5
425
- steps:
426
- - restore_cache:
427
- keys:
428
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.5-{{ .Environment.CIRCLE_SHA1 }}'
429
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.5-{{ .Environment.CIRCLE_SHA1 }}'
430
- - *step_init_bundle_checksum
431
- - restore_cache:
432
- keys:
433
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.5-{{ checksum ".circleci/bundle_checksum" }}'
434
- - *step_bundle_install
435
- - *step_rubocop
436
- - *step_appraisal_install
437
- - *step_compute_bundle_checksum
438
- - save_cache:
439
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.5-{{ .Environment.CIRCLE_SHA1 }}'
440
- paths:
441
- - /app
442
- - save_cache:
443
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.5-{{ checksum ".circleci/bundle_checksum" }}'
444
- paths:
445
- - /usr/local/bundle
446
- test-2.5:
447
- <<: *job_defaults
448
- docker:
449
- - <<: *container-2_5
450
- environment:
451
- - TEST_DATADOG_INTEGRATION: 1
452
- - *container_postgres
453
- - *container_mysql
454
- - *container_elasticsearch
455
- - *container_redis
456
- - *container_mongo
457
- - *container_memcached
458
- - *container_agent
459
- steps:
460
- - restore_cache:
461
- keys:
462
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.5-{{ .Environment.CIRCLE_SHA1 }}'
463
- - restore_cache:
464
- keys:
465
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.5-{{ checksum ".circleci/bundle_checksum" }}'
466
- - *step_run_all_tests
467
-
468
- checkout-2.6:
469
- <<: *job_defaults
470
- docker:
471
- - *container-2_6
472
- steps:
473
- - checkout
474
- - save_cache:
475
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.6-{{ .Environment.CIRCLE_SHA1 }}'
476
- paths:
477
- - /app
478
- build-2.6:
479
- <<: *job_defaults
480
- docker:
481
- - *container-2_6
482
- steps:
483
- - restore_cache:
484
- keys:
485
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.6-{{ .Environment.CIRCLE_SHA1 }}'
486
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-2.6-{{ .Environment.CIRCLE_SHA1 }}'
487
- - *step_init_bundle_checksum
488
- - restore_cache:
489
- keys:
490
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.6-{{ checksum ".circleci/bundle_checksum" }}'
491
- - *step_bundle_install
492
- - *step_rubocop
493
- - *step_appraisal_install
494
- - *step_compute_bundle_checksum
495
- - save_cache:
496
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.6-{{ .Environment.CIRCLE_SHA1 }}'
497
- paths:
498
- - /app
499
- - save_cache:
500
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.6-{{ checksum ".circleci/bundle_checksum" }}'
501
- paths:
502
- - /usr/local/bundle
503
- test-2.6:
504
- <<: *job_defaults
505
- docker:
506
- - <<: *container-2_6
507
- environment:
508
- - TEST_DATADOG_INTEGRATION: 1
509
- - *container_postgres
510
- - *container_mysql
511
- - *container_elasticsearch
512
- - *container_redis
513
- - *container_mongo
514
- - *container_memcached
515
- - *container_agent
516
- steps:
517
- - restore_cache:
518
- keys:
519
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-2.6-{{ .Environment.CIRCLE_SHA1 }}'
520
- - restore_cache:
521
- keys:
522
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-2.6-{{ checksum ".circleci/bundle_checksum" }}'
523
- - *step_run_all_tests
88
+ orbs:
89
+ orb:
90
+ 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
+ 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>>
121
+ steps:
122
+ - restore_cache:
123
+ keys:
124
+ - '{{ .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
+ - restore_cache:
127
+ keys:
128
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
129
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-
130
+ - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}
131
+ - *step_init_bundle_checksum
132
+ - restore_cache:
133
+ keys:
134
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
135
+ - *step_bundle_install
136
+ - *step_appraisal_install
137
+ - *step_compute_bundle_checksum
138
+ - save_cache:
139
+ key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
140
+ paths:
141
+ - /app
142
+ - save_cache:
143
+ key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
144
+ paths:
145
+ - /usr/local/bundle
146
+ - save_cache:
147
+ 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
+ paths:
149
+ - /usr/local/bundle
150
+ test:
151
+ <<: *job_defaults
152
+ parameters:
153
+ ruby_version:
154
+ description: Ruby version
155
+ type: string
156
+ image:
157
+ description: Docker image location
158
+ type: string
159
+ docker:
160
+ - <<: *container_base
161
+ image: <<parameters.image>>
162
+ environment:
163
+ - BUNDLE_GEMFILE: /app/Gemfile
164
+ - TEST_DATADOG_INTEGRATION: 1
165
+ - COVERAGE_BASE_DIR: coverage
166
+ - *container_postgres
167
+ - *container_presto
168
+ - *container_mysql
169
+ - *container_elasticsearch
170
+ - *container_redis
171
+ - *container_mongo
172
+ - *container_memcached
173
+ - *container_agent
174
+ parallelism: 22
175
+ steps:
176
+ - restore_cache:
177
+ keys:
178
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
179
+ - restore_cache:
180
+ keys:
181
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
182
+ - run:
183
+ name: Set coverage report directory
184
+ command: |
185
+ # Create a unique coverage directory for this job, to avoid conflicts when merging all results
186
+ echo 'export COVERAGE_DIR="$COVERAGE_BASE_DIR/versions/$CIRCLE_JOB/$CIRCLE_NODE_INDEX"' >> $BASH_ENV
187
+ - *step_run_all_tests
188
+ - persist_to_workspace:
189
+ root: .
190
+ paths:
191
+ - coverage
192
+ 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
201
+ docker:
202
+ - <<: *container_base
203
+ image: <<parameters.image>>
204
+ environment:
205
+ - BUNDLE_GEMFILE: /app/Gemfile
206
+ - TEST_DATADOG_INTEGRATION: 1
207
+ - *container_postgres
208
+ - *container_redis
209
+ - *container_agent
210
+ steps:
211
+ - restore_cache:
212
+ keys:
213
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
214
+ - restore_cache:
215
+ keys:
216
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
217
+ - run:
218
+ name: Run Benchmark
219
+ command: bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
220
+ - run:
221
+ name: Run Benchmark without ddtracer
222
+ 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
+ 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
237
+ steps:
238
+ - restore_cache:
239
+ keys:
240
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
241
+ - restore_cache:
242
+ keys:
243
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
244
+ - *step_rubocop
245
+ 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
259
+ steps:
260
+ - restore_cache:
261
+ keys:
262
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
263
+ - restore_cache:
264
+ keys:
265
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
266
+ - attach_workspace:
267
+ at: /tmp/workspace
268
+ - run:
269
+ name: Generate coverage report artifact "coverage/index.html"
270
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
271
+ - run:
272
+ name: Generate coverage report artifact "coverage/versions/*/index.html"
273
+ command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report_per_ruby_version
274
+ - store_artifacts:
275
+ path: /tmp/workspace/coverage/report/
276
+ destination: coverage
277
+ commands:
278
+ executors:
524
279
 
280
+ jobs:
525
281
  "deploy release":
526
282
  <<: *job_defaults
527
283
  docker:
528
- - *container-2_5
284
+ - <<: *container_base
285
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
529
286
  steps:
530
287
  - checkout
531
288
  - run:
289
+ name: Install AWS CLI
532
290
  command: |
533
291
  apt-get -y -qq update
534
292
  apt-get -y -qq install awscli
@@ -543,7 +301,8 @@ jobs:
543
301
  "deploy prerelease Gem":
544
302
  <<: *job_defaults
545
303
  docker:
546
- - *container-2_5
304
+ - <<: *container_base
305
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
547
306
  steps:
548
307
  - run:
549
308
  name: Check if this commit author has publishing credentials
@@ -555,6 +314,7 @@ jobs:
555
314
  fi
556
315
  - checkout
557
316
  - run:
317
+ name: Install AWS CLI
558
318
  command: |
559
319
  apt-get -y -qq update
560
320
  apt-get -y -qq install awscli
@@ -573,101 +333,216 @@ jobs:
573
333
  path: pkg/
574
334
  destination: gem
575
335
 
336
+ job_configuration:
337
+ # MRI
338
+ - &config-2_0
339
+ <<: *filters_all_branches_and_tags
340
+ ruby_version: '2.0'
341
+ image: palazzem/docker-library:ddtrace_rb_2_0_0
342
+ - &config-2_1
343
+ <<: *filters_all_branches_and_tags
344
+ ruby_version: '2.1'
345
+ image: palazzem/docker-library:ddtrace_rb_2_1_10
346
+ - &config-2_2
347
+ <<: *filters_all_branches_and_tags
348
+ ruby_version: '2.2'
349
+ image: palazzem/docker-library:ddtrace_rb_2_2_10
350
+ - &config-2_3
351
+ <<: *filters_all_branches_and_tags
352
+ ruby_version: '2.3'
353
+ image: palazzem/docker-library:ddtrace_rb_2_3_8
354
+ - &config-2_4
355
+ <<: *filters_all_branches_and_tags
356
+ ruby_version: '2.4'
357
+ image: palazzem/docker-library:ddtrace_rb_2_4_6
358
+ - &config-2_5
359
+ <<: *filters_all_branches_and_tags
360
+ ruby_version: '2.5'
361
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
362
+ - &config-2_6
363
+ <<: *filters_all_branches_and_tags
364
+ ruby_version: '2.6'
365
+ image: marcotc/docker-library:ddtrace_rb_2_6_4
366
+ - &config-2_7
367
+ <<: *filters_all_branches_and_tags
368
+ ruby_version: '2.7'
369
+ image: marcotc/docker-library:ddtrace_rb_2_7_0
370
+ # JRuby
371
+ - &config-jruby-9_2
372
+ <<: *filters_all_branches_and_tags
373
+ ruby_version: 'jruby-9.2'
374
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2
375
+
576
376
  workflows:
577
377
  version: 2
578
378
  build-and-test:
579
379
  jobs:
580
- - checkout-2.0:
581
- <<: *filters_all_branches_and_tags
582
- - build-2.0:
583
- <<: *filters_all_branches_and_tags
584
- requires:
585
- - checkout-2.0
586
- - test-2.0:
587
- <<: *filters_all_branches_and_tags
588
- requires:
589
- - build-2.0
590
- - checkout-2.1:
591
- <<: *filters_all_branches_and_tags
592
- - build-2.1:
593
- <<: *filters_all_branches_and_tags
594
- requires:
595
- - checkout-2.1
596
- - test-2.1:
597
- <<: *filters_all_branches_and_tags
598
- requires:
599
- - build-2.1
600
- - checkout-2.2:
601
- <<: *filters_all_branches_and_tags
602
- - build-2.2:
603
- <<: *filters_all_branches_and_tags
604
- requires:
605
- - checkout-2.2
606
- - test-2.2:
607
- <<: *filters_all_branches_and_tags
608
- requires:
609
- - build-2.2
610
- - checkout-2.3:
611
- <<: *filters_all_branches_and_tags
612
- - build-2.3:
613
- <<: *filters_all_branches_and_tags
614
- requires:
615
- - checkout-2.3
616
- - test-2.3:
617
- <<: *filters_all_branches_and_tags
618
- requires:
619
- - build-2.3
620
- - benchmark-2.3:
621
- <<: *filters_all_branches_and_tags
622
- requires:
623
- - build-2.3
624
- - checkout-2.4:
625
- <<: *filters_all_branches_and_tags
626
- - build-2.4:
627
- <<: *filters_all_branches_and_tags
628
- requires:
629
- - checkout-2.4
630
- - test-2.4:
631
- <<: *filters_all_branches_and_tags
632
- requires:
633
- - build-2.4
634
- - checkout-2.5:
635
- <<: *filters_all_branches_and_tags
636
- - build-2.5:
637
- <<: *filters_all_branches_and_tags
638
- requires:
639
- - checkout-2.5
640
- - test-2.5:
641
- <<: *filters_all_branches_and_tags
642
- requires:
643
- - build-2.5
644
- - checkout-2.6:
645
- <<: *filters_all_branches_and_tags
646
- - build-2.6:
647
- <<: *filters_all_branches_and_tags
648
- requires:
649
- - checkout-2.6
650
- - test-2.6:
651
- <<: *filters_all_branches_and_tags
652
- requires:
653
- - build-2.6
654
- - "deploy prerelease Gem":
655
- <<: *filters_all_branches_and_tags
656
- requires:
657
- - test-2.0
658
- - test-2.1
659
- - test-2.2
660
- - test-2.3
661
- - test-2.4
662
- - test-2.5
663
- - test-2.6
664
- - "deploy release":
665
- <<: *filters_only_release_tags
666
- requires:
667
- - test-2.0
668
- - test-2.1
669
- - test-2.2
670
- - test-2.3
671
- - test-2.4
672
- - test-2.5
673
- - test-2.6
380
+ - orb/lint:
381
+ <<: *config-2_6
382
+ name: lint
383
+ requires:
384
+ - build-2.6
385
+ - orb/coverage:
386
+ <<: *config-2_7
387
+ name: coverage
388
+ requires:
389
+ - test-2.0
390
+ - test-2.1
391
+ - test-2.2
392
+ - test-2.3
393
+ - test-2.4
394
+ - test-2.5
395
+ - test-2.6
396
+ - test-2.7
397
+ - test-jruby-9.2
398
+ # MRI
399
+ - orb/checkout:
400
+ <<: *config-2_0
401
+ name: checkout-2.0
402
+ - orb/build:
403
+ <<: *config-2_0
404
+ name: build-2.0
405
+ requires:
406
+ - checkout-2.0
407
+ - orb/test:
408
+ <<: *config-2_0
409
+ name: test-2.0
410
+ requires:
411
+ - build-2.0
412
+ - orb/checkout:
413
+ <<: *config-2_1
414
+ name: checkout-2.1
415
+ - orb/build:
416
+ <<: *config-2_1
417
+ name: build-2.1
418
+ requires:
419
+ - checkout-2.1
420
+ - orb/test:
421
+ <<: *config-2_1
422
+ name: test-2.1
423
+ requires:
424
+ - build-2.1
425
+ - orb/checkout:
426
+ <<: *config-2_2
427
+ name: checkout-2.2
428
+ - orb/build:
429
+ <<: *config-2_2
430
+ name: build-2.2
431
+ requires:
432
+ - checkout-2.2
433
+ - orb/test:
434
+ <<: *config-2_2
435
+ name: test-2.2
436
+ requires:
437
+ - build-2.2
438
+ - orb/checkout:
439
+ <<: *config-2_3
440
+ name: checkout-2.3
441
+ - orb/build:
442
+ <<: *config-2_3
443
+ name: build-2.3
444
+ requires:
445
+ - checkout-2.3
446
+ - orb/test:
447
+ <<: *config-2_3
448
+ name: test-2.3
449
+ requires:
450
+ - build-2.3
451
+ - orb/benchmark:
452
+ <<: *config-2_3
453
+ name: benchmark-2.3
454
+ requires:
455
+ - build-2.3
456
+ - orb/checkout:
457
+ <<: *config-2_4
458
+ name: checkout-2.4
459
+ - orb/build:
460
+ <<: *config-2_4
461
+ name: build-2.4
462
+ requires:
463
+ - checkout-2.4
464
+ - orb/test:
465
+ <<: *config-2_4
466
+ name: test-2.4
467
+ requires:
468
+ - build-2.4
469
+ - orb/checkout:
470
+ <<: *config-2_5
471
+ name: checkout-2.5
472
+ - orb/build:
473
+ <<: *config-2_5
474
+ name: build-2.5
475
+ requires:
476
+ - checkout-2.5
477
+ - orb/test:
478
+ <<: *config-2_5
479
+ name: test-2.5
480
+ requires:
481
+ - build-2.5
482
+ - orb/checkout:
483
+ <<: *config-2_6
484
+ name: checkout-2.6
485
+ - orb/build:
486
+ <<: *config-2_6
487
+ name: build-2.6
488
+ requires:
489
+ - checkout-2.6
490
+ - orb/test:
491
+ <<: *config-2_6
492
+ name: test-2.6
493
+ requires:
494
+ - build-2.6
495
+ - orb/checkout:
496
+ <<: *config-2_7
497
+ name: checkout-2.7
498
+ - orb/build:
499
+ <<: *config-2_7
500
+ name: build-2.7
501
+ requires:
502
+ - checkout-2.7
503
+ - orb/test:
504
+ <<: *config-2_7
505
+ name: test-2.7
506
+ requires:
507
+ - build-2.7
508
+ # JRuby
509
+ - orb/checkout:
510
+ <<: *config-jruby-9_2
511
+ name: checkout-jruby-9.2
512
+ - orb/build:
513
+ <<: *config-jruby-9_2
514
+ name: build-jruby-9.2
515
+ requires:
516
+ - checkout-jruby-9.2
517
+ - orb/test:
518
+ <<: *config-jruby-9_2
519
+ name: test-jruby-9.2
520
+ requires:
521
+ - build-jruby-9.2
522
+ # Release jobs
523
+ - "deploy prerelease Gem":
524
+ <<: *filters_all_branches_and_tags
525
+ requires:
526
+ - lint
527
+ - test-2.0
528
+ - test-2.1
529
+ - test-2.2
530
+ - test-2.3
531
+ - test-2.4
532
+ - test-2.5
533
+ - test-2.6
534
+ - test-2.7
535
+ - test-jruby-9.2
536
+ - "deploy release":
537
+ <<: *filters_only_release_tags
538
+ requires:
539
+ - lint
540
+ - test-2.0
541
+ - test-2.1
542
+ - test-2.2
543
+ - test-2.3
544
+ - test-2.4
545
+ - test-2.5
546
+ - test-2.6
547
+ - test-2.7
548
+ - test-jruby-9.2