ls-trace 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (356) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +673 -0
  3. data/.circleci/images/primary/Dockerfile-2.0.0 +73 -0
  4. data/.circleci/images/primary/Dockerfile-2.1.10 +73 -0
  5. data/.circleci/images/primary/Dockerfile-2.2.10 +73 -0
  6. data/.circleci/images/primary/Dockerfile-2.3.8 +75 -0
  7. data/.circleci/images/primary/Dockerfile-2.4.6 +73 -0
  8. data/.circleci/images/primary/Dockerfile-2.5.6 +73 -0
  9. data/.circleci/images/primary/Dockerfile-2.6.4 +73 -0
  10. data/.dockerignore +1 -0
  11. data/.env +24 -0
  12. data/.github/CODEOWNERS +1 -0
  13. data/.gitignore +59 -0
  14. data/.rspec +1 -0
  15. data/.rubocop.yml +77 -0
  16. data/.yardopts +5 -0
  17. data/Appraisals +820 -0
  18. data/CHANGELOG.md +1051 -0
  19. data/CONTRIBUTING.md +85 -0
  20. data/Gemfile +7 -0
  21. data/LICENSE +24 -0
  22. data/README.md +108 -0
  23. data/Rakefile +635 -0
  24. data/benchmarks/postgres_database.yml +9 -0
  25. data/benchmarks/sidekiq_test.rb +154 -0
  26. data/ddtrace.gemspec +63 -0
  27. data/docker-compose.yml +276 -0
  28. data/docs/DevelopmentGuide.md +195 -0
  29. data/docs/GettingStarted.md +1981 -0
  30. data/lib/ddtrace.rb +63 -0
  31. data/lib/ddtrace/analytics.rb +29 -0
  32. data/lib/ddtrace/augmentation.rb +13 -0
  33. data/lib/ddtrace/augmentation/method_wrapper.rb +20 -0
  34. data/lib/ddtrace/augmentation/method_wrapping.rb +38 -0
  35. data/lib/ddtrace/augmentation/shim.rb +102 -0
  36. data/lib/ddtrace/buffer.rb +119 -0
  37. data/lib/ddtrace/configuration.rb +30 -0
  38. data/lib/ddtrace/configuration/base.rb +82 -0
  39. data/lib/ddtrace/configuration/dependency_resolver.rb +24 -0
  40. data/lib/ddtrace/configuration/option.rb +55 -0
  41. data/lib/ddtrace/configuration/option_definition.rb +127 -0
  42. data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
  43. data/lib/ddtrace/configuration/option_set.rb +6 -0
  44. data/lib/ddtrace/configuration/options.rb +107 -0
  45. data/lib/ddtrace/configuration/pin_setup.rb +30 -0
  46. data/lib/ddtrace/configuration/settings.rb +105 -0
  47. data/lib/ddtrace/context.rb +284 -0
  48. data/lib/ddtrace/context_flush.rb +132 -0
  49. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +144 -0
  50. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +37 -0
  51. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +27 -0
  52. data/lib/ddtrace/contrib/action_pack/ext.rb +16 -0
  53. data/lib/ddtrace/contrib/action_pack/integration.rb +36 -0
  54. data/lib/ddtrace/contrib/action_pack/patcher.rb +29 -0
  55. data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
  56. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +26 -0
  57. data/lib/ddtrace/contrib/action_view/ext.rb +17 -0
  58. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +78 -0
  59. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +167 -0
  60. data/lib/ddtrace/contrib/action_view/integration.rb +43 -0
  61. data/lib/ddtrace/contrib/action_view/patcher.rb +53 -0
  62. data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
  63. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +25 -0
  64. data/lib/ddtrace/contrib/active_model_serializers/event.rb +65 -0
  65. data/lib/ddtrace/contrib/active_model_serializers/events.rb +30 -0
  66. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +32 -0
  67. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +35 -0
  68. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
  69. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +39 -0
  70. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +36 -0
  71. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +46 -0
  72. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +30 -0
  73. data/lib/ddtrace/contrib/active_record/event.rb +30 -0
  74. data/lib/ddtrace/contrib/active_record/events.rb +30 -0
  75. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +57 -0
  76. data/lib/ddtrace/contrib/active_record/events/sql.rb +64 -0
  77. data/lib/ddtrace/contrib/active_record/ext.rb +21 -0
  78. data/lib/ddtrace/contrib/active_record/integration.rb +44 -0
  79. data/lib/ddtrace/contrib/active_record/patcher.rb +29 -0
  80. data/lib/ddtrace/contrib/active_record/utils.rb +76 -0
  81. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +157 -0
  82. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +62 -0
  83. data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
  84. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +25 -0
  85. data/lib/ddtrace/contrib/active_support/ext.rb +21 -0
  86. data/lib/ddtrace/contrib/active_support/integration.rb +38 -0
  87. data/lib/ddtrace/contrib/active_support/notifications/event.rb +62 -0
  88. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +66 -0
  89. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +159 -0
  90. data/lib/ddtrace/contrib/active_support/patcher.rb +29 -0
  91. data/lib/ddtrace/contrib/analytics.rb +20 -0
  92. data/lib/ddtrace/contrib/aws/configuration/settings.rb +25 -0
  93. data/lib/ddtrace/contrib/aws/ext.rb +20 -0
  94. data/lib/ddtrace/contrib/aws/instrumentation.rb +56 -0
  95. data/lib/ddtrace/contrib/aws/integration.rb +36 -0
  96. data/lib/ddtrace/contrib/aws/parsed_context.rb +56 -0
  97. data/lib/ddtrace/contrib/aws/patcher.rb +49 -0
  98. data/lib/ddtrace/contrib/aws/services.rb +115 -0
  99. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +15 -0
  100. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +35 -0
  101. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
  102. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +23 -0
  103. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +32 -0
  104. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +35 -0
  105. data/lib/ddtrace/contrib/configurable.rb +59 -0
  106. data/lib/ddtrace/contrib/configuration/resolver.rb +12 -0
  107. data/lib/ddtrace/contrib/configuration/settings.rb +35 -0
  108. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +25 -0
  109. data/lib/ddtrace/contrib/dalli/ext.rb +17 -0
  110. data/lib/ddtrace/contrib/dalli/instrumentation.rb +50 -0
  111. data/lib/ddtrace/contrib/dalli/integration.rb +36 -0
  112. data/lib/ddtrace/contrib/dalli/patcher.rb +73 -0
  113. data/lib/ddtrace/contrib/dalli/quantize.rb +22 -0
  114. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +25 -0
  115. data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
  116. data/lib/ddtrace/contrib/delayed_job/integration.rb +32 -0
  117. data/lib/ddtrace/contrib/delayed_job/patcher.rb +34 -0
  118. data/lib/ddtrace/contrib/delayed_job/plugin.rb +57 -0
  119. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +26 -0
  120. data/lib/ddtrace/contrib/elasticsearch/ext.rb +19 -0
  121. data/lib/ddtrace/contrib/elasticsearch/integration.rb +37 -0
  122. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +124 -0
  123. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +80 -0
  124. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +26 -0
  125. data/lib/ddtrace/contrib/ethon/easy_patch.rb +139 -0
  126. data/lib/ddtrace/contrib/ethon/ext.rb +15 -0
  127. data/lib/ddtrace/contrib/ethon/integration.rb +31 -0
  128. data/lib/ddtrace/contrib/ethon/multi_patch.rb +80 -0
  129. data/lib/ddtrace/contrib/ethon/patcher.rb +27 -0
  130. data/lib/ddtrace/contrib/excon/configuration/settings.rb +28 -0
  131. data/lib/ddtrace/contrib/excon/ext.rb +14 -0
  132. data/lib/ddtrace/contrib/excon/integration.rb +32 -0
  133. data/lib/ddtrace/contrib/excon/middleware.rb +154 -0
  134. data/lib/ddtrace/contrib/excon/patcher.rb +34 -0
  135. data/lib/ddtrace/contrib/extensions.rb +59 -0
  136. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +33 -0
  137. data/lib/ddtrace/contrib/faraday/ext.rb +14 -0
  138. data/lib/ddtrace/contrib/faraday/integration.rb +36 -0
  139. data/lib/ddtrace/contrib/faraday/middleware.rb +93 -0
  140. data/lib/ddtrace/contrib/faraday/patcher.rb +82 -0
  141. data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
  142. data/lib/ddtrace/contrib/grape/configuration/settings.rb +27 -0
  143. data/lib/ddtrace/contrib/grape/endpoint.rb +199 -0
  144. data/lib/ddtrace/contrib/grape/ext.rb +19 -0
  145. data/lib/ddtrace/contrib/grape/instrumentation.rb +33 -0
  146. data/lib/ddtrace/contrib/grape/integration.rb +36 -0
  147. data/lib/ddtrace/contrib/grape/patcher.rb +79 -0
  148. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +27 -0
  149. data/lib/ddtrace/contrib/graphql/ext.rb +13 -0
  150. data/lib/ddtrace/contrib/graphql/integration.rb +38 -0
  151. data/lib/ddtrace/contrib/graphql/patcher.rb +63 -0
  152. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +25 -0
  153. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +74 -0
  154. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +56 -0
  155. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +73 -0
  156. data/lib/ddtrace/contrib/grpc/ext.rb +15 -0
  157. data/lib/ddtrace/contrib/grpc/integration.rb +36 -0
  158. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +49 -0
  159. data/lib/ddtrace/contrib/grpc/patcher.rb +78 -0
  160. data/lib/ddtrace/contrib/http/circuit_breaker.rb +63 -0
  161. data/lib/ddtrace/contrib/http/configuration/settings.rb +26 -0
  162. data/lib/ddtrace/contrib/http/ext.rb +14 -0
  163. data/lib/ddtrace/contrib/http/instrumentation.rb +114 -0
  164. data/lib/ddtrace/contrib/http/integration.rb +32 -0
  165. data/lib/ddtrace/contrib/http/patcher.rb +32 -0
  166. data/lib/ddtrace/contrib/integration.rb +16 -0
  167. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +28 -0
  168. data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
  169. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +68 -0
  170. data/lib/ddtrace/contrib/mongodb/integration.rb +36 -0
  171. data/lib/ddtrace/contrib/mongodb/parsers.rb +68 -0
  172. data/lib/ddtrace/contrib/mongodb/patcher.rb +37 -0
  173. data/lib/ddtrace/contrib/mongodb/subscribers.rb +108 -0
  174. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +25 -0
  175. data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
  176. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +60 -0
  177. data/lib/ddtrace/contrib/mysql2/integration.rb +32 -0
  178. data/lib/ddtrace/contrib/mysql2/patcher.rb +33 -0
  179. data/lib/ddtrace/contrib/patchable.rb +42 -0
  180. data/lib/ddtrace/contrib/patcher.rb +28 -0
  181. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +25 -0
  182. data/lib/ddtrace/contrib/racecar/event.rb +67 -0
  183. data/lib/ddtrace/contrib/racecar/events.rb +30 -0
  184. data/lib/ddtrace/contrib/racecar/events/batch.rb +27 -0
  185. data/lib/ddtrace/contrib/racecar/events/message.rb +27 -0
  186. data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
  187. data/lib/ddtrace/contrib/racecar/integration.rb +36 -0
  188. data/lib/ddtrace/contrib/racecar/patcher.rb +32 -0
  189. data/lib/ddtrace/contrib/rack/configuration/settings.rb +41 -0
  190. data/lib/ddtrace/contrib/rack/ext.rb +18 -0
  191. data/lib/ddtrace/contrib/rack/integration.rb +32 -0
  192. data/lib/ddtrace/contrib/rack/middlewares.rb +283 -0
  193. data/lib/ddtrace/contrib/rack/patcher.rb +72 -0
  194. data/lib/ddtrace/contrib/rack/request_queue.rb +39 -0
  195. data/lib/ddtrace/contrib/rails/configuration/settings.rb +80 -0
  196. data/lib/ddtrace/contrib/rails/ext.rb +12 -0
  197. data/lib/ddtrace/contrib/rails/framework.rb +100 -0
  198. data/lib/ddtrace/contrib/rails/integration.rb +37 -0
  199. data/lib/ddtrace/contrib/rails/middlewares.rb +38 -0
  200. data/lib/ddtrace/contrib/rails/patcher.rb +78 -0
  201. data/lib/ddtrace/contrib/rails/railtie.rb +17 -0
  202. data/lib/ddtrace/contrib/rails/utils.rb +20 -0
  203. data/lib/ddtrace/contrib/rake/configuration/settings.rb +27 -0
  204. data/lib/ddtrace/contrib/rake/ext.rb +18 -0
  205. data/lib/ddtrace/contrib/rake/instrumentation.rb +84 -0
  206. data/lib/ddtrace/contrib/rake/integration.rb +32 -0
  207. data/lib/ddtrace/contrib/rake/patcher.rb +36 -0
  208. data/lib/ddtrace/contrib/redis/configuration/settings.rb +25 -0
  209. data/lib/ddtrace/contrib/redis/ext.rb +18 -0
  210. data/lib/ddtrace/contrib/redis/integration.rb +36 -0
  211. data/lib/ddtrace/contrib/redis/patcher.rb +94 -0
  212. data/lib/ddtrace/contrib/redis/quantize.rb +47 -0
  213. data/lib/ddtrace/contrib/redis/tags.rb +38 -0
  214. data/lib/ddtrace/contrib/registerable.rb +33 -0
  215. data/lib/ddtrace/contrib/registry.rb +42 -0
  216. data/lib/ddtrace/contrib/resque/configuration/settings.rb +26 -0
  217. data/lib/ddtrace/contrib/resque/ext.rb +14 -0
  218. data/lib/ddtrace/contrib/resque/integration.rb +37 -0
  219. data/lib/ddtrace/contrib/resque/patcher.rb +35 -0
  220. data/lib/ddtrace/contrib/resque/resque_job.rb +76 -0
  221. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +26 -0
  222. data/lib/ddtrace/contrib/rest_client/ext.rb +14 -0
  223. data/lib/ddtrace/contrib/rest_client/integration.rb +31 -0
  224. data/lib/ddtrace/contrib/rest_client/patcher.rb +25 -0
  225. data/lib/ddtrace/contrib/rest_client/request_patch.rb +89 -0
  226. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +23 -0
  227. data/lib/ddtrace/contrib/sequel/database.rb +61 -0
  228. data/lib/ddtrace/contrib/sequel/dataset.rb +62 -0
  229. data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
  230. data/lib/ddtrace/contrib/sequel/integration.rb +32 -0
  231. data/lib/ddtrace/contrib/sequel/patcher.rb +39 -0
  232. data/lib/ddtrace/contrib/sequel/utils.rb +46 -0
  233. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +24 -0
  234. data/lib/ddtrace/contrib/shoryuken/ext.rb +18 -0
  235. data/lib/ddtrace/contrib/shoryuken/integration.rb +35 -0
  236. data/lib/ddtrace/contrib/shoryuken/patcher.rb +30 -0
  237. data/lib/ddtrace/contrib/shoryuken/tracer.rb +45 -0
  238. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +43 -0
  239. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +26 -0
  240. data/lib/ddtrace/contrib/sidekiq/ext.rb +21 -0
  241. data/lib/ddtrace/contrib/sidekiq/integration.rb +36 -0
  242. data/lib/ddtrace/contrib/sidekiq/patcher.rb +40 -0
  243. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +58 -0
  244. data/lib/ddtrace/contrib/sidekiq/tracing.rb +28 -0
  245. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +34 -0
  246. data/lib/ddtrace/contrib/sinatra/env.rb +38 -0
  247. data/lib/ddtrace/contrib/sinatra/ext.rb +18 -0
  248. data/lib/ddtrace/contrib/sinatra/headers.rb +31 -0
  249. data/lib/ddtrace/contrib/sinatra/integration.rb +36 -0
  250. data/lib/ddtrace/contrib/sinatra/patcher.rb +33 -0
  251. data/lib/ddtrace/contrib/sinatra/tracer.rb +84 -0
  252. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +72 -0
  253. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +25 -0
  254. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +26 -0
  255. data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
  256. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +70 -0
  257. data/lib/ddtrace/contrib/sucker_punch/integration.rb +36 -0
  258. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +48 -0
  259. data/lib/ddtrace/correlation.rb +28 -0
  260. data/lib/ddtrace/diagnostics/health.rb +30 -0
  261. data/lib/ddtrace/distributed_tracing/headers/b3.rb +44 -0
  262. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +56 -0
  263. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +42 -0
  264. data/lib/ddtrace/distributed_tracing/headers/headers.rb +70 -0
  265. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +45 -0
  266. data/lib/ddtrace/encoding.rb +65 -0
  267. data/lib/ddtrace/environment.rb +23 -0
  268. data/lib/ddtrace/error.rb +27 -0
  269. data/lib/ddtrace/ext/analytics.rb +11 -0
  270. data/lib/ddtrace/ext/app_types.rb +11 -0
  271. data/lib/ddtrace/ext/diagnostics.rb +25 -0
  272. data/lib/ddtrace/ext/distributed.rb +33 -0
  273. data/lib/ddtrace/ext/errors.rb +10 -0
  274. data/lib/ddtrace/ext/forced_tracing.rb +25 -0
  275. data/lib/ddtrace/ext/http.rb +46 -0
  276. data/lib/ddtrace/ext/manual_tracing.rb +9 -0
  277. data/lib/ddtrace/ext/metrics.rb +15 -0
  278. data/lib/ddtrace/ext/net.rb +10 -0
  279. data/lib/ddtrace/ext/priority.rb +16 -0
  280. data/lib/ddtrace/ext/runtime.rb +26 -0
  281. data/lib/ddtrace/ext/sql.rb +8 -0
  282. data/lib/ddtrace/ext/transport.rb +17 -0
  283. data/lib/ddtrace/forced_tracing.rb +36 -0
  284. data/lib/ddtrace/logger.rb +39 -0
  285. data/lib/ddtrace/metrics.rb +215 -0
  286. data/lib/ddtrace/monkey.rb +58 -0
  287. data/lib/ddtrace/opentracer.rb +40 -0
  288. data/lib/ddtrace/opentracer/binary_propagator.rb +24 -0
  289. data/lib/ddtrace/opentracer/carrier.rb +6 -0
  290. data/lib/ddtrace/opentracer/distributed_headers.rb +52 -0
  291. data/lib/ddtrace/opentracer/global_tracer.rb +15 -0
  292. data/lib/ddtrace/opentracer/propagator.rb +22 -0
  293. data/lib/ddtrace/opentracer/rack_propagator.rb +60 -0
  294. data/lib/ddtrace/opentracer/scope.rb +15 -0
  295. data/lib/ddtrace/opentracer/scope_manager.rb +6 -0
  296. data/lib/ddtrace/opentracer/span.rb +98 -0
  297. data/lib/ddtrace/opentracer/span_context.rb +14 -0
  298. data/lib/ddtrace/opentracer/span_context_factory.rb +23 -0
  299. data/lib/ddtrace/opentracer/text_map_propagator.rb +75 -0
  300. data/lib/ddtrace/opentracer/thread_local_scope.rb +30 -0
  301. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +40 -0
  302. data/lib/ddtrace/opentracer/tracer.rb +208 -0
  303. data/lib/ddtrace/patcher.rb +47 -0
  304. data/lib/ddtrace/pin.rb +114 -0
  305. data/lib/ddtrace/pipeline.rb +46 -0
  306. data/lib/ddtrace/pipeline/span_filter.rb +38 -0
  307. data/lib/ddtrace/pipeline/span_processor.rb +20 -0
  308. data/lib/ddtrace/propagation/grpc_propagator.rb +61 -0
  309. data/lib/ddtrace/propagation/http_propagator.rb +75 -0
  310. data/lib/ddtrace/provider.rb +21 -0
  311. data/lib/ddtrace/quantization/hash.rb +103 -0
  312. data/lib/ddtrace/quantization/http.rb +86 -0
  313. data/lib/ddtrace/runtime/cgroup.rb +44 -0
  314. data/lib/ddtrace/runtime/class_count.rb +17 -0
  315. data/lib/ddtrace/runtime/container.rb +73 -0
  316. data/lib/ddtrace/runtime/gc.rb +16 -0
  317. data/lib/ddtrace/runtime/identity.rb +41 -0
  318. data/lib/ddtrace/runtime/metrics.rb +93 -0
  319. data/lib/ddtrace/runtime/object_space.rb +19 -0
  320. data/lib/ddtrace/runtime/socket.rb +14 -0
  321. data/lib/ddtrace/runtime/thread_count.rb +16 -0
  322. data/lib/ddtrace/sampler.rb +195 -0
  323. data/lib/ddtrace/span.rb +260 -0
  324. data/lib/ddtrace/sync_writer.rb +62 -0
  325. data/lib/ddtrace/tracer.rb +459 -0
  326. data/lib/ddtrace/transport/http.rb +91 -0
  327. data/lib/ddtrace/transport/http/adapters/net.rb +112 -0
  328. data/lib/ddtrace/transport/http/adapters/registry.rb +24 -0
  329. data/lib/ddtrace/transport/http/adapters/test.rb +77 -0
  330. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +64 -0
  331. data/lib/ddtrace/transport/http/api.rb +46 -0
  332. data/lib/ddtrace/transport/http/api/endpoint.rb +27 -0
  333. data/lib/ddtrace/transport/http/api/fallbacks.rb +22 -0
  334. data/lib/ddtrace/transport/http/api/instance.rb +29 -0
  335. data/lib/ddtrace/transport/http/api/map.rb +14 -0
  336. data/lib/ddtrace/transport/http/api/spec.rb +15 -0
  337. data/lib/ddtrace/transport/http/builder.rb +165 -0
  338. data/lib/ddtrace/transport/http/client.rb +107 -0
  339. data/lib/ddtrace/transport/http/env.rb +48 -0
  340. data/lib/ddtrace/transport/http/response.rb +26 -0
  341. data/lib/ddtrace/transport/http/statistics.rb +30 -0
  342. data/lib/ddtrace/transport/http/traces.rb +140 -0
  343. data/lib/ddtrace/transport/parcel.rb +13 -0
  344. data/lib/ddtrace/transport/request.rb +13 -0
  345. data/lib/ddtrace/transport/response.rb +49 -0
  346. data/lib/ddtrace/transport/statistics.rb +72 -0
  347. data/lib/ddtrace/transport/traces.rb +33 -0
  348. data/lib/ddtrace/utils.rb +65 -0
  349. data/lib/ddtrace/utils/database.rb +25 -0
  350. data/lib/ddtrace/utils/time.rb +14 -0
  351. data/lib/ddtrace/vendor/active_record/connection_specification.rb +301 -0
  352. data/lib/ddtrace/version.rb +12 -0
  353. data/lib/ddtrace/workers.rb +125 -0
  354. data/lib/ddtrace/writer.rb +157 -0
  355. data/tasks/release_gem.rake +28 -0
  356. metadata +682 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c7f0003534365984417096d7a027492a0472d438f99e0475a51db10ba8553689
4
+ data.tar.gz: 4bb8e7ced5f26e03ec9ffbc2ee56fafc122909be2ca1e9807937cff2a57d59b6
5
+ SHA512:
6
+ metadata.gz: eab5eadb8a6e4e2090cadd604521c3f4cc809198593674b08185967d13e0132bc3c704337aec286c0f1682ed01756a60a226250b39e17b1341ac9361e5f7af62
7
+ data.tar.gz: 0170ff92aed56a61e55b7a2f072e79eda01a8afb496a885060a9cfa9541cc9c0c7748cf6af600be580a4eab17109768e1c9a835d4bbde73f4deb31f225a3b2e0
@@ -0,0 +1,673 @@
1
+ # Common variables, containers, jobs and steps.
2
+ job_defaults: &job_defaults
3
+ working_directory: /app
4
+ shell: /bin/bash --login
5
+
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
33
+ environment:
34
+ - BUNDLE_GEMFILE=/app/Gemfile
35
+
36
+ test_containers: &test_containers
37
+ - &container_postgres
38
+ image: postgres:9.6
39
+ environment:
40
+ - POSTGRES_PASSWORD=postgres
41
+ - POSTGRES_USER=postgres
42
+ - POSTGRES_DB=postgres
43
+ - &container_mysql
44
+ image: mysql:5.6
45
+ environment:
46
+ - MYSQL_ROOT_PASSWORD=root
47
+ - MYSQL_PASSWORD=mysql
48
+ - MYSQL_USER=mysql
49
+ - &container_elasticsearch
50
+ image: elasticsearch:2.4
51
+ - &container_redis
52
+ image: redis:3.0
53
+ - &container_mongo
54
+ image: mongo:3.5
55
+ - &container_memcached
56
+ image: memcached:1.5-alpine
57
+ - &container_agent
58
+ image: datadog/docker-dd-agent
59
+ environment:
60
+ - DD_APM_ENABLED=true
61
+ - DD_BIND_HOST=0.0.0.0
62
+ - DD_API_KEY=invalid_key_but_this_is_fine
63
+
64
+ step_init_bundle_checksum: &step_init_bundle_checksum
65
+ run:
66
+ name: Initialize bundle cache key
67
+ command: |
68
+ touch .circleci/bundle_checksum
69
+ step_bundle_install: &step_bundle_install
70
+ run:
71
+ name: Install gem dependencies
72
+ command: bundle install
73
+ step_rubocop: &step_rubocop
74
+ run:
75
+ name: Delint with Rubocop
76
+ command: bundle exec rake rubocop
77
+ step_appraisal_install: &step_appraisal_install
78
+ run:
79
+ name: Install Appraisal gems
80
+ command: bundle exec appraisal install
81
+ step_compute_bundle_checksum: &step_compute_bundle_checksum
82
+ run:
83
+ name: Compute bundle checksum
84
+ command: |
85
+ cat Gemfile.lock gemfiles/*.gemfile.lock > .circleci/bundle_checksum
86
+ step_run_all_tests: &step_run_all_tests
87
+ run:
88
+ name: Run tests
89
+ command: bundle exec rake ci
90
+ step_release_docs: &step_release_docs
91
+ run:
92
+ name: Upload release docs
93
+ command: S3_DIR=trace bundle exec rake release:docs
94
+
95
+ filters_all_branches_and_tags: &filters_all_branches_and_tags
96
+ filters:
97
+ tags:
98
+ only: /.*/
99
+ filters_only_release_tags: &filters_only_release_tags
100
+ filters:
101
+ branches:
102
+ ignore: /.*/
103
+ tags:
104
+ only: /^v\d+(\.\d+){0,3}(\.(alpha|beta|rc)\d+)?$/
105
+
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
524
+
525
+ "deploy release":
526
+ <<: *job_defaults
527
+ docker:
528
+ - *container-2_5
529
+ steps:
530
+ - checkout
531
+ - run:
532
+ command: |
533
+ apt-get -y -qq update
534
+ apt-get -y -qq install awscli
535
+ - *step_bundle_install
536
+ - *step_release_docs
537
+ - run:
538
+ name: Upload release Gem and rebuild index
539
+ command: S3_DIR=release bundle exec rake release:gem
540
+ - store_artifacts:
541
+ path: pkg/
542
+ destination: gem
543
+ "deploy prerelease Gem":
544
+ <<: *job_defaults
545
+ docker:
546
+ - *container-2_5
547
+ steps:
548
+ - run:
549
+ name: Check if this commit author has publishing credentials
550
+ command: |
551
+ if [[ -z "${AWS_ACCESS_KEY_ID}" ]]
552
+ then
553
+ echo 'No AWS credentials, skipping publish of pre-release build.'
554
+ circleci task halt
555
+ fi
556
+ - checkout
557
+ - run:
558
+ command: |
559
+ apt-get -y -qq update
560
+ apt-get -y -qq install awscli
561
+ - *step_bundle_install
562
+ - run:
563
+ name: Rename to pre-release version based on branch name and build number
564
+ command: |
565
+ # create safe version string
566
+ PRE=$(echo "${CIRCLE_BRANCH:-unknown}.${CIRCLE_BUILD_NUM:-R$RANDOM}" | sed -e 's/[^a-zA-Z0-9+]\{1,\}/./g')
567
+ echo PRE=$PRE
568
+ sed lib/ddtrace/version.rb -i -e "s/^\([\t ]*PRE\) *=*/\1 = \'${PRE}\' #/g"
569
+ - run:
570
+ name: Upload prereleas Gem and rebuild index
571
+ command: S3_DIR=prerelease bundle exec rake release:gem
572
+ - store_artifacts:
573
+ path: pkg/
574
+ destination: gem
575
+
576
+ workflows:
577
+ version: 2
578
+ build-and-test:
579
+ 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