ls-trace 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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