ls-trace 0.1.2 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (337) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +419 -544
  3. data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
  4. data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
  5. data/.env +2 -0
  6. data/.gitignore +2 -0
  7. data/.gitlab-ci.yml +27 -0
  8. data/.rubocop.yml +8 -0
  9. data/.simplecov +38 -0
  10. data/Appraisals +299 -48
  11. data/CHANGELOG.md +3 -4
  12. data/LICENSE +4 -22
  13. data/LICENSE.Apache +200 -0
  14. data/LICENSE.BSD3 +24 -0
  15. data/NOTICE +4 -0
  16. data/README.md +4 -3
  17. data/Rakefile +561 -405
  18. data/ddtrace.gemspec +13 -4
  19. data/docker-compose.yml +96 -2
  20. data/docs/DevelopmentGuide.md +17 -1
  21. data/docs/GettingStarted.md +433 -138
  22. data/lib/ddtrace.rb +15 -0
  23. data/lib/ddtrace/analytics.rb +7 -0
  24. data/lib/ddtrace/buffer.rb +9 -9
  25. data/lib/ddtrace/chunker.rb +34 -0
  26. data/lib/ddtrace/configuration.rb +59 -5
  27. data/lib/ddtrace/configuration/base.rb +4 -2
  28. data/lib/ddtrace/configuration/components.rb +151 -0
  29. data/lib/ddtrace/configuration/option.rb +12 -3
  30. data/lib/ddtrace/configuration/option_definition.rb +1 -5
  31. data/lib/ddtrace/configuration/options.rb +6 -1
  32. data/lib/ddtrace/configuration/pin_setup.rb +3 -2
  33. data/lib/ddtrace/configuration/settings.rb +214 -40
  34. data/lib/ddtrace/context.rb +84 -63
  35. data/lib/ddtrace/context_flush.rb +51 -114
  36. data/lib/ddtrace/context_provider.rb +50 -0
  37. data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
  38. data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
  39. data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
  40. data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
  41. data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
  42. data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
  43. data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
  44. data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
  45. data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
  46. data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
  47. data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +6 -2
  48. data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +3 -15
  49. data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
  50. data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
  51. data/lib/ddtrace/contrib/action_pack/integration.rb +5 -3
  52. data/lib/ddtrace/contrib/action_pack/patcher.rb +3 -9
  53. data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
  54. data/lib/ddtrace/contrib/action_view/event.rb +39 -0
  55. data/lib/ddtrace/contrib/action_view/events.rb +30 -0
  56. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
  57. data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
  58. data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
  59. data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +9 -13
  60. data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +16 -16
  61. data/lib/ddtrace/contrib/action_view/integration.rb +5 -3
  62. data/lib/ddtrace/contrib/action_view/patcher.rb +19 -25
  63. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
  64. data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
  65. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
  66. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +6 -5
  67. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +3 -10
  68. data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
  69. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
  70. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +4 -1
  71. data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
  72. data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
  73. data/lib/ddtrace/contrib/active_record/integration.rb +5 -3
  74. data/lib/ddtrace/contrib/active_record/patcher.rb +3 -9
  75. data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
  76. data/lib/ddtrace/contrib/active_support/cache/patcher.rb +10 -24
  77. data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
  78. data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
  79. data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
  80. data/lib/ddtrace/contrib/active_support/integration.rb +5 -3
  81. data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
  82. data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
  83. data/lib/ddtrace/contrib/active_support/patcher.rb +3 -9
  84. data/lib/ddtrace/contrib/analytics.rb +5 -1
  85. data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
  86. data/lib/ddtrace/contrib/aws/ext.rb +5 -2
  87. data/lib/ddtrace/contrib/aws/integration.rb +8 -2
  88. data/lib/ddtrace/contrib/aws/patcher.rb +15 -15
  89. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
  90. data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
  91. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
  92. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +8 -2
  93. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +4 -11
  94. data/lib/ddtrace/contrib/configurable.rb +30 -13
  95. data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
  96. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
  97. data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
  98. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
  99. data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
  100. data/lib/ddtrace/contrib/dalli/integration.rb +5 -3
  101. data/lib/ddtrace/contrib/dalli/patcher.rb +6 -16
  102. data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
  103. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
  104. data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
  105. data/lib/ddtrace/contrib/delayed_job/integration.rb +8 -2
  106. data/lib/ddtrace/contrib/delayed_job/patcher.rb +4 -10
  107. data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
  108. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
  109. data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
  110. data/lib/ddtrace/contrib/elasticsearch/integration.rb +5 -3
  111. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +10 -17
  112. data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -2
  113. data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
  114. data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
  115. data/lib/ddtrace/contrib/ethon/integration.rb +14 -2
  116. data/lib/ddtrace/contrib/ethon/patcher.rb +7 -9
  117. data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
  118. data/lib/ddtrace/contrib/excon/ext.rb +5 -2
  119. data/lib/ddtrace/contrib/excon/integration.rb +13 -2
  120. data/lib/ddtrace/contrib/excon/middleware.rb +15 -12
  121. data/lib/ddtrace/contrib/excon/patcher.rb +4 -11
  122. data/lib/ddtrace/contrib/extensions.rb +39 -5
  123. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
  124. data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
  125. data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
  126. data/lib/ddtrace/contrib/faraday/integration.rb +10 -3
  127. data/lib/ddtrace/contrib/faraday/middleware.rb +24 -34
  128. data/lib/ddtrace/contrib/faraday/patcher.rb +26 -19
  129. data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
  130. data/lib/ddtrace/contrib/grape/endpoint.rb +14 -5
  131. data/lib/ddtrace/contrib/grape/ext.rb +5 -2
  132. data/lib/ddtrace/contrib/grape/integration.rb +6 -3
  133. data/lib/ddtrace/contrib/grape/patcher.rb +9 -15
  134. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
  135. data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
  136. data/lib/ddtrace/contrib/graphql/integration.rb +6 -5
  137. data/lib/ddtrace/contrib/graphql/patcher.rb +11 -14
  138. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
  139. data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
  140. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +2 -4
  141. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  142. data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
  143. data/lib/ddtrace/contrib/grpc/integration.rb +5 -3
  144. data/lib/ddtrace/contrib/grpc/patcher.rb +9 -19
  145. data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
  146. data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -2
  147. data/lib/ddtrace/contrib/http/ext.rb +5 -2
  148. data/lib/ddtrace/contrib/http/instrumentation.rb +89 -28
  149. data/lib/ddtrace/contrib/http/integration.rb +13 -0
  150. data/lib/ddtrace/contrib/http/patcher.rb +3 -9
  151. data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
  152. data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
  153. data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
  154. data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
  155. data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
  156. data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
  157. data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
  158. data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
  159. data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
  160. data/lib/ddtrace/contrib/kafka/event.rb +51 -0
  161. data/lib/ddtrace/contrib/kafka/events.rb +44 -0
  162. data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
  163. data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
  164. data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
  165. data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
  166. data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
  167. data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
  168. data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
  169. data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
  170. data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
  171. data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
  172. data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
  173. data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
  174. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
  175. data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
  176. data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
  177. data/lib/ddtrace/contrib/mongodb/integration.rb +5 -3
  178. data/lib/ddtrace/contrib/mongodb/patcher.rb +5 -11
  179. data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
  180. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
  181. data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
  182. data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
  183. data/lib/ddtrace/contrib/mysql2/integration.rb +8 -2
  184. data/lib/ddtrace/contrib/mysql2/patcher.rb +3 -9
  185. data/lib/ddtrace/contrib/patchable.rb +21 -4
  186. data/lib/ddtrace/contrib/patcher.rb +44 -10
  187. data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
  188. data/lib/ddtrace/contrib/presto/ext.rb +28 -0
  189. data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
  190. data/lib/ddtrace/contrib/presto/integration.rb +38 -0
  191. data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
  192. data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
  193. data/lib/ddtrace/contrib/que/ext.rb +30 -0
  194. data/lib/ddtrace/contrib/que/integration.rb +42 -0
  195. data/lib/ddtrace/contrib/que/patcher.rb +24 -0
  196. data/lib/ddtrace/contrib/que/tracer.rb +56 -0
  197. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
  198. data/lib/ddtrace/contrib/racecar/event.rb +4 -0
  199. data/lib/ddtrace/contrib/racecar/events.rb +2 -0
  200. data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
  201. data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
  202. data/lib/ddtrace/contrib/racecar/integration.rb +6 -3
  203. data/lib/ddtrace/contrib/racecar/patcher.rb +4 -10
  204. data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
  205. data/lib/ddtrace/contrib/rack/ext.rb +5 -2
  206. data/lib/ddtrace/contrib/rack/integration.rb +8 -2
  207. data/lib/ddtrace/contrib/rack/middlewares.rb +23 -14
  208. data/lib/ddtrace/contrib/rack/patcher.rb +57 -22
  209. data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
  210. data/lib/ddtrace/contrib/rails/configuration/settings.rb +23 -10
  211. data/lib/ddtrace/contrib/rails/ext.rb +7 -2
  212. data/lib/ddtrace/contrib/rails/framework.rb +59 -35
  213. data/lib/ddtrace/contrib/rails/integration.rb +12 -5
  214. data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
  215. data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
  216. data/lib/ddtrace/contrib/rails/patcher.rb +19 -8
  217. data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
  218. data/lib/ddtrace/contrib/rake/ext.rb +5 -2
  219. data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -2
  220. data/lib/ddtrace/contrib/rake/integration.rb +8 -2
  221. data/lib/ddtrace/contrib/rake/patcher.rb +4 -10
  222. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
  223. data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
  224. data/lib/ddtrace/contrib/redis/ext.rb +5 -2
  225. data/lib/ddtrace/contrib/redis/integration.rb +9 -3
  226. data/lib/ddtrace/contrib/redis/patcher.rb +20 -17
  227. data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
  228. data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
  229. data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
  230. data/lib/ddtrace/contrib/resque/ext.rb +5 -2
  231. data/lib/ddtrace/contrib/resque/integration.rb +12 -2
  232. data/lib/ddtrace/contrib/resque/patcher.rb +4 -10
  233. data/lib/ddtrace/contrib/resque/resque_job.rb +6 -2
  234. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
  235. data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
  236. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -2
  237. data/lib/ddtrace/contrib/rest_client/patcher.rb +5 -7
  238. data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
  239. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
  240. data/lib/ddtrace/contrib/sequel/database.rb +1 -1
  241. data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
  242. data/lib/ddtrace/contrib/sequel/integration.rb +8 -2
  243. data/lib/ddtrace/contrib/sequel/patcher.rb +4 -10
  244. data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
  245. data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
  246. data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
  247. data/lib/ddtrace/contrib/shoryuken/integration.rb +11 -7
  248. data/lib/ddtrace/contrib/shoryuken/patcher.rb +4 -10
  249. data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
  250. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +12 -2
  251. data/lib/ddtrace/contrib/sidekiq/ext.rb +8 -2
  252. data/lib/ddtrace/contrib/sidekiq/integration.rb +5 -3
  253. data/lib/ddtrace/contrib/sidekiq/patcher.rb +19 -18
  254. data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +12 -3
  255. data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
  256. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
  257. data/lib/ddtrace/contrib/sinatra/env.rb +25 -4
  258. data/lib/ddtrace/contrib/sinatra/ext.rb +11 -2
  259. data/lib/ddtrace/contrib/sinatra/integration.rb +5 -3
  260. data/lib/ddtrace/contrib/sinatra/patcher.rb +5 -10
  261. data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -34
  262. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +48 -15
  263. data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
  264. data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
  265. data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
  266. data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
  267. data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
  268. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
  269. data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
  270. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
  271. data/lib/ddtrace/contrib/sucker_punch/integration.rb +5 -3
  272. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +8 -14
  273. data/lib/ddtrace/correlation.rb +15 -5
  274. data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
  275. data/lib/ddtrace/diagnostics/health.rb +11 -8
  276. data/lib/ddtrace/encoding.rb +15 -11
  277. data/lib/ddtrace/environment.rb +21 -3
  278. data/lib/ddtrace/event.rb +52 -0
  279. data/lib/ddtrace/ext/analytics.rb +1 -0
  280. data/lib/ddtrace/ext/correlation.rb +11 -0
  281. data/lib/ddtrace/ext/diagnostics.rb +11 -0
  282. data/lib/ddtrace/ext/environment.rb +16 -0
  283. data/lib/ddtrace/ext/forced_tracing.rb +1 -1
  284. data/lib/ddtrace/ext/sampling.rb +16 -0
  285. data/lib/ddtrace/ext/transport.rb +1 -0
  286. data/lib/ddtrace/logger.rb +4 -3
  287. data/lib/ddtrace/metrics.rb +12 -5
  288. data/lib/ddtrace/monkey.rb +1 -1
  289. data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
  290. data/lib/ddtrace/opentelemetry/span.rb +33 -0
  291. data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
  292. data/lib/ddtrace/pin.rb +40 -16
  293. data/lib/ddtrace/pipeline.rb +1 -1
  294. data/lib/ddtrace/pipeline/span_filter.rb +15 -15
  295. data/lib/ddtrace/propagation/http_propagator.rb +2 -2
  296. data/lib/ddtrace/runtime/cgroup.rb +1 -1
  297. data/lib/ddtrace/runtime/container.rb +1 -1
  298. data/lib/ddtrace/runtime/metrics.rb +23 -6
  299. data/lib/ddtrace/sampler.rb +126 -29
  300. data/lib/ddtrace/sampling.rb +2 -0
  301. data/lib/ddtrace/sampling/matcher.rb +57 -0
  302. data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
  303. data/lib/ddtrace/sampling/rule.rb +61 -0
  304. data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
  305. data/lib/ddtrace/span.rb +54 -7
  306. data/lib/ddtrace/sync_writer.rb +13 -8
  307. data/lib/ddtrace/tracer.rb +72 -92
  308. data/lib/ddtrace/transport/http.rb +16 -1
  309. data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
  310. data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
  311. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
  312. data/lib/ddtrace/transport/http/api/instance.rb +4 -0
  313. data/lib/ddtrace/transport/http/builder.rb +3 -5
  314. data/lib/ddtrace/transport/http/client.rb +7 -64
  315. data/lib/ddtrace/transport/http/response.rb +1 -1
  316. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  317. data/lib/ddtrace/transport/http/traces.rb +10 -7
  318. data/lib/ddtrace/transport/io.rb +26 -0
  319. data/lib/ddtrace/transport/io/client.rb +76 -0
  320. data/lib/ddtrace/transport/io/response.rb +25 -0
  321. data/lib/ddtrace/transport/io/traces.rb +91 -0
  322. data/lib/ddtrace/transport/response.rb +11 -0
  323. data/lib/ddtrace/transport/statistics.rb +2 -2
  324. data/lib/ddtrace/transport/traces.rb +160 -10
  325. data/lib/ddtrace/utils.rb +1 -1
  326. data/lib/ddtrace/version.rb +2 -2
  327. data/lib/ddtrace/worker.rb +20 -0
  328. data/lib/ddtrace/workers.rb +5 -13
  329. data/lib/ddtrace/workers/async.rb +165 -0
  330. data/lib/ddtrace/workers/loop.rb +105 -0
  331. data/lib/ddtrace/workers/polling.rb +48 -0
  332. data/lib/ddtrace/workers/queue.rb +39 -0
  333. data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
  334. data/lib/ddtrace/workers/trace_writer.rb +202 -0
  335. data/lib/ddtrace/writer.rb +56 -38
  336. metadata +185 -25
  337. data/lib/ddtrace/provider.rb +0 -21
@@ -1,9 +1,8 @@
1
1
  # Changelog
2
2
 
3
+ ## v0.2.0
4
+ * Sync fork with dd-trace upstream v0.40.0
5
+
3
6
  ## v0.1.1
4
7
 
5
8
  * Bugfix for b3 propagation where some ids are propagated at 15 hex characters rather than the required 16 for a 64-bit id.
6
-
7
- ## v0.1.0
8
-
9
- * Initial release
data/LICENSE CHANGED
@@ -1,24 +1,6 @@
1
- Copyright (c) 2016, Datadog <info@datadoghq.com>
2
- All rights reserved.
1
+ ## License
3
2
 
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
- * Redistributions of source code must retain the above copyright
7
- notice, this list of conditions and the following disclaimer.
8
- * Redistributions in binary form must reproduce the above copyright
9
- notice, this list of conditions and the following disclaimer in the
10
- documentation and/or other materials provided with the distribution.
11
- * Neither the name of Datadog nor the
12
- names of its contributors may be used to endorse or promote products
13
- derived from this software without specific prior written permission.
3
+ This work is dual-licensed under Apache 2.0 or BSD3.
4
+ You may select, at your option, one of the above-listed licenses.
14
5
 
15
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
- DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
6
+ `SPDX-License-Identifier: Apache-2.0 OR BSD-3-Clause`
@@ -0,0 +1,200 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "{}"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2016 Datadog, Inc.
190
+ Licensed under the Apache License, Version 2.0 (the "License");
191
+ you may not use this file except in compliance with the License.
192
+ You may obtain a copy of the License at
193
+
194
+ http://www.apache.org/licenses/LICENSE-2.0
195
+
196
+ Unless required by applicable law or agreed to in writing, software
197
+ distributed under the License is distributed on an "AS IS" BASIS,
198
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
199
+ See the License for the specific language governing permissions and
200
+ limitations under the License.
@@ -0,0 +1,24 @@
1
+ Copyright (c) 2016, Datadog <info@datadoghq.com>
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions are met:
6
+ * Redistributions of source code must retain the above copyright
7
+ notice, this list of conditions and the following disclaimer.
8
+ * Redistributions in binary form must reproduce the above copyright
9
+ notice, this list of conditions and the following disclaimer in the
10
+ documentation and/or other materials provided with the distribution.
11
+ * Neither the name of Datadog nor the
12
+ names of its contributors may be used to endorse or promote products
13
+ derived from this software without specific prior written permission.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
+ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
+ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19
+ DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
+ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
+ ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/NOTICE ADDED
@@ -0,0 +1,4 @@
1
+ Datadog dd-trace-rb
2
+ Copyright 2016-Present Datadog, Inc.
3
+
4
+ This product includes software developed at Datadog, Inc. (https://www.datadoghq.com/).
data/README.md CHANGED
@@ -32,9 +32,9 @@ DD_TRACE_AGENT_PORT=<Satellite port>
32
32
 
33
33
  ##### Public satellites
34
34
 
35
- LightStep's public satellites require data to be transmitted using HTTPS. Since Datadog's Ruby client transmits data over plain HTTP, you will have use the [LightStep reverse proxy][ls-reverse-proxy]. The reverse proxy will accept data over plain HTTP and forward it to the public satellites using HTTPS. By default the reverse proxy will forward requests to `ingest.lightstep.com`, but can be configured by passing additional options. See below for details.
35
+ If you’re using Lightstep’s Public Satellites, you need to run a proxy that encrypts the trace payload before it reaches Lightstep. Point your tracer to the Proxy instead of the Satellites. The proxy can be run as a side-car to your application. Lightstep provides a docker image to make this simple.
36
36
 
37
- To start the reverse proxy with defaults run:
37
+ To start the proxy with defaults, run:
38
38
 
39
39
  ```
40
40
  docker run -p 8126:8126 lightstep/reverse-proxy:latest
@@ -46,7 +46,7 @@ You can see the complete list of options using the --help flag
46
46
  docker run lightstep/reverse-proxy:latest --help
47
47
  ```
48
48
 
49
- If you run the reverse proxy on `localhost` and port 8126 no additional configuration is needed. If you are running on a different host or port you'll need to set the following enviroment variables:
49
+ If you run the proxy on `localhost` and port 8126 no additional configuration is needed. If you are running on a different host or port you'll need to set the following enviroment variables:
50
50
 
51
51
  ```
52
52
  DD_AGENT_HOST=<proxy host>
@@ -87,6 +87,7 @@ ls-trace follows its own versioning scheme. The table below shows the correspond
87
87
  | ls-trace version | dd-trace-rb version |
88
88
  |------------------|---------------------|
89
89
  | v0.1.1 | v0.29.0 |
90
+ | v0.2.0 | v0.40.0 |
90
91
 
91
92
  ## Support
92
93
 
data/Rakefile CHANGED
@@ -11,13 +11,18 @@ Dir.glob('tasks/*.rake').each { |r| import r }
11
11
  desc 'Run RSpec'
12
12
  # rubocop:disable Metrics/BlockLength
13
13
  namespace :spec do
14
- task all: [:main,
15
- :rails, :railsredis, :railssidekiq, :railsactivejob,
14
+ task all: [:main, :benchmark,
15
+ :rails, :railsredis, :railsactivejob,
16
16
  :elasticsearch, :http, :redis, :sidekiq, :sinatra]
17
17
 
18
18
  RSpec::Core::RakeTask.new(:main) do |t, args|
19
19
  t.pattern = 'spec/**/*_spec.rb'
20
- t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,opentracer}/**/*_spec.rb'
20
+ t.exclude_pattern = 'spec/**/{contrib,benchmark,redis,opentracer,opentelemetry}/**/*_spec.rb'
21
+ t.rspec_opts = args.to_a.join(' ')
22
+ end
23
+
24
+ RSpec::Core::RakeTask.new(:benchmark) do |t, args|
25
+ t.pattern = 'spec/ddtrace/benchmark/**/*_spec.rb'
21
26
  t.rspec_opts = args.to_a.join(' ')
22
27
  end
23
28
 
@@ -26,9 +31,14 @@ namespace :spec do
26
31
  t.rspec_opts = args.to_a.join(' ')
27
32
  end
28
33
 
34
+ RSpec::Core::RakeTask.new(:opentelemetry) do |t, args|
35
+ t.pattern = 'spec/ddtrace/opentelemetry/**/*_spec.rb'
36
+ t.rspec_opts = args.to_a.join(' ')
37
+ end
38
+
29
39
  RSpec::Core::RakeTask.new(:rails) do |t, args|
30
40
  t.pattern = 'spec/ddtrace/contrib/rails/**/*_spec.rb'
31
- t.exclude_pattern = 'spec/ddtrace/contrib/rails/**/*{sidekiq,active_job,disable_env}*_spec.rb'
41
+ t.exclude_pattern = 'spec/ddtrace/contrib/rails/**/*{active_job,disable_env,redis_cache}*_spec.rb'
32
42
  t.rspec_opts = args.to_a.join(' ')
33
43
  end
34
44
 
@@ -37,11 +47,6 @@ namespace :spec do
37
47
  t.rspec_opts = args.to_a.join(' ')
38
48
  end
39
49
 
40
- RSpec::Core::RakeTask.new(:railssidekiq) do |t, args|
41
- t.pattern = 'spec/ddtrace/contrib/rails/**/*sidekiq*_spec.rb'
42
- t.rspec_opts = args.to_a.join(' ')
43
- end
44
-
45
50
  RSpec::Core::RakeTask.new(:railsactivejob) do |t, args|
46
51
  t.pattern = 'spec/ddtrace/contrib/rails/**/*active_job*_spec.rb'
47
52
  t.rspec_opts = args.to_a.join(' ')
@@ -53,12 +58,26 @@ namespace :spec do
53
58
  end
54
59
 
55
60
  RSpec::Core::RakeTask.new(:contrib) do |t, args|
56
- # rubocop:disable Metrics/LineLength
57
- t.pattern = 'spec/**/contrib/{analytics,configurable,extensions,integration,patchable,patcher,registerable,registry,configuration/*}_spec.rb'
61
+ contrib_paths = [
62
+ 'analytics',
63
+ 'configurable',
64
+ 'configuration/*',
65
+ 'configuration/resolvers/*',
66
+ 'extensions',
67
+ 'integration',
68
+ 'patchable',
69
+ 'patcher',
70
+ 'registerable',
71
+ 'registry',
72
+ 'registry/*'
73
+ ].join(',')
74
+
75
+ t.pattern = "spec/**/contrib/{#{contrib_paths}}_spec.rb"
58
76
  t.rspec_opts = args.to_a.join(' ')
59
77
  end
60
78
 
61
79
  [
80
+ :action_cable,
62
81
  :action_pack,
63
82
  :action_view,
64
83
  :active_model_serializers,
@@ -76,8 +95,12 @@ namespace :spec do
76
95
  :graphql,
77
96
  :grpc,
78
97
  :http,
98
+ :httprb,
99
+ :kafka,
79
100
  :mongodb,
80
101
  :mysql2,
102
+ :presto,
103
+ :que,
81
104
  :racecar,
82
105
  :rack,
83
106
  :rake,
@@ -85,10 +108,12 @@ namespace :spec do
85
108
  :resque,
86
109
  :rest_client,
87
110
  :sequel,
111
+ :shoryuken,
88
112
  :sidekiq,
89
113
  :sinatra,
114
+ :sneakers,
90
115
  :sucker_punch,
91
- :shoryuken
116
+ :suite
92
117
  ].each do |contrib|
93
118
  RSpec::Core::RakeTask.new(contrib) do |t, args|
94
119
  t.pattern = "spec/ddtrace/contrib/#{contrib}/**/*_spec.rb"
@@ -99,8 +124,8 @@ end
99
124
 
100
125
  namespace :test do
101
126
  task all: [:main,
102
- :rails, :railsredis, :railssidekiq, :railsactivejob,
103
- :sidekiq, :monkey]
127
+ :rails,
128
+ :monkey]
104
129
 
105
130
  Rake::TestTask.new(:main) do |t|
106
131
  t.libs << %w[test lib]
@@ -114,38 +139,10 @@ namespace :test do
114
139
 
115
140
  Rake::TestTask.new(:rails) do |t|
116
141
  t.libs << %w[test lib]
117
- t.test_files = FileList['test/contrib/rails/**/*_test.rb'].reject do |path|
118
- path.include?('redis') ||
119
- path.include?('sidekiq') ||
120
- path.include?('active_job') ||
121
- path.include?('disable_env')
122
- end
123
- end
124
-
125
- Rake::TestTask.new(:railsredis) do |t|
126
- t.libs << %w[test lib]
127
- t.test_files = FileList['test/contrib/rails/**/*redis*_test.rb']
128
- end
129
-
130
- Rake::TestTask.new(:railssidekiq) do |t|
131
- t.libs << %w[test lib]
132
- t.test_files = FileList['test/contrib/rails/**/*sidekiq*_test.rb']
133
- end
134
-
135
- Rake::TestTask.new(:railsactivejob) do |t|
136
- t.libs << %w[test lib]
137
- t.test_files = FileList['test/contrib/rails/**/*active_job*_test.rb']
138
- end
139
-
140
- Rake::TestTask.new(:railsdisableenv) do |t|
141
- t.libs << %w[test lib]
142
- t.test_files = FileList['test/contrib/rails/**/*disable_env*_test.rb']
142
+ t.test_files = FileList['test/contrib/rails/**/*_test.rb']
143
143
  end
144
144
 
145
145
  [
146
- :grape,
147
- :sidekiq,
148
- :sucker_punch
149
146
  ].each do |contrib|
150
147
  Rake::TestTask.new(contrib) do |t|
151
148
  t.libs << %w[test lib]
@@ -187,6 +184,21 @@ task :'release:docs' => :docs do
187
184
  sh "aws s3 cp --recursive doc/ s3://#{S3_BUCKET}/#{S3_DIR}/docs/"
188
185
  end
189
186
 
187
+ # Declare a command for execution.
188
+ # Jobs are parallelized if running in CI.
189
+ def declare(*args)
190
+ total_executors = ENV.key?('CIRCLE_NODE_TOTAL') ? ENV['CIRCLE_NODE_TOTAL'].to_i : nil
191
+ current_executor = ENV.key?('CIRCLE_NODE_INDEX') ? ENV['CIRCLE_NODE_INDEX'].to_i : nil
192
+
193
+ if total_executors && current_executor && total_executors > 1
194
+ @execution_count ||= 0
195
+ @execution_count += 1
196
+ sh(*args) if @execution_count % total_executors == current_executor
197
+ else
198
+ sh(*args)
199
+ end
200
+ end
201
+
190
202
  desc 'CI task; it runs all tests for current version of Ruby'
191
203
  task :ci do
192
204
  if Gem::Version.new(RUBY_VERSION) < Gem::Version.new(Datadog::VERSION::MINIMUM_RUBY_VERSION)
@@ -194,440 +206,584 @@ task :ci do
194
206
  elsif Gem::Version.new('2.0.0') <= Gem::Version.new(RUBY_VERSION) \
195
207
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.1.0')
196
208
  # Main library
197
- sh 'bundle exec rake test:main'
198
- sh 'bundle exec rake spec:main'
199
- sh 'bundle exec rake spec:contrib'
209
+ declare 'bundle exec rake test:main'
210
+ declare 'bundle exec rake spec:main'
211
+ declare 'bundle exec rake spec:contrib'
212
+ # Benchmarks
213
+ declare 'bundle exec rake spec:benchmark'
200
214
 
201
215
  if RUBY_PLATFORM != 'java'
202
216
  # Contrib minitests
203
- sh 'bundle exec appraisal contrib-old rake test:monkey'
204
- sh 'bundle exec appraisal contrib-old rake test:sidekiq'
205
- sh 'bundle exec appraisal contrib-old rake test:sucker_punch'
217
+ declare 'bundle exec appraisal contrib-old rake test:monkey'
206
218
  # Contrib specs
207
- sh 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
208
- sh 'bundle exec appraisal contrib-old rake spec:active_record'
209
- sh 'bundle exec appraisal contrib-old rake spec:active_support'
210
- sh 'bundle exec appraisal contrib-old rake spec:aws'
211
- sh 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
212
- sh 'bundle exec appraisal contrib-old rake spec:dalli'
213
- sh 'bundle exec appraisal contrib-old rake spec:delayed_job'
214
- sh 'bundle exec appraisal contrib-old rake spec:elasticsearch'
215
- sh 'bundle exec appraisal contrib-old rake spec:excon'
216
- sh 'bundle exec appraisal contrib-old rake spec:faraday'
217
- sh 'bundle exec appraisal contrib-old rake spec:http'
218
- sh 'bundle exec appraisal contrib-old rake spec:mongodb'
219
- sh 'bundle exec appraisal contrib-old rake spec:mysql2'
220
- sh 'bundle exec appraisal contrib-old rake spec:rack'
221
- sh 'bundle exec appraisal contrib-old rake spec:rake'
222
- sh 'bundle exec appraisal contrib-old rake spec:redis'
223
- sh 'bundle exec appraisal contrib-old rake spec:resque'
224
- sh 'bundle exec appraisal contrib-old rake spec:rest_client'
225
- sh 'bundle exec appraisal contrib-old rake spec:sequel'
226
- sh 'bundle exec appraisal contrib-old rake spec:sinatra'
227
- sh 'bundle exec appraisal contrib-old rake spec:ethon'
219
+ declare 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
220
+ declare 'bundle exec appraisal contrib-old rake spec:active_record'
221
+ declare 'bundle exec appraisal contrib-old rake spec:active_support'
222
+ declare 'bundle exec appraisal contrib-old rake spec:aws'
223
+ declare 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
224
+ declare 'bundle exec appraisal contrib-old rake spec:dalli'
225
+ declare 'bundle exec appraisal contrib-old rake spec:delayed_job'
226
+ declare 'bundle exec appraisal contrib-old rake spec:elasticsearch'
227
+ declare 'bundle exec appraisal contrib-old rake spec:ethon'
228
+ declare 'bundle exec appraisal contrib-old rake spec:excon'
229
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
230
+ declare 'bundle exec appraisal contrib-old rake spec:http'
231
+ declare 'bundle exec appraisal contrib-old rake spec:httprb'
232
+ declare 'bundle exec appraisal contrib-old rake spec:mongodb'
233
+ declare 'bundle exec appraisal contrib-old rake spec:mysql2'
234
+ declare 'bundle exec appraisal contrib-old rake spec:rack'
235
+ declare 'bundle exec appraisal contrib-old rake spec:rake'
236
+ declare 'bundle exec appraisal contrib-old rake spec:redis'
237
+ declare 'bundle exec appraisal contrib-old rake spec:resque'
238
+ declare 'bundle exec appraisal contrib-old rake spec:rest_client'
239
+ declare 'bundle exec appraisal contrib-old rake spec:sequel'
240
+ declare 'bundle exec appraisal contrib-old rake spec:sidekiq'
241
+ declare 'bundle exec appraisal contrib-old rake spec:sinatra'
242
+ declare 'bundle exec appraisal contrib-old rake spec:sucker_punch'
243
+ declare 'bundle exec appraisal contrib-old rake spec:suite'
228
244
  # Rails minitests
229
- sh 'bundle exec appraisal rails30-postgres rake test:rails'
230
- sh 'bundle exec appraisal rails30-postgres rake test:railsdisableenv'
231
- sh 'bundle exec appraisal rails32-mysql2 rake test:rails'
232
- sh 'bundle exec appraisal rails32-postgres rake test:rails'
233
- sh 'bundle exec appraisal rails32-postgres-redis rake test:railsredis'
234
- sh 'bundle exec appraisal rails32-postgres rake test:railsdisableenv'
235
- sh 'bundle exec appraisal rails30-postgres-sidekiq rake test:railssidekiq'
236
- sh 'bundle exec appraisal rails32-postgres-sidekiq rake test:railssidekiq'
245
+ declare 'bundle exec appraisal rails30-postgres rake test:rails'
246
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
247
+ declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
248
+ declare 'bundle exec appraisal rails32-postgres rake test:rails'
249
+ declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
250
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
237
251
  # Rails specs
238
- sh 'bundle exec appraisal rails30-postgres rake spec:rails'
239
- sh 'bundle exec appraisal rails32-mysql2 rake spec:rails'
240
- sh 'bundle exec appraisal rails32-postgres rake spec:rails'
252
+ declare 'bundle exec appraisal rails30-postgres rake spec:rails'
253
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
254
+ declare 'bundle exec appraisal rails32-postgres rake spec:rails'
241
255
  # Rails suite specs
242
- sh 'bundle exec appraisal rails32-postgres rake spec:action_pack'
243
- sh 'bundle exec appraisal rails32-postgres rake spec:action_view'
244
- sh 'bundle exec appraisal rails32-mysql2 rake spec:active_record'
245
- sh 'bundle exec appraisal rails32-postgres rake spec:active_support'
256
+ declare 'bundle exec appraisal rails32-postgres rake spec:action_pack'
257
+ declare 'bundle exec appraisal rails32-postgres rake spec:action_view'
258
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:active_record'
259
+ declare 'bundle exec appraisal rails32-postgres rake spec:active_support'
246
260
  end
247
261
  elsif Gem::Version.new('2.1.0') <= Gem::Version.new(RUBY_VERSION) \
248
262
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.2.0')
249
263
  # Main library
250
- sh 'bundle exec rake test:main'
251
- sh 'bundle exec rake spec:main'
252
- sh 'bundle exec rake spec:contrib'
253
- sh 'bundle exec rake spec:opentracer'
264
+ declare 'bundle exec rake test:main'
265
+ declare 'bundle exec rake spec:main'
266
+ declare 'bundle exec rake spec:contrib'
267
+ declare 'bundle exec rake spec:opentracer'
268
+ # Benchmarks
269
+ declare 'bundle exec rake spec:benchmark'
254
270
 
255
271
  if RUBY_PLATFORM != 'java'
256
272
  # Contrib minitests
257
- sh 'bundle exec appraisal contrib-old rake test:monkey'
258
- sh 'bundle exec appraisal contrib-old rake test:sidekiq'
259
- sh 'bundle exec appraisal contrib-old rake test:sucker_punch'
273
+ declare 'bundle exec appraisal contrib-old rake test:monkey'
260
274
  # Contrib specs
261
- sh 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
262
- sh 'bundle exec appraisal contrib-old rake spec:active_record'
263
- sh 'bundle exec appraisal contrib-old rake spec:active_support'
264
- sh 'bundle exec appraisal contrib-old rake spec:aws'
265
- sh 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
266
- sh 'bundle exec appraisal contrib-old rake spec:dalli'
267
- sh 'bundle exec appraisal contrib-old rake spec:delayed_job'
268
- sh 'bundle exec appraisal contrib-old rake spec:elasticsearch'
269
- sh 'bundle exec appraisal contrib-old rake spec:excon'
270
- sh 'bundle exec appraisal contrib-old rake spec:faraday'
271
- sh 'bundle exec appraisal contrib-old rake spec:http'
272
- sh 'bundle exec appraisal contrib-old rake spec:mongodb'
273
- sh 'bundle exec appraisal contrib-old rake spec:mysql2'
274
- sh 'bundle exec appraisal contrib-old rake spec:rack'
275
- sh 'bundle exec appraisal contrib-old rake spec:rake'
276
- sh 'bundle exec appraisal contrib-old rake spec:redis'
277
- sh 'bundle exec appraisal contrib-old rake spec:resque'
278
- sh 'bundle exec appraisal contrib-old rake spec:rest_client'
279
- sh 'bundle exec appraisal contrib-old rake spec:sequel'
280
- sh 'bundle exec appraisal contrib-old rake spec:sinatra'
281
- sh 'bundle exec appraisal contrib-old rake spec:ethon'
275
+ declare 'bundle exec appraisal contrib-old rake spec:active_model_serializers'
276
+ declare 'bundle exec appraisal contrib-old rake spec:active_record'
277
+ declare 'bundle exec appraisal contrib-old rake spec:active_support'
278
+ declare 'bundle exec appraisal contrib-old rake spec:aws'
279
+ declare 'bundle exec appraisal contrib-old rake spec:concurrent_ruby'
280
+ declare 'bundle exec appraisal contrib-old rake spec:dalli'
281
+ declare 'bundle exec appraisal contrib-old rake spec:delayed_job'
282
+ declare 'bundle exec appraisal contrib-old rake spec:elasticsearch'
283
+ declare 'bundle exec appraisal contrib-old rake spec:ethon'
284
+ declare 'bundle exec appraisal contrib-old rake spec:excon'
285
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
286
+ declare 'bundle exec appraisal contrib-old rake spec:http'
287
+ declare 'bundle exec appraisal contrib-old rake spec:httprb'
288
+ declare 'bundle exec appraisal contrib-old rake spec:mongodb'
289
+ declare 'bundle exec appraisal contrib-old rake spec:mysql2'
290
+ declare 'bundle exec appraisal contrib-old rake spec:presto'
291
+ declare 'bundle exec appraisal contrib-old rake spec:rack'
292
+ declare 'bundle exec appraisal contrib-old rake spec:rake'
293
+ declare 'bundle exec appraisal contrib-old rake spec:redis'
294
+ declare 'bundle exec appraisal contrib-old rake spec:resque'
295
+ declare 'bundle exec appraisal contrib-old rake spec:rest_client'
296
+ declare 'bundle exec appraisal contrib-old rake spec:sequel'
297
+ declare 'bundle exec appraisal contrib-old rake spec:sidekiq'
298
+ declare 'bundle exec appraisal contrib-old rake spec:sinatra'
299
+ declare 'bundle exec appraisal contrib-old rake spec:sucker_punch'
300
+ declare 'bundle exec appraisal contrib-old rake spec:suite'
282
301
  # Rails minitests
283
- sh 'bundle exec appraisal rails30-postgres rake test:rails'
284
- sh 'bundle exec appraisal rails30-postgres rake test:railsdisableenv'
285
- sh 'bundle exec appraisal rails32-mysql2 rake test:rails'
286
- sh 'bundle exec appraisal rails32-postgres rake test:rails'
287
- sh 'bundle exec appraisal rails32-postgres-redis rake test:railsredis'
288
- sh 'bundle exec appraisal rails32-postgres rake test:railsdisableenv'
289
- sh 'bundle exec appraisal rails4-mysql2 rake test:rails'
290
- sh 'bundle exec appraisal rails4-postgres rake test:rails'
291
- sh 'bundle exec appraisal rails4-postgres-redis rake test:railsredis'
292
- sh 'bundle exec appraisal rails4-postgres rake test:railsdisableenv'
293
- sh 'bundle exec appraisal rails30-postgres-sidekiq rake test:railssidekiq'
294
- sh 'bundle exec appraisal rails32-postgres-sidekiq rake test:railssidekiq'
302
+ declare 'bundle exec appraisal rails30-postgres rake test:rails'
303
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
304
+ declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
305
+ declare 'bundle exec appraisal rails32-postgres rake test:rails'
306
+ declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
307
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
308
+ declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
309
+ declare 'bundle exec appraisal rails4-postgres rake test:rails'
310
+ declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
311
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
295
312
  # Rails specs
296
- sh 'bundle exec appraisal rails30-postgres rake spec:rails'
297
- sh 'bundle exec appraisal rails32-mysql2 rake spec:rails'
298
- sh 'bundle exec appraisal rails32-postgres rake spec:rails'
299
- sh 'bundle exec appraisal rails4-mysql2 rake spec:rails'
300
- sh 'bundle exec appraisal rails4-postgres rake spec:rails'
313
+ declare 'bundle exec appraisal rails30-postgres rake spec:rails'
314
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
315
+ declare 'bundle exec appraisal rails32-postgres rake spec:rails'
316
+ declare 'bundle exec appraisal rails4-mysql2 rake spec:rails'
317
+ declare 'bundle exec appraisal rails4-postgres rake spec:rails'
301
318
  # Rails suite specs
302
- sh 'bundle exec appraisal rails32-postgres rake spec:action_pack'
303
- sh 'bundle exec appraisal rails32-postgres rake spec:action_view'
304
- sh 'bundle exec appraisal rails32-mysql2 rake spec:active_record'
305
- sh 'bundle exec appraisal rails32-postgres rake spec:active_support'
319
+ declare 'bundle exec appraisal rails32-postgres rake spec:action_pack'
320
+ declare 'bundle exec appraisal rails32-postgres rake spec:action_view'
321
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:active_record'
322
+ declare 'bundle exec appraisal rails32-postgres rake spec:active_support'
306
323
  end
307
324
  elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION)\
308
325
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3.0')
309
326
  # Main library
310
- sh 'bundle exec rake test:main'
311
- sh 'bundle exec rake spec:main'
312
- sh 'bundle exec rake spec:contrib'
313
- sh 'bundle exec rake spec:opentracer'
327
+ declare 'bundle exec rake test:main'
328
+ declare 'bundle exec rake spec:main'
329
+ declare 'bundle exec rake spec:contrib'
330
+ declare 'bundle exec rake spec:opentracer'
331
+ # Benchmarks
332
+ declare 'bundle exec rake spec:benchmark'
314
333
 
315
334
  if RUBY_PLATFORM != 'java'
316
335
  # Contrib minitests
317
- sh 'bundle exec appraisal contrib rake test:grape'
318
- sh 'bundle exec appraisal contrib rake test:sidekiq'
319
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
320
336
  # Contrib specs
321
- sh 'bundle exec appraisal contrib rake spec:action_pack'
322
- sh 'bundle exec appraisal contrib rake spec:action_view'
323
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
324
- sh 'bundle exec appraisal contrib rake spec:active_record'
325
- sh 'bundle exec appraisal contrib rake spec:active_support'
326
- sh 'bundle exec appraisal contrib rake spec:aws'
327
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
328
- sh 'bundle exec appraisal contrib rake spec:dalli'
329
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
330
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
331
- sh 'bundle exec appraisal contrib rake spec:excon'
332
- sh 'bundle exec appraisal contrib rake spec:faraday'
333
- sh 'bundle exec appraisal contrib rake spec:graphql'
334
- sh 'bundle exec appraisal contrib rake spec:grpc'
335
- sh 'bundle exec appraisal contrib rake spec:http'
336
- sh 'bundle exec appraisal contrib rake spec:mongodb'
337
- sh 'bundle exec appraisal contrib rake spec:mysql2'
338
- sh 'bundle exec appraisal contrib rake spec:racecar'
339
- sh 'bundle exec appraisal contrib rake spec:rack'
340
- sh 'bundle exec appraisal contrib rake spec:rake'
341
- sh 'bundle exec appraisal contrib rake spec:redis'
342
- sh 'bundle exec appraisal contrib rake spec:resque'
343
- sh 'bundle exec appraisal contrib rake spec:rest_client'
344
- sh 'bundle exec appraisal contrib rake spec:sequel'
345
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
346
- sh 'bundle exec appraisal contrib rake spec:sinatra'
347
- sh 'bundle exec appraisal contrib rake spec:ethon'
337
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
338
+ declare 'bundle exec appraisal contrib rake spec:action_view'
339
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
340
+ declare 'bundle exec appraisal contrib rake spec:active_record'
341
+ declare 'bundle exec appraisal contrib rake spec:active_support'
342
+ declare 'bundle exec appraisal contrib rake spec:aws'
343
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
344
+ declare 'bundle exec appraisal contrib rake spec:dalli'
345
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
346
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
347
+ declare 'bundle exec appraisal contrib rake spec:ethon'
348
+ declare 'bundle exec appraisal contrib rake spec:excon'
349
+ declare 'bundle exec appraisal contrib rake spec:faraday'
350
+ declare 'bundle exec appraisal contrib rake spec:grape'
351
+ declare 'bundle exec appraisal contrib rake spec:graphql'
352
+ declare 'bundle exec appraisal contrib rake spec:grpc'
353
+ declare 'bundle exec appraisal contrib rake spec:http'
354
+ declare 'bundle exec appraisal contrib rake spec:httprb'
355
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
356
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
357
+ declare 'bundle exec appraisal contrib rake spec:presto'
358
+ declare 'bundle exec appraisal contrib rake spec:que'
359
+ declare 'bundle exec appraisal contrib rake spec:racecar'
360
+ declare 'bundle exec appraisal contrib rake spec:rack'
361
+ declare 'bundle exec appraisal contrib rake spec:rake'
362
+ declare 'bundle exec appraisal contrib rake spec:redis'
363
+ declare 'bundle exec appraisal contrib rake spec:resque'
364
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
365
+ declare 'bundle exec appraisal contrib rake spec:sequel'
366
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
367
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
368
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
369
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
370
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
371
+ declare 'bundle exec appraisal contrib rake spec:suite'
348
372
  # Rails minitests
349
- sh 'bundle exec appraisal rails30-postgres rake test:rails'
350
- sh 'bundle exec appraisal rails30-postgres rake test:railsdisableenv'
351
- sh 'bundle exec appraisal rails32-mysql2 rake test:rails'
352
- sh 'bundle exec appraisal rails32-postgres rake test:rails'
353
- sh 'bundle exec appraisal rails32-postgres-redis rake test:railsredis'
354
- sh 'bundle exec appraisal rails32-postgres rake test:railsdisableenv'
355
- sh 'bundle exec appraisal rails4-mysql2 rake test:rails'
356
- sh 'bundle exec appraisal rails4-postgres rake test:rails'
357
- sh 'bundle exec appraisal rails4-postgres-redis rake test:railsredis'
358
- sh 'bundle exec appraisal rails4-postgres rake test:railsdisableenv'
359
- sh 'bundle exec appraisal rails4-postgres-sidekiq rake test:railssidekiq'
360
- sh 'bundle exec appraisal rails4-postgres-sidekiq rake test:railsactivejob'
361
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
362
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
363
- sh 'bundle exec appraisal rails5-postgres-redis rake test:railsredis'
364
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake test:railsredis'
365
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
366
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
367
- sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
373
+ declare 'bundle exec appraisal rails30-postgres rake test:rails'
374
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
375
+ declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
376
+ declare 'bundle exec appraisal rails32-postgres rake test:rails'
377
+ declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
378
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
379
+ declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
380
+ declare 'bundle exec appraisal rails4-postgres rake test:rails'
381
+ declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
382
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
383
+ declare 'bundle exec appraisal rails4-postgres-sidekiq rake spec:railsactivejob'
384
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
385
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
386
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
387
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
388
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
389
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
368
390
  # Rails specs
369
- sh 'bundle exec appraisal rails30-postgres rake spec:rails'
370
- sh 'bundle exec appraisal rails32-mysql2 rake spec:rails'
371
- sh 'bundle exec appraisal rails32-postgres rake spec:rails'
372
- sh 'bundle exec appraisal rails4-mysql2 rake spec:rails'
373
- sh 'bundle exec appraisal rails4-postgres rake spec:rails'
374
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
375
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
391
+ declare 'bundle exec appraisal rails30-postgres rake spec:rails'
392
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
393
+ declare 'bundle exec appraisal rails32-postgres rake spec:rails'
394
+ declare 'bundle exec appraisal rails4-mysql2 rake spec:rails'
395
+ declare 'bundle exec appraisal rails4-postgres rake spec:rails'
396
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
397
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
376
398
  end
377
399
  elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
378
400
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.4.0')
379
401
  # Main library
380
- sh 'bundle exec rake test:main'
381
- sh 'bundle exec rake spec:main'
382
- sh 'bundle exec rake spec:contrib'
383
- sh 'bundle exec rake spec:opentracer'
402
+ declare 'bundle exec rake test:main'
403
+ declare 'bundle exec rake spec:main'
404
+ declare 'bundle exec rake spec:contrib'
405
+ declare 'bundle exec rake spec:opentracer'
406
+ # Benchmarks
407
+ declare 'bundle exec rake spec:benchmark'
384
408
 
385
409
  if RUBY_PLATFORM != 'java'
386
410
  # Contrib minitests
387
- sh 'bundle exec appraisal contrib rake test:grape'
388
- sh 'bundle exec appraisal contrib rake test:sidekiq'
389
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
390
411
  # Contrib specs
391
- sh 'bundle exec appraisal contrib rake spec:action_pack'
392
- sh 'bundle exec appraisal contrib rake spec:action_view'
393
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
394
- sh 'bundle exec appraisal contrib rake spec:active_record'
395
- sh 'bundle exec appraisal contrib rake spec:active_support'
396
- sh 'bundle exec appraisal contrib rake spec:aws'
397
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
398
- sh 'bundle exec appraisal contrib rake spec:dalli'
399
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
400
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
401
- sh 'bundle exec appraisal contrib rake spec:excon'
402
- sh 'bundle exec appraisal contrib rake spec:faraday'
403
- sh 'bundle exec appraisal contrib rake spec:graphql'
404
- sh 'bundle exec appraisal contrib rake spec:grpc'
405
- sh 'bundle exec appraisal contrib rake spec:http'
406
- sh 'bundle exec appraisal contrib rake spec:mongodb'
407
- sh 'bundle exec appraisal contrib rake spec:mysql2'
408
- sh 'bundle exec appraisal contrib rake spec:racecar'
409
- sh 'bundle exec appraisal contrib rake spec:rack'
410
- sh 'bundle exec appraisal contrib rake spec:rake'
411
- sh 'bundle exec appraisal contrib rake spec:redis'
412
- sh 'bundle exec appraisal contrib rake spec:resque'
413
- sh 'bundle exec appraisal contrib rake spec:rest_client'
414
- sh 'bundle exec appraisal contrib rake spec:sequel'
415
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
416
- sh 'bundle exec appraisal contrib rake spec:sinatra'
417
- sh 'bundle exec appraisal contrib rake spec:ethon'
412
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
413
+ declare 'bundle exec appraisal contrib rake spec:action_view'
414
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
415
+ declare 'bundle exec appraisal contrib rake spec:active_record'
416
+ declare 'bundle exec appraisal contrib rake spec:active_support'
417
+ declare 'bundle exec appraisal contrib rake spec:aws'
418
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
419
+ declare 'bundle exec appraisal contrib rake spec:dalli'
420
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
421
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
422
+ declare 'bundle exec appraisal contrib rake spec:ethon'
423
+ declare 'bundle exec appraisal contrib rake spec:excon'
424
+ declare 'bundle exec appraisal contrib rake spec:faraday'
425
+ declare 'bundle exec appraisal contrib rake spec:grape'
426
+ declare 'bundle exec appraisal contrib rake spec:graphql'
427
+ declare 'bundle exec appraisal contrib rake spec:grpc'
428
+ declare 'bundle exec appraisal contrib rake spec:http'
429
+ declare 'bundle exec appraisal contrib rake spec:httprb'
430
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
431
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
432
+ declare 'bundle exec appraisal contrib rake spec:presto'
433
+ declare 'bundle exec appraisal contrib rake spec:que'
434
+ declare 'bundle exec appraisal contrib rake spec:racecar'
435
+ declare 'bundle exec appraisal contrib rake spec:rack'
436
+ declare 'bundle exec appraisal contrib rake spec:rake'
437
+ declare 'bundle exec appraisal contrib rake spec:redis'
438
+ declare 'bundle exec appraisal contrib rake spec:resque'
439
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
440
+ declare 'bundle exec appraisal contrib rake spec:sequel'
441
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
442
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
443
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
444
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
445
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
446
+ declare 'bundle exec appraisal contrib rake spec:suite'
447
+ # Contrib specs with old gem versions
448
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
418
449
  # Rails minitests
419
- sh 'bundle exec appraisal rails30-postgres rake test:rails'
420
- sh 'bundle exec appraisal rails30-postgres rake test:railsdisableenv'
421
- sh 'bundle exec appraisal rails32-mysql2 rake test:rails'
422
- sh 'bundle exec appraisal rails32-postgres rake test:rails'
423
- sh 'bundle exec appraisal rails32-postgres-redis rake test:railsredis'
424
- sh 'bundle exec appraisal rails32-postgres rake test:railsdisableenv'
425
- sh 'bundle exec appraisal rails4-mysql2 rake test:rails'
426
- sh 'bundle exec appraisal rails4-postgres rake test:rails'
427
- sh 'bundle exec appraisal rails4-postgres-redis rake test:railsredis'
428
- sh 'bundle exec appraisal rails4-postgres rake test:railsdisableenv'
429
- sh 'bundle exec appraisal rails4-postgres-sidekiq rake test:railssidekiq'
430
- sh 'bundle exec appraisal rails4-postgres-sidekiq rake test:railsactivejob'
431
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
432
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
433
- sh 'bundle exec appraisal rails5-postgres-redis rake test:railsredis'
434
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake test:railsredis'
435
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
436
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
437
- sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
450
+ declare 'bundle exec appraisal rails30-postgres rake test:rails'
451
+ declare 'bundle exec appraisal rails30-postgres rake spec:railsdisableenv'
452
+ declare 'bundle exec appraisal rails32-mysql2 rake test:rails'
453
+ declare 'bundle exec appraisal rails32-postgres rake test:rails'
454
+ declare 'bundle exec appraisal rails32-postgres-redis rake spec:railsredis'
455
+ declare 'bundle exec appraisal rails32-postgres rake spec:railsdisableenv'
456
+ declare 'bundle exec appraisal rails4-mysql2 rake test:rails'
457
+ declare 'bundle exec appraisal rails4-postgres rake test:rails'
458
+ declare 'bundle exec appraisal rails4-postgres-redis rake spec:railsredis'
459
+ declare 'bundle exec appraisal rails4-postgres rake spec:railsdisableenv'
460
+ declare 'bundle exec appraisal rails4-postgres-sidekiq rake spec:railsactivejob'
461
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
462
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
463
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
464
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
465
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
466
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
438
467
  # Rails specs
439
- sh 'bundle exec appraisal rails30-postgres rake spec:rails'
440
- sh 'bundle exec appraisal rails32-mysql2 rake spec:rails'
441
- sh 'bundle exec appraisal rails32-postgres rake spec:rails'
442
- sh 'bundle exec appraisal rails4-mysql2 rake spec:rails'
443
- sh 'bundle exec appraisal rails4-postgres rake spec:rails'
444
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
445
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
468
+ declare 'bundle exec appraisal rails30-postgres rake spec:rails'
469
+ declare 'bundle exec appraisal rails32-mysql2 rake spec:rails'
470
+ declare 'bundle exec appraisal rails32-postgres rake spec:rails'
471
+ declare 'bundle exec appraisal rails4-mysql2 rake spec:rails'
472
+ declare 'bundle exec appraisal rails4-postgres rake spec:rails'
473
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
474
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
446
475
  end
447
476
  elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION) \
448
477
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.5.0')
449
478
  # Main library
450
- sh 'bundle exec rake test:main'
451
- sh 'bundle exec rake spec:main'
452
- sh 'bundle exec rake spec:contrib'
453
- sh 'bundle exec rake spec:opentracer'
479
+ declare 'bundle exec rake test:main'
480
+ declare 'bundle exec rake spec:main'
481
+ declare 'bundle exec rake spec:contrib'
482
+ declare 'bundle exec rake spec:opentracer'
483
+ declare 'bundle exec rake spec:opentelemetry'
484
+ # Benchmarks
485
+ declare 'bundle exec rake spec:benchmark'
454
486
 
455
487
  if RUBY_PLATFORM != 'java'
456
488
  # Benchmarks
457
- sh 'bundle exec rake benchmark'
489
+ declare 'bundle exec rake benchmark'
458
490
  # Contrib minitests
459
- sh 'bundle exec appraisal contrib rake test:grape'
460
- sh 'bundle exec appraisal contrib rake test:sidekiq'
461
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
462
491
  # Contrib specs
463
- sh 'bundle exec appraisal contrib rake spec:action_pack'
464
- sh 'bundle exec appraisal contrib rake spec:action_view'
465
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
466
- sh 'bundle exec appraisal contrib rake spec:active_record'
467
- sh 'bundle exec appraisal contrib rake spec:active_support'
468
- sh 'bundle exec appraisal contrib rake spec:aws'
469
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
470
- sh 'bundle exec appraisal contrib rake spec:dalli'
471
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
472
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
473
- sh 'bundle exec appraisal contrib rake spec:excon'
474
- sh 'bundle exec appraisal contrib rake spec:faraday'
475
- sh 'bundle exec appraisal contrib rake spec:graphql'
476
- sh 'bundle exec appraisal contrib rake spec:grpc'
477
- sh 'bundle exec appraisal contrib rake spec:http'
478
- sh 'bundle exec appraisal contrib rake spec:mongodb'
479
- sh 'bundle exec appraisal contrib rake spec:mysql2'
480
- sh 'bundle exec appraisal contrib rake spec:racecar'
481
- sh 'bundle exec appraisal contrib rake spec:rack'
482
- sh 'bundle exec appraisal contrib rake spec:rake'
483
- sh 'bundle exec appraisal contrib rake spec:redis'
484
- sh 'bundle exec appraisal contrib rake spec:resque'
485
- sh 'bundle exec appraisal contrib rake spec:rest_client'
486
- sh 'bundle exec appraisal contrib rake spec:sequel'
487
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
488
- sh 'bundle exec appraisal contrib rake spec:sinatra'
489
- sh 'bundle exec appraisal contrib rake spec:ethon'
492
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
493
+ declare 'bundle exec appraisal contrib rake spec:action_view'
494
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
495
+ declare 'bundle exec appraisal contrib rake spec:active_record'
496
+ declare 'bundle exec appraisal contrib rake spec:active_support'
497
+ declare 'bundle exec appraisal contrib rake spec:aws'
498
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
499
+ declare 'bundle exec appraisal contrib rake spec:dalli'
500
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
501
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
502
+ declare 'bundle exec appraisal contrib rake spec:ethon'
503
+ declare 'bundle exec appraisal contrib rake spec:excon'
504
+ declare 'bundle exec appraisal contrib rake spec:faraday'
505
+ declare 'bundle exec appraisal contrib rake spec:grape'
506
+ declare 'bundle exec appraisal contrib rake spec:graphql'
507
+ declare 'bundle exec appraisal contrib rake spec:grpc'
508
+ declare 'bundle exec appraisal contrib rake spec:http'
509
+ declare 'bundle exec appraisal contrib rake spec:httprb'
510
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
511
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
512
+ declare 'bundle exec appraisal contrib rake spec:presto'
513
+ declare 'bundle exec appraisal contrib rake spec:que'
514
+ declare 'bundle exec appraisal contrib rake spec:racecar'
515
+ declare 'bundle exec appraisal contrib rake spec:rack'
516
+ declare 'bundle exec appraisal contrib rake spec:rake'
517
+ declare 'bundle exec appraisal contrib rake spec:redis'
518
+ declare 'bundle exec appraisal contrib rake spec:resque'
519
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
520
+ declare 'bundle exec appraisal contrib rake spec:sequel'
521
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
522
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
523
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
524
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
525
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
526
+ declare 'bundle exec appraisal contrib rake spec:suite'
527
+ # Contrib specs with old gem versions
528
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
490
529
  # Rails minitests
491
530
  # We only test Rails 5+ because older versions require Bundler < 2.0
492
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
493
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
494
- sh 'bundle exec appraisal rails5-postgres-redis rake test:railsredis'
495
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake test:railsredis'
496
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
497
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
498
- sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
531
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
532
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
533
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
534
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
535
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
536
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
499
537
  # Rails specs
500
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
501
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
538
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
539
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
502
540
  end
503
541
  elsif Gem::Version.new('2.5.0') <= Gem::Version.new(RUBY_VERSION) \
504
542
  && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.6.0')
505
543
  # Main library
506
- sh 'bundle exec rake test:main'
507
- sh 'bundle exec rake spec:main'
508
- sh 'bundle exec rake spec:contrib'
509
- sh 'bundle exec rake spec:opentracer'
544
+ declare 'bundle exec rake test:main'
545
+ declare 'bundle exec rake spec:main'
546
+ declare 'bundle exec rake spec:contrib'
547
+ declare 'bundle exec rake spec:opentracer'
548
+ declare 'bundle exec rake spec:opentelemetry'
549
+ # Benchmarks
550
+ declare 'bundle exec rake spec:benchmark' if RUBY_PLATFORM != 'java' # Too slow due to repeated JVM instantiation
551
+ declare 'bundle exec rake benchmark'
552
+ # Contrib minitests
553
+ # Contrib specs
554
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
555
+ declare 'bundle exec appraisal contrib rake spec:action_view'
556
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
557
+ declare 'bundle exec appraisal contrib rake spec:active_record'
558
+ declare 'bundle exec appraisal contrib rake spec:active_support'
559
+ declare 'bundle exec appraisal contrib rake spec:aws'
560
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
561
+ declare 'bundle exec appraisal contrib rake spec:dalli'
562
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
563
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
564
+ declare 'bundle exec appraisal contrib rake spec:ethon'
565
+ declare 'bundle exec appraisal contrib rake spec:excon'
566
+ declare 'bundle exec appraisal contrib rake spec:faraday'
567
+ declare 'bundle exec appraisal contrib rake spec:grape'
568
+ declare 'bundle exec appraisal contrib rake spec:graphql'
569
+ declare 'bundle exec appraisal contrib rake spec:grpc' if RUBY_PLATFORM != 'java' # protobuf not supported
570
+ declare 'bundle exec appraisal contrib rake spec:http'
571
+ declare 'bundle exec appraisal contrib rake spec:httprb'
572
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
573
+ declare 'bundle exec appraisal contrib rake spec:mysql2' if RUBY_PLATFORM != 'java' # built-in jdbc is used instead
574
+ declare 'bundle exec appraisal contrib rake spec:presto'
575
+ declare 'bundle exec appraisal contrib rake spec:que'
576
+ declare 'bundle exec appraisal contrib rake spec:racecar'
577
+ declare 'bundle exec appraisal contrib rake spec:rack'
578
+ declare 'bundle exec appraisal contrib rake spec:rake'
579
+ declare 'bundle exec appraisal contrib rake spec:redis'
580
+ declare 'bundle exec appraisal contrib rake spec:resque'
581
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
582
+ declare 'bundle exec appraisal contrib rake spec:sequel'
583
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
584
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
585
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
586
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
587
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
588
+ declare 'bundle exec appraisal contrib rake spec:suite'
589
+ # Contrib specs with old gem versions
590
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
591
+ # Rails minitests
592
+ # We only test Rails 5+ because older versions require Bundler < 2.0
593
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
594
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
595
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
596
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
597
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
598
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
599
+ declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
600
+ declare 'bundle exec appraisal rails6-postgres rake test:rails'
601
+ declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
602
+ declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
603
+ declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
604
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
605
+ # Rails specs
606
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
607
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
608
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
609
+ # declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
610
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
611
+ declare 'bundle exec appraisal rails6-postgres rake spec:rails'
612
+ elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION) \
613
+ && Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.7.0')
614
+ # Main library
615
+ declare 'bundle exec rake test:main'
616
+ declare 'bundle exec rake spec:main'
617
+ declare 'bundle exec rake spec:contrib'
618
+ declare 'bundle exec rake spec:opentracer'
619
+ declare 'bundle exec rake spec:opentelemetry'
620
+ # Benchmarks
621
+ declare 'bundle exec rake spec:benchmark'
510
622
 
511
623
  if RUBY_PLATFORM != 'java'
512
624
  # Benchmarks
513
- sh 'bundle exec rake benchmark'
625
+ declare 'bundle exec rake benchmark'
514
626
  # Contrib minitests
515
- sh 'bundle exec appraisal contrib rake test:grape'
516
- sh 'bundle exec appraisal contrib rake test:sidekiq'
517
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
518
627
  # Contrib specs
519
- sh 'bundle exec appraisal contrib rake spec:action_pack'
520
- sh 'bundle exec appraisal contrib rake spec:action_view'
521
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
522
- sh 'bundle exec appraisal contrib rake spec:active_record'
523
- sh 'bundle exec appraisal contrib rake spec:active_support'
524
- sh 'bundle exec appraisal contrib rake spec:aws'
525
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
526
- sh 'bundle exec appraisal contrib rake spec:dalli'
527
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
528
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
529
- sh 'bundle exec appraisal contrib rake spec:excon'
530
- sh 'bundle exec appraisal contrib rake spec:faraday'
531
- sh 'bundle exec appraisal contrib rake spec:graphql'
532
- sh 'bundle exec appraisal contrib rake spec:grpc'
533
- sh 'bundle exec appraisal contrib rake spec:http'
534
- sh 'bundle exec appraisal contrib rake spec:mongodb'
535
- sh 'bundle exec appraisal contrib rake spec:mysql2'
536
- sh 'bundle exec appraisal contrib rake spec:racecar'
537
- sh 'bundle exec appraisal contrib rake spec:rack'
538
- sh 'bundle exec appraisal contrib rake spec:rake'
539
- sh 'bundle exec appraisal contrib rake spec:redis'
540
- sh 'bundle exec appraisal contrib rake spec:resque'
541
- sh 'bundle exec appraisal contrib rake spec:rest_client'
542
- sh 'bundle exec appraisal contrib rake spec:sequel'
543
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
544
- sh 'bundle exec appraisal contrib rake spec:sinatra'
545
- sh 'bundle exec appraisal contrib rake spec:ethon'
628
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
629
+ declare 'bundle exec appraisal contrib rake spec:action_view'
630
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
631
+ declare 'bundle exec appraisal contrib rake spec:active_record'
632
+ declare 'bundle exec appraisal contrib rake spec:active_support'
633
+ declare 'bundle exec appraisal contrib rake spec:aws'
634
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
635
+ declare 'bundle exec appraisal contrib rake spec:dalli'
636
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
637
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
638
+ declare 'bundle exec appraisal contrib rake spec:ethon'
639
+ declare 'bundle exec appraisal contrib rake spec:excon'
640
+ declare 'bundle exec appraisal contrib rake spec:faraday'
641
+ declare 'bundle exec appraisal contrib rake spec:grape'
642
+ declare 'bundle exec appraisal contrib rake spec:graphql'
643
+ declare 'bundle exec appraisal contrib rake spec:grpc'
644
+ declare 'bundle exec appraisal contrib rake spec:http'
645
+ declare 'bundle exec appraisal contrib rake spec:httprb'
646
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
647
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
648
+ declare 'bundle exec appraisal contrib rake spec:presto'
649
+ declare 'bundle exec appraisal contrib rake spec:que'
650
+ declare 'bundle exec appraisal contrib rake spec:racecar'
651
+ declare 'bundle exec appraisal contrib rake spec:rack'
652
+ declare 'bundle exec appraisal contrib rake spec:rake'
653
+ declare 'bundle exec appraisal contrib rake spec:redis'
654
+ declare 'bundle exec appraisal contrib rake spec:resque'
655
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
656
+ declare 'bundle exec appraisal contrib rake spec:sequel'
657
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
658
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
659
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
660
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
661
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
662
+ declare 'bundle exec appraisal contrib rake spec:suite'
663
+ # Contrib specs with old gem versions
664
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
546
665
  # Rails minitests
547
666
  # We only test Rails 5+ because older versions require Bundler < 2.0
548
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
549
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
550
- sh 'bundle exec appraisal rails5-postgres-redis rake test:railsredis'
551
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake test:railsredis'
552
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
553
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
554
- sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
555
- sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
556
- sh 'bundle exec appraisal rails6-postgres rake test:rails'
557
- sh 'bundle exec appraisal rails6-postgres-redis rake test:railsredis'
558
- sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake test:railsredis'
559
- sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railssidekiq'
560
- sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railsactivejob'
561
- sh 'bundle exec appraisal rails6-postgres rake test:railsdisableenv'
667
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
668
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
669
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
670
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
671
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
672
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
673
+ declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
674
+ declare 'bundle exec appraisal rails6-postgres rake test:rails'
675
+ declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
676
+ declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
677
+ declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
678
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
562
679
  # Rails specs
563
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
564
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
565
- sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
566
- sh 'bundle exec appraisal rails6-postgres rake spec:rails'
680
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:action_cable'
681
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
682
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
683
+ # declare 'bundle exec appraisal rails6-mysql2 rake spec:action_cable' # TODO: Hangs CI jobs... fix and re-enable.
684
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
685
+ declare 'bundle exec appraisal rails6-postgres rake spec:rails'
567
686
  end
568
- elsif Gem::Version.new('2.6.0') <= Gem::Version.new(RUBY_VERSION)
687
+ elsif Gem::Version.new('2.7.0') <= Gem::Version.new(RUBY_VERSION)
569
688
  # Main library
570
- sh 'bundle exec rake test:main'
571
- sh 'bundle exec rake spec:main'
572
- sh 'bundle exec rake spec:contrib'
573
- sh 'bundle exec rake spec:opentracer'
689
+ declare 'bundle exec rake test:main'
690
+ declare 'bundle exec rake spec:main'
691
+ declare 'bundle exec rake spec:contrib'
692
+ declare 'bundle exec rake spec:opentracer'
693
+ declare 'bundle exec rake spec:opentelemetry'
694
+ # Benchmarks
695
+ declare 'bundle exec rake spec:benchmark'
574
696
 
575
697
  if RUBY_PLATFORM != 'java'
576
698
  # Benchmarks
577
- sh 'bundle exec rake benchmark'
699
+ declare 'bundle exec rake benchmark'
578
700
  # Contrib minitests
579
- sh 'bundle exec appraisal contrib rake test:grape'
580
- sh 'bundle exec appraisal contrib rake test:sidekiq'
581
- sh 'bundle exec appraisal contrib rake test:sucker_punch'
582
701
  # Contrib specs
583
- sh 'bundle exec appraisal contrib rake spec:action_pack'
584
- sh 'bundle exec appraisal contrib rake spec:action_view'
585
- sh 'bundle exec appraisal contrib rake spec:active_model_serializers'
586
- sh 'bundle exec appraisal contrib rake spec:active_record'
587
- sh 'bundle exec appraisal contrib rake spec:active_support'
588
- sh 'bundle exec appraisal contrib rake spec:aws'
589
- sh 'bundle exec appraisal contrib rake spec:concurrent_ruby'
590
- sh 'bundle exec appraisal contrib rake spec:dalli'
591
- sh 'bundle exec appraisal contrib rake spec:delayed_job'
592
- sh 'bundle exec appraisal contrib rake spec:elasticsearch'
593
- sh 'bundle exec appraisal contrib rake spec:excon'
594
- sh 'bundle exec appraisal contrib rake spec:faraday'
595
- sh 'bundle exec appraisal contrib rake spec:graphql'
596
- sh 'bundle exec appraisal contrib rake spec:grpc'
597
- sh 'bundle exec appraisal contrib rake spec:http'
598
- sh 'bundle exec appraisal contrib rake spec:mongodb'
599
- sh 'bundle exec appraisal contrib rake spec:mysql2'
600
- sh 'bundle exec appraisal contrib rake spec:racecar'
601
- sh 'bundle exec appraisal contrib rake spec:rack'
602
- sh 'bundle exec appraisal contrib rake spec:rake'
603
- sh 'bundle exec appraisal contrib rake spec:redis'
604
- sh 'bundle exec appraisal contrib rake spec:resque'
605
- sh 'bundle exec appraisal contrib rake spec:rest_client'
606
- sh 'bundle exec appraisal contrib rake spec:sequel'
607
- sh 'bundle exec appraisal contrib rake spec:shoryuken'
608
- sh 'bundle exec appraisal contrib rake spec:sinatra'
609
- sh 'bundle exec appraisal contrib rake spec:ethon'
702
+ declare 'bundle exec appraisal contrib rake spec:action_pack'
703
+ declare 'bundle exec appraisal contrib rake spec:action_view'
704
+ declare 'bundle exec appraisal contrib rake spec:active_model_serializers'
705
+ declare 'bundle exec appraisal contrib rake spec:active_record'
706
+ declare 'bundle exec appraisal contrib rake spec:active_support'
707
+ declare 'bundle exec appraisal contrib rake spec:aws'
708
+ declare 'bundle exec appraisal contrib rake spec:concurrent_ruby'
709
+ declare 'bundle exec appraisal contrib rake spec:dalli'
710
+ declare 'bundle exec appraisal contrib rake spec:delayed_job'
711
+ declare 'bundle exec appraisal contrib rake spec:elasticsearch'
712
+ declare 'bundle exec appraisal contrib rake spec:ethon'
713
+ declare 'bundle exec appraisal contrib rake spec:excon'
714
+ declare 'bundle exec appraisal contrib rake spec:faraday'
715
+ declare 'bundle exec appraisal contrib rake spec:grape'
716
+ declare 'bundle exec appraisal contrib rake spec:graphql'
717
+ declare 'bundle exec appraisal contrib rake spec:grpc'
718
+ declare 'bundle exec appraisal contrib rake spec:http'
719
+ declare 'bundle exec appraisal contrib rake spec:httprb'
720
+ declare 'bundle exec appraisal contrib rake spec:mongodb'
721
+ declare 'bundle exec appraisal contrib rake spec:mysql2'
722
+ declare 'bundle exec appraisal contrib rake spec:presto'
723
+ declare 'bundle exec appraisal contrib rake spec:que'
724
+ declare 'bundle exec appraisal contrib rake spec:racecar'
725
+ declare 'bundle exec appraisal contrib rake spec:rack'
726
+ declare 'bundle exec appraisal contrib rake spec:rake'
727
+ declare 'bundle exec appraisal contrib rake spec:redis'
728
+ declare 'bundle exec appraisal contrib rake spec:resque'
729
+ declare 'bundle exec appraisal contrib rake spec:rest_client'
730
+ declare 'bundle exec appraisal contrib rake spec:sequel'
731
+ declare 'bundle exec appraisal contrib rake spec:shoryuken'
732
+ declare 'bundle exec appraisal contrib rake spec:sidekiq'
733
+ declare 'bundle exec appraisal contrib rake spec:sinatra'
734
+ declare 'bundle exec appraisal contrib rake spec:sneakers'
735
+ declare 'bundle exec appraisal contrib rake spec:sucker_punch'
736
+ declare 'bundle exec appraisal contrib rake spec:suite'
737
+ # Contrib specs with old gem versions
738
+ declare 'bundle exec appraisal contrib-old rake spec:faraday'
610
739
  # Rails minitests
611
740
  # We only test Rails 5+ because older versions require Bundler < 2.0
612
- sh 'bundle exec appraisal rails5-mysql2 rake test:rails'
613
- sh 'bundle exec appraisal rails5-postgres rake test:rails'
614
- sh 'bundle exec appraisal rails5-postgres-redis rake test:railsredis'
615
- sh 'bundle exec appraisal rails5-postgres-redis-activesupport rake test:railsredis'
616
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railssidekiq'
617
- sh 'bundle exec appraisal rails5-postgres-sidekiq rake test:railsactivejob'
618
- sh 'bundle exec appraisal rails5-postgres rake test:railsdisableenv'
619
- sh 'bundle exec appraisal rails6-mysql2 rake test:rails'
620
- sh 'bundle exec appraisal rails6-postgres rake test:rails'
621
- sh 'bundle exec appraisal rails6-postgres-redis rake test:railsredis'
622
- sh 'bundle exec appraisal rails6-postgres-redis-activesupport rake test:railsredis'
623
- sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railssidekiq'
624
- sh 'bundle exec appraisal rails6-postgres-sidekiq rake test:railsactivejob'
625
- sh 'bundle exec appraisal rails6-postgres rake test:railsdisableenv'
741
+ declare 'bundle exec appraisal rails5-mysql2 rake test:rails'
742
+ declare 'bundle exec appraisal rails5-postgres rake test:rails'
743
+ declare 'bundle exec appraisal rails5-postgres-redis rake spec:railsredis'
744
+ declare 'bundle exec appraisal rails5-postgres-redis-activesupport rake spec:railsredis'
745
+ declare 'bundle exec appraisal rails5-postgres-sidekiq rake spec:railsactivejob'
746
+ declare 'bundle exec appraisal rails5-postgres rake spec:railsdisableenv'
747
+ declare 'bundle exec appraisal rails6-mysql2 rake test:rails'
748
+ declare 'bundle exec appraisal rails6-postgres rake test:rails'
749
+ declare 'bundle exec appraisal rails6-postgres-redis rake spec:railsredis'
750
+ declare 'bundle exec appraisal rails6-postgres-redis-activesupport rake spec:railsredis'
751
+ declare 'bundle exec appraisal rails6-postgres-sidekiq rake spec:railsactivejob'
752
+ declare 'bundle exec appraisal rails6-postgres rake spec:railsdisableenv'
626
753
  # Rails specs
627
- sh 'bundle exec appraisal rails5-mysql2 rake spec:rails'
628
- sh 'bundle exec appraisal rails5-postgres rake spec:rails'
629
- sh 'bundle exec appraisal rails6-mysql2 rake spec:rails'
630
- sh 'bundle exec appraisal rails6-postgres rake spec:rails'
754
+ declare 'bundle exec appraisal rails5-mysql2 rake spec:rails'
755
+ declare 'bundle exec appraisal rails5-postgres rake spec:rails'
756
+ declare 'bundle exec appraisal rails6-mysql2 rake spec:rails'
757
+ declare 'bundle exec appraisal rails6-postgres rake spec:rails'
758
+ end
759
+ end
760
+ end
761
+
762
+ namespace :coverage do
763
+ # Generates one global report for all tracer tests
764
+ task :report do
765
+ require 'simplecov'
766
+
767
+ resultset_files = Dir["#{ENV.fetch('COVERAGE_DIR', 'coverage')}/.resultset.json"] +
768
+ Dir["#{ENV.fetch('COVERAGE_DIR', 'coverage')}/versions/**/.resultset.json"]
769
+
770
+ SimpleCov.collate resultset_files do
771
+ coverage_dir "#{ENV.fetch('COVERAGE_DIR', 'coverage')}/report"
772
+ formatter SimpleCov::Formatter::HTMLFormatter
773
+ end
774
+ end
775
+
776
+ # Generates one report for each Ruby version
777
+ task :report_per_ruby_version do
778
+ require 'simplecov'
779
+
780
+ versions = Dir["#{ENV.fetch('COVERAGE_DIR', 'coverage')}/versions/*"].map { |f| File.basename(f) }
781
+ versions.map do |version|
782
+ puts "Generating report for: #{version}"
783
+ SimpleCov.collate Dir["#{ENV.fetch('COVERAGE_DIR', 'coverage')}/versions/#{version}/**/.resultset.json"] do
784
+ coverage_dir "#{ENV.fetch('COVERAGE_DIR', 'coverage')}/report/versions/#{version}"
785
+ formatter SimpleCov::Formatter::HTMLFormatter
786
+ end
631
787
  end
632
788
  end
633
789
  end