ddtrace 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +492 -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/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  11. data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
  12. data/.dockerignore +1 -0
  13. data/.env +26 -0
  14. data/.github/CODEOWNERS +1 -0
  15. data/.gitignore +61 -0
  16. data/.gitlab-ci.yml +26 -0
  17. data/.rspec +1 -0
  18. data/.rubocop.yml +85 -0
  19. data/.yardopts +5 -0
  20. data/Appraisals +961 -0
  21. data/CHANGELOG.md +1402 -0
  22. data/CONTRIBUTING.md +85 -0
  23. data/Gemfile +7 -0
  24. data/LICENSE +6 -0
  25. data/LICENSE.Apache +200 -0
  26. data/LICENSE.BSD3 +24 -0
  27. data/NOTICE +4 -0
  28. data/README.md +23 -0
  29. data/Rakefile +753 -0
  30. data/benchmarks/postgres_database.yml +9 -0
  31. data/benchmarks/sidekiq_test.rb +154 -0
  32. data/ddtrace.gemspec +71 -0
  33. data/docker-compose.yml +370 -0
  34. data/docs/DevelopmentGuide.md +195 -0
  35. data/docs/GettingStarted.md +2224 -0
  36. data/lib/ddtrace.rb +76 -0
  37. data/lib/ddtrace/analytics.rb +36 -0
  38. data/lib/ddtrace/augmentation.rb +13 -0
  39. data/lib/ddtrace/augmentation/method_wrapper.rb +20 -0
  40. data/lib/ddtrace/augmentation/method_wrapping.rb +38 -0
  41. data/lib/ddtrace/augmentation/shim.rb +102 -0
  42. data/lib/ddtrace/buffer.rb +119 -0
  43. data/lib/ddtrace/chunker.rb +34 -0
  44. data/lib/ddtrace/configuration.rb +53 -0
  45. data/lib/ddtrace/configuration/base.rb +84 -0
  46. data/lib/ddtrace/configuration/components.rb +154 -0
  47. data/lib/ddtrace/configuration/dependency_resolver.rb +24 -0
  48. data/lib/ddtrace/configuration/option.rb +64 -0
  49. data/lib/ddtrace/configuration/option_definition.rb +123 -0
  50. data/lib/ddtrace/configuration/option_definition_set.rb +18 -0
  51. data/lib/ddtrace/configuration/option_set.rb +6 -0
  52. data/lib/ddtrace/configuration/options.rb +112 -0
  53. data/lib/ddtrace/configuration/pin_setup.rb +31 -0
  54. data/lib/ddtrace/configuration/settings.rb +273 -0
  55. data/lib/ddtrace/context.rb +305 -0
  56. data/lib/ddtrace/context_flush.rb +69 -0
  57. data/lib/ddtrace/context_provider.rb +50 -0
  58. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +25 -0
  59. data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
  60. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  61. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  62. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  63. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  64. data/lib/ddtrace/contrib/action_cable/ext.rb +23 -0
  65. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  66. data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
  67. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  68. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +148 -0
  69. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +25 -0
  70. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +27 -0
  71. data/lib/ddtrace/contrib/action_pack/ext.rb +16 -0
  72. data/lib/ddtrace/contrib/action_pack/integration.rb +38 -0
  73. data/lib/ddtrace/contrib/action_pack/patcher.rb +23 -0
  74. data/lib/ddtrace/contrib/action_pack/utils.rb +36 -0
  75. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +26 -0
  76. data/lib/ddtrace/contrib/action_view/event.rb +39 -0
  77. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  78. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
  79. data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
  80. data/lib/ddtrace/contrib/action_view/ext.rb +17 -0
  81. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +74 -0
  82. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +167 -0
  83. data/lib/ddtrace/contrib/action_view/integration.rb +45 -0
  84. data/lib/ddtrace/contrib/action_view/patcher.rb +47 -0
  85. data/lib/ddtrace/contrib/action_view/utils.rb +32 -0
  86. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +25 -0
  87. data/lib/ddtrace/contrib/active_model_serializers/event.rb +68 -0
  88. data/lib/ddtrace/contrib/active_model_serializers/events.rb +30 -0
  89. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +32 -0
  90. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +35 -0
  91. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
  92. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +40 -0
  93. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +29 -0
  94. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +45 -0
  95. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +30 -0
  96. data/lib/ddtrace/contrib/active_record/event.rb +30 -0
  97. data/lib/ddtrace/contrib/active_record/events.rb +30 -0
  98. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +60 -0
  99. data/lib/ddtrace/contrib/active_record/events/sql.rb +64 -0
  100. data/lib/ddtrace/contrib/active_record/ext.rb +21 -0
  101. data/lib/ddtrace/contrib/active_record/integration.rb +46 -0
  102. data/lib/ddtrace/contrib/active_record/patcher.rb +23 -0
  103. data/lib/ddtrace/contrib/active_record/utils.rb +76 -0
  104. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +157 -0
  105. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +48 -0
  106. data/lib/ddtrace/contrib/active_support/cache/redis.rb +47 -0
  107. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +25 -0
  108. data/lib/ddtrace/contrib/active_support/ext.rb +21 -0
  109. data/lib/ddtrace/contrib/active_support/integration.rb +40 -0
  110. data/lib/ddtrace/contrib/active_support/notifications/event.rb +64 -0
  111. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +66 -0
  112. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +159 -0
  113. data/lib/ddtrace/contrib/active_support/patcher.rb +23 -0
  114. data/lib/ddtrace/contrib/analytics.rb +24 -0
  115. data/lib/ddtrace/contrib/aws/configuration/settings.rb +25 -0
  116. data/lib/ddtrace/contrib/aws/ext.rb +20 -0
  117. data/lib/ddtrace/contrib/aws/instrumentation.rb +56 -0
  118. data/lib/ddtrace/contrib/aws/integration.rb +42 -0
  119. data/lib/ddtrace/contrib/aws/parsed_context.rb +56 -0
  120. data/lib/ddtrace/contrib/aws/patcher.rb +49 -0
  121. data/lib/ddtrace/contrib/aws/services.rb +115 -0
  122. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +15 -0
  123. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +41 -0
  124. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
  125. data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +23 -0
  126. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +38 -0
  127. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +28 -0
  128. data/lib/ddtrace/contrib/configurable.rb +76 -0
  129. data/lib/ddtrace/contrib/configuration/resolver.rb +16 -0
  130. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  131. data/lib/ddtrace/contrib/configuration/settings.rb +53 -0
  132. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +25 -0
  133. data/lib/ddtrace/contrib/dalli/ext.rb +17 -0
  134. data/lib/ddtrace/contrib/dalli/instrumentation.rb +50 -0
  135. data/lib/ddtrace/contrib/dalli/integration.rb +38 -0
  136. data/lib/ddtrace/contrib/dalli/patcher.rb +63 -0
  137. data/lib/ddtrace/contrib/dalli/quantize.rb +22 -0
  138. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +25 -0
  139. data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
  140. data/lib/ddtrace/contrib/delayed_job/integration.rb +38 -0
  141. data/lib/ddtrace/contrib/delayed_job/patcher.rb +28 -0
  142. data/lib/ddtrace/contrib/delayed_job/plugin.rb +61 -0
  143. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +26 -0
  144. data/lib/ddtrace/contrib/elasticsearch/ext.rb +19 -0
  145. data/lib/ddtrace/contrib/elasticsearch/integration.rb +39 -0
  146. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +117 -0
  147. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +80 -0
  148. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +27 -0
  149. data/lib/ddtrace/contrib/ethon/easy_patch.rb +148 -0
  150. data/lib/ddtrace/contrib/ethon/ext.rb +15 -0
  151. data/lib/ddtrace/contrib/ethon/integration.rb +43 -0
  152. data/lib/ddtrace/contrib/ethon/multi_patch.rb +80 -0
  153. data/lib/ddtrace/contrib/ethon/patcher.rb +25 -0
  154. data/lib/ddtrace/contrib/excon/configuration/settings.rb +28 -0
  155. data/lib/ddtrace/contrib/excon/ext.rb +14 -0
  156. data/lib/ddtrace/contrib/excon/integration.rb +43 -0
  157. data/lib/ddtrace/contrib/excon/middleware.rb +157 -0
  158. data/lib/ddtrace/contrib/excon/patcher.rb +27 -0
  159. data/lib/ddtrace/contrib/extensions.rb +93 -0
  160. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +33 -0
  161. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  162. data/lib/ddtrace/contrib/faraday/ext.rb +14 -0
  163. data/lib/ddtrace/contrib/faraday/integration.rb +43 -0
  164. data/lib/ddtrace/contrib/faraday/middleware.rb +83 -0
  165. data/lib/ddtrace/contrib/faraday/patcher.rb +80 -0
  166. data/lib/ddtrace/contrib/faraday/rack_builder.rb +18 -0
  167. data/lib/ddtrace/contrib/grape/configuration/settings.rb +27 -0
  168. data/lib/ddtrace/contrib/grape/endpoint.rb +208 -0
  169. data/lib/ddtrace/contrib/grape/ext.rb +19 -0
  170. data/lib/ddtrace/contrib/grape/instrumentation.rb +33 -0
  171. data/lib/ddtrace/contrib/grape/integration.rb +39 -0
  172. data/lib/ddtrace/contrib/grape/patcher.rb +73 -0
  173. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +27 -0
  174. data/lib/ddtrace/contrib/graphql/ext.rb +13 -0
  175. data/lib/ddtrace/contrib/graphql/integration.rb +39 -0
  176. data/lib/ddtrace/contrib/graphql/patcher.rb +60 -0
  177. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +25 -0
  178. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +74 -0
  179. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +54 -0
  180. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +76 -0
  181. data/lib/ddtrace/contrib/grpc/ext.rb +15 -0
  182. data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
  183. data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +49 -0
  184. data/lib/ddtrace/contrib/grpc/patcher.rb +68 -0
  185. data/lib/ddtrace/contrib/http/circuit_breaker.rb +39 -0
  186. data/lib/ddtrace/contrib/http/configuration/settings.rb +27 -0
  187. data/lib/ddtrace/contrib/http/ext.rb +14 -0
  188. data/lib/ddtrace/contrib/http/instrumentation.rb +175 -0
  189. data/lib/ddtrace/contrib/http/integration.rb +45 -0
  190. data/lib/ddtrace/contrib/http/patcher.rb +26 -0
  191. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  192. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +27 -0
  193. data/lib/ddtrace/contrib/httprb/ext.rb +14 -0
  194. data/lib/ddtrace/contrib/httprb/instrumentation.rb +163 -0
  195. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  196. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  197. data/lib/ddtrace/contrib/integration.rb +16 -0
  198. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +25 -0
  199. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  200. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  201. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  202. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  203. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  204. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  205. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  206. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  207. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  208. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  209. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  210. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  211. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  212. data/lib/ddtrace/contrib/kafka/ext.rb +38 -0
  213. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  214. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  215. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +28 -0
  216. data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
  217. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +67 -0
  218. data/lib/ddtrace/contrib/mongodb/integration.rb +38 -0
  219. data/lib/ddtrace/contrib/mongodb/parsers.rb +68 -0
  220. data/lib/ddtrace/contrib/mongodb/patcher.rb +31 -0
  221. data/lib/ddtrace/contrib/mongodb/subscribers.rb +108 -0
  222. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +25 -0
  223. data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
  224. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +60 -0
  225. data/lib/ddtrace/contrib/mysql2/integration.rb +38 -0
  226. data/lib/ddtrace/contrib/mysql2/patcher.rb +27 -0
  227. data/lib/ddtrace/contrib/patchable.rb +59 -0
  228. data/lib/ddtrace/contrib/patcher.rb +62 -0
  229. data/lib/ddtrace/contrib/presto/configuration/settings.rb +25 -0
  230. data/lib/ddtrace/contrib/presto/ext.rb +25 -0
  231. data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
  232. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  233. data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
  234. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +25 -0
  235. data/lib/ddtrace/contrib/racecar/event.rb +71 -0
  236. data/lib/ddtrace/contrib/racecar/events.rb +30 -0
  237. data/lib/ddtrace/contrib/racecar/events/batch.rb +27 -0
  238. data/lib/ddtrace/contrib/racecar/events/message.rb +27 -0
  239. data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
  240. data/lib/ddtrace/contrib/racecar/integration.rb +39 -0
  241. data/lib/ddtrace/contrib/racecar/patcher.rb +26 -0
  242. data/lib/ddtrace/contrib/rack/configuration/settings.rb +41 -0
  243. data/lib/ddtrace/contrib/rack/ext.rb +18 -0
  244. data/lib/ddtrace/contrib/rack/integration.rb +38 -0
  245. data/lib/ddtrace/contrib/rack/middlewares.rb +290 -0
  246. data/lib/ddtrace/contrib/rack/patcher.rb +107 -0
  247. data/lib/ddtrace/contrib/rack/request_queue.rb +39 -0
  248. data/lib/ddtrace/contrib/rails/configuration/settings.rb +83 -0
  249. data/lib/ddtrace/contrib/rails/ext.rb +13 -0
  250. data/lib/ddtrace/contrib/rails/framework.rb +124 -0
  251. data/lib/ddtrace/contrib/rails/integration.rb +44 -0
  252. data/lib/ddtrace/contrib/rails/middlewares.rb +38 -0
  253. data/lib/ddtrace/contrib/rails/patcher.rb +74 -0
  254. data/lib/ddtrace/contrib/rails/railtie.rb +17 -0
  255. data/lib/ddtrace/contrib/rails/utils.rb +20 -0
  256. data/lib/ddtrace/contrib/rake/configuration/settings.rb +27 -0
  257. data/lib/ddtrace/contrib/rake/ext.rb +18 -0
  258. data/lib/ddtrace/contrib/rake/instrumentation.rb +88 -0
  259. data/lib/ddtrace/contrib/rake/integration.rb +38 -0
  260. data/lib/ddtrace/contrib/rake/patcher.rb +30 -0
  261. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
  262. data/lib/ddtrace/contrib/redis/configuration/settings.rb +25 -0
  263. data/lib/ddtrace/contrib/redis/ext.rb +18 -0
  264. data/lib/ddtrace/contrib/redis/integration.rb +42 -0
  265. data/lib/ddtrace/contrib/redis/patcher.rb +97 -0
  266. data/lib/ddtrace/contrib/redis/quantize.rb +47 -0
  267. data/lib/ddtrace/contrib/redis/tags.rb +38 -0
  268. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
  269. data/lib/ddtrace/contrib/registerable.rb +33 -0
  270. data/lib/ddtrace/contrib/registry.rb +42 -0
  271. data/lib/ddtrace/contrib/resque/configuration/settings.rb +26 -0
  272. data/lib/ddtrace/contrib/resque/ext.rb +14 -0
  273. data/lib/ddtrace/contrib/resque/integration.rb +47 -0
  274. data/lib/ddtrace/contrib/resque/patcher.rb +29 -0
  275. data/lib/ddtrace/contrib/resque/resque_job.rb +80 -0
  276. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +26 -0
  277. data/lib/ddtrace/contrib/rest_client/ext.rb +14 -0
  278. data/lib/ddtrace/contrib/rest_client/integration.rb +38 -0
  279. data/lib/ddtrace/contrib/rest_client/patcher.rb +23 -0
  280. data/lib/ddtrace/contrib/rest_client/request_patch.rb +89 -0
  281. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +23 -0
  282. data/lib/ddtrace/contrib/sequel/database.rb +61 -0
  283. data/lib/ddtrace/contrib/sequel/dataset.rb +62 -0
  284. data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
  285. data/lib/ddtrace/contrib/sequel/integration.rb +38 -0
  286. data/lib/ddtrace/contrib/sequel/patcher.rb +33 -0
  287. data/lib/ddtrace/contrib/sequel/utils.rb +46 -0
  288. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +24 -0
  289. data/lib/ddtrace/contrib/shoryuken/ext.rb +18 -0
  290. data/lib/ddtrace/contrib/shoryuken/integration.rb +39 -0
  291. data/lib/ddtrace/contrib/shoryuken/patcher.rb +24 -0
  292. data/lib/ddtrace/contrib/shoryuken/tracer.rb +49 -0
  293. data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +43 -0
  294. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +31 -0
  295. data/lib/ddtrace/contrib/sidekiq/ext.rb +24 -0
  296. data/lib/ddtrace/contrib/sidekiq/integration.rb +38 -0
  297. data/lib/ddtrace/contrib/sidekiq/patcher.rb +41 -0
  298. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +67 -0
  299. data/lib/ddtrace/contrib/sidekiq/tracing.rb +45 -0
  300. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +34 -0
  301. data/lib/ddtrace/contrib/sinatra/env.rb +58 -0
  302. data/lib/ddtrace/contrib/sinatra/ext.rb +24 -0
  303. data/lib/ddtrace/contrib/sinatra/headers.rb +31 -0
  304. data/lib/ddtrace/contrib/sinatra/integration.rb +38 -0
  305. data/lib/ddtrace/contrib/sinatra/patcher.rb +28 -0
  306. data/lib/ddtrace/contrib/sinatra/tracer.rb +150 -0
  307. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +78 -0
  308. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +25 -0
  309. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +26 -0
  310. data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
  311. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +84 -0
  312. data/lib/ddtrace/contrib/sucker_punch/integration.rb +38 -0
  313. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +42 -0
  314. data/lib/ddtrace/correlation.rb +38 -0
  315. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  316. data/lib/ddtrace/diagnostics/health.rb +33 -0
  317. data/lib/ddtrace/distributed_tracing/headers/b3.rb +44 -0
  318. data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +56 -0
  319. data/lib/ddtrace/distributed_tracing/headers/datadog.rb +42 -0
  320. data/lib/ddtrace/distributed_tracing/headers/headers.rb +70 -0
  321. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +45 -0
  322. data/lib/ddtrace/encoding.rb +69 -0
  323. data/lib/ddtrace/environment.rb +31 -0
  324. data/lib/ddtrace/error.rb +27 -0
  325. data/lib/ddtrace/event.rb +52 -0
  326. data/lib/ddtrace/ext/analytics.rb +12 -0
  327. data/lib/ddtrace/ext/app_types.rb +11 -0
  328. data/lib/ddtrace/ext/correlation.rb +11 -0
  329. data/lib/ddtrace/ext/diagnostics.rb +35 -0
  330. data/lib/ddtrace/ext/distributed.rb +33 -0
  331. data/lib/ddtrace/ext/environment.rb +16 -0
  332. data/lib/ddtrace/ext/errors.rb +10 -0
  333. data/lib/ddtrace/ext/forced_tracing.rb +25 -0
  334. data/lib/ddtrace/ext/http.rb +46 -0
  335. data/lib/ddtrace/ext/manual_tracing.rb +9 -0
  336. data/lib/ddtrace/ext/metrics.rb +15 -0
  337. data/lib/ddtrace/ext/net.rb +10 -0
  338. data/lib/ddtrace/ext/priority.rb +16 -0
  339. data/lib/ddtrace/ext/runtime.rb +26 -0
  340. data/lib/ddtrace/ext/sampling.rb +16 -0
  341. data/lib/ddtrace/ext/sql.rb +8 -0
  342. data/lib/ddtrace/ext/transport.rb +17 -0
  343. data/lib/ddtrace/forced_tracing.rb +36 -0
  344. data/lib/ddtrace/logger.rb +40 -0
  345. data/lib/ddtrace/metrics.rb +222 -0
  346. data/lib/ddtrace/monkey.rb +58 -0
  347. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  348. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  349. data/lib/ddtrace/opentracer.rb +40 -0
  350. data/lib/ddtrace/opentracer/binary_propagator.rb +24 -0
  351. data/lib/ddtrace/opentracer/carrier.rb +6 -0
  352. data/lib/ddtrace/opentracer/distributed_headers.rb +52 -0
  353. data/lib/ddtrace/opentracer/global_tracer.rb +15 -0
  354. data/lib/ddtrace/opentracer/propagator.rb +22 -0
  355. data/lib/ddtrace/opentracer/rack_propagator.rb +60 -0
  356. data/lib/ddtrace/opentracer/scope.rb +15 -0
  357. data/lib/ddtrace/opentracer/scope_manager.rb +6 -0
  358. data/lib/ddtrace/opentracer/span.rb +98 -0
  359. data/lib/ddtrace/opentracer/span_context.rb +14 -0
  360. data/lib/ddtrace/opentracer/span_context_factory.rb +23 -0
  361. data/lib/ddtrace/opentracer/text_map_propagator.rb +75 -0
  362. data/lib/ddtrace/opentracer/thread_local_scope.rb +30 -0
  363. data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +40 -0
  364. data/lib/ddtrace/opentracer/tracer.rb +208 -0
  365. data/lib/ddtrace/patcher.rb +47 -0
  366. data/lib/ddtrace/pin.rb +138 -0
  367. data/lib/ddtrace/pipeline.rb +46 -0
  368. data/lib/ddtrace/pipeline/span_filter.rb +38 -0
  369. data/lib/ddtrace/pipeline/span_processor.rb +20 -0
  370. data/lib/ddtrace/propagation/grpc_propagator.rb +61 -0
  371. data/lib/ddtrace/propagation/http_propagator.rb +75 -0
  372. data/lib/ddtrace/quantization/hash.rb +103 -0
  373. data/lib/ddtrace/quantization/http.rb +86 -0
  374. data/lib/ddtrace/runtime/cgroup.rb +44 -0
  375. data/lib/ddtrace/runtime/class_count.rb +17 -0
  376. data/lib/ddtrace/runtime/container.rb +73 -0
  377. data/lib/ddtrace/runtime/gc.rb +16 -0
  378. data/lib/ddtrace/runtime/identity.rb +41 -0
  379. data/lib/ddtrace/runtime/metrics.rb +96 -0
  380. data/lib/ddtrace/runtime/object_space.rb +19 -0
  381. data/lib/ddtrace/runtime/socket.rb +14 -0
  382. data/lib/ddtrace/runtime/thread_count.rb +16 -0
  383. data/lib/ddtrace/sampler.rb +292 -0
  384. data/lib/ddtrace/sampling.rb +2 -0
  385. data/lib/ddtrace/sampling/matcher.rb +57 -0
  386. data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
  387. data/lib/ddtrace/sampling/rule.rb +61 -0
  388. data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
  389. data/lib/ddtrace/span.rb +307 -0
  390. data/lib/ddtrace/sync_writer.rb +67 -0
  391. data/lib/ddtrace/tracer.rb +439 -0
  392. data/lib/ddtrace/transport/http.rb +91 -0
  393. data/lib/ddtrace/transport/http/adapters/net.rb +120 -0
  394. data/lib/ddtrace/transport/http/adapters/registry.rb +24 -0
  395. data/lib/ddtrace/transport/http/adapters/test.rb +81 -0
  396. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +68 -0
  397. data/lib/ddtrace/transport/http/api.rb +46 -0
  398. data/lib/ddtrace/transport/http/api/endpoint.rb +27 -0
  399. data/lib/ddtrace/transport/http/api/fallbacks.rb +22 -0
  400. data/lib/ddtrace/transport/http/api/instance.rb +33 -0
  401. data/lib/ddtrace/transport/http/api/map.rb +14 -0
  402. data/lib/ddtrace/transport/http/api/spec.rb +15 -0
  403. data/lib/ddtrace/transport/http/builder.rb +163 -0
  404. data/lib/ddtrace/transport/http/client.rb +50 -0
  405. data/lib/ddtrace/transport/http/env.rb +48 -0
  406. data/lib/ddtrace/transport/http/response.rb +26 -0
  407. data/lib/ddtrace/transport/http/statistics.rb +30 -0
  408. data/lib/ddtrace/transport/http/traces.rb +143 -0
  409. data/lib/ddtrace/transport/io.rb +26 -0
  410. data/lib/ddtrace/transport/io/client.rb +76 -0
  411. data/lib/ddtrace/transport/io/response.rb +25 -0
  412. data/lib/ddtrace/transport/io/traces.rb +91 -0
  413. data/lib/ddtrace/transport/parcel.rb +13 -0
  414. data/lib/ddtrace/transport/request.rb +13 -0
  415. data/lib/ddtrace/transport/response.rb +60 -0
  416. data/lib/ddtrace/transport/statistics.rb +72 -0
  417. data/lib/ddtrace/transport/traces.rb +183 -0
  418. data/lib/ddtrace/utils.rb +65 -0
  419. data/lib/ddtrace/utils/database.rb +25 -0
  420. data/lib/ddtrace/utils/time.rb +14 -0
  421. data/lib/ddtrace/vendor/active_record/connection_specification.rb +301 -0
  422. data/lib/ddtrace/version.rb +12 -0
  423. data/lib/ddtrace/worker.rb +20 -0
  424. data/lib/ddtrace/workers.rb +117 -0
  425. data/lib/ddtrace/workers/async.rb +165 -0
  426. data/lib/ddtrace/workers/loop.rb +105 -0
  427. data/lib/ddtrace/workers/polling.rb +48 -0
  428. data/lib/ddtrace/workers/queue.rb +39 -0
  429. data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
  430. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  431. data/lib/ddtrace/writer.rb +175 -0
  432. data/tasks/release_gem.rake +28 -0
  433. metadata +815 -0
@@ -0,0 +1,9 @@
1
+ production:
2
+ adapter: 'postgresql'
3
+ timeout: 5000
4
+ database: <%= ENV.fetch('TEST_POSTGRES_DB', 'postgres') %>
5
+ host: <%= ENV.fetch('TEST_POSTGRES_HOST', '127.0.0.1') %>
6
+ port: <%= ENV.fetch('TEST_POSTGRES_PORT', 5432) %>
7
+ username: <%= ENV.fetch('TEST_POSTGRES_USER', 'postgres') %>
8
+ password: <%= ENV.fetch('TEST_POSTGRES_PASSWORD', 'postgres') %>
9
+ pool: 30
@@ -0,0 +1,154 @@
1
+ ENV['RAILS_ENV'] = 'production'
2
+ require 'English'
3
+
4
+ # Benchmark Configuration container
5
+ module TestConfiguration
6
+ module_function
7
+
8
+ def sidekiq
9
+ Sidekiq.options.tap do |options|
10
+ options[:tag] = 'test'
11
+ options[:queues] << 'default'
12
+ options[:concurrency] = 20
13
+ options[:timeout] = 2
14
+ end
15
+ end
16
+
17
+ def redis
18
+ { pool_size: 30, timeout: 3 }
19
+ end
20
+
21
+ def iteration_count
22
+ 1000
23
+ end
24
+ end
25
+
26
+ require 'bundler/setup'
27
+ require 'rails/all'
28
+ Bundler.require(*Rails.groups)
29
+
30
+ # Example Rails App
31
+ module SampleApp
32
+ class Application < Rails::Application; end
33
+ end
34
+
35
+ # Overrides rails configueration locations
36
+ module OverrideConfiguration
37
+ def paths
38
+ super.tap { |path| path.add 'config/database', with: 'benchmarks/postgres_database.yml' }
39
+ end
40
+ end
41
+
42
+ Rails::Application::Configuration.prepend(OverrideConfiguration)
43
+
44
+ Rails.application.configure do
45
+ config.cache_classes = true
46
+ config.eager_load = true
47
+ config.active_job.queue_adapter = :sidekiq
48
+ end
49
+
50
+ ActiveRecord::Base.configurations = Rails.application.config.database_configuration
51
+ Rails.application.initialize!
52
+
53
+ ActiveRecord::Schema.define do
54
+ drop_table(:samples) if connection.table_exists?(:samples)
55
+
56
+ create_table :samples do |t|
57
+ t.string :name
58
+ t.timestamps
59
+ end
60
+ end
61
+
62
+ class Sample < ActiveRecord::Base; end
63
+
64
+ require 'sidekiq/launcher'
65
+ require 'sidekiq/cli'
66
+ require 'concurrent/atomic/atomic_fixnum'
67
+
68
+ Sidekiq.configure_server do |config|
69
+ redis_conn = proc do
70
+ Redis.new(
71
+ host: ENV.fetch('TEST_REDIS_HOST', '127.0.0.1'),
72
+ port: ENV.fetch('TEST_REDIS_PORT', 6379)
73
+ )
74
+ end
75
+ config.redis = ConnectionPool.new(size: TestConfiguration.redis[:pool_size],
76
+ timeout: TestConfiguration.redis[:timeout],
77
+ &redis_conn)
78
+ end
79
+
80
+ # Simple Sidekiq worker performing the real benchmark
81
+ class Worker
82
+ class << self
83
+ attr_reader :iterations, :conditional_variable
84
+ end
85
+
86
+ @iterations = Concurrent::AtomicFixnum.new(0)
87
+ @conditional_variable = ConditionVariable.new
88
+
89
+ include Sidekiq::Worker
90
+ def perform(iter, max_iterations)
91
+ self.class.iterations.increment
92
+ self.class.conditional_variable.broadcast if self.class.iterations.value > max_iterations
93
+
94
+ Sample.create!(name: iter.to_s).save
95
+
96
+ 100.times do
97
+ Sample.last.name
98
+ end
99
+
100
+ Sample.last(100).to_a
101
+ end
102
+ end
103
+
104
+ if Datadog.respond_to?(:configure)
105
+ Datadog.configure do |d|
106
+ d.use :rails, enabled: true, tags: { 'tag' => 'value' }
107
+ d.use :http
108
+ d.use :sidekiq, service_name: 'service'
109
+ d.use :redis
110
+ d.use :dalli
111
+ d.use :resque, workers: [Worker]
112
+
113
+ processor = Datadog::Pipeline::SpanProcessor.new do |span|
114
+ true if span.service == 'B'
115
+ end
116
+
117
+ Datadog::Pipeline.before_flush(processor)
118
+ end
119
+ end
120
+
121
+ def current_memory
122
+ `ps -o rss #{$PROCESS_ID}`.split("\n")[1].to_f / 1024
123
+ end
124
+
125
+ def time
126
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
127
+ end
128
+
129
+ def launch(iterations, options)
130
+ iterations.times do |i|
131
+ Worker.perform_async(i, iterations)
132
+ end
133
+
134
+ launcher = Sidekiq::Launcher.new(options)
135
+ launcher.run
136
+ end
137
+
138
+ def wait_and_measure(iterations)
139
+ start = time
140
+
141
+ STDERR.puts "#{time - start}, #{current_memory}"
142
+
143
+ mutex = Mutex.new
144
+
145
+ while Worker.iterations.value < iterations
146
+ mutex.synchronize do
147
+ Worker.conditional_variable.wait(mutex, 1)
148
+ STDERR.puts "#{time - start}, #{current_memory}"
149
+ end
150
+ end
151
+ end
152
+
153
+ launch(TestConfiguration.iteration_count, TestConfiguration.sidekiq)
154
+ wait_and_measure(TestConfiguration.iteration_count)
@@ -0,0 +1,71 @@
1
+ # coding: utf-8
2
+
3
+ lib = File.expand_path('../lib', __FILE__)
4
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
+ require 'ddtrace/version'
6
+
7
+ Gem::Specification.new do |spec|
8
+ spec.name = 'ddtrace'
9
+ spec.version = Datadog::VERSION::STRING
10
+ spec.required_ruby_version = ">= #{Datadog::VERSION::MINIMUM_RUBY_VERSION}"
11
+ spec.required_rubygems_version = '>= 2.0.0'
12
+ spec.authors = ['Datadog, Inc.']
13
+ spec.email = ['dev@datadoghq.com']
14
+
15
+ spec.summary = 'Datadog tracing code for your Ruby applications'
16
+ spec.description = <<-EOS.gsub(/^[\s]+/, '')
17
+ ddtrace is Datadog’s tracing client for Ruby. It is used to trace requests
18
+ as they flow across web servers, databases and microservices so that developers
19
+ have great visiblity into bottlenecks and troublesome requests.
20
+ EOS
21
+
22
+ spec.homepage = 'https://github.com/DataDog/dd-trace-rb'
23
+ spec.license = 'BSD-3-Clause'
24
+
25
+ if spec.respond_to?(:metadata)
26
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
27
+ else
28
+ raise 'RubyGems 2.0 or newer is required to protect against public gem pushes.'
29
+ end
30
+
31
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
+ spec.bindir = 'exe'
33
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
+ spec.require_paths = ['lib']
35
+
36
+ spec.add_dependency 'msgpack'
37
+
38
+ # Optional extensions
39
+ # TODO: Move this to Appraisals?
40
+ spec.add_development_dependency 'dogstatsd-ruby', '>= 3.3.0'
41
+ spec.add_development_dependency 'opentracing', '>= 0.4.1'
42
+
43
+ # Development dependencies
44
+ spec.add_development_dependency 'rake', '>= 10.5'
45
+ spec.add_development_dependency 'rubocop', '= 0.49.1' if RUBY_VERSION >= '2.1.0'
46
+ spec.add_development_dependency 'rspec', '~> 3.0'
47
+ spec.add_development_dependency 'rspec-collection_matchers', '~> 1.1'
48
+ spec.add_development_dependency 'minitest', '= 5.10.1'
49
+ spec.add_development_dependency 'minitest-around', '0.5.0'
50
+ spec.add_development_dependency 'minitest-stub_any_instance', '1.0.2'
51
+ spec.add_development_dependency 'appraisal', '~> 2.2'
52
+ spec.add_development_dependency 'yard', '~> 0.9'
53
+ spec.add_development_dependency 'webmock', '~> 2.0'
54
+ spec.add_development_dependency 'builder'
55
+ if RUBY_PLATFORM != 'java'
56
+ spec.add_development_dependency 'sqlite3', '~> 1.3.6'
57
+ else
58
+ spec.add_development_dependency 'jdbc-sqlite3', '~> 3'
59
+ end
60
+ spec.add_development_dependency 'climate_control', '~> 0.2.0'
61
+
62
+ # locking transitive dependency of webmock
63
+ spec.add_development_dependency 'addressable', '~> 2.4.0'
64
+ spec.add_development_dependency 'benchmark-ips', '~> 2.8'
65
+ spec.add_development_dependency 'benchmark-memory', '~> 0.1'
66
+ spec.add_development_dependency 'memory_profiler', '~> 0.9'
67
+ spec.add_development_dependency 'redcarpet', '~> 3.4' if RUBY_PLATFORM != 'java'
68
+ spec.add_development_dependency 'pry', '~> 0.10.4'
69
+ spec.add_development_dependency 'pry-stack_explorer', '~> 0.4.9.2'
70
+ spec.add_development_dependency 'warning', '~> 1' if RUBY_VERSION >= '2.5.0'
71
+ end
@@ -0,0 +1,370 @@
1
+ version: '3.2'
2
+ services:
3
+ # MRI
4
+ tracer-2.0:
5
+ image: palazzem/docker-library:ddtrace_rb_2_0_0
6
+ command: /bin/bash
7
+ depends_on:
8
+ - ddagent
9
+ - elasticsearch
10
+ - memcached
11
+ - mongodb
12
+ - mysql
13
+ - postgres
14
+ - presto
15
+ - redis
16
+ env_file: ./.env
17
+ environment:
18
+ - BUNDLE_GEMFILE=/app/Gemfile
19
+ - DD_AGENT_HOST=ddagent
20
+ - TEST_DATADOG_INTEGRATION=1
21
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
22
+ - TEST_MEMCACHED_HOST=memcached
23
+ - TEST_MONGODB_HOST=mongodb
24
+ - TEST_MYSQL_HOST=mysql
25
+ - TEST_POSTGRES_HOST=postgres
26
+ - TEST_PRESTO_HOST=presto
27
+ - TEST_REDIS_HOST=redis
28
+ stdin_open: true
29
+ tty: true
30
+ volumes:
31
+ - .:/app
32
+ - bundle-2.0:/usr/local/bundle
33
+ - gemfiles-2.0:/app/gemfiles
34
+ tracer-2.1:
35
+ image: palazzem/docker-library:ddtrace_rb_2_1_10
36
+ command: /bin/bash
37
+ depends_on:
38
+ - ddagent
39
+ - elasticsearch
40
+ - memcached
41
+ - mongodb
42
+ - mysql
43
+ - postgres
44
+ - presto
45
+ - redis
46
+ env_file: ./.env
47
+ environment:
48
+ - BUNDLE_GEMFILE=/app/Gemfile
49
+ - DD_AGENT_HOST=ddagent
50
+ - TEST_DATADOG_INTEGRATION=1
51
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
52
+ - TEST_MEMCACHED_HOST=memcached
53
+ - TEST_MONGODB_HOST=mongodb
54
+ - TEST_MYSQL_HOST=mysql
55
+ - TEST_POSTGRES_HOST=postgres
56
+ - TEST_PRESTO_HOST=presto
57
+ - TEST_PRESTO_PORT=8080
58
+ - TEST_REDIS_HOST=redis
59
+ stdin_open: true
60
+ tty: true
61
+ volumes:
62
+ - .:/app
63
+ - bundle-2.1:/usr/local/bundle
64
+ - gemfiles-2.1:/app/gemfiles
65
+ tracer-2.2:
66
+ image: palazzem/docker-library:ddtrace_rb_2_2_10
67
+ command: /bin/bash
68
+ depends_on:
69
+ - ddagent
70
+ - elasticsearch
71
+ - memcached
72
+ - mongodb
73
+ - mysql
74
+ - postgres
75
+ - presto
76
+ - redis
77
+ env_file: ./.env
78
+ environment:
79
+ - BUNDLE_GEMFILE=/app/Gemfile
80
+ - DD_AGENT_HOST=ddagent
81
+ - TEST_DATADOG_INTEGRATION=1
82
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
83
+ - TEST_MEMCACHED_HOST=memcached
84
+ - TEST_MONGODB_HOST=mongodb
85
+ - TEST_MYSQL_HOST=mysql
86
+ - TEST_POSTGRES_HOST=postgres
87
+ - TEST_PRESTO_HOST=presto
88
+ - TEST_PRESTO_PORT=8080
89
+ - TEST_REDIS_HOST=redis
90
+ stdin_open: true
91
+ tty: true
92
+ volumes:
93
+ - .:/app
94
+ - bundle-2.2:/usr/local/bundle
95
+ - gemfiles-2.2:/app/gemfiles
96
+ tracer-2.3:
97
+ image: palazzem/docker-library:ddtrace_rb_2_3_8
98
+ command: /bin/bash
99
+ depends_on:
100
+ - ddagent
101
+ - elasticsearch
102
+ - memcached
103
+ - mongodb
104
+ - mysql
105
+ - postgres
106
+ - presto
107
+ - redis
108
+ env_file: ./.env
109
+ environment:
110
+ - BUNDLE_GEMFILE=/app/Gemfile
111
+ - DD_AGENT_HOST=ddagent
112
+ - TEST_DATADOG_INTEGRATION=1
113
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
114
+ - TEST_MEMCACHED_HOST=memcached
115
+ - TEST_MONGODB_HOST=mongodb
116
+ - TEST_MYSQL_HOST=mysql
117
+ - TEST_POSTGRES_HOST=postgres
118
+ - TEST_PRESTO_HOST=presto
119
+ - TEST_PRESTO_PORT=8080
120
+ - TEST_REDIS_HOST=redis
121
+ stdin_open: true
122
+ tty: true
123
+ volumes:
124
+ - .:/app
125
+ - bundle-2.3:/usr/local/bundle
126
+ - gemfiles-2.3:/app/gemfiles
127
+ tracer-2.4:
128
+ image: palazzem/docker-library:ddtrace_rb_2_4_6
129
+ command: /bin/bash
130
+ depends_on:
131
+ - ddagent
132
+ - elasticsearch
133
+ - memcached
134
+ - mongodb
135
+ - mysql
136
+ - postgres
137
+ - presto
138
+ - redis
139
+ env_file: ./.env
140
+ environment:
141
+ - BUNDLE_GEMFILE=/app/Gemfile
142
+ - DD_AGENT_HOST=ddagent
143
+ - TEST_DATADOG_INTEGRATION=1
144
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
145
+ - TEST_MEMCACHED_HOST=memcached
146
+ - TEST_MONGODB_HOST=mongodb
147
+ - TEST_MYSQL_HOST=mysql
148
+ - TEST_POSTGRES_HOST=postgres
149
+ - TEST_PRESTO_HOST=presto
150
+ - TEST_PRESTO_PORT=8080
151
+ - TEST_REDIS_HOST=redis
152
+ stdin_open: true
153
+ tty: true
154
+ volumes:
155
+ - .:/app
156
+ - bundle-2.4:/usr/local/bundle
157
+ - gemfiles-2.4:/app/gemfiles
158
+ tracer-2.5:
159
+ image: marcotc/docker-library:ddtrace_rb_2_5_6
160
+ command: /bin/bash
161
+ depends_on:
162
+ - ddagent
163
+ - elasticsearch
164
+ - memcached
165
+ - mongodb
166
+ - mysql
167
+ - postgres
168
+ - presto
169
+ - redis
170
+ env_file: ./.env
171
+ environment:
172
+ - BUNDLE_GEMFILE=/app/Gemfile
173
+ - DD_AGENT_HOST=ddagent
174
+ - TEST_DATADOG_INTEGRATION=1
175
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
176
+ - TEST_MEMCACHED_HOST=memcached
177
+ - TEST_MONGODB_HOST=mongodb
178
+ - TEST_MYSQL_HOST=mysql
179
+ - TEST_POSTGRES_HOST=postgres
180
+ - TEST_PRESTO_HOST=presto
181
+ - TEST_PRESTO_PORT=8080
182
+ - TEST_REDIS_HOST=redis
183
+ stdin_open: true
184
+ tty: true
185
+ volumes:
186
+ - .:/app
187
+ - bundle-2.5:/usr/local/bundle
188
+ - gemfiles-2.5:/app/gemfiles
189
+ tracer-2.6:
190
+ image: marcotc/docker-library:ddtrace_rb_2_6_4
191
+ command: /bin/bash
192
+ depends_on:
193
+ - ddagent
194
+ - elasticsearch
195
+ - memcached
196
+ - mongodb
197
+ - mysql
198
+ - postgres
199
+ - presto
200
+ - redis
201
+ env_file: ./.env
202
+ environment:
203
+ - BUNDLE_GEMFILE=/app/Gemfile
204
+ - DD_AGENT_HOST=ddagent
205
+ - TEST_DATADOG_INTEGRATION=1
206
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
207
+ - TEST_MEMCACHED_HOST=memcached
208
+ - TEST_MONGODB_HOST=mongodb
209
+ - TEST_MYSQL_HOST=mysql
210
+ - TEST_POSTGRES_HOST=postgres
211
+ - TEST_PRESTO_HOST=presto
212
+ - TEST_PRESTO_PORT=8080
213
+ - TEST_REDIS_HOST=redis
214
+ stdin_open: true
215
+ tty: true
216
+ volumes:
217
+ - .:/app
218
+ - bundle-2.6:/usr/local/bundle
219
+ - gemfiles-2.6:/app/gemfiles
220
+ tracer-2.7:
221
+ image: marcotc/docker-library:ddtrace_rb_2_7_0
222
+ command: /bin/bash
223
+ depends_on:
224
+ - ddagent
225
+ - elasticsearch
226
+ - memcached
227
+ - mongodb
228
+ - mysql
229
+ - postgres
230
+ - presto
231
+ - redis
232
+ env_file: ./.env
233
+ environment:
234
+ - BUNDLE_GEMFILE=/app/Gemfile
235
+ - DD_AGENT_HOST=ddagent
236
+ - TEST_DATADOG_INTEGRATION=1
237
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
238
+ - TEST_MEMCACHED_HOST=memcached
239
+ - TEST_MONGODB_HOST=mongodb
240
+ - TEST_MYSQL_HOST=mysql
241
+ - TEST_POSTGRES_HOST=postgres
242
+ - TEST_PRESTO_HOST=presto
243
+ - TEST_PRESTO_PORT=8080
244
+ - TEST_REDIS_HOST=redis
245
+ stdin_open: true
246
+ tty: true
247
+ volumes:
248
+ - .:/app
249
+ - bundle-2.7:/usr/local/bundle
250
+ - gemfiles-2.7:/app/gemfiles
251
+ # JRuby
252
+ tracer-jruby-9.2:
253
+ image: marcotc/docker-library:ddtrace_rb_jruby_9_2
254
+ command: /bin/bash
255
+ depends_on:
256
+ - ddagent
257
+ - elasticsearch
258
+ - memcached
259
+ - mongodb
260
+ - mysql
261
+ - postgres
262
+ - presto
263
+ - redis
264
+ env_file: ./.env
265
+ environment:
266
+ - BUNDLE_GEMFILE=/app/Gemfile
267
+ - DD_AGENT_HOST=ddagent
268
+ - TEST_DATADOG_INTEGRATION=1
269
+ - TEST_ELASTICSEARCH_HOST=elasticsearch
270
+ - TEST_MEMCACHED_HOST=memcached
271
+ - TEST_MONGODB_HOST=mongodb
272
+ - TEST_MYSQL_HOST=mysql
273
+ - TEST_POSTGRES_HOST=postgres
274
+ - TEST_PRESTO_HOST=presto
275
+ - TEST_PRESTO_PORT=8080
276
+ - TEST_REDIS_HOST=redis
277
+ stdin_open: true
278
+ tty: true
279
+ volumes:
280
+ - .:/app
281
+ - bundle-jruby-9.2:/usr/local/bundle
282
+ - gemfiles-jruby-9.2:/app/gemfiles
283
+ ddagent:
284
+ image: datadog/agent
285
+ environment:
286
+ - DD_APM_ENABLED=true
287
+ - DD_BIND_HOST=0.0.0.0
288
+ - DD_API_KEY=00000000000000000000000000000000
289
+ expose:
290
+ - "8125/udp"
291
+ - "8126"
292
+ ports:
293
+ - "${DD_METRIC_AGENT_PORT}:8125/udp"
294
+ - "${DD_TRACE_AGENT_PORT}:8126"
295
+ elasticsearch:
296
+ # Note: ES 5.0 dies with error:
297
+ # max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
298
+ # see https://github.com/docker-library/elasticsearch/issues/98 for details
299
+ # For now, just rely on a 2.X server.
300
+ image: elasticsearch:2.4
301
+ expose:
302
+ - "9200"
303
+ - "9300"
304
+ ports:
305
+ - "${TEST_ELASTICSEARCH_REST_PORT}:9200"
306
+ - "${TEST_ELASTICSEARCH_NATIVE_PORT}:9300"
307
+ memcached:
308
+ image: memcached:1.5-alpine
309
+ expose:
310
+ - "11211"
311
+ ports:
312
+ - "${TEST_MEMCACHED_PORT}:11211"
313
+ mongodb:
314
+ image: mongo:3.5
315
+ expose:
316
+ - "27017"
317
+ ports:
318
+ - "${TEST_MONGODB_PORT}:27017"
319
+ mysql:
320
+ image: mysql:5.6
321
+ environment:
322
+ - MYSQL_DATABASE=$TEST_MYSQL_DB
323
+ - MYSQL_ROOT_PASSWORD=$TEST_MYSQL_ROOT_PASSWORD
324
+ - MYSQL_PASSWORD=$TEST_MYSQL_PASSWORD
325
+ - MYSQL_USER=$TEST_MYSQL_USER
326
+ expose:
327
+ - "3306"
328
+ ports:
329
+ - "${TEST_MYSQL_PORT}:3306"
330
+ postgres:
331
+ image: postgres:9.6
332
+ environment:
333
+ - POSTGRES_PASSWORD=$TEST_POSTGRES_PASSWORD
334
+ - POSTGRES_USER=$TEST_POSTGRES_USER
335
+ - POSTGRES_DB=$TEST_POSTGRES_DB
336
+ expose:
337
+ - "5432"
338
+ ports:
339
+ - "${TEST_POSTGRES_PORT}:5432"
340
+ presto:
341
+ image: prestosql/presto
342
+ expose:
343
+ - "8080"
344
+ ports:
345
+ - "${TEST_PRESTO_PORT}:8080"
346
+ redis:
347
+ image: redis:3.0
348
+ expose:
349
+ - "6379"
350
+ ports:
351
+ - "${TEST_REDIS_PORT}:6379"
352
+ volumes:
353
+ bundle-2.0:
354
+ bundle-2.1:
355
+ bundle-2.2:
356
+ bundle-2.3:
357
+ bundle-2.4:
358
+ bundle-2.5:
359
+ bundle-2.6:
360
+ bundle-2.7:
361
+ bundle-jruby-9.2:
362
+ gemfiles-2.0:
363
+ gemfiles-2.1:
364
+ gemfiles-2.2:
365
+ gemfiles-2.3:
366
+ gemfiles-2.4:
367
+ gemfiles-2.5:
368
+ gemfiles-2.6:
369
+ gemfiles-2.7:
370
+ gemfiles-jruby-9.2: