ddtrace 0.40.0 → 0.50.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 (852) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +502 -180
  3. data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
  4. data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
  5. data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
  6. data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
  7. data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
  8. data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
  9. data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
  10. data/.circleci/images/primary/{Dockerfile-2.0.0 → Dockerfile-3.0.0} +8 -8
  11. data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
  12. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  13. data/.circleci/images/primary/Dockerfile-truffleruby-21.1.0 +73 -0
  14. data/.dockerignore +0 -1
  15. data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
  16. data/.github/workflows/create-next-milestone.yml +20 -0
  17. data/.gitignore +0 -1
  18. data/.gitlab-ci.yml +18 -18
  19. data/.rubocop.yml +273 -7
  20. data/.rubocop_todo.yml +438 -0
  21. data/.simplecov +9 -0
  22. data/Appraisals +483 -231
  23. data/CHANGELOG.md +1386 -342
  24. data/CONTRIBUTING.md +2 -2
  25. data/Gemfile +65 -3
  26. data/LICENSE-3rdparty.csv +2 -0
  27. data/README.md +1 -0
  28. data/Rakefile +486 -338
  29. data/benchmarks/data/profiler-submission-marshal.gz +0 -0
  30. data/benchmarks/profiler_sample_loop.rb +69 -0
  31. data/benchmarks/profiler_submission.rb +93 -0
  32. data/bin/ddtracerb +15 -0
  33. data/ddtrace.gemspec +8 -36
  34. data/docker-compose.yml +93 -49
  35. data/docs/DevelopmentGuide.md +40 -2
  36. data/docs/GettingStarted.md +299 -78
  37. data/docs/ProfilingDevelopment.md +88 -0
  38. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +79 -0
  39. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +1518 -0
  40. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +35 -0
  41. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +157 -0
  42. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +34 -0
  43. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +153 -0
  44. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +35 -0
  45. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +174 -0
  46. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +35 -0
  47. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +206 -0
  48. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +35 -0
  49. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +206 -0
  50. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +40 -0
  51. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +271 -0
  52. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +40 -0
  53. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +271 -0
  54. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +41 -0
  55. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +273 -0
  56. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +41 -0
  57. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  58. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +42 -0
  59. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +279 -0
  60. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +40 -0
  61. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +290 -0
  62. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +40 -0
  63. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +290 -0
  64. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +41 -0
  65. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +292 -0
  66. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +41 -0
  67. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +297 -0
  68. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +40 -0
  69. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +287 -0
  70. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +40 -0
  71. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +287 -0
  72. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +41 -0
  73. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +289 -0
  74. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +41 -0
  75. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  76. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +42 -0
  77. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +295 -0
  78. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +36 -0
  79. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +180 -0
  80. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +36 -0
  81. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +180 -0
  82. data/gemfiles/jruby_9.2.11.1_contrib.gemfile +79 -0
  83. data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +1518 -0
  84. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +35 -0
  85. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +157 -0
  86. data/gemfiles/jruby_9.2.11.1_core_old.gemfile +34 -0
  87. data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +153 -0
  88. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +35 -0
  89. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +174 -0
  90. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +35 -0
  91. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +206 -0
  92. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +35 -0
  93. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +206 -0
  94. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +40 -0
  95. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +271 -0
  96. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +40 -0
  97. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +271 -0
  98. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +41 -0
  99. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +273 -0
  100. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +41 -0
  101. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  102. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +42 -0
  103. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +279 -0
  104. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +40 -0
  105. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +290 -0
  106. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +40 -0
  107. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +290 -0
  108. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +41 -0
  109. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +292 -0
  110. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +41 -0
  111. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +297 -0
  112. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +40 -0
  113. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +287 -0
  114. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +40 -0
  115. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +287 -0
  116. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +41 -0
  117. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +289 -0
  118. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +41 -0
  119. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  120. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +42 -0
  121. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +295 -0
  122. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +36 -0
  123. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +180 -0
  124. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +36 -0
  125. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +180 -0
  126. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +66 -0
  127. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +305 -0
  128. data/gemfiles/ruby_2.1.10_core_old.gemfile +33 -0
  129. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +118 -0
  130. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +39 -0
  131. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +196 -0
  132. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +40 -0
  133. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  134. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +42 -0
  135. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +215 -0
  136. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +39 -0
  137. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +204 -0
  138. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +41 -0
  139. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +223 -0
  140. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +40 -0
  141. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  142. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +38 -0
  143. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +218 -0
  144. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +38 -0
  145. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +218 -0
  146. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +40 -0
  147. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +237 -0
  148. data/gemfiles/ruby_2.2.10_contrib.gemfile +73 -0
  149. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +1450 -0
  150. data/gemfiles/ruby_2.2.10_core_old.gemfile +33 -0
  151. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +118 -0
  152. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +39 -0
  153. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +196 -0
  154. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +40 -0
  155. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  156. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +41 -0
  157. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +212 -0
  158. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +39 -0
  159. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +204 -0
  160. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +41 -0
  161. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +223 -0
  162. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +40 -0
  163. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  164. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +38 -0
  165. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +218 -0
  166. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +38 -0
  167. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +218 -0
  168. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +40 -0
  169. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +237 -0
  170. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +40 -0
  171. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +229 -0
  172. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +38 -0
  173. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +234 -0
  174. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +38 -0
  175. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +234 -0
  176. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +39 -0
  177. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +236 -0
  178. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +39 -0
  179. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  180. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +40 -0
  181. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +245 -0
  182. data/gemfiles/ruby_2.3.8_contrib.gemfile +73 -0
  183. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +1459 -0
  184. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +34 -0
  185. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +127 -0
  186. data/gemfiles/ruby_2.3.8_core_old.gemfile +33 -0
  187. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +123 -0
  188. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +34 -0
  189. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +144 -0
  190. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +34 -0
  191. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +174 -0
  192. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +39 -0
  193. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +201 -0
  194. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +40 -0
  195. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +210 -0
  196. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +41 -0
  197. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +217 -0
  198. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +39 -0
  199. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +209 -0
  200. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +41 -0
  201. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +228 -0
  202. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +40 -0
  203. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +218 -0
  204. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +38 -0
  205. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +223 -0
  206. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +38 -0
  207. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +223 -0
  208. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +40 -0
  209. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +242 -0
  210. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +40 -0
  211. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +234 -0
  212. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +37 -0
  213. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +234 -0
  214. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +37 -0
  215. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +234 -0
  216. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +38 -0
  217. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +236 -0
  218. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +38 -0
  219. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  220. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +39 -0
  221. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +245 -0
  222. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +35 -0
  223. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +150 -0
  224. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +35 -0
  225. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +150 -0
  226. data/gemfiles/ruby_2.4.6_contrib.gemfile +78 -0
  227. data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +1513 -0
  228. data/gemfiles/ruby_2.4.6_contrib_old.gemfile +38 -0
  229. data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +155 -0
  230. data/gemfiles/ruby_2.4.6_core_old.gemfile +37 -0
  231. data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +151 -0
  232. data/gemfiles/ruby_2.4.6_cucumber3.gemfile +38 -0
  233. data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +172 -0
  234. data/gemfiles/ruby_2.4.6_cucumber4.gemfile +38 -0
  235. data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +202 -0
  236. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +41 -0
  237. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +262 -0
  238. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +41 -0
  239. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +262 -0
  240. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +42 -0
  241. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +264 -0
  242. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +42 -0
  243. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +264 -0
  244. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +43 -0
  245. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +273 -0
  246. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +39 -0
  247. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +178 -0
  248. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +39 -0
  249. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +178 -0
  250. data/gemfiles/ruby_2.5.6_contrib.gemfile +83 -0
  251. data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +1526 -0
  252. data/gemfiles/ruby_2.5.6_contrib_old.gemfile +39 -0
  253. data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +165 -0
  254. data/gemfiles/ruby_2.5.6_core_old.gemfile +38 -0
  255. data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +161 -0
  256. data/gemfiles/ruby_2.5.6_cucumber3.gemfile +39 -0
  257. data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +182 -0
  258. data/gemfiles/ruby_2.5.6_cucumber4.gemfile +39 -0
  259. data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +214 -0
  260. data/gemfiles/ruby_2.5.6_cucumber5.gemfile +39 -0
  261. data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +214 -0
  262. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +44 -0
  263. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +276 -0
  264. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +44 -0
  265. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +276 -0
  266. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +45 -0
  267. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +278 -0
  268. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +45 -0
  269. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  270. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +46 -0
  271. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +284 -0
  272. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +44 -0
  273. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +295 -0
  274. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +44 -0
  275. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +295 -0
  276. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +45 -0
  277. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +297 -0
  278. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +45 -0
  279. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +302 -0
  280. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +44 -0
  281. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +292 -0
  282. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +44 -0
  283. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +292 -0
  284. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +45 -0
  285. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +294 -0
  286. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +45 -0
  287. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  288. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +46 -0
  289. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +300 -0
  290. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +40 -0
  291. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +188 -0
  292. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +40 -0
  293. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +188 -0
  294. data/gemfiles/ruby_2.6.4_contrib.gemfile +79 -0
  295. data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +1524 -0
  296. data/gemfiles/ruby_2.6.4_contrib_old.gemfile +39 -0
  297. data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +167 -0
  298. data/gemfiles/ruby_2.6.4_core_old.gemfile +38 -0
  299. data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +163 -0
  300. data/gemfiles/ruby_2.6.4_cucumber3.gemfile +39 -0
  301. data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +184 -0
  302. data/gemfiles/ruby_2.6.4_cucumber4.gemfile +39 -0
  303. data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +216 -0
  304. data/gemfiles/ruby_2.6.4_cucumber5.gemfile +39 -0
  305. data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +216 -0
  306. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +42 -0
  307. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +276 -0
  308. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +42 -0
  309. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +276 -0
  310. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +43 -0
  311. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +278 -0
  312. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +43 -0
  313. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  314. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +44 -0
  315. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +284 -0
  316. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +42 -0
  317. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +295 -0
  318. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +42 -0
  319. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +295 -0
  320. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +43 -0
  321. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +297 -0
  322. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +43 -0
  323. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +302 -0
  324. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +42 -0
  325. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +292 -0
  326. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +42 -0
  327. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +292 -0
  328. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +43 -0
  329. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +294 -0
  330. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +43 -0
  331. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  332. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +44 -0
  333. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +300 -0
  334. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +40 -0
  335. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +190 -0
  336. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +40 -0
  337. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +190 -0
  338. data/gemfiles/ruby_2.7.0_contrib.gemfile +78 -0
  339. data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +1523 -0
  340. data/gemfiles/ruby_2.7.0_contrib_old.gemfile +39 -0
  341. data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +167 -0
  342. data/gemfiles/ruby_2.7.0_core_old.gemfile +38 -0
  343. data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +163 -0
  344. data/gemfiles/ruby_2.7.0_cucumber3.gemfile +39 -0
  345. data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +184 -0
  346. data/gemfiles/ruby_2.7.0_cucumber4.gemfile +39 -0
  347. data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +216 -0
  348. data/gemfiles/ruby_2.7.0_cucumber5.gemfile +39 -0
  349. data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +216 -0
  350. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +42 -0
  351. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +276 -0
  352. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +42 -0
  353. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +276 -0
  354. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +44 -0
  355. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +295 -0
  356. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +44 -0
  357. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +295 -0
  358. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +44 -0
  359. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +284 -0
  360. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +42 -0
  361. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +295 -0
  362. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +42 -0
  363. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +295 -0
  364. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +43 -0
  365. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +297 -0
  366. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +43 -0
  367. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  368. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +42 -0
  369. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +292 -0
  370. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +42 -0
  371. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +292 -0
  372. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +44 -0
  373. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +311 -0
  374. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +44 -0
  375. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +311 -0
  376. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +44 -0
  377. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +300 -0
  378. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +40 -0
  379. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +190 -0
  380. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +40 -0
  381. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +190 -0
  382. data/gemfiles/ruby_3.0.0_contrib.gemfile +78 -0
  383. data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +1540 -0
  384. data/gemfiles/ruby_3.0.0_core_old.gemfile +39 -0
  385. data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +165 -0
  386. data/gemfiles/ruby_3.0.0_cucumber3.gemfile +40 -0
  387. data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +186 -0
  388. data/gemfiles/ruby_3.0.0_cucumber4.gemfile +40 -0
  389. data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +218 -0
  390. data/gemfiles/ruby_3.0.0_cucumber5.gemfile +40 -0
  391. data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +218 -0
  392. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +43 -0
  393. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +295 -0
  394. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +43 -0
  395. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +295 -0
  396. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +44 -0
  397. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +297 -0
  398. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +44 -0
  399. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  400. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +41 -0
  401. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +192 -0
  402. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +41 -0
  403. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +192 -0
  404. data/integration/README.md +67 -0
  405. data/integration/apps/rack/.dockerignore +1 -0
  406. data/integration/apps/rack/.envrc.sample +1 -0
  407. data/integration/apps/rack/.gitignore +4 -0
  408. data/integration/apps/rack/.rspec +1 -0
  409. data/integration/apps/rack/Dockerfile +28 -0
  410. data/integration/apps/rack/Dockerfile-ci +11 -0
  411. data/integration/apps/rack/Gemfile +24 -0
  412. data/integration/apps/rack/README.md +93 -0
  413. data/integration/apps/rack/app/acme.rb +80 -0
  414. data/integration/apps/rack/app/datadog.rb +17 -0
  415. data/integration/apps/rack/bin/run +22 -0
  416. data/integration/apps/rack/bin/setup +17 -0
  417. data/integration/apps/rack/bin/test +24 -0
  418. data/integration/apps/rack/config.ru +6 -0
  419. data/integration/apps/rack/config/puma.rb +14 -0
  420. data/integration/apps/rack/config/unicorn.rb +23 -0
  421. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  422. data/integration/apps/rack/docker-compose.yml +78 -0
  423. data/integration/apps/rack/script/build-images +38 -0
  424. data/integration/apps/rack/script/ci +51 -0
  425. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  426. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  427. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  428. data/integration/apps/rails-five/.dockerignore +1 -0
  429. data/integration/apps/rails-five/.env +3 -0
  430. data/integration/apps/rails-five/.envrc.sample +1 -0
  431. data/integration/apps/rails-five/.gitignore +30 -0
  432. data/integration/apps/rails-five/Dockerfile +25 -0
  433. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  434. data/integration/apps/rails-five/Gemfile +104 -0
  435. data/integration/apps/rails-five/README.md +94 -0
  436. data/integration/apps/rails-five/Rakefile +6 -0
  437. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  438. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  439. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  440. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  441. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  442. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  443. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  444. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  445. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  446. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  447. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  448. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  449. data/integration/apps/rails-five/app/models/test.rb +2 -0
  450. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  451. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  452. data/integration/apps/rails-five/bin/bundle +3 -0
  453. data/integration/apps/rails-five/bin/rails +9 -0
  454. data/integration/apps/rails-five/bin/rake +9 -0
  455. data/integration/apps/rails-five/bin/run +24 -0
  456. data/integration/apps/rails-five/bin/setup +27 -0
  457. data/integration/apps/rails-five/bin/spring +17 -0
  458. data/integration/apps/rails-five/bin/test +21 -0
  459. data/integration/apps/rails-five/bin/update +28 -0
  460. data/integration/apps/rails-five/config.ru +5 -0
  461. data/integration/apps/rails-five/config/application.rb +97 -0
  462. data/integration/apps/rails-five/config/boot.rb +4 -0
  463. data/integration/apps/rails-five/config/cable.yml +10 -0
  464. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  465. data/integration/apps/rails-five/config/database.yml +28 -0
  466. data/integration/apps/rails-five/config/environment.rb +5 -0
  467. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  468. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  469. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  470. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  471. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  472. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  473. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  474. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  475. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  476. data/integration/apps/rails-five/config/puma.rb +24 -0
  477. data/integration/apps/rails-five/config/routes.rb +11 -0
  478. data/integration/apps/rails-five/config/spring.rb +6 -0
  479. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  480. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  481. data/integration/apps/rails-five/db/schema.rb +23 -0
  482. data/integration/apps/rails-five/db/seeds.rb +7 -0
  483. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  484. data/integration/apps/rails-five/docker-compose.yml +100 -0
  485. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  486. data/integration/apps/rails-five/log/.keep +0 -0
  487. data/integration/apps/rails-five/public/robots.txt +1 -0
  488. data/integration/apps/rails-five/script/build-images +35 -0
  489. data/integration/apps/rails-five/script/ci +51 -0
  490. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  491. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  492. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  493. data/integration/apps/rails-five/storage/.keep +0 -0
  494. data/integration/apps/rails-five/tmp/.keep +0 -0
  495. data/integration/apps/rails-five/vendor/.keep +0 -0
  496. data/integration/apps/rspec/.dockerignore +1 -0
  497. data/integration/apps/rspec/.envrc.sample +1 -0
  498. data/integration/apps/rspec/.gitignore +2 -0
  499. data/integration/apps/rspec/.rspec +1 -0
  500. data/integration/apps/rspec/Dockerfile +25 -0
  501. data/integration/apps/rspec/Dockerfile-ci +11 -0
  502. data/integration/apps/rspec/Gemfile +14 -0
  503. data/integration/apps/rspec/README.md +70 -0
  504. data/integration/apps/rspec/agent.yaml +3 -0
  505. data/integration/apps/rspec/app/datadog.rb +13 -0
  506. data/integration/apps/rspec/app/fibonacci.rb +30 -0
  507. data/integration/apps/rspec/bin/run +20 -0
  508. data/integration/apps/rspec/bin/setup +17 -0
  509. data/integration/apps/rspec/bin/test +21 -0
  510. data/integration/apps/rspec/docker-compose.ci.yml +51 -0
  511. data/integration/apps/rspec/docker-compose.yml +63 -0
  512. data/integration/apps/rspec/script/build-images +37 -0
  513. data/integration/apps/rspec/script/ci +53 -0
  514. data/integration/apps/rspec/spec/fibonacci_spec.rb +16 -0
  515. data/integration/apps/rspec/spec/rspec_spec.rb +58 -0
  516. data/integration/apps/rspec/spec/spec_helper.rb +24 -0
  517. data/integration/apps/ruby/.dockerignore +1 -0
  518. data/integration/apps/ruby/.envrc.sample +1 -0
  519. data/integration/apps/ruby/.gitignore +2 -0
  520. data/integration/apps/ruby/Dockerfile +25 -0
  521. data/integration/apps/ruby/Dockerfile-ci +11 -0
  522. data/integration/apps/ruby/Gemfile +11 -0
  523. data/integration/apps/ruby/README.md +70 -0
  524. data/integration/apps/ruby/agent.yaml +3 -0
  525. data/integration/apps/ruby/app/datadog.rb +13 -0
  526. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  527. data/integration/apps/ruby/bin/run +20 -0
  528. data/integration/apps/ruby/bin/setup +17 -0
  529. data/integration/apps/ruby/bin/test +21 -0
  530. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  531. data/integration/apps/ruby/docker-compose.yml +63 -0
  532. data/integration/apps/ruby/script/build-images +38 -0
  533. data/integration/apps/ruby/script/ci +51 -0
  534. data/integration/images/agent/Dockerfile +2 -0
  535. data/integration/images/agent/agent.yaml +3 -0
  536. data/integration/images/include/datadog/analyzer.rb +71 -0
  537. data/integration/images/include/datadog/demo_env.rb +101 -0
  538. data/integration/images/include/http-health-check +33 -0
  539. data/integration/images/ruby/2.1/Dockerfile +54 -0
  540. data/integration/images/ruby/2.2/Dockerfile +54 -0
  541. data/integration/images/ruby/2.3/Dockerfile +70 -0
  542. data/integration/images/ruby/2.4/Dockerfile +54 -0
  543. data/integration/images/ruby/2.5/Dockerfile +54 -0
  544. data/integration/images/ruby/2.6/Dockerfile +54 -0
  545. data/integration/images/ruby/2.7/Dockerfile +54 -0
  546. data/integration/images/ruby/3.0/Dockerfile +54 -0
  547. data/integration/images/wrk/Dockerfile +33 -0
  548. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  549. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  550. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  551. data/integration/script/build-images +43 -0
  552. data/lib/datadog/ci.rb +16 -0
  553. data/lib/datadog/ci/configuration/components.rb +30 -0
  554. data/lib/datadog/ci/configuration/settings.rb +36 -0
  555. data/lib/datadog/ci/context_flush.rb +28 -0
  556. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +30 -0
  557. data/lib/datadog/ci/contrib/cucumber/ext.rb +19 -0
  558. data/lib/datadog/ci/contrib/cucumber/formatter.rb +97 -0
  559. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +26 -0
  560. data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
  561. data/lib/datadog/ci/contrib/cucumber/patcher.rb +25 -0
  562. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +30 -0
  563. data/lib/datadog/ci/contrib/rspec/example.rb +73 -0
  564. data/lib/datadog/ci/contrib/rspec/ext.rb +18 -0
  565. data/lib/datadog/ci/contrib/rspec/integration.rb +48 -0
  566. data/lib/datadog/ci/contrib/rspec/patcher.rb +25 -0
  567. data/lib/datadog/ci/ext/app_types.rb +9 -0
  568. data/lib/datadog/ci/ext/environment.rb +303 -0
  569. data/lib/datadog/ci/ext/settings.rb +10 -0
  570. data/lib/datadog/ci/ext/test.rb +28 -0
  571. data/lib/datadog/ci/extensions.rb +17 -0
  572. data/lib/datadog/ci/test.rb +63 -0
  573. data/lib/ddtrace.rb +9 -5
  574. data/lib/ddtrace/analytics.rb +2 -0
  575. data/lib/ddtrace/auto_instrument.rb +3 -0
  576. data/lib/ddtrace/auto_instrument_base.rb +6 -0
  577. data/lib/ddtrace/buffer.rb +260 -53
  578. data/lib/ddtrace/configuration.rb +113 -21
  579. data/lib/ddtrace/configuration/agent_settings_resolver.rb +230 -0
  580. data/lib/ddtrace/configuration/base.rb +7 -10
  581. data/lib/ddtrace/configuration/components.rb +119 -21
  582. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  583. data/lib/ddtrace/configuration/options.rb +9 -10
  584. data/lib/ddtrace/configuration/settings.rb +119 -10
  585. data/lib/ddtrace/context.rb +40 -20
  586. data/lib/ddtrace/context_flush.rb +14 -2
  587. data/lib/ddtrace/context_provider.rb +16 -5
  588. data/lib/ddtrace/contrib/action_cable/event.rb +5 -4
  589. data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
  590. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +2 -4
  591. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +1 -1
  592. data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
  593. data/lib/ddtrace/contrib/action_pack/utils.rb +1 -1
  594. data/lib/ddtrace/contrib/action_view/event.rb +3 -7
  595. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  596. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  597. data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
  598. data/lib/ddtrace/contrib/action_view/patcher.rb +4 -4
  599. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  600. data/lib/ddtrace/contrib/active_model_serializers/event.rb +2 -2
  601. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  602. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  603. data/lib/ddtrace/contrib/active_record/event.rb +2 -2
  604. data/lib/ddtrace/contrib/active_record/events/sql.rb +4 -0
  605. data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
  606. data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
  607. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
  608. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +25 -4
  609. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -5
  610. data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
  611. data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
  612. data/lib/ddtrace/contrib/active_support/notifications/event.rb +14 -3
  613. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -1
  614. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +11 -7
  615. data/lib/ddtrace/contrib/auto_instrument.rb +48 -0
  616. data/lib/ddtrace/contrib/aws/instrumentation.rb +35 -1
  617. data/lib/ddtrace/contrib/aws/patcher.rb +5 -1
  618. data/lib/ddtrace/contrib/aws/services.rb +3 -0
  619. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -1
  620. data/lib/ddtrace/contrib/configurable.rb +64 -38
  621. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  622. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -20
  623. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  624. data/lib/ddtrace/contrib/dalli/instrumentation.rb +5 -1
  625. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -39
  626. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +2 -0
  627. data/lib/ddtrace/contrib/delayed_job/ext.rb +2 -0
  628. data/lib/ddtrace/contrib/delayed_job/plugin.rb +38 -15
  629. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +5 -0
  630. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  631. data/lib/ddtrace/contrib/ethon/easy_patch.rb +14 -11
  632. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  633. data/lib/ddtrace/contrib/ethon/multi_patch.rb +5 -1
  634. data/lib/ddtrace/contrib/ethon/patcher.rb +2 -2
  635. data/lib/ddtrace/contrib/excon/middleware.rb +13 -7
  636. data/lib/ddtrace/contrib/extensions.rb +56 -6
  637. data/lib/ddtrace/contrib/faraday/middleware.rb +5 -3
  638. data/lib/ddtrace/contrib/faraday/patcher.rb +2 -38
  639. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
  640. data/lib/ddtrace/contrib/grape/endpoint.rb +52 -24
  641. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  642. data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -2
  643. data/lib/ddtrace/contrib/grape/patcher.rb +1 -43
  644. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  645. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -1
  646. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -0
  647. data/lib/ddtrace/contrib/grpc/patcher.rb +1 -37
  648. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  649. data/lib/ddtrace/contrib/http/instrumentation.rb +12 -8
  650. data/lib/ddtrace/contrib/http/patcher.rb +1 -1
  651. data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
  652. data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
  653. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
  654. data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
  655. data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
  656. data/lib/ddtrace/contrib/httprb/instrumentation.rb +19 -22
  657. data/lib/ddtrace/contrib/httprb/patcher.rb +6 -3
  658. data/lib/ddtrace/contrib/integration.rb +3 -3
  659. data/lib/ddtrace/contrib/kafka/event.rb +3 -3
  660. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +4 -2
  661. data/lib/ddtrace/contrib/mongodb/patcher.rb +2 -2
  662. data/lib/ddtrace/contrib/mongodb/subscribers.rb +6 -3
  663. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +5 -1
  664. data/lib/ddtrace/contrib/mysql2/patcher.rb +1 -1
  665. data/lib/ddtrace/contrib/patchable.rb +20 -9
  666. data/lib/ddtrace/contrib/patcher.rb +10 -7
  667. data/lib/ddtrace/contrib/presto/instrumentation.rb +4 -1
  668. data/lib/ddtrace/contrib/presto/patcher.rb +6 -3
  669. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  670. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  671. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  672. data/lib/ddtrace/contrib/qless/patcher.rb +33 -0
  673. data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
  674. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
  675. data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
  676. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  677. data/lib/ddtrace/contrib/que/tracer.rb +3 -2
  678. data/lib/ddtrace/contrib/racecar/event.rb +7 -2
  679. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  680. data/lib/ddtrace/contrib/rack/integration.rb +7 -0
  681. data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
  682. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  683. data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
  684. data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
  685. data/lib/ddtrace/contrib/rails/patcher.rb +25 -7
  686. data/lib/ddtrace/contrib/rails/utils.rb +4 -0
  687. data/lib/ddtrace/contrib/rake/instrumentation.rb +5 -3
  688. data/lib/ddtrace/contrib/rake/integration.rb +1 -1
  689. data/lib/ddtrace/contrib/rake/patcher.rb +1 -1
  690. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
  691. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  692. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  693. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  694. data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
  695. data/lib/ddtrace/contrib/redis/tags.rb +9 -1
  696. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  697. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  698. data/lib/ddtrace/contrib/registerable.rb +2 -2
  699. data/lib/ddtrace/contrib/registry.rb +2 -2
  700. data/lib/ddtrace/contrib/resque/configuration/settings.rb +18 -1
  701. data/lib/ddtrace/contrib/resque/integration.rb +2 -2
  702. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  703. data/lib/ddtrace/contrib/resque/resque_job.rb +25 -2
  704. data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
  705. data/lib/ddtrace/contrib/rest_client/request_patch.rb +6 -4
  706. data/lib/ddtrace/contrib/sequel/database.rb +4 -2
  707. data/lib/ddtrace/contrib/sequel/dataset.rb +4 -3
  708. data/lib/ddtrace/contrib/sequel/ext.rb +1 -0
  709. data/lib/ddtrace/contrib/sequel/patcher.rb +2 -2
  710. data/lib/ddtrace/contrib/sequel/utils.rb +15 -5
  711. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +2 -0
  712. data/lib/ddtrace/contrib/shoryuken/tracer.rb +8 -2
  713. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
  714. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +5 -7
  715. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  716. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  717. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  718. data/lib/ddtrace/contrib/sinatra/patcher.rb +1 -1
  719. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  720. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
  721. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
  722. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  723. data/lib/ddtrace/contrib/sneakers/tracer.rb +16 -21
  724. data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
  725. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +4 -6
  726. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +4 -0
  727. data/lib/ddtrace/correlation.rb +1 -0
  728. data/lib/ddtrace/diagnostics/environment_logger.rb +5 -4
  729. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  730. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  731. data/lib/ddtrace/error.rb +77 -8
  732. data/lib/ddtrace/ext/distributed.rb +8 -2
  733. data/lib/ddtrace/ext/git.rb +11 -0
  734. data/lib/ddtrace/ext/http.rb +1 -1
  735. data/lib/ddtrace/ext/integration.rb +8 -0
  736. data/lib/ddtrace/ext/profiling.rb +53 -0
  737. data/lib/ddtrace/ext/runtime.rb +5 -1
  738. data/lib/ddtrace/ext/test.rb +8 -0
  739. data/lib/ddtrace/ext/transport.rb +2 -0
  740. data/lib/ddtrace/forced_tracing.rb +2 -0
  741. data/lib/ddtrace/logger.rb +1 -1
  742. data/lib/ddtrace/metrics.rb +42 -9
  743. data/lib/ddtrace/opentelemetry/extensions.rb +1 -1
  744. data/lib/ddtrace/opentracer.rb +20 -39
  745. data/lib/ddtrace/opentracer/distributed_headers.rb +4 -1
  746. data/lib/ddtrace/opentracer/span.rb +2 -6
  747. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  748. data/lib/ddtrace/patcher.rb +27 -6
  749. data/lib/ddtrace/pin.rb +8 -61
  750. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  751. data/lib/ddtrace/profiling.rb +107 -0
  752. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  753. data/lib/ddtrace/profiling/buffer.rb +41 -0
  754. data/lib/ddtrace/profiling/collectors/stack.rb +262 -0
  755. data/lib/ddtrace/profiling/encoding/profile.rb +37 -0
  756. data/lib/ddtrace/profiling/event.rb +13 -0
  757. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  758. data/lib/ddtrace/profiling/exporter.rb +23 -0
  759. data/lib/ddtrace/profiling/ext/cpu.rb +52 -0
  760. data/lib/ddtrace/profiling/ext/cthread.rb +155 -0
  761. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  762. data/lib/ddtrace/profiling/flush.rb +43 -0
  763. data/lib/ddtrace/profiling/pprof/builder.rb +119 -0
  764. data/lib/ddtrace/profiling/pprof/converter.rb +89 -0
  765. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  766. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  767. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  768. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  769. data/lib/ddtrace/profiling/pprof/stack_sample.rb +106 -0
  770. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  771. data/lib/ddtrace/profiling/pprof/template.rb +118 -0
  772. data/lib/ddtrace/profiling/preload.rb +3 -0
  773. data/lib/ddtrace/profiling/profiler.rb +30 -0
  774. data/lib/ddtrace/profiling/recorder.rb +95 -0
  775. data/lib/ddtrace/profiling/scheduler.rb +116 -0
  776. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  777. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  778. data/lib/ddtrace/profiling/transport/http.rb +118 -0
  779. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  780. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +100 -0
  781. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  782. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  783. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  784. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  785. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  786. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  787. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  788. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  789. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  790. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  791. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  792. data/lib/ddtrace/propagation/grpc_propagator.rb +19 -6
  793. data/lib/ddtrace/propagation/http_propagator.rb +17 -2
  794. data/lib/ddtrace/quantization/http.rb +1 -0
  795. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  796. data/lib/ddtrace/runtime/container.rb +43 -29
  797. data/lib/ddtrace/runtime/identity.rb +12 -5
  798. data/lib/ddtrace/runtime/metrics.rb +9 -7
  799. data/lib/ddtrace/sampler.rb +3 -3
  800. data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
  801. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  802. data/lib/ddtrace/span.rb +154 -29
  803. data/lib/ddtrace/sync_writer.rb +14 -13
  804. data/lib/ddtrace/tasks/exec.rb +48 -0
  805. data/lib/ddtrace/tasks/help.rb +14 -0
  806. data/lib/ddtrace/tracer.rb +68 -50
  807. data/lib/ddtrace/transport/http.rb +41 -31
  808. data/lib/ddtrace/transport/http/adapters/net.rb +34 -9
  809. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  810. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  811. data/lib/ddtrace/transport/http/builder.rb +7 -1
  812. data/lib/ddtrace/transport/http/env.rb +8 -0
  813. data/lib/ddtrace/transport/http/statistics.rb +16 -3
  814. data/lib/ddtrace/transport/http/traces.rb +5 -6
  815. data/lib/ddtrace/transport/io.rb +1 -1
  816. data/lib/ddtrace/transport/io/client.rb +15 -8
  817. data/lib/ddtrace/transport/io/response.rb +1 -3
  818. data/lib/ddtrace/transport/io/traces.rb +7 -1
  819. data/lib/ddtrace/transport/parcel.rb +4 -0
  820. data/lib/ddtrace/transport/traces.rb +25 -3
  821. data/lib/ddtrace/utils.rb +16 -13
  822. data/lib/ddtrace/utils/compression.rb +27 -0
  823. data/lib/ddtrace/utils/forking.rb +52 -0
  824. data/lib/ddtrace/utils/object_set.rb +39 -0
  825. data/lib/ddtrace/utils/only_once.rb +40 -0
  826. data/lib/ddtrace/utils/sequence.rb +17 -0
  827. data/lib/ddtrace/utils/string_table.rb +45 -0
  828. data/lib/ddtrace/utils/time.rb +32 -3
  829. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  830. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  831. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  832. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  833. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  834. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  835. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  836. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  837. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  838. data/lib/ddtrace/version.rb +14 -2
  839. data/lib/ddtrace/workers.rb +6 -1
  840. data/lib/ddtrace/workers/async.rb +13 -4
  841. data/lib/ddtrace/workers/loop.rb +31 -5
  842. data/lib/ddtrace/workers/polling.rb +12 -5
  843. data/lib/ddtrace/workers/queue.rb +2 -1
  844. data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
  845. data/lib/ddtrace/workers/trace_writer.rb +11 -14
  846. data/lib/ddtrace/writer.rb +30 -6
  847. metadata +642 -338
  848. data/lib/ddtrace/augmentation.rb +0 -13
  849. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  850. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  851. data/lib/ddtrace/augmentation/shim.rb +0 -102
  852. data/lib/ddtrace/monkey.rb +0 -58
@@ -17,8 +17,11 @@ module Datadog
17
17
 
18
18
  def patch
19
19
  patch_cache_store_read
20
+ patch_cache_store_read_multi
20
21
  patch_cache_store_fetch
22
+ patch_cache_store_fetch_multi
21
23
  patch_cache_store_write
24
+ patch_cache_store_write_multi
22
25
  patch_cache_store_delete
23
26
  end
24
27
 
@@ -27,19 +30,37 @@ module Datadog
27
30
  end
28
31
 
29
32
  def patch_cache_store_read
30
- cache_store_class(:read).send(:prepend, Cache::Instrumentation::Read)
33
+ cache_store_class(:read).prepend(Cache::Instrumentation::Read)
34
+ end
35
+
36
+ def patch_cache_store_read_multi
37
+ cache_store_class(:read_multi).prepend(Cache::Instrumentation::ReadMulti)
31
38
  end
32
39
 
33
40
  def patch_cache_store_fetch
34
- cache_store_class(:fetch).send(:prepend, Cache::Instrumentation::Fetch)
41
+ cache_store_class(:fetch).prepend(Cache::Instrumentation::Fetch)
42
+ end
43
+
44
+ def patch_cache_store_fetch_multi
45
+ klass = cache_store_class(:fetch_multi)
46
+ return unless klass.public_method_defined?(:fetch_multi)
47
+
48
+ klass.prepend(Cache::Instrumentation::FetchMulti)
35
49
  end
36
50
 
37
51
  def patch_cache_store_write
38
- cache_store_class(:write).send(:prepend, Cache::Instrumentation::Write)
52
+ cache_store_class(:write).prepend(Cache::Instrumentation::Write)
53
+ end
54
+
55
+ def patch_cache_store_write_multi
56
+ klass = cache_store_class(:write_multi)
57
+ return unless klass.public_method_defined?(:write_multi)
58
+
59
+ klass.prepend(Cache::Instrumentation::WriteMulti)
39
60
  end
40
61
 
41
62
  def patch_cache_store_delete
42
- cache_store_class(:delete).send(:prepend, Cache::Instrumentation::Delete)
63
+ cache_store_class(:delete).prepend(Cache::Instrumentation::Delete)
43
64
  end
44
65
  end
45
66
  end
@@ -35,11 +35,7 @@ module Datadog
35
35
  end
36
36
 
37
37
  # Decorate Cache patcher with Redis support
38
- Cache::Patcher.instance_eval do
39
- class << self
40
- prepend Redis::Patcher
41
- end
42
- end
38
+ Cache::Patcher.singleton_class.prepend(Redis::Patcher)
43
39
  end
44
40
  end
45
41
  end
@@ -12,12 +12,15 @@ module Datadog
12
12
  QUANTIZE_CACHE_MAX_KEY_SIZE = 300
13
13
  RESOURCE_CACHE_DELETE = 'DELETE'.freeze
14
14
  RESOURCE_CACHE_GET = 'GET'.freeze
15
+ RESOURCE_CACHE_MGET = 'MGET'.freeze
15
16
  RESOURCE_CACHE_SET = 'SET'.freeze
17
+ RESOURCE_CACHE_MSET = 'MSET'.freeze
16
18
  SERVICE_CACHE = 'active_support-cache'.freeze
17
19
  SPAN_CACHE = 'rails.cache'.freeze
18
20
  SPAN_TYPE_CACHE = 'cache'.freeze
19
21
  TAG_CACHE_BACKEND = 'rails.cache.backend'.freeze
20
22
  TAG_CACHE_KEY = 'rails.cache.key'.freeze
23
+ TAG_CACHE_KEY_MULTI = 'rails.cache.keys'.freeze
21
24
  end
22
25
  end
23
26
  end
@@ -1,8 +1,8 @@
1
1
  require 'ddtrace/contrib/integration'
2
2
  require 'ddtrace/contrib/active_support/configuration/settings'
3
3
  require 'ddtrace/contrib/active_support/patcher'
4
-
5
4
  require 'ddtrace/contrib/active_support/cache/redis'
5
+ require 'ddtrace/contrib/rails/utils'
6
6
 
7
7
  module Datadog
8
8
  module Contrib
@@ -27,6 +27,12 @@ module Datadog
27
27
  super && version >= MINIMUM_VERSION
28
28
  end
29
29
 
30
+ # enabled by rails integration so should only auto instrument
31
+ # if detected that it is being used without rails
32
+ def auto_instrument?
33
+ !Datadog::Contrib::Rails::Utils.railtie_supported?
34
+ end
35
+
30
36
  def default_configuration
31
37
  Configuration::Settings.new
32
38
  end
@@ -10,8 +10,8 @@ module Datadog
10
10
  # invoke Event.subscribe! to more easily subscribe to an event.
11
11
  module Event
12
12
  def self.included(base)
13
- base.send(:include, Subscriber)
14
- base.send(:extend, ClassMethods)
13
+ base.include(Subscriber)
14
+ base.extend(ClassMethods)
15
15
  base.send(:on_subscribe) { base.subscribe }
16
16
  end
17
17
 
@@ -20,7 +20,8 @@ module Datadog
20
20
  module ClassMethods
21
21
  DEFAULT_TRACER = -> { Datadog.tracer }
22
22
 
23
- def subscribe!
23
+ # Publicly exposes protected method `subscribe!`
24
+ def subscribe! # rubocop:disable Lint/UselessMethodDefinition
24
25
  super
25
26
  end
26
27
 
@@ -56,6 +57,16 @@ module Datadog
56
57
  def tracer
57
58
  DEFAULT_TRACER
58
59
  end
60
+
61
+ def report_if_exception(span, payload)
62
+ exception = payload_exception(payload)
63
+ span.set_error(payload[:exception]) if exception
64
+ end
65
+
66
+ def payload_exception(payload)
67
+ payload[:exception_object] ||
68
+ payload[:exception] # Fallback for ActiveSupport < 5.0
69
+ end
59
70
  end
60
71
  end
61
72
  end
@@ -9,7 +9,7 @@ module Datadog
9
9
  # Creates subscriptions that are wrapped with tracing.
10
10
  module Subscriber
11
11
  def self.included(base)
12
- base.send(:extend, ClassMethods)
12
+ base.extend(ClassMethods)
13
13
  end
14
14
 
15
15
  # Class methods that are implemented in the inheriting class.
@@ -36,6 +36,7 @@ module Datadog
36
36
  # Should be triggered by the inheriting class.
37
37
  def subscribe!
38
38
  return subscribed? if subscribed? || on_subscribe_block.nil?
39
+
39
40
  on_subscribe_block.call
40
41
  @subscribed = true
41
42
  end
@@ -9,7 +9,8 @@ module Datadog
9
9
  :options
10
10
 
11
11
  def initialize(tracer, span_name, options, &block)
12
- raise ArgumentError, 'Must be given a block!' unless block_given?
12
+ raise ArgumentError, 'Must be given a block!' unless block
13
+
13
14
  @tracer = tracer
14
15
  @span_name = span_name
15
16
  @options = options
@@ -38,21 +39,23 @@ module Datadog
38
39
  end
39
40
 
40
41
  def before_trace(&block)
41
- callbacks.add(:before_trace, &block) if block_given?
42
+ callbacks.add(:before_trace, &block) if block
42
43
  end
43
44
 
44
45
  def after_trace(&block)
45
- callbacks.add(:after_trace, &block) if block_given?
46
+ callbacks.add(:after_trace, &block) if block
46
47
  end
47
48
 
48
49
  def subscribe(pattern)
49
50
  return false if subscribers.key?(pattern)
51
+
50
52
  subscribers[pattern] = ::ActiveSupport::Notifications.subscribe(pattern, self)
51
53
  true
52
54
  end
53
55
 
54
56
  def unsubscribe(pattern)
55
57
  return false unless subscribers.key?(pattern)
58
+
56
59
  ::ActiveSupport::Notifications.unsubscribe(subscribers[pattern])
57
60
  subscribers.delete(pattern)
58
61
  true
@@ -60,7 +63,8 @@ module Datadog
60
63
 
61
64
  def unsubscribe_all
62
65
  return false if subscribers.empty?
63
- subscribers.keys.each { |pattern| unsubscribe(pattern) }
66
+
67
+ subscribers.each_key { |pattern| unsubscribe(pattern) }
64
68
  true
65
69
  end
66
70
 
@@ -76,8 +80,8 @@ module Datadog
76
80
 
77
81
  # Start a trace
78
82
  tracer.trace(@span_name, @options.dup).tap do |span|
79
- # Assign start time if provided
80
- span.start_time = start unless start.nil?
83
+ # Start span if time is provided
84
+ span.start(start) unless start.nil?
81
85
  payload[:datadog_span] = span
82
86
  end
83
87
  end
@@ -131,7 +135,7 @@ module Datadog
131
135
  end
132
136
 
133
137
  def add(key, &block)
134
- blocks_for(key) << block if block_given?
138
+ blocks_for(key) << block if block
135
139
  end
136
140
 
137
141
  def run(event, key, *args)
@@ -0,0 +1,48 @@
1
+ require 'ddtrace'
2
+
3
+ module Datadog
4
+ module Contrib
5
+ # Extensions for auto instrumentation added to the base library
6
+ # AutoInstrumentation enables all integration
7
+ module AutoInstrument
8
+ def self.extended(base)
9
+ base.extend(Patch)
10
+ end
11
+
12
+ # Patch adds method for invoking auto_instrumentation
13
+ module Patch
14
+ def add_auto_instrument
15
+ super
16
+
17
+ if Datadog::Contrib::Rails::Utils.railtie_supported?
18
+ require 'ddtrace/contrib/rails/auto_instrument_railtie'
19
+ else
20
+ AutoInstrument.patch_all
21
+ end
22
+ end
23
+ end
24
+
25
+ def self.patch_all
26
+ integrations = []
27
+
28
+ Datadog.registry.each do |integration|
29
+ # some instrumentations are automatically enabled when the `rails` instrumentation is enabled,
30
+ # patching them on their own automatically outside of the rails integration context would
31
+ # cause undesirable service naming, so we exclude them based their auto_instrument? setting.
32
+ # we also don't want to mix rspec/cucumber integration in as rspec is env we run tests in.
33
+ next unless integration.klass.auto_instrument?
34
+
35
+ integrations << integration.name
36
+ end
37
+
38
+ Datadog.configure do |c|
39
+ c.reduce_log_verbosity
40
+ # This will activate auto-instrumentation for Rails
41
+ integrations.each do |integration_name|
42
+ c.use integration_name
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,5 +1,7 @@
1
1
  require 'ddtrace/contrib/analytics'
2
2
  require 'ddtrace/contrib/aws/ext'
3
+ require 'ddtrace/ext/http'
4
+ require 'ddtrace/ext/integration'
3
5
 
4
6
  module Datadog
5
7
  module Contrib
@@ -25,10 +27,13 @@ module Datadog
25
27
 
26
28
  def annotate!(span, context)
27
29
  span.service = configuration[:service_name]
28
- span.span_type = Datadog::Ext::AppTypes::WEB
30
+ span.span_type = Datadog::Ext::HTTP::TYPE_OUTBOUND
29
31
  span.name = Ext::SPAN_COMMAND
30
32
  span.resource = context.safely(:resource)
31
33
 
34
+ # Tag as an external peer service
35
+ span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
36
+
32
37
  # Set analytics sample rate
33
38
  if Contrib::Analytics.enabled?(configuration[:analytics_enabled])
34
39
  Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
@@ -51,6 +56,35 @@ module Datadog
51
56
  Datadog.configuration[:aws]
52
57
  end
53
58
  end
59
+
60
+ # Removes API request instrumentation from S3 Presign URL creation.
61
+ #
62
+ # This is necessary because the S3 SDK invokes the same handler
63
+ # stack for presigning as it does for sending a real requests.
64
+ # But presigning does not perform a network request.
65
+ # There's not information available for our Handler plugin to differentiate
66
+ # these two types of requests.
67
+ #
68
+ # DEV: Since aws-sdk-s3 1.94.1, we only need to check if
69
+ # `context[:presigned_url] == true` in Datadog::Contrib::Aws::Handler#call
70
+ # and skip the request if that condition is true. Since there's
71
+ # no strong reason for us not to support older versions of `aws-sdk-s3`,
72
+ # this {S3Presigner} monkey-patching is still required.
73
+ module S3Presigner
74
+ # Exclude our Handler from the current request's handler stack.
75
+ #
76
+ # This is the same approach that the AWS SDK takes to prevent
77
+ # some of its plugins form interfering with the presigning process:
78
+ # https://github.com/aws/aws-sdk-ruby/blob/a82c8981c95a8296ffb6269c3c06a4f551d87f7d/gems/aws-sdk-s3/lib/aws-sdk-s3/presigner.rb#L194-L196
79
+ def sign_but_dont_send(*args, &block)
80
+ if (request = args[0]).is_a?(::Seahorse::Client::Request)
81
+ request.handlers.remove(Handler)
82
+ end
83
+
84
+ super(*args, &block)
85
+ end
86
+ ruby2_keywords :sign_but_dont_send if respond_to?(:ruby2_keywords, true)
87
+ end
54
88
  end
55
89
  end
56
90
  end
@@ -1,5 +1,4 @@
1
1
  require 'ddtrace/contrib/patcher'
2
- require 'ddtrace/ext/app_types'
3
2
  require 'ddtrace/contrib/aws/ext'
4
3
 
5
4
  module Datadog
@@ -21,6 +20,10 @@ module Datadog
21
20
  require 'ddtrace/contrib/aws/services'
22
21
 
23
22
  add_plugin(Seahorse::Client::Base, *loaded_constants)
23
+
24
+ # Special handling for S3 URL Presigning.
25
+ # @see {Datadog::Contrib::Aws::S3Presigner}
26
+ ::Aws::S3::Presigner.prepend S3Presigner
24
27
  end
25
28
 
26
29
  def add_plugin(*targets)
@@ -36,6 +39,7 @@ module Datadog
36
39
 
37
40
  available_services.each_with_object([]) do |service, constants|
38
41
  next if ::Aws.autoload?(service)
42
+
39
43
  constants << ::Aws.const_get(service, false).const_get(:Client, false) rescue next
40
44
  end
41
45
  end
@@ -52,6 +52,7 @@ module Datadog
52
52
  ElasticLoadBalancingV2
53
53
  ElasticTranscoder
54
54
  ElasticsearchService
55
+ EventBridge
55
56
  Firehose
56
57
  GameLift
57
58
  Glacier
@@ -98,12 +99,14 @@ module Datadog
98
99
  STS
99
100
  SWF
100
101
  ServiceCatalog
102
+ Schemas
101
103
  Shield
102
104
  SimpleDB
103
105
  Snowball
104
106
  States
105
107
  StorageGateway
106
108
  Support
109
+ Textract
107
110
  WAF
108
111
  WAFRegional
109
112
  WorkDocs
@@ -20,7 +20,7 @@ module Datadog
20
20
 
21
21
  # Propagate tracing context in Concurrent::Future
22
22
  def patch_future
23
- ::Concurrent::Future.send(:include, FuturePatch)
23
+ ::Concurrent::Future.include(FuturePatch)
24
24
  end
25
25
  end
26
26
  end
@@ -3,72 +3,98 @@ require 'ddtrace/contrib/configuration/settings'
3
3
 
4
4
  module Datadog
5
5
  module Contrib
6
- # Defines configurable behavior for integrations
6
+ # Defines configurable behavior for integrations.
7
+ #
8
+ # This module is responsible for coordination between
9
+ # the configuration resolver and default configuration
10
+ # fallback.
7
11
  module Configurable
8
12
  def self.included(base)
9
- base.send(:include, InstanceMethods)
13
+ base.include(InstanceMethods)
10
14
  end
11
15
 
12
16
  # Configurable instance behavior for integrations
13
17
  module InstanceMethods
18
+ # Provides a new configuration instance for this integration.
19
+ #
20
+ # This method normally needs to be overridden for each integration
21
+ # as their settings, defaults and environment variables are
22
+ # specific for each integration.
23
+ #
24
+ # DEV(1.0): Rename to `new_configuration`, make it protected.
25
+ # DEV(1.0):
26
+ # DEV(1.0): This method always provides a new instance of the configuration object for
27
+ # DEV(1.0): the current integration, not the currently effective default configuration.
28
+ # DEV(1.0): This is a misnomer of its function.
29
+ # DEV(1.0):
30
+ # DEV(1.0): Unfortunately, change this would be a breaking change for all custom integrations,
31
+ # DEV(1.0): thus we have to be very intentional with the right time to make this change.
32
+ # DEV(1.0): Currently marking this for a 1.0 milestone.
14
33
  def default_configuration
15
34
  Configuration::Settings.new
16
35
  end
17
36
 
18
- def reset_configuration!
19
- @configurations = nil
20
- @resolver = nil
21
- end
37
+ # Get matching configuration by matcher.
38
+ # If no match, returns the default configuration instance.
39
+ def configuration(matcher = :default)
40
+ return default_configuration_instance if matcher == :default
22
41
 
23
- # Get matching configuration for key.
24
- # If no match, returns default configuration.
25
- def configuration(key = :default)
26
- configurations[configuration_key(key)]
42
+ resolver.get(matcher) || default_configuration_instance
27
43
  end
28
44
 
29
- # If the key has matching configuration explicitly defined for it,
30
- # then return true. Otherwise return false.
31
- def configuration_for?(key)
32
- key = resolver.resolve(key) unless key == :default
33
- configurations.key?(key)
45
+ # Resolves the matching configuration for integration-specific value.
46
+ # If no match, returns the default configuration instance.
47
+ def resolve(value)
48
+ return default_configuration_instance if value == :default
49
+
50
+ resolver.resolve(value) || default_configuration_instance
34
51
  end
35
52
 
53
+ # Returns all registered matchers and their respective configurations.
36
54
  def configurations
37
- @configurations ||= {
38
- default: default_configuration
39
- }
55
+ resolver.configurations.merge(default: default_configuration_instance)
40
56
  end
41
57
 
42
- # Create or update configuration with provided settings.
43
- def configure(key, options = {}, &block)
44
- key ||= :default
45
-
46
- # Get or add the configuration
47
- config = configuration_for?(key) ? configuration(key) : add_configuration(key)
58
+ # Create or update configuration associated with `matcher` with
59
+ # the provided `options` and `&block`.
60
+ def configure(matcher = :default, options = {}, &block)
61
+ config = if matcher == :default
62
+ default_configuration_instance
63
+ else
64
+ # Get or add the configuration
65
+ resolver.get(matcher) || resolver.add(matcher, default_configuration)
66
+ end
48
67
 
49
68
  # Apply the settings
50
69
  config.configure(options, &block)
51
70
  config
52
71
  end
53
72
 
54
- protected
55
-
56
- def resolver
57
- @resolver ||= Configuration::Resolver.new
73
+ # Resets all configuration options
74
+ def reset_configuration!
75
+ @resolver = nil
76
+ @default_configuration = nil
58
77
  end
59
78
 
60
- def add_configuration(key)
61
- resolver.add(key)
62
- config_key = resolver.resolve(key)
63
- configurations[config_key] = default_configuration
64
- end
79
+ protected
65
80
 
66
- def configuration_key(key)
67
- return :default if key.nil? || key == :default
81
+ # DEV(1.0): Rename to `default_configuration`, make it public.
82
+ # DEV(1.0): See comment on `default_configuration` for more information.
83
+ def default_configuration_instance
84
+ @default_configuration ||= default_configuration # rubocop:disable Naming/MemoizedInstanceVariableName
85
+ end
68
86
 
69
- key = resolver.resolve(key)
70
- key = :default unless configurations.key?(key)
71
- key
87
+ # Overridable configuration resolver.
88
+ #
89
+ # This resolver is responsible for performing the matching
90
+ # of `#configure(matcher)` `matcher`s with `value`s provided
91
+ # in subsequent calls to `#resolve(value)`.
92
+ #
93
+ # By default, the `value` in `#resolve(value)` must be equal
94
+ # to the `matcher` object provided in `#configure(matcher)`
95
+ # to retrieve the associated configuration.
96
+ def resolver
97
+ @resolver ||= Configuration::Resolver.new
72
98
  end
73
99
  end
74
100
  end