ddtrace 0.45.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 (820) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +360 -56
  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-jruby-9.2-latest +88 -0
  11. data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
  12. data/.circleci/images/primary/{Dockerfile-2.0.0 → Dockerfile-truffleruby-21.1.0} +8 -8
  13. data/.dockerignore +0 -1
  14. data/.github/workflows/create-next-milestone.yml +2 -2
  15. data/.gitignore +0 -1
  16. data/.gitlab-ci.yml +18 -18
  17. data/.rubocop.yml +273 -7
  18. data/.rubocop_todo.yml +438 -0
  19. data/.simplecov +6 -0
  20. data/Appraisals +74 -101
  21. data/CHANGELOG.md +275 -1
  22. data/Gemfile +63 -3
  23. data/LICENSE-3rdparty.csv +2 -0
  24. data/Rakefile +299 -353
  25. data/benchmarks/data/profiler-submission-marshal.gz +0 -0
  26. data/benchmarks/profiler_sample_loop.rb +69 -0
  27. data/benchmarks/profiler_submission.rb +93 -0
  28. data/bin/ddtracerb +15 -0
  29. data/ddtrace.gemspec +10 -38
  30. data/docker-compose.yml +68 -54
  31. data/docs/DevelopmentGuide.md +28 -0
  32. data/docs/GettingStarted.md +123 -73
  33. data/docs/ProfilingDevelopment.md +88 -0
  34. data/gemfiles/jruby_9.2.0.0_contrib.gemfile +79 -0
  35. data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +1518 -0
  36. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +35 -0
  37. data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +157 -0
  38. data/gemfiles/jruby_9.2.0.0_core_old.gemfile +34 -0
  39. data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +153 -0
  40. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +35 -0
  41. data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +174 -0
  42. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +35 -0
  43. data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +206 -0
  44. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +35 -0
  45. data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +206 -0
  46. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +40 -0
  47. data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +271 -0
  48. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +40 -0
  49. data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +271 -0
  50. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +41 -0
  51. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +273 -0
  52. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +41 -0
  53. data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  54. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +42 -0
  55. data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +279 -0
  56. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +40 -0
  57. data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +290 -0
  58. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +40 -0
  59. data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +290 -0
  60. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +41 -0
  61. data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +292 -0
  62. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +41 -0
  63. data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +297 -0
  64. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +40 -0
  65. data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +287 -0
  66. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +40 -0
  67. data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +287 -0
  68. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +41 -0
  69. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +289 -0
  70. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +41 -0
  71. data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  72. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +42 -0
  73. data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +295 -0
  74. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +36 -0
  75. data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +180 -0
  76. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +36 -0
  77. data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +180 -0
  78. data/gemfiles/jruby_9.2.11.1_contrib.gemfile +79 -0
  79. data/gemfiles/jruby_9.2.11.1_contrib.gemfile.lock +1518 -0
  80. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile +35 -0
  81. data/gemfiles/jruby_9.2.11.1_contrib_old.gemfile.lock +157 -0
  82. data/gemfiles/jruby_9.2.11.1_core_old.gemfile +34 -0
  83. data/gemfiles/jruby_9.2.11.1_core_old.gemfile.lock +153 -0
  84. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile +35 -0
  85. data/gemfiles/jruby_9.2.11.1_cucumber3.gemfile.lock +174 -0
  86. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile +35 -0
  87. data/gemfiles/jruby_9.2.11.1_cucumber4.gemfile.lock +206 -0
  88. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile +35 -0
  89. data/gemfiles/jruby_9.2.11.1_cucumber5.gemfile.lock +206 -0
  90. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile +40 -0
  91. data/gemfiles/jruby_9.2.11.1_rails5_mysql2.gemfile.lock +271 -0
  92. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile +40 -0
  93. data/gemfiles/jruby_9.2.11.1_rails5_postgres.gemfile.lock +271 -0
  94. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile +41 -0
  95. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis.gemfile.lock +273 -0
  96. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile +41 -0
  97. data/gemfiles/jruby_9.2.11.1_rails5_postgres_redis_activesupport.gemfile.lock +273 -0
  98. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile +42 -0
  99. data/gemfiles/jruby_9.2.11.1_rails5_postgres_sidekiq.gemfile.lock +279 -0
  100. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile +40 -0
  101. data/gemfiles/jruby_9.2.11.1_rails61_mysql2.gemfile.lock +290 -0
  102. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile +40 -0
  103. data/gemfiles/jruby_9.2.11.1_rails61_postgres.gemfile.lock +290 -0
  104. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile +41 -0
  105. data/gemfiles/jruby_9.2.11.1_rails61_postgres_redis.gemfile.lock +292 -0
  106. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile +41 -0
  107. data/gemfiles/jruby_9.2.11.1_rails61_postgres_sidekiq.gemfile.lock +297 -0
  108. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile +40 -0
  109. data/gemfiles/jruby_9.2.11.1_rails6_mysql2.gemfile.lock +287 -0
  110. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile +40 -0
  111. data/gemfiles/jruby_9.2.11.1_rails6_postgres.gemfile.lock +287 -0
  112. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile +41 -0
  113. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis.gemfile.lock +289 -0
  114. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile +41 -0
  115. data/gemfiles/jruby_9.2.11.1_rails6_postgres_redis_activesupport.gemfile.lock +289 -0
  116. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile +42 -0
  117. data/gemfiles/jruby_9.2.11.1_rails6_postgres_sidekiq.gemfile.lock +295 -0
  118. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile +36 -0
  119. data/gemfiles/jruby_9.2.11.1_resque2_redis3.gemfile.lock +180 -0
  120. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile +36 -0
  121. data/gemfiles/jruby_9.2.11.1_resque2_redis4.gemfile.lock +180 -0
  122. data/gemfiles/ruby_2.1.10_contrib_old.gemfile +66 -0
  123. data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +305 -0
  124. data/gemfiles/ruby_2.1.10_core_old.gemfile +33 -0
  125. data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +118 -0
  126. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +39 -0
  127. data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +196 -0
  128. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +40 -0
  129. data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  130. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +42 -0
  131. data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +215 -0
  132. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +39 -0
  133. data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +204 -0
  134. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +41 -0
  135. data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +223 -0
  136. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +40 -0
  137. data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  138. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +38 -0
  139. data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +218 -0
  140. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +38 -0
  141. data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +218 -0
  142. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +40 -0
  143. data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +237 -0
  144. data/gemfiles/ruby_2.2.10_contrib.gemfile +73 -0
  145. data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +1450 -0
  146. data/gemfiles/ruby_2.2.10_core_old.gemfile +33 -0
  147. data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +118 -0
  148. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +39 -0
  149. data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +196 -0
  150. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +40 -0
  151. data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +205 -0
  152. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +41 -0
  153. data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +212 -0
  154. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +39 -0
  155. data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +204 -0
  156. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +41 -0
  157. data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +223 -0
  158. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +40 -0
  159. data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +213 -0
  160. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +38 -0
  161. data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +218 -0
  162. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +38 -0
  163. data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +218 -0
  164. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +40 -0
  165. data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +237 -0
  166. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +40 -0
  167. data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +229 -0
  168. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +38 -0
  169. data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +234 -0
  170. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +38 -0
  171. data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +234 -0
  172. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +39 -0
  173. data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +236 -0
  174. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +39 -0
  175. data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  176. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +40 -0
  177. data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +245 -0
  178. data/gemfiles/ruby_2.3.8_contrib.gemfile +73 -0
  179. data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +1459 -0
  180. data/gemfiles/ruby_2.3.8_contrib_old.gemfile +34 -0
  181. data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +127 -0
  182. data/gemfiles/ruby_2.3.8_core_old.gemfile +33 -0
  183. data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +123 -0
  184. data/gemfiles/ruby_2.3.8_cucumber3.gemfile +34 -0
  185. data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +144 -0
  186. data/gemfiles/ruby_2.3.8_cucumber4.gemfile +34 -0
  187. data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +174 -0
  188. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +39 -0
  189. data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +201 -0
  190. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +40 -0
  191. data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +210 -0
  192. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +41 -0
  193. data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +217 -0
  194. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +39 -0
  195. data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +209 -0
  196. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +41 -0
  197. data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +228 -0
  198. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +40 -0
  199. data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +218 -0
  200. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +38 -0
  201. data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +223 -0
  202. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +38 -0
  203. data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +223 -0
  204. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +40 -0
  205. data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +242 -0
  206. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +40 -0
  207. data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +234 -0
  208. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +37 -0
  209. data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +234 -0
  210. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +37 -0
  211. data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +234 -0
  212. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +38 -0
  213. data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +236 -0
  214. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +38 -0
  215. data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +236 -0
  216. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +39 -0
  217. data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +245 -0
  218. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +35 -0
  219. data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +150 -0
  220. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +35 -0
  221. data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +150 -0
  222. data/gemfiles/ruby_2.4.6_contrib.gemfile +78 -0
  223. data/gemfiles/ruby_2.4.6_contrib.gemfile.lock +1513 -0
  224. data/gemfiles/ruby_2.4.6_contrib_old.gemfile +38 -0
  225. data/gemfiles/ruby_2.4.6_contrib_old.gemfile.lock +155 -0
  226. data/gemfiles/ruby_2.4.6_core_old.gemfile +37 -0
  227. data/gemfiles/ruby_2.4.6_core_old.gemfile.lock +151 -0
  228. data/gemfiles/ruby_2.4.6_cucumber3.gemfile +38 -0
  229. data/gemfiles/ruby_2.4.6_cucumber3.gemfile.lock +172 -0
  230. data/gemfiles/ruby_2.4.6_cucumber4.gemfile +38 -0
  231. data/gemfiles/ruby_2.4.6_cucumber4.gemfile.lock +202 -0
  232. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile +41 -0
  233. data/gemfiles/ruby_2.4.6_rails5_mysql2.gemfile.lock +262 -0
  234. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile +41 -0
  235. data/gemfiles/ruby_2.4.6_rails5_postgres.gemfile.lock +262 -0
  236. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile +42 -0
  237. data/gemfiles/ruby_2.4.6_rails5_postgres_redis.gemfile.lock +264 -0
  238. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile +42 -0
  239. data/gemfiles/ruby_2.4.6_rails5_postgres_redis_activesupport.gemfile.lock +264 -0
  240. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile +43 -0
  241. data/gemfiles/ruby_2.4.6_rails5_postgres_sidekiq.gemfile.lock +273 -0
  242. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile +39 -0
  243. data/gemfiles/ruby_2.4.6_resque2_redis3.gemfile.lock +178 -0
  244. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile +39 -0
  245. data/gemfiles/ruby_2.4.6_resque2_redis4.gemfile.lock +178 -0
  246. data/gemfiles/ruby_2.5.6_contrib.gemfile +83 -0
  247. data/gemfiles/ruby_2.5.6_contrib.gemfile.lock +1526 -0
  248. data/gemfiles/ruby_2.5.6_contrib_old.gemfile +39 -0
  249. data/gemfiles/ruby_2.5.6_contrib_old.gemfile.lock +165 -0
  250. data/gemfiles/ruby_2.5.6_core_old.gemfile +38 -0
  251. data/gemfiles/ruby_2.5.6_core_old.gemfile.lock +161 -0
  252. data/gemfiles/ruby_2.5.6_cucumber3.gemfile +39 -0
  253. data/gemfiles/ruby_2.5.6_cucumber3.gemfile.lock +182 -0
  254. data/gemfiles/ruby_2.5.6_cucumber4.gemfile +39 -0
  255. data/gemfiles/ruby_2.5.6_cucumber4.gemfile.lock +214 -0
  256. data/gemfiles/ruby_2.5.6_cucumber5.gemfile +39 -0
  257. data/gemfiles/ruby_2.5.6_cucumber5.gemfile.lock +214 -0
  258. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile +44 -0
  259. data/gemfiles/ruby_2.5.6_rails5_mysql2.gemfile.lock +276 -0
  260. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile +44 -0
  261. data/gemfiles/ruby_2.5.6_rails5_postgres.gemfile.lock +276 -0
  262. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile +45 -0
  263. data/gemfiles/ruby_2.5.6_rails5_postgres_redis.gemfile.lock +278 -0
  264. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile +45 -0
  265. data/gemfiles/ruby_2.5.6_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  266. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile +46 -0
  267. data/gemfiles/ruby_2.5.6_rails5_postgres_sidekiq.gemfile.lock +284 -0
  268. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile +44 -0
  269. data/gemfiles/ruby_2.5.6_rails61_mysql2.gemfile.lock +295 -0
  270. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile +44 -0
  271. data/gemfiles/ruby_2.5.6_rails61_postgres.gemfile.lock +295 -0
  272. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile +45 -0
  273. data/gemfiles/ruby_2.5.6_rails61_postgres_redis.gemfile.lock +297 -0
  274. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile +45 -0
  275. data/gemfiles/ruby_2.5.6_rails61_postgres_sidekiq.gemfile.lock +302 -0
  276. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile +44 -0
  277. data/gemfiles/ruby_2.5.6_rails6_mysql2.gemfile.lock +292 -0
  278. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile +44 -0
  279. data/gemfiles/ruby_2.5.6_rails6_postgres.gemfile.lock +292 -0
  280. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile +45 -0
  281. data/gemfiles/ruby_2.5.6_rails6_postgres_redis.gemfile.lock +294 -0
  282. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile +45 -0
  283. data/gemfiles/ruby_2.5.6_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  284. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile +46 -0
  285. data/gemfiles/ruby_2.5.6_rails6_postgres_sidekiq.gemfile.lock +300 -0
  286. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile +40 -0
  287. data/gemfiles/ruby_2.5.6_resque2_redis3.gemfile.lock +188 -0
  288. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile +40 -0
  289. data/gemfiles/ruby_2.5.6_resque2_redis4.gemfile.lock +188 -0
  290. data/gemfiles/ruby_2.6.4_contrib.gemfile +79 -0
  291. data/gemfiles/ruby_2.6.4_contrib.gemfile.lock +1524 -0
  292. data/gemfiles/ruby_2.6.4_contrib_old.gemfile +39 -0
  293. data/gemfiles/ruby_2.6.4_contrib_old.gemfile.lock +167 -0
  294. data/gemfiles/ruby_2.6.4_core_old.gemfile +38 -0
  295. data/gemfiles/ruby_2.6.4_core_old.gemfile.lock +163 -0
  296. data/gemfiles/ruby_2.6.4_cucumber3.gemfile +39 -0
  297. data/gemfiles/ruby_2.6.4_cucumber3.gemfile.lock +184 -0
  298. data/gemfiles/ruby_2.6.4_cucumber4.gemfile +39 -0
  299. data/gemfiles/ruby_2.6.4_cucumber4.gemfile.lock +216 -0
  300. data/gemfiles/ruby_2.6.4_cucumber5.gemfile +39 -0
  301. data/gemfiles/ruby_2.6.4_cucumber5.gemfile.lock +216 -0
  302. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile +42 -0
  303. data/gemfiles/ruby_2.6.4_rails5_mysql2.gemfile.lock +276 -0
  304. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile +42 -0
  305. data/gemfiles/ruby_2.6.4_rails5_postgres.gemfile.lock +276 -0
  306. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile +43 -0
  307. data/gemfiles/ruby_2.6.4_rails5_postgres_redis.gemfile.lock +278 -0
  308. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile +43 -0
  309. data/gemfiles/ruby_2.6.4_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
  310. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile +44 -0
  311. data/gemfiles/ruby_2.6.4_rails5_postgres_sidekiq.gemfile.lock +284 -0
  312. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile +42 -0
  313. data/gemfiles/ruby_2.6.4_rails61_mysql2.gemfile.lock +295 -0
  314. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile +42 -0
  315. data/gemfiles/ruby_2.6.4_rails61_postgres.gemfile.lock +295 -0
  316. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile +43 -0
  317. data/gemfiles/ruby_2.6.4_rails61_postgres_redis.gemfile.lock +297 -0
  318. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile +43 -0
  319. data/gemfiles/ruby_2.6.4_rails61_postgres_sidekiq.gemfile.lock +302 -0
  320. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile +42 -0
  321. data/gemfiles/ruby_2.6.4_rails6_mysql2.gemfile.lock +292 -0
  322. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile +42 -0
  323. data/gemfiles/ruby_2.6.4_rails6_postgres.gemfile.lock +292 -0
  324. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile +43 -0
  325. data/gemfiles/ruby_2.6.4_rails6_postgres_redis.gemfile.lock +294 -0
  326. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile +43 -0
  327. data/gemfiles/ruby_2.6.4_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
  328. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile +44 -0
  329. data/gemfiles/ruby_2.6.4_rails6_postgres_sidekiq.gemfile.lock +300 -0
  330. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile +40 -0
  331. data/gemfiles/ruby_2.6.4_resque2_redis3.gemfile.lock +190 -0
  332. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile +40 -0
  333. data/gemfiles/ruby_2.6.4_resque2_redis4.gemfile.lock +190 -0
  334. data/gemfiles/ruby_2.7.0_contrib.gemfile +78 -0
  335. data/gemfiles/ruby_2.7.0_contrib.gemfile.lock +1523 -0
  336. data/gemfiles/ruby_2.7.0_contrib_old.gemfile +39 -0
  337. data/gemfiles/ruby_2.7.0_contrib_old.gemfile.lock +167 -0
  338. data/gemfiles/ruby_2.7.0_core_old.gemfile +38 -0
  339. data/gemfiles/ruby_2.7.0_core_old.gemfile.lock +163 -0
  340. data/gemfiles/ruby_2.7.0_cucumber3.gemfile +39 -0
  341. data/gemfiles/ruby_2.7.0_cucumber3.gemfile.lock +184 -0
  342. data/gemfiles/ruby_2.7.0_cucumber4.gemfile +39 -0
  343. data/gemfiles/ruby_2.7.0_cucumber4.gemfile.lock +216 -0
  344. data/gemfiles/ruby_2.7.0_cucumber5.gemfile +39 -0
  345. data/gemfiles/ruby_2.7.0_cucumber5.gemfile.lock +216 -0
  346. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile +42 -0
  347. data/gemfiles/ruby_2.7.0_rails5_mysql2.gemfile.lock +276 -0
  348. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile +42 -0
  349. data/gemfiles/ruby_2.7.0_rails5_postgres.gemfile.lock +276 -0
  350. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile +44 -0
  351. data/gemfiles/ruby_2.7.0_rails5_postgres_redis.gemfile.lock +295 -0
  352. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile +44 -0
  353. data/gemfiles/ruby_2.7.0_rails5_postgres_redis_activesupport.gemfile.lock +295 -0
  354. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile +44 -0
  355. data/gemfiles/ruby_2.7.0_rails5_postgres_sidekiq.gemfile.lock +284 -0
  356. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile +42 -0
  357. data/gemfiles/ruby_2.7.0_rails61_mysql2.gemfile.lock +295 -0
  358. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile +42 -0
  359. data/gemfiles/ruby_2.7.0_rails61_postgres.gemfile.lock +295 -0
  360. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile +43 -0
  361. data/gemfiles/ruby_2.7.0_rails61_postgres_redis.gemfile.lock +297 -0
  362. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile +43 -0
  363. data/gemfiles/ruby_2.7.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  364. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile +42 -0
  365. data/gemfiles/ruby_2.7.0_rails6_mysql2.gemfile.lock +292 -0
  366. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile +42 -0
  367. data/gemfiles/ruby_2.7.0_rails6_postgres.gemfile.lock +292 -0
  368. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile +44 -0
  369. data/gemfiles/ruby_2.7.0_rails6_postgres_redis.gemfile.lock +311 -0
  370. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile +44 -0
  371. data/gemfiles/ruby_2.7.0_rails6_postgres_redis_activesupport.gemfile.lock +311 -0
  372. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile +44 -0
  373. data/gemfiles/ruby_2.7.0_rails6_postgres_sidekiq.gemfile.lock +300 -0
  374. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile +40 -0
  375. data/gemfiles/ruby_2.7.0_resque2_redis3.gemfile.lock +190 -0
  376. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile +40 -0
  377. data/gemfiles/ruby_2.7.0_resque2_redis4.gemfile.lock +190 -0
  378. data/gemfiles/ruby_3.0.0_contrib.gemfile +78 -0
  379. data/gemfiles/ruby_3.0.0_contrib.gemfile.lock +1540 -0
  380. data/gemfiles/ruby_3.0.0_core_old.gemfile +39 -0
  381. data/gemfiles/ruby_3.0.0_core_old.gemfile.lock +165 -0
  382. data/gemfiles/ruby_3.0.0_cucumber3.gemfile +40 -0
  383. data/gemfiles/ruby_3.0.0_cucumber3.gemfile.lock +186 -0
  384. data/gemfiles/ruby_3.0.0_cucumber4.gemfile +40 -0
  385. data/gemfiles/ruby_3.0.0_cucumber4.gemfile.lock +218 -0
  386. data/gemfiles/ruby_3.0.0_cucumber5.gemfile +40 -0
  387. data/gemfiles/ruby_3.0.0_cucumber5.gemfile.lock +218 -0
  388. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile +43 -0
  389. data/gemfiles/ruby_3.0.0_rails61_mysql2.gemfile.lock +295 -0
  390. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile +43 -0
  391. data/gemfiles/ruby_3.0.0_rails61_postgres.gemfile.lock +295 -0
  392. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile +44 -0
  393. data/gemfiles/ruby_3.0.0_rails61_postgres_redis.gemfile.lock +297 -0
  394. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile +44 -0
  395. data/gemfiles/ruby_3.0.0_rails61_postgres_sidekiq.gemfile.lock +302 -0
  396. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile +41 -0
  397. data/gemfiles/ruby_3.0.0_resque2_redis3.gemfile.lock +192 -0
  398. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile +41 -0
  399. data/gemfiles/ruby_3.0.0_resque2_redis4.gemfile.lock +192 -0
  400. data/integration/README.md +67 -0
  401. data/integration/apps/rack/.dockerignore +1 -0
  402. data/integration/apps/rack/.envrc.sample +1 -0
  403. data/integration/apps/rack/.gitignore +4 -0
  404. data/integration/apps/rack/.rspec +1 -0
  405. data/integration/apps/rack/Dockerfile +28 -0
  406. data/integration/apps/rack/Dockerfile-ci +11 -0
  407. data/integration/apps/rack/Gemfile +24 -0
  408. data/integration/apps/rack/README.md +93 -0
  409. data/integration/apps/rack/app/acme.rb +80 -0
  410. data/integration/apps/rack/app/datadog.rb +17 -0
  411. data/integration/apps/rack/bin/run +22 -0
  412. data/integration/apps/rack/bin/setup +17 -0
  413. data/integration/apps/rack/bin/test +24 -0
  414. data/integration/apps/rack/config.ru +6 -0
  415. data/integration/apps/rack/config/puma.rb +14 -0
  416. data/integration/apps/rack/config/unicorn.rb +23 -0
  417. data/integration/apps/rack/docker-compose.ci.yml +62 -0
  418. data/integration/apps/rack/docker-compose.yml +78 -0
  419. data/integration/apps/rack/script/build-images +38 -0
  420. data/integration/apps/rack/script/ci +51 -0
  421. data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
  422. data/integration/apps/rack/spec/spec_helper.rb +16 -0
  423. data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
  424. data/integration/apps/rails-five/.dockerignore +1 -0
  425. data/integration/apps/rails-five/.env +3 -0
  426. data/integration/apps/rails-five/.envrc.sample +1 -0
  427. data/integration/apps/rails-five/.gitignore +30 -0
  428. data/integration/apps/rails-five/Dockerfile +25 -0
  429. data/integration/apps/rails-five/Dockerfile-ci +11 -0
  430. data/integration/apps/rails-five/Gemfile +104 -0
  431. data/integration/apps/rails-five/README.md +94 -0
  432. data/integration/apps/rails-five/Rakefile +6 -0
  433. data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
  434. data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
  435. data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
  436. data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
  437. data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
  438. data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
  439. data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
  440. data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
  441. data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
  442. data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
  443. data/integration/apps/rails-five/app/models/application_record.rb +3 -0
  444. data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
  445. data/integration/apps/rails-five/app/models/test.rb +2 -0
  446. data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
  447. data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
  448. data/integration/apps/rails-five/bin/bundle +3 -0
  449. data/integration/apps/rails-five/bin/rails +9 -0
  450. data/integration/apps/rails-five/bin/rake +9 -0
  451. data/integration/apps/rails-five/bin/run +24 -0
  452. data/integration/apps/rails-five/bin/setup +27 -0
  453. data/integration/apps/rails-five/bin/spring +17 -0
  454. data/integration/apps/rails-five/bin/test +21 -0
  455. data/integration/apps/rails-five/bin/update +28 -0
  456. data/integration/apps/rails-five/config.ru +5 -0
  457. data/integration/apps/rails-five/config/application.rb +97 -0
  458. data/integration/apps/rails-five/config/boot.rb +4 -0
  459. data/integration/apps/rails-five/config/cable.yml +10 -0
  460. data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
  461. data/integration/apps/rails-five/config/database.yml +28 -0
  462. data/integration/apps/rails-five/config/environment.rb +5 -0
  463. data/integration/apps/rails-five/config/environments/development.rb +51 -0
  464. data/integration/apps/rails-five/config/environments/production.rb +82 -0
  465. data/integration/apps/rails-five/config/environments/test.rb +43 -0
  466. data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
  467. data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
  468. data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
  469. data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
  470. data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
  471. data/integration/apps/rails-five/config/locales/en.yml +33 -0
  472. data/integration/apps/rails-five/config/puma.rb +24 -0
  473. data/integration/apps/rails-five/config/routes.rb +11 -0
  474. data/integration/apps/rails-five/config/spring.rb +6 -0
  475. data/integration/apps/rails-five/config/unicorn.rb +29 -0
  476. data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
  477. data/integration/apps/rails-five/db/schema.rb +23 -0
  478. data/integration/apps/rails-five/db/seeds.rb +7 -0
  479. data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
  480. data/integration/apps/rails-five/docker-compose.yml +100 -0
  481. data/integration/apps/rails-five/lib/tasks/.keep +0 -0
  482. data/integration/apps/rails-five/log/.keep +0 -0
  483. data/integration/apps/rails-five/public/robots.txt +1 -0
  484. data/integration/apps/rails-five/script/build-images +35 -0
  485. data/integration/apps/rails-five/script/ci +51 -0
  486. data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
  487. data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
  488. data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
  489. data/integration/apps/rails-five/storage/.keep +0 -0
  490. data/integration/apps/rails-five/tmp/.keep +0 -0
  491. data/integration/apps/rails-five/vendor/.keep +0 -0
  492. data/integration/apps/rspec/.dockerignore +1 -0
  493. data/integration/apps/rspec/.envrc.sample +1 -0
  494. data/integration/apps/rspec/.gitignore +2 -0
  495. data/integration/apps/rspec/.rspec +1 -0
  496. data/integration/apps/rspec/Dockerfile +25 -0
  497. data/integration/apps/rspec/Dockerfile-ci +11 -0
  498. data/integration/apps/rspec/Gemfile +14 -0
  499. data/integration/apps/rspec/README.md +70 -0
  500. data/integration/apps/rspec/agent.yaml +3 -0
  501. data/integration/apps/rspec/app/datadog.rb +13 -0
  502. data/integration/apps/rspec/app/fibonacci.rb +30 -0
  503. data/integration/apps/rspec/bin/run +20 -0
  504. data/integration/apps/rspec/bin/setup +17 -0
  505. data/integration/apps/rspec/bin/test +21 -0
  506. data/integration/apps/rspec/docker-compose.ci.yml +51 -0
  507. data/integration/apps/rspec/docker-compose.yml +63 -0
  508. data/integration/apps/rspec/script/build-images +37 -0
  509. data/integration/apps/rspec/script/ci +53 -0
  510. data/integration/apps/rspec/spec/fibonacci_spec.rb +16 -0
  511. data/integration/apps/rspec/spec/rspec_spec.rb +58 -0
  512. data/integration/apps/rspec/spec/spec_helper.rb +24 -0
  513. data/integration/apps/ruby/.dockerignore +1 -0
  514. data/integration/apps/ruby/.envrc.sample +1 -0
  515. data/integration/apps/ruby/.gitignore +2 -0
  516. data/integration/apps/ruby/Dockerfile +25 -0
  517. data/integration/apps/ruby/Dockerfile-ci +11 -0
  518. data/integration/apps/ruby/Gemfile +11 -0
  519. data/integration/apps/ruby/README.md +70 -0
  520. data/integration/apps/ruby/agent.yaml +3 -0
  521. data/integration/apps/ruby/app/datadog.rb +13 -0
  522. data/integration/apps/ruby/app/fibonacci.rb +58 -0
  523. data/integration/apps/ruby/bin/run +20 -0
  524. data/integration/apps/ruby/bin/setup +17 -0
  525. data/integration/apps/ruby/bin/test +21 -0
  526. data/integration/apps/ruby/docker-compose.ci.yml +51 -0
  527. data/integration/apps/ruby/docker-compose.yml +63 -0
  528. data/integration/apps/ruby/script/build-images +38 -0
  529. data/integration/apps/ruby/script/ci +51 -0
  530. data/integration/images/agent/Dockerfile +2 -0
  531. data/integration/images/agent/agent.yaml +3 -0
  532. data/integration/images/include/datadog/analyzer.rb +71 -0
  533. data/integration/images/include/datadog/demo_env.rb +101 -0
  534. data/integration/images/include/http-health-check +33 -0
  535. data/integration/images/ruby/2.1/Dockerfile +54 -0
  536. data/integration/images/ruby/2.2/Dockerfile +54 -0
  537. data/integration/images/ruby/2.3/Dockerfile +70 -0
  538. data/integration/images/ruby/2.4/Dockerfile +54 -0
  539. data/integration/images/ruby/2.5/Dockerfile +54 -0
  540. data/integration/images/ruby/2.6/Dockerfile +54 -0
  541. data/integration/images/ruby/2.7/Dockerfile +54 -0
  542. data/integration/images/ruby/3.0/Dockerfile +54 -0
  543. data/integration/images/wrk/Dockerfile +33 -0
  544. data/integration/images/wrk/scripts/entrypoint.sh +17 -0
  545. data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
  546. data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
  547. data/integration/script/build-images +43 -0
  548. data/lib/datadog/ci.rb +16 -0
  549. data/lib/datadog/ci/configuration/components.rb +30 -0
  550. data/lib/datadog/ci/configuration/settings.rb +36 -0
  551. data/lib/datadog/ci/context_flush.rb +28 -0
  552. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +30 -0
  553. data/lib/datadog/ci/contrib/cucumber/ext.rb +19 -0
  554. data/lib/datadog/ci/contrib/cucumber/formatter.rb +97 -0
  555. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +26 -0
  556. data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
  557. data/lib/datadog/ci/contrib/cucumber/patcher.rb +25 -0
  558. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +30 -0
  559. data/lib/datadog/ci/contrib/rspec/example.rb +73 -0
  560. data/lib/datadog/ci/contrib/rspec/ext.rb +18 -0
  561. data/lib/datadog/ci/contrib/rspec/integration.rb +48 -0
  562. data/lib/datadog/ci/contrib/rspec/patcher.rb +25 -0
  563. data/lib/datadog/ci/ext/app_types.rb +9 -0
  564. data/lib/datadog/ci/ext/environment.rb +303 -0
  565. data/lib/datadog/ci/ext/settings.rb +10 -0
  566. data/lib/datadog/ci/ext/test.rb +28 -0
  567. data/lib/datadog/ci/extensions.rb +17 -0
  568. data/lib/datadog/ci/test.rb +63 -0
  569. data/lib/ddtrace.rb +1 -7
  570. data/lib/ddtrace/analytics.rb +2 -0
  571. data/lib/ddtrace/buffer.rb +4 -4
  572. data/lib/ddtrace/configuration.rb +98 -25
  573. data/lib/ddtrace/configuration/agent_settings_resolver.rb +230 -0
  574. data/lib/ddtrace/configuration/base.rb +7 -10
  575. data/lib/ddtrace/configuration/components.rb +119 -21
  576. data/lib/ddtrace/configuration/option_definition.rb +1 -3
  577. data/lib/ddtrace/configuration/options.rb +6 -9
  578. data/lib/ddtrace/configuration/settings.rb +110 -7
  579. data/lib/ddtrace/context.rb +22 -20
  580. data/lib/ddtrace/context_flush.rb +14 -2
  581. data/lib/ddtrace/context_provider.rb +0 -1
  582. data/lib/ddtrace/contrib/action_cable/event.rb +5 -4
  583. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +2 -4
  584. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +1 -1
  585. data/lib/ddtrace/contrib/action_pack/utils.rb +1 -1
  586. data/lib/ddtrace/contrib/action_view/event.rb +3 -3
  587. data/lib/ddtrace/contrib/action_view/patcher.rb +4 -4
  588. data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
  589. data/lib/ddtrace/contrib/active_model_serializers/event.rb +2 -2
  590. data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
  591. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
  592. data/lib/ddtrace/contrib/active_record/event.rb +2 -2
  593. data/lib/ddtrace/contrib/active_record/utils.rb +1 -0
  594. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +7 -7
  595. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -5
  596. data/lib/ddtrace/contrib/active_support/notifications/event.rb +4 -3
  597. data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +2 -1
  598. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
  599. data/lib/ddtrace/contrib/auto_instrument.rb +2 -2
  600. data/lib/ddtrace/contrib/aws/instrumentation.rb +29 -0
  601. data/lib/ddtrace/contrib/aws/patcher.rb +5 -0
  602. data/lib/ddtrace/contrib/aws/services.rb +2 -0
  603. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -1
  604. data/lib/ddtrace/contrib/configurable.rb +64 -40
  605. data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
  606. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +19 -20
  607. data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
  608. data/lib/ddtrace/contrib/dalli/instrumentation.rb +1 -1
  609. data/lib/ddtrace/contrib/dalli/patcher.rb +1 -39
  610. data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
  611. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
  612. data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
  613. data/lib/ddtrace/contrib/ethon/easy_patch.rb +6 -6
  614. data/lib/ddtrace/contrib/ethon/multi_patch.rb +1 -1
  615. data/lib/ddtrace/contrib/ethon/patcher.rb +2 -2
  616. data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
  617. data/lib/ddtrace/contrib/extensions.rb +30 -6
  618. data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
  619. data/lib/ddtrace/contrib/faraday/patcher.rb +2 -38
  620. data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
  621. data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -2
  622. data/lib/ddtrace/contrib/grape/patcher.rb +1 -43
  623. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
  624. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
  625. data/lib/ddtrace/contrib/grpc/patcher.rb +1 -37
  626. data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
  627. data/lib/ddtrace/contrib/http/instrumentation.rb +6 -6
  628. data/lib/ddtrace/contrib/http/patcher.rb +1 -1
  629. data/lib/ddtrace/contrib/httpclient/instrumentation.rb +15 -20
  630. data/lib/ddtrace/contrib/httpclient/patcher.rb +6 -3
  631. data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
  632. data/lib/ddtrace/contrib/httprb/patcher.rb +6 -3
  633. data/lib/ddtrace/contrib/integration.rb +3 -3
  634. data/lib/ddtrace/contrib/kafka/event.rb +2 -2
  635. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +4 -2
  636. data/lib/ddtrace/contrib/mongodb/patcher.rb +2 -2
  637. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
  638. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  639. data/lib/ddtrace/contrib/mysql2/patcher.rb +1 -1
  640. data/lib/ddtrace/contrib/patchable.rb +2 -2
  641. data/lib/ddtrace/contrib/patcher.rb +10 -7
  642. data/lib/ddtrace/contrib/presto/instrumentation.rb +1 -1
  643. data/lib/ddtrace/contrib/presto/patcher.rb +6 -3
  644. data/lib/ddtrace/contrib/qless/patcher.rb +3 -5
  645. data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
  646. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
  647. data/lib/ddtrace/contrib/que/ext.rb +19 -19
  648. data/lib/ddtrace/contrib/que/tracer.rb +1 -1
  649. data/lib/ddtrace/contrib/racecar/event.rb +3 -2
  650. data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
  651. data/lib/ddtrace/contrib/rack/middlewares.rb +5 -10
  652. data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
  653. data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
  654. data/lib/ddtrace/contrib/rake/instrumentation.rb +5 -3
  655. data/lib/ddtrace/contrib/rake/patcher.rb +1 -1
  656. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +11 -4
  657. data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
  658. data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
  659. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
  660. data/lib/ddtrace/contrib/registerable.rb +2 -2
  661. data/lib/ddtrace/contrib/registry.rb +2 -2
  662. data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
  663. data/lib/ddtrace/contrib/resque/integration.rb +1 -1
  664. data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
  665. data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
  666. data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
  667. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -4
  668. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  669. data/lib/ddtrace/contrib/sequel/dataset.rb +1 -1
  670. data/lib/ddtrace/contrib/sequel/patcher.rb +2 -2
  671. data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
  672. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
  673. data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
  674. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
  675. data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
  676. data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
  677. data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
  678. data/lib/ddtrace/contrib/sinatra/patcher.rb +1 -1
  679. data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
  680. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +3 -3
  681. data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
  682. data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
  683. data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
  684. data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +4 -6
  685. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +4 -0
  686. data/lib/ddtrace/correlation.rb +1 -0
  687. data/lib/ddtrace/diagnostics/environment_logger.rb +5 -4
  688. data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
  689. data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
  690. data/lib/ddtrace/error.rb +77 -8
  691. data/lib/ddtrace/ext/app_types.rb +0 -1
  692. data/lib/ddtrace/ext/distributed.rb +1 -1
  693. data/lib/ddtrace/ext/http.rb +1 -1
  694. data/lib/ddtrace/ext/profiling.rb +53 -0
  695. data/lib/ddtrace/ext/runtime.rb +3 -1
  696. data/lib/ddtrace/ext/test.rb +2 -18
  697. data/lib/ddtrace/ext/transport.rb +2 -0
  698. data/lib/ddtrace/forced_tracing.rb +2 -0
  699. data/lib/ddtrace/logger.rb +1 -1
  700. data/lib/ddtrace/metrics.rb +42 -9
  701. data/lib/ddtrace/opentelemetry/extensions.rb +1 -1
  702. data/lib/ddtrace/opentracer.rb +20 -39
  703. data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
  704. data/lib/ddtrace/opentracer/span.rb +2 -6
  705. data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
  706. data/lib/ddtrace/patcher.rb +27 -6
  707. data/lib/ddtrace/pin.rb +8 -61
  708. data/lib/ddtrace/pipeline/span_filter.rb +1 -1
  709. data/lib/ddtrace/profiling.rb +107 -0
  710. data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
  711. data/lib/ddtrace/profiling/buffer.rb +41 -0
  712. data/lib/ddtrace/profiling/collectors/stack.rb +262 -0
  713. data/lib/ddtrace/profiling/encoding/profile.rb +37 -0
  714. data/lib/ddtrace/profiling/event.rb +13 -0
  715. data/lib/ddtrace/profiling/events/stack.rb +102 -0
  716. data/lib/ddtrace/profiling/exporter.rb +23 -0
  717. data/lib/ddtrace/profiling/ext/cpu.rb +52 -0
  718. data/lib/ddtrace/profiling/ext/cthread.rb +155 -0
  719. data/lib/ddtrace/profiling/ext/forking.rb +97 -0
  720. data/lib/ddtrace/profiling/flush.rb +43 -0
  721. data/lib/ddtrace/profiling/pprof/builder.rb +119 -0
  722. data/lib/ddtrace/profiling/pprof/converter.rb +89 -0
  723. data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
  724. data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
  725. data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
  726. data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
  727. data/lib/ddtrace/profiling/pprof/stack_sample.rb +106 -0
  728. data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
  729. data/lib/ddtrace/profiling/pprof/template.rb +118 -0
  730. data/lib/ddtrace/profiling/preload.rb +3 -0
  731. data/lib/ddtrace/profiling/profiler.rb +30 -0
  732. data/lib/ddtrace/profiling/recorder.rb +95 -0
  733. data/lib/ddtrace/profiling/scheduler.rb +116 -0
  734. data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
  735. data/lib/ddtrace/profiling/transport/client.rb +12 -0
  736. data/lib/ddtrace/profiling/transport/http.rb +118 -0
  737. data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
  738. data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +100 -0
  739. data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
  740. data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
  741. data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
  742. data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
  743. data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
  744. data/lib/ddtrace/profiling/transport/io.rb +30 -0
  745. data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
  746. data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
  747. data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
  748. data/lib/ddtrace/profiling/transport/request.rb +15 -0
  749. data/lib/ddtrace/profiling/transport/response.rb +8 -0
  750. data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
  751. data/lib/ddtrace/quantization/http.rb +1 -0
  752. data/lib/ddtrace/runtime/cgroup.rb +2 -2
  753. data/lib/ddtrace/runtime/container.rb +43 -29
  754. data/lib/ddtrace/runtime/identity.rb +8 -0
  755. data/lib/ddtrace/runtime/metrics.rb +3 -5
  756. data/lib/ddtrace/sampler.rb +1 -1
  757. data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
  758. data/lib/ddtrace/span.rb +7 -7
  759. data/lib/ddtrace/sync_writer.rb +14 -13
  760. data/lib/ddtrace/tasks/exec.rb +48 -0
  761. data/lib/ddtrace/tasks/help.rb +14 -0
  762. data/lib/ddtrace/tracer.rb +43 -37
  763. data/lib/ddtrace/transport/http.rb +41 -31
  764. data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
  765. data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
  766. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
  767. data/lib/ddtrace/transport/http/builder.rb +7 -1
  768. data/lib/ddtrace/transport/http/env.rb +8 -0
  769. data/lib/ddtrace/transport/http/statistics.rb +2 -2
  770. data/lib/ddtrace/transport/http/traces.rb +5 -6
  771. data/lib/ddtrace/transport/io.rb +1 -1
  772. data/lib/ddtrace/transport/io/client.rb +15 -8
  773. data/lib/ddtrace/transport/io/response.rb +1 -3
  774. data/lib/ddtrace/transport/io/traces.rb +7 -1
  775. data/lib/ddtrace/transport/parcel.rb +4 -0
  776. data/lib/ddtrace/transport/traces.rb +18 -1
  777. data/lib/ddtrace/utils/compression.rb +27 -0
  778. data/lib/ddtrace/utils/forking.rb +1 -1
  779. data/lib/ddtrace/utils/object_set.rb +39 -0
  780. data/lib/ddtrace/utils/only_once.rb +40 -0
  781. data/lib/ddtrace/utils/sequence.rb +17 -0
  782. data/lib/ddtrace/utils/string_table.rb +45 -0
  783. data/lib/ddtrace/utils/time.rb +32 -3
  784. data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
  785. data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
  786. data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
  787. data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
  788. data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
  789. data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
  790. data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
  791. data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
  792. data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
  793. data/lib/ddtrace/version.rb +14 -2
  794. data/lib/ddtrace/workers.rb +6 -1
  795. data/lib/ddtrace/workers/async.rb +13 -4
  796. data/lib/ddtrace/workers/loop.rb +31 -5
  797. data/lib/ddtrace/workers/polling.rb +12 -5
  798. data/lib/ddtrace/workers/queue.rb +2 -1
  799. data/lib/ddtrace/workers/runtime_metrics.rb +14 -1
  800. data/lib/ddtrace/workers/trace_writer.rb +11 -14
  801. data/lib/ddtrace/writer.rb +11 -5
  802. metadata +620 -408
  803. data/lib/ddtrace/augmentation.rb +0 -13
  804. data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
  805. data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
  806. data/lib/ddtrace/augmentation/shim.rb +0 -102
  807. data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -38
  808. data/lib/ddtrace/contrib/cucumber/ext.rb +0 -19
  809. data/lib/ddtrace/contrib/cucumber/formatter.rb +0 -104
  810. data/lib/ddtrace/contrib/cucumber/instrumentation.rb +0 -24
  811. data/lib/ddtrace/contrib/cucumber/integration.rb +0 -45
  812. data/lib/ddtrace/contrib/cucumber/patcher.rb +0 -23
  813. data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -38
  814. data/lib/ddtrace/contrib/rspec/example.rb +0 -61
  815. data/lib/ddtrace/contrib/rspec/example_group.rb +0 -61
  816. data/lib/ddtrace/contrib/rspec/ext.rb +0 -19
  817. data/lib/ddtrace/contrib/rspec/integration.rb +0 -46
  818. data/lib/ddtrace/contrib/rspec/patcher.rb +0 -25
  819. data/lib/ddtrace/ext/ci.rb +0 -297
  820. data/lib/ddtrace/monkey.rb +0 -58
@@ -5,33 +5,32 @@ module Datadog
5
5
  module Configuration
6
6
  # Resolves a value to a configuration key
7
7
  module Resolvers
8
- # Matches strings against Regexps.
9
- class PatternResolver < Datadog::Contrib::Configuration::Resolver
10
- def resolve(name)
11
- return if patterns.empty?
8
+ # Matches Strings and Regexps against `object.to_s` objects
9
+ # and Procs against plain objects.
10
+ class PatternResolver < Contrib::Configuration::Resolver
11
+ def resolve(value)
12
+ return if configurations.empty?
12
13
 
13
14
  # Try to find a matching pattern
14
- matching_pattern = patterns.find do |pattern|
15
- if pattern.is_a?(Proc)
16
- (pattern === name)
17
- else
18
- (pattern === name.to_s) ||
19
- (pattern == name) # Only required during configuration time.
20
- end
15
+ _, config = configurations.reverse_each.find do |matcher, _|
16
+ matcher === if matcher.is_a?(Proc)
17
+ value
18
+ else
19
+ value.to_s
20
+ end
21
21
  end
22
22
 
23
- # Return match or default
24
- matching_pattern
23
+ config
25
24
  end
26
25
 
27
- def add(pattern)
28
- patterns << (pattern.is_a?(Regexp) || pattern.is_a?(Proc) ? pattern : pattern.to_s)
29
- end
30
-
31
- private
26
+ protected
32
27
 
33
- def patterns
34
- @patterns ||= Set.new
28
+ def parse_matcher(matcher)
29
+ if matcher.is_a?(Regexp) || matcher.is_a?(Proc)
30
+ matcher
31
+ else
32
+ matcher.to_s
33
+ end
35
34
  end
36
35
  end
37
36
  end
@@ -1,4 +1,5 @@
1
1
  require 'ddtrace/configuration/base'
2
+ require 'ddtrace/utils/only_once'
2
3
 
3
4
  module Datadog
4
5
  module Contrib
@@ -7,6 +8,8 @@ module Datadog
7
8
  class Settings
8
9
  include Datadog::Configuration::Base
9
10
 
11
+ DEPRECATION_WARN_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
12
+
10
13
  option :analytics_enabled, default: false
11
14
  option :analytics_sample_rate, default: 1.0
12
15
  option :enabled, default: true
@@ -14,7 +17,7 @@ module Datadog
14
17
  option :tracer do |o|
15
18
  o.delegate_to { Datadog.tracer }
16
19
  o.on_set do |_value|
17
- log_deprecation_warning(:tracer)
20
+ log_deprecation_warning
18
21
  end
19
22
  end
20
23
 
@@ -41,11 +44,9 @@ module Datadog
41
44
  the correct tracer internally.
42
45
  ).freeze
43
46
 
44
- include Datadog::Patcher # DEV includes #do_once here. We should move that logic to a generic component.
45
-
46
- def log_deprecation_warning(method_name)
47
- do_once(method_name) do
48
- Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}:#{caller.join("\n")}")
47
+ def log_deprecation_warning
48
+ DEPRECATION_WARN_ONLY_ONCE.run do
49
+ Datadog.logger.warn("tracer:#{DEPRECATION_WARNING}:#{caller.join("\n")}")
49
50
  end
50
51
  end
51
52
  end
@@ -10,7 +10,7 @@ module Datadog
10
10
  # Instruments every interaction with the memcached server
11
11
  module Instrumentation
12
12
  def self.included(base)
13
- base.send(:prepend, InstanceMethods)
13
+ base.prepend(InstanceMethods)
14
14
  end
15
15
 
16
16
  # InstanceMethods - implementing instrumentation
@@ -17,45 +17,7 @@ module Datadog
17
17
  end
18
18
 
19
19
  def patch
20
- add_pin!
21
- ::Dalli::Server.send(:include, Instrumentation)
22
- end
23
-
24
- # DEPRECATED: Only kept for users still using `Dalli.datadog_pin` to configure.
25
- # Replaced by configuration API, i.e. `c.use :dalli`.
26
- def add_pin!
27
- DeprecatedPin
28
- .new(
29
- get_option(:service_name),
30
- app: Ext::APP,
31
- app_type: Datadog::Ext::AppTypes::CACHE,
32
- tracer: -> { get_option(:tracer) }
33
- ).onto(::Dalli)
34
- end
35
-
36
- def get_option(option)
37
- Datadog.configuration[:dalli].get_option(option)
38
- end
39
-
40
- # Implementation of deprecated Pin, which raises warnings when accessed.
41
- # To be removed when support for Datadog::Pin with Dalli is removed.
42
- class DeprecatedPin < Datadog::Pin
43
- include Datadog::DeprecatedPin
44
-
45
- DEPRECATION_WARNING = %(
46
- Use of Datadog::Pin with Dalli is DEPRECATED.
47
- Upgrade to the configuration API using the migration guide here:
48
- https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
49
-
50
- def service_name=(service_name)
51
- Datadog.configuration[:dalli][:service_name] = service_name
52
- end
53
-
54
- def log_deprecation_warning(method_name)
55
- do_once(method_name) do
56
- Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
57
- end
58
- end
20
+ ::Dalli::Server.include(Instrumentation)
59
21
  end
60
22
  end
61
23
  end
@@ -12,7 +12,6 @@ module Datadog
12
12
 
13
13
  tracer.trace(Ext::SPAN_JOB, service: configuration[:service_name], resource: job_name(job),
14
14
  on_error: configuration[:error_handler]) do |span|
15
-
16
15
  set_sample_rate(span)
17
16
 
18
17
  # Measure service stats
@@ -1,3 +1,4 @@
1
+ require 'ddtrace/patcher'
1
2
  require 'ddtrace/contrib/patcher'
2
3
  require 'ddtrace/ext/app_types'
3
4
  require 'ddtrace/ext/integration'
@@ -17,7 +17,7 @@ module Datadog
17
17
 
18
18
  def format_url(url)
19
19
  sanitize_fragment_with_id(url)
20
- .gsub(/(?:[\d]+)/, PLACEHOLDER)
20
+ .gsub(/(?:\d+)/, PLACEHOLDER)
21
21
  end
22
22
 
23
23
  def format_body(body, options = {})
@@ -60,6 +60,7 @@ module Datadog
60
60
  # If JSON parsing fails, it prints fail_value.
61
61
  def reserialize_json(string, fail_value = PLACEHOLDER)
62
62
  return string unless block_given?
63
+
63
64
  begin
64
65
  JSON.dump(yield(JSON.parse(string)))
65
66
  rescue JSON::ParserError
@@ -72,7 +73,7 @@ module Datadog
72
73
  # This is meant as simple heuristic that attempts to detect if particular fragment
73
74
  # represents document Id. This is meant to reduce the cardinality in most frequent cases.
74
75
  def sanitize_fragment_with_id(url)
75
- url.gsub(%r{^(/?[^/]*/[^/]*/)(?:[^\?/\d]*[\d]+[^\?/]*)}, ID_PLACEHOLDER)
76
+ url.gsub(%r{^(/?[^/]*/[^/]*/)(?:[^?/\d]*\d+[^?/]*)}, ID_PLACEHOLDER)
76
77
  end
77
78
  end
78
79
  end
@@ -11,10 +11,10 @@ module Datadog
11
11
  # Ethon EasyPatch
12
12
  module EasyPatch
13
13
  def self.included(base)
14
- base.send(:prepend, InstanceMethods)
14
+ base.prepend(InstanceMethods)
15
15
  end
16
+
16
17
  # InstanceMethods - implementing instrumentation
17
- # rubocop:disable Metrics/ModuleLength
18
18
  module InstanceMethods
19
19
  include Datadog::Contrib::HttpAnnotationHelper
20
20
 
@@ -36,12 +36,14 @@ module Datadog
36
36
  def perform
37
37
  load_datadog_configuration_for(url)
38
38
  return super unless tracer_enabled?
39
+
39
40
  datadog_before_request
40
41
  super
41
42
  end
42
43
 
43
44
  def complete
44
45
  return super unless tracer_enabled?
46
+
45
47
  begin
46
48
  response_options = mirror.options
47
49
  response_code = (response_options[:response_code] || response_options[:code]).to_i
@@ -100,9 +102,7 @@ module Datadog
100
102
  def datadog_tag_request
101
103
  span = @datadog_span
102
104
  method = Ext::NOT_APPLICABLE_METHOD
103
- if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
104
- method = @datadog_method.to_s
105
- end
105
+ method = @datadog_method.to_s if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
106
106
  span.resource = method
107
107
  # Tag as an external peer service
108
108
  span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
@@ -111,6 +111,7 @@ module Datadog
111
111
 
112
112
  this_uri = uri
113
113
  return unless this_uri
114
+
114
115
  span.set_tag(Datadog::Ext::HTTP::URL, this_uri.path)
115
116
  span.set_tag(Datadog::Ext::HTTP::METHOD, method)
116
117
  span.set_tag(Datadog::Ext::NET::TARGET_HOST, this_uri.host)
@@ -125,7 +126,6 @@ module Datadog
125
126
 
126
127
  def uri
127
128
  URI.parse(url)
128
- # rubocop:disable Lint/HandleExceptions
129
129
  rescue URI::InvalidURIError
130
130
  end
131
131
 
@@ -11,7 +11,7 @@ module Datadog
11
11
  module MultiPatch
12
12
  def self.included(base)
13
13
  # No need to prepend here since add method is included into Multi class
14
- base.send(:include, InstanceMethods)
14
+ base.include(InstanceMethods)
15
15
  end
16
16
 
17
17
  # InstanceMethods - implementing instrumentation
@@ -16,8 +16,8 @@ module Datadog
16
16
  require 'ddtrace/contrib/ethon/easy_patch'
17
17
  require 'ddtrace/contrib/ethon/multi_patch'
18
18
 
19
- ::Ethon::Easy.send(:include, EasyPatch)
20
- ::Ethon::Multi.send(:include, MultiPatch)
19
+ ::Ethon::Easy.include(EasyPatch)
20
+ ::Ethon::Multi.include(MultiPatch)
21
21
  end
22
22
  end
23
23
  end
@@ -119,9 +119,7 @@ module Datadog
119
119
  span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
120
120
 
121
121
  # Set analytics sample rate
122
- if analytics_enabled?
123
- Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
124
- end
122
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
125
123
 
126
124
  span.set_tag(Datadog::Ext::HTTP::URL, datum[:path])
127
125
  span.set_tag(Datadog::Ext::HTTP::METHOD, datum[:method].to_s.upcase)
@@ -136,9 +134,7 @@ module Datadog
136
134
 
137
135
  if datum.key?(:response)
138
136
  response = datum[:response]
139
- if error_handler.call(response)
140
- span.set_error(["Error #{response[:status]}", response[:body]])
141
- end
137
+ span.set_error(["Error #{response[:status]}", response[:body]]) if error_handler.call(response)
142
138
  span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, response[:status])
143
139
  end
144
140
  span.set_error(datum[:error]) if datum.key?(:error)
@@ -7,9 +7,9 @@ module Datadog
7
7
  # Adds registry, configuration access for integrations.
8
8
  module Extensions
9
9
  def self.extended(base)
10
- Datadog.send(:extend, Helpers)
11
- Datadog.send(:extend, Configuration)
12
- Datadog::Configuration::Settings.send(:include, Configuration::Settings)
10
+ Datadog.extend(Helpers)
11
+ Datadog.extend(Configuration)
12
+ Datadog::Configuration::Settings.include(Configuration::Settings)
13
13
  end
14
14
 
15
15
  # Helper methods for Datadog module.
@@ -30,6 +30,7 @@ module Datadog
30
30
  reduce_verbosity = target.respond_to?(:reduce_verbosity?) ? target.reduce_verbosity? : false
31
31
  target.integrations_pending_activation.each do |integration|
32
32
  next unless integration.respond_to?(:patch)
33
+
33
34
  # integration.patch returns either true or a hash of details on why patching failed
34
35
  patch_results = integration.patch
35
36
 
@@ -46,7 +47,7 @@ module Datadog
46
47
  desc += ", Compatible? #{patch_results[:compatible]}"
47
48
  desc += ", Patchable? #{patch_results[:patchable]}"
48
49
 
49
- Datadog.logger.warn("Unable to patch #{patch_results['name']} (#{desc})")
50
+ Datadog.logger.warn("Unable to patch #{patch_results[:name]} (#{desc})")
50
51
  end
51
52
 
52
53
  target.integrations_pending_activation.clear
@@ -66,9 +67,32 @@ module Datadog
66
67
  end
67
68
  end
68
69
 
69
- def [](integration_name, configuration_name = :default)
70
+ # For the provided `integration_name`, resolves a matching configuration
71
+ # for the provided integration from an integration-specific `key`.
72
+ #
73
+ # How the matching is performed is integration-specific.
74
+ #
75
+ # @param [Symbol] integration_name the integration name
76
+ # @param [Object] key the integration-specific lookup key
77
+ # @return [Datadog::Contrib::Configuration::Settings]
78
+ def [](integration_name, key = :default)
79
+ integration = fetch_integration(integration_name)
80
+ integration.resolve(key) unless integration.nil?
81
+ end
82
+
83
+ # For the provided `integration_name`, retrieves a configuration previously
84
+ # stored by `#instrument`. Specifically, `describes` should be
85
+ # the same value provided in the `describes:` option for `#instrument`.
86
+ #
87
+ # If no `describes` value is provided, the default configuration is returned.
88
+ #
89
+ # @param [Symbol] integration_name the integration name
90
+ # @param [Object] describes the previously configured `describes:` object. If `nil`,
91
+ # fetches the default configuration
92
+ # @return [Datadog::Contrib::Configuration::Settings]
93
+ def configuration(integration_name, describes = nil)
70
94
  integration = fetch_integration(integration_name)
71
- integration.configuration(configuration_name) unless integration.nil?
95
+ integration.configuration(describes) unless integration.nil?
72
96
  end
73
97
 
74
98
  def instrument(integration_name, options = {}, &block)
@@ -57,9 +57,7 @@ module Datadog
57
57
  end
58
58
 
59
59
  def handle_response(span, env, options)
60
- if options.fetch(:error_handler).call(env)
61
- span.set_error(["Error #{env[:status]}", env[:body]])
62
- end
60
+ span.set_error(["Error #{env[:status]}", env[:body]]) if options.fetch(:error_handler).call(env)
63
61
 
64
62
  span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, env[:status])
65
63
  end
@@ -20,21 +20,10 @@ module Datadog
20
20
  def patch
21
21
  require 'ddtrace/contrib/faraday/middleware'
22
22
 
23
- add_pin!
24
23
  register_middleware!
25
24
  add_default_middleware!
26
25
  end
27
26
 
28
- def add_pin!
29
- DeprecatedPin
30
- .new(
31
- get_option(:service_name),
32
- app: Ext::APP,
33
- app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
34
- tracer: -> { get_option(:tracer) }
35
- ).onto(::Faraday)
36
- end
37
-
38
27
  def register_middleware!
39
28
  ::Faraday::Middleware.register_middleware(ddtrace: Middleware)
40
29
  end
@@ -45,7 +34,7 @@ module Datadog
45
34
  ::Faraday.default_connection.use(:ddtrace)
46
35
 
47
36
  # Patch new connection instances (e.g. +Faraday.new+)
48
- ::Faraday::Connection.send(:prepend, Connection)
37
+ ::Faraday::Connection.prepend(Connection)
49
38
  else
50
39
  # Patch the default connection (e.g. +Faraday.get+)
51
40
  #
@@ -55,32 +44,7 @@ module Datadog
55
44
  ::Faraday.default_connection.builder.insert(idx, Middleware)
56
45
 
57
46
  # Patch new connection instances (e.g. +Faraday.new+)
58
- ::Faraday::RackBuilder.send(:prepend, RackBuilder)
59
- end
60
- end
61
-
62
- def get_option(option)
63
- Datadog.configuration[:faraday].get_option(option)
64
- end
65
-
66
- # Implementation of deprecated Pin, which raises warnings when accessed.
67
- # To be removed when support for Datadog::Pin with Faraday is removed.
68
- class DeprecatedPin < Datadog::Pin
69
- include Datadog::DeprecatedPin
70
-
71
- DEPRECATION_WARNING = %(
72
- Use of Datadog::Pin with Faraday is DEPRECATED.
73
- Upgrade to the configuration API using the migration guide here:
74
- https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
75
-
76
- def service_name=(service_name)
77
- Datadog.configuration[:faraday][:service_name] = service_name
78
- end
79
-
80
- def log_deprecation_warning(method_name)
81
- do_once(method_name) do
82
- Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
83
- end
47
+ ::Faraday::RackBuilder.prepend(RackBuilder)
84
48
  end
85
49
  end
86
50
  end
@@ -51,6 +51,7 @@ module Datadog
51
51
 
52
52
  def endpoint_run(name, start, finish, id, payload)
53
53
  return unless Thread.current[KEY_RUN]
54
+
54
55
  Thread.current[KEY_RUN] = false
55
56
 
56
57
  return unless enabled?
@@ -76,18 +77,14 @@ module Datadog
76
77
  end
77
78
 
78
79
  # Set analytics sample rate
79
- if analytics_enabled?
80
- Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
81
- end
80
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
82
81
 
83
82
  # Measure service stats
84
83
  Contrib::Analytics.set_measured(span)
85
84
 
86
85
  # catch thrown exceptions
87
86
 
88
- if exception_is_error?(payload[:exception_object])
89
- span.set_error(payload[:exception_object])
90
- end
87
+ span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
91
88
 
92
89
  # override the current span with this notification values
93
90
  span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
@@ -122,6 +119,7 @@ module Datadog
122
119
 
123
120
  def endpoint_render(name, start, finish, id, payload)
124
121
  return unless Thread.current[KEY_RENDER]
122
+
125
123
  Thread.current[KEY_RENDER] = false
126
124
 
127
125
  return unless enabled?
@@ -134,9 +132,7 @@ module Datadog
134
132
  # Measure service stats
135
133
  Contrib::Analytics.set_measured(span)
136
134
 
137
- if exception_is_error?(payload[:exception_object])
138
- span.set_error(payload[:exception_object])
139
- end
135
+ span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
140
136
  ensure
141
137
  span.start(start)
142
138
  span.finish(finish)
@@ -163,17 +159,13 @@ module Datadog
163
159
 
164
160
  begin
165
161
  # Set analytics sample rate
166
- if analytics_enabled?
167
- Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
168
- end
162
+ Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
169
163
 
170
164
  # Measure service stats
171
165
  Contrib::Analytics.set_measured(span)
172
166
 
173
167
  # catch thrown exceptions
174
- if exception_is_error?(payload[:exception_object])
175
- span.set_error(payload[:exception_object])
176
- end
168
+ span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
177
169
 
178
170
  span.set_tag(Ext::TAG_FILTER_TYPE, type.to_s)
179
171
  ensure
@@ -226,6 +218,7 @@ module Datadog
226
218
  return false unless exception
227
219
  return true unless matcher
228
220
  return true unless exception.respond_to?('status')
221
+
229
222
  matcher.include?(exception.status)
230
223
  end
231
224