ddtrace 1.2.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +70 -0
  3. data/LICENSE-3rdparty.csv +2 -0
  4. data/README.md +1 -1
  5. data/ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c +1 -1
  6. data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +9 -2
  7. data/ext/ddtrace_profiling_native_extension/clock_id.h +20 -0
  8. data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +30 -1
  9. data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +10 -1
  10. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.c +152 -31
  11. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +6 -0
  12. data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +391 -0
  13. data/ext/ddtrace_profiling_native_extension/collectors_stack.c +11 -7
  14. data/ext/ddtrace_profiling_native_extension/extconf.rb +26 -19
  15. data/ext/ddtrace_profiling_native_extension/helpers.h +12 -0
  16. data/ext/ddtrace_profiling_native_extension/http_transport.c +40 -47
  17. data/ext/ddtrace_profiling_native_extension/{libddprof_helpers.h → libdatadog_helpers.h} +2 -1
  18. data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +36 -20
  19. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +39 -29
  20. data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +2 -5
  21. data/ext/ddtrace_profiling_native_extension/profiling.c +4 -3
  22. data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +25 -0
  23. data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +33 -1
  24. data/ext/ddtrace_profiling_native_extension/stack_recorder.c +294 -19
  25. data/ext/ddtrace_profiling_native_extension/stack_recorder.h +9 -8
  26. data/lib/datadog/appsec/autoload.rb +4 -2
  27. data/lib/datadog/appsec/configuration.rb +1 -1
  28. data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -2
  29. data/lib/datadog/appsec/contrib/configuration/settings.rb +1 -1
  30. data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +2 -2
  31. data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +6 -6
  32. data/lib/datadog/appsec/contrib/rack/integration.rb +5 -5
  33. data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
  34. data/lib/datadog/appsec/contrib/rack/reactive/request.rb +1 -1
  35. data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +1 -1
  36. data/lib/datadog/appsec/contrib/rack/reactive/response.rb +1 -1
  37. data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +2 -2
  38. data/lib/datadog/appsec/contrib/rack/request_middleware.rb +3 -3
  39. data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +2 -2
  40. data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +4 -4
  41. data/lib/datadog/appsec/contrib/rails/integration.rb +4 -4
  42. data/lib/datadog/appsec/contrib/rails/patcher.rb +16 -12
  43. data/lib/datadog/appsec/contrib/rails/reactive/action.rb +1 -1
  44. data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +2 -2
  45. data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +5 -5
  46. data/lib/datadog/appsec/contrib/sinatra/integration.rb +4 -4
  47. data/lib/datadog/appsec/contrib/sinatra/patcher.rb +16 -12
  48. data/lib/datadog/appsec/event.rb +3 -3
  49. data/lib/datadog/appsec/extensions.rb +1 -1
  50. data/lib/datadog/appsec/processor.rb +1 -1
  51. data/lib/datadog/appsec/reactive/engine.rb +2 -2
  52. data/lib/datadog/appsec/reactive/operation.rb +3 -3
  53. data/lib/datadog/appsec.rb +5 -5
  54. data/lib/datadog/ci/configuration/components.rb +1 -1
  55. data/lib/datadog/ci/configuration/settings.rb +1 -1
  56. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +2 -2
  57. data/lib/datadog/ci/contrib/cucumber/formatter.rb +5 -5
  58. data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +1 -1
  59. data/lib/datadog/ci/contrib/cucumber/integration.rb +4 -4
  60. data/lib/datadog/ci/contrib/cucumber/patcher.rb +2 -2
  61. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +2 -2
  62. data/lib/datadog/ci/contrib/rspec/example.rb +5 -5
  63. data/lib/datadog/ci/contrib/rspec/integration.rb +4 -4
  64. data/lib/datadog/ci/contrib/rspec/patcher.rb +2 -2
  65. data/lib/datadog/ci/ext/environment.rb +8 -6
  66. data/lib/datadog/ci/extensions.rb +4 -4
  67. data/lib/datadog/ci/flush.rb +2 -2
  68. data/lib/datadog/ci/test.rb +3 -3
  69. data/lib/datadog/ci.rb +6 -6
  70. data/lib/datadog/core/buffer/cruby.rb +1 -1
  71. data/lib/datadog/core/buffer/thread_safe.rb +1 -1
  72. data/lib/datadog/core/configuration/agent_settings_resolver.rb +6 -6
  73. data/lib/datadog/core/configuration/base.rb +11 -2
  74. data/lib/datadog/core/configuration/components.rb +51 -48
  75. data/lib/datadog/core/configuration/option_definition.rb +1 -1
  76. data/lib/datadog/core/configuration/option_definition_set.rb +1 -1
  77. data/lib/datadog/core/configuration/options.rb +3 -3
  78. data/lib/datadog/core/configuration/settings.rb +34 -7
  79. data/lib/datadog/core/configuration.rb +8 -5
  80. data/lib/datadog/core/diagnostics/environment_logger.rb +1 -1
  81. data/lib/datadog/core/diagnostics/health.rb +2 -2
  82. data/lib/datadog/core/environment/cgroup.rb +1 -1
  83. data/lib/datadog/core/environment/container.rb +1 -1
  84. data/lib/datadog/core/environment/ext.rb +1 -1
  85. data/lib/datadog/core/environment/identity.rb +2 -2
  86. data/lib/datadog/core/environment/platform.rb +1 -1
  87. data/lib/datadog/core/environment/socket.rb +1 -1
  88. data/lib/datadog/core/error.rb +1 -1
  89. data/lib/datadog/core/extensions.rb +1 -1
  90. data/lib/datadog/core/metrics/client.rb +8 -8
  91. data/lib/datadog/core/metrics/options.rb +3 -3
  92. data/lib/datadog/core/runtime/metrics.rb +6 -6
  93. data/lib/datadog/core/telemetry/client.rb +79 -0
  94. data/lib/datadog/core/telemetry/collector.rb +234 -0
  95. data/lib/datadog/core/telemetry/emitter.rb +48 -0
  96. data/lib/datadog/core/telemetry/event.rb +71 -0
  97. data/lib/datadog/core/telemetry/ext.rb +11 -0
  98. data/lib/datadog/core/telemetry/heartbeat.rb +37 -0
  99. data/lib/datadog/core/telemetry/http/adapters/net.rb +113 -0
  100. data/lib/datadog/core/telemetry/http/env.rb +20 -0
  101. data/lib/datadog/core/telemetry/http/ext.rb +20 -0
  102. data/lib/datadog/core/telemetry/http/response.rb +68 -0
  103. data/lib/datadog/core/telemetry/http/transport.rb +53 -0
  104. data/lib/datadog/core/telemetry/v1/app_event.rb +52 -0
  105. data/lib/datadog/core/telemetry/v1/application.rb +86 -0
  106. data/lib/datadog/core/telemetry/v1/configuration.rb +25 -0
  107. data/lib/datadog/core/telemetry/v1/dependency.rb +36 -0
  108. data/lib/datadog/core/telemetry/v1/host.rb +51 -0
  109. data/lib/datadog/core/telemetry/v1/integration.rb +58 -0
  110. data/lib/datadog/core/telemetry/v1/product.rb +28 -0
  111. data/lib/datadog/core/telemetry/v1/telemetry_request.rb +100 -0
  112. data/lib/datadog/core/utils/object_set.rb +1 -1
  113. data/lib/datadog/core/utils/sequence.rb +5 -0
  114. data/lib/datadog/core/utils/string_table.rb +1 -1
  115. data/lib/datadog/core/utils/time.rb +3 -3
  116. data/lib/datadog/core/utils.rb +2 -2
  117. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +2 -2
  118. data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +3 -3
  119. data/lib/datadog/core/workers/async.rb +1 -1
  120. data/lib/datadog/core/workers/polling.rb +2 -2
  121. data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
  122. data/lib/datadog/core.rb +50 -50
  123. data/lib/datadog/kit.rb +1 -1
  124. data/lib/datadog/opentracer/distributed_headers.rb +2 -2
  125. data/lib/datadog/opentracer/rack_propagator.rb +11 -7
  126. data/lib/datadog/opentracer/span.rb +1 -1
  127. data/lib/datadog/opentracer/text_map_propagator.rb +9 -6
  128. data/lib/datadog/opentracer/thread_local_scope_manager.rb +1 -1
  129. data/lib/datadog/opentracer/tracer.rb +19 -15
  130. data/lib/datadog/opentracer.rb +16 -16
  131. data/lib/datadog/profiling/buffer.rb +3 -3
  132. data/lib/datadog/profiling/collectors/cpu_and_wall_time.rb +4 -19
  133. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +74 -0
  134. data/lib/datadog/profiling/collectors/old_stack.rb +7 -7
  135. data/lib/datadog/profiling/collectors/stack.rb +3 -8
  136. data/lib/datadog/profiling/encoding/profile.rb +1 -1
  137. data/lib/datadog/profiling/events/stack.rb +1 -1
  138. data/lib/datadog/profiling/exporter.rb +17 -9
  139. data/lib/datadog/profiling/ext/forking.rb +36 -37
  140. data/lib/datadog/profiling/ext.rb +1 -0
  141. data/lib/datadog/profiling/flush.rb +0 -3
  142. data/lib/datadog/profiling/http_transport.rb +4 -3
  143. data/lib/datadog/profiling/old_recorder.rb +2 -7
  144. data/lib/datadog/profiling/pprof/builder.rb +4 -4
  145. data/lib/datadog/profiling/pprof/converter.rb +1 -1
  146. data/lib/datadog/profiling/pprof/message_set.rb +1 -1
  147. data/lib/datadog/profiling/pprof/stack_sample.rb +4 -4
  148. data/lib/datadog/profiling/pprof/string_table.rb +1 -1
  149. data/lib/datadog/profiling/pprof/template.rb +5 -5
  150. data/lib/datadog/profiling/preload.rb +1 -1
  151. data/lib/datadog/profiling/scheduler.rb +5 -4
  152. data/lib/datadog/profiling/stack_recorder.rb +14 -4
  153. data/lib/datadog/profiling/tag_builder.rb +6 -1
  154. data/lib/datadog/profiling/tasks/setup.rb +2 -2
  155. data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +2 -2
  156. data/lib/datadog/profiling/trace_identifiers/helper.rb +1 -1
  157. data/lib/datadog/profiling/transport/http/api/endpoint.rb +5 -5
  158. data/lib/datadog/profiling/transport/http/api/instance.rb +2 -2
  159. data/lib/datadog/profiling/transport/http/api/spec.rb +1 -1
  160. data/lib/datadog/profiling/transport/http/api.rb +5 -5
  161. data/lib/datadog/profiling/transport/http/builder.rb +3 -3
  162. data/lib/datadog/profiling/transport/http/client.rb +2 -2
  163. data/lib/datadog/profiling/transport/http/response.rb +1 -1
  164. data/lib/datadog/profiling/transport/http.rb +21 -15
  165. data/lib/datadog/profiling.rb +21 -20
  166. data/lib/datadog/tracing/analytics.rb +1 -1
  167. data/lib/datadog/tracing/buffer.rb +5 -5
  168. data/lib/datadog/tracing/context.rb +1 -1
  169. data/lib/datadog/tracing/context_provider.rb +2 -2
  170. data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
  171. data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -5
  172. data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +4 -4
  173. data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +3 -3
  174. data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +4 -4
  175. data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
  176. data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +3 -4
  177. data/lib/datadog/tracing/contrib/action_cable/integration.rb +4 -4
  178. data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
  179. data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
  180. data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
  181. data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +3 -3
  182. data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +3 -3
  183. data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
  184. data/lib/datadog/tracing/contrib/action_mailer/integration.rb +4 -4
  185. data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
  186. data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +6 -6
  187. data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
  188. data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +2 -2
  189. data/lib/datadog/tracing/contrib/action_pack/integration.rb +4 -4
  190. data/lib/datadog/tracing/contrib/action_pack/patcher.rb +2 -2
  191. data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
  192. data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +2 -2
  193. data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
  194. data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +5 -5
  195. data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +5 -5
  196. data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
  197. data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +2 -2
  198. data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +2 -2
  199. data/lib/datadog/tracing/contrib/action_view/integration.rb +4 -4
  200. data/lib/datadog/tracing/contrib/action_view/patcher.rb +7 -7
  201. data/lib/datadog/tracing/contrib/action_view/utils.rb +1 -1
  202. data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +3 -3
  203. data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
  204. data/lib/datadog/tracing/contrib/active_job/events/discard.rb +4 -4
  205. data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +4 -4
  206. data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +4 -4
  207. data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +4 -4
  208. data/lib/datadog/tracing/contrib/active_job/events/perform.rb +4 -4
  209. data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +4 -4
  210. data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
  211. data/lib/datadog/tracing/contrib/active_job/integration.rb +4 -4
  212. data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -2
  213. data/lib/datadog/tracing/contrib/active_job/patcher.rb +4 -4
  214. data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
  215. data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -5
  216. data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +3 -3
  217. data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +2 -2
  218. data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
  219. data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +3 -3
  220. data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -4
  221. data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +2 -2
  222. data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +3 -3
  223. data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
  224. data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +4 -4
  225. data/lib/datadog/tracing/contrib/active_record/events/sql.rb +6 -6
  226. data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
  227. data/lib/datadog/tracing/contrib/active_record/integration.rb +6 -6
  228. data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
  229. data/lib/datadog/tracing/contrib/active_record/utils.rb +2 -2
  230. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +19 -9
  231. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +2 -2
  232. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +1 -1
  233. data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +2 -2
  234. data/lib/datadog/tracing/contrib/active_support/integration.rb +5 -5
  235. data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
  236. data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +1 -1
  237. data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
  238. data/lib/datadog/tracing/contrib/analytics.rb +1 -1
  239. data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
  240. data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +2 -2
  241. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +3 -4
  242. data/lib/datadog/tracing/contrib/aws/integration.rb +3 -3
  243. data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
  244. data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
  245. data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
  246. data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +3 -3
  247. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +2 -2
  248. data/lib/datadog/tracing/contrib/configurable.rb +2 -2
  249. data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
  250. data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
  251. data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
  252. data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +4 -5
  253. data/lib/datadog/tracing/contrib/dalli/integration.rb +3 -3
  254. data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
  255. data/lib/datadog/tracing/contrib/dalli/quantize.rb +1 -1
  256. data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +3 -3
  257. data/lib/datadog/tracing/contrib/delayed_job/ext.rb +2 -0
  258. data/lib/datadog/tracing/contrib/delayed_job/integration.rb +3 -3
  259. data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +8 -2
  260. data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +3 -4
  261. data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +32 -0
  262. data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
  263. data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +3 -3
  264. data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +6 -7
  265. data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +1 -1
  266. data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
  267. data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +4 -5
  268. data/lib/datadog/tracing/contrib/ethon/integration.rb +4 -4
  269. data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -4
  270. data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
  271. data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +2 -2
  272. data/lib/datadog/tracing/contrib/excon/integration.rb +4 -4
  273. data/lib/datadog/tracing/contrib/excon/middleware.rb +6 -7
  274. data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
  275. data/lib/datadog/tracing/contrib/extensions.rb +5 -3
  276. data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +2 -2
  277. data/lib/datadog/tracing/contrib/faraday/integration.rb +4 -4
  278. data/lib/datadog/tracing/contrib/faraday/middleware.rb +5 -6
  279. data/lib/datadog/tracing/contrib/faraday/patcher.rb +5 -5
  280. data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +3 -3
  281. data/lib/datadog/tracing/contrib/grape/endpoint.rb +4 -5
  282. data/lib/datadog/tracing/contrib/grape/integration.rb +3 -3
  283. data/lib/datadog/tracing/contrib/grape/patcher.rb +4 -4
  284. data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +2 -2
  285. data/lib/datadog/tracing/contrib/graphql/integration.rb +3 -3
  286. data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -3
  287. data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +3 -3
  288. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +13 -4
  289. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +6 -6
  290. data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +3 -4
  291. data/lib/datadog/tracing/contrib/grpc/ext.rb +1 -0
  292. data/lib/datadog/tracing/contrib/grpc/integration.rb +3 -3
  293. data/lib/datadog/tracing/contrib/grpc/patcher.rb +5 -5
  294. data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -2
  295. data/lib/datadog/tracing/contrib/http/configuration/settings.rb +2 -2
  296. data/lib/datadog/tracing/contrib/http/instrumentation.rb +3 -4
  297. data/lib/datadog/tracing/contrib/http/integration.rb +6 -6
  298. data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
  299. data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +2 -2
  300. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +4 -5
  301. data/lib/datadog/tracing/contrib/httpclient/integration.rb +4 -4
  302. data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
  303. data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +2 -2
  304. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -5
  305. data/lib/datadog/tracing/contrib/httprb/integration.rb +4 -4
  306. data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
  307. data/lib/datadog/tracing/contrib/integration.rb +3 -3
  308. data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
  309. data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
  310. data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +2 -2
  311. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +3 -3
  312. data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +3 -3
  313. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +4 -4
  314. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +4 -4
  315. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +4 -4
  316. data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +4 -4
  317. data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +2 -2
  318. data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +2 -2
  319. data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
  320. data/lib/datadog/tracing/contrib/kafka/integration.rb +3 -3
  321. data/lib/datadog/tracing/contrib/kafka/patcher.rb +3 -3
  322. data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
  323. data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -2
  324. data/lib/datadog/tracing/contrib/lograge/integration.rb +3 -3
  325. data/lib/datadog/tracing/contrib/lograge/patcher.rb +2 -2
  326. data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
  327. data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
  328. data/lib/datadog/tracing/contrib/mongodb/integration.rb +4 -4
  329. data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
  330. data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
  331. data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +4 -4
  332. data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +2 -2
  333. data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +3 -4
  334. data/lib/datadog/tracing/contrib/mysql2/integration.rb +3 -3
  335. data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
  336. data/lib/datadog/tracing/contrib/patcher.rb +13 -2
  337. data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +2 -2
  338. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +3 -4
  339. data/lib/datadog/tracing/contrib/pg/integration.rb +3 -3
  340. data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -2
  341. data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
  342. data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -3
  343. data/lib/datadog/tracing/contrib/presto/integration.rb +3 -3
  344. data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
  345. data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +2 -2
  346. data/lib/datadog/tracing/contrib/qless/integration.rb +3 -3
  347. data/lib/datadog/tracing/contrib/qless/patcher.rb +1 -2
  348. data/lib/datadog/tracing/contrib/qless/qless_job.rb +2 -3
  349. data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -2
  350. data/lib/datadog/tracing/contrib/que/configuration/settings.rb +3 -3
  351. data/lib/datadog/tracing/contrib/que/integration.rb +4 -4
  352. data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
  353. data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
  354. data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +2 -2
  355. data/lib/datadog/tracing/contrib/racecar/event.rb +4 -5
  356. data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
  357. data/lib/datadog/tracing/contrib/racecar/events/consume.rb +2 -2
  358. data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
  359. data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
  360. data/lib/datadog/tracing/contrib/racecar/integration.rb +3 -3
  361. data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
  362. data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
  363. data/lib/datadog/tracing/contrib/rack/integration.rb +4 -4
  364. data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -20
  365. data/lib/datadog/tracing/contrib/rack/patcher.rb +12 -2
  366. data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
  367. data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
  368. data/lib/datadog/tracing/contrib/rails/framework.rb +16 -21
  369. data/lib/datadog/tracing/contrib/rails/integration.rb +4 -4
  370. data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -2
  371. data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -2
  372. data/lib/datadog/tracing/contrib/rails/patcher.rb +7 -8
  373. data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
  374. data/lib/datadog/tracing/contrib/rails/utils.rb +1 -1
  375. data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +17 -2
  376. data/lib/datadog/tracing/contrib/rake/instrumentation.rb +12 -7
  377. data/lib/datadog/tracing/contrib/rake/integration.rb +3 -3
  378. data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -4
  379. data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +1 -1
  380. data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
  381. data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -7
  382. data/lib/datadog/tracing/contrib/redis/integration.rb +3 -3
  383. data/lib/datadog/tracing/contrib/redis/patcher.rb +6 -6
  384. data/lib/datadog/tracing/contrib/redis/tags.rb +3 -4
  385. data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +3 -3
  386. data/lib/datadog/tracing/contrib/resque/integration.rb +3 -3
  387. data/lib/datadog/tracing/contrib/resque/patcher.rb +2 -2
  388. data/lib/datadog/tracing/contrib/resque/resque_job.rb +3 -4
  389. data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +2 -2
  390. data/lib/datadog/tracing/contrib/rest_client/integration.rb +3 -3
  391. data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
  392. data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +4 -5
  393. data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
  394. data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -2
  395. data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +3 -3
  396. data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
  397. data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
  398. data/lib/datadog/tracing/contrib/sequel/database.rb +4 -5
  399. data/lib/datadog/tracing/contrib/sequel/dataset.rb +4 -5
  400. data/lib/datadog/tracing/contrib/sequel/integration.rb +3 -3
  401. data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
  402. data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -2
  403. data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +3 -3
  404. data/lib/datadog/tracing/contrib/shoryuken/integration.rb +4 -4
  405. data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
  406. data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +1 -1
  407. data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +4 -5
  408. data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +3 -3
  409. data/lib/datadog/tracing/contrib/sidekiq/ext.rb +6 -0
  410. data/lib/datadog/tracing/contrib/sidekiq/integration.rb +3 -3
  411. data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +14 -7
  412. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +19 -1
  413. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/{scheduled_push.rb → redis_info.rb} +5 -6
  414. data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +53 -0
  415. data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +5 -6
  416. data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +2 -2
  417. data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
  418. data/lib/datadog/tracing/contrib/sinatra/env.rb +2 -2
  419. data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
  420. data/lib/datadog/tracing/contrib/sinatra/headers.rb +1 -1
  421. data/lib/datadog/tracing/contrib/sinatra/integration.rb +3 -3
  422. data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
  423. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +7 -8
  424. data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +6 -7
  425. data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +2 -2
  426. data/lib/datadog/tracing/contrib/sneakers/integration.rb +4 -4
  427. data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
  428. data/lib/datadog/tracing/contrib/sneakers/tracer.rb +2 -3
  429. data/lib/datadog/tracing/contrib/status_code_matcher.rb +2 -2
  430. data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
  431. data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +3 -4
  432. data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +3 -3
  433. data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -5
  434. data/lib/datadog/tracing/contrib.rb +48 -48
  435. data/lib/datadog/tracing/correlation.rb +1 -1
  436. data/lib/datadog/tracing/distributed/headers/b3.rb +4 -4
  437. data/lib/datadog/tracing/distributed/headers/b3_single.rb +4 -4
  438. data/lib/datadog/tracing/distributed/headers/datadog.rb +3 -3
  439. data/lib/datadog/tracing/distributed/headers/parser.rb +1 -1
  440. data/lib/datadog/tracing/distributed/helpers.rb +2 -2
  441. data/lib/datadog/tracing/distributed/metadata/b3.rb +4 -4
  442. data/lib/datadog/tracing/distributed/metadata/b3_single.rb +4 -4
  443. data/lib/datadog/tracing/distributed/metadata/datadog.rb +2 -2
  444. data/lib/datadog/tracing/distributed/metadata/parser.rb +1 -1
  445. data/lib/datadog/tracing/event.rb +1 -1
  446. data/lib/datadog/tracing/metadata/analytics.rb +2 -2
  447. data/lib/datadog/tracing/metadata/errors.rb +2 -2
  448. data/lib/datadog/tracing/metadata/tagging.rb +2 -2
  449. data/lib/datadog/tracing/metadata.rb +3 -3
  450. data/lib/datadog/tracing/pipeline/span_filter.rb +10 -6
  451. data/lib/datadog/tracing/pipeline.rb +3 -3
  452. data/lib/datadog/tracing/propagation/grpc.rb +6 -6
  453. data/lib/datadog/tracing/propagation/http.rb +8 -8
  454. data/lib/datadog/tracing/runtime/metrics.rb +1 -1
  455. data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
  456. data/lib/datadog/tracing/sampling/priority_sampler.rb +5 -5
  457. data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +2 -2
  458. data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +3 -3
  459. data/lib/datadog/tracing/sampling/rate_limiter.rb +1 -1
  460. data/lib/datadog/tracing/sampling/rate_sampler.rb +5 -5
  461. data/lib/datadog/tracing/sampling/rule.rb +3 -3
  462. data/lib/datadog/tracing/sampling/rule_sampler.rb +4 -4
  463. data/lib/datadog/tracing/span.rb +4 -4
  464. data/lib/datadog/tracing/span_operation.rb +9 -9
  465. data/lib/datadog/tracing/sync_writer.rb +5 -5
  466. data/lib/datadog/tracing/trace_operation.rb +16 -9
  467. data/lib/datadog/tracing/trace_segment.rb +5 -5
  468. data/lib/datadog/tracing/tracer.rb +15 -15
  469. data/lib/datadog/tracing/workers/trace_writer.rb +9 -9
  470. data/lib/datadog/tracing/workers.rb +3 -3
  471. data/lib/datadog/tracing/writer.rb +5 -5
  472. data/lib/datadog/tracing.rb +8 -8
  473. data/lib/ddtrace/auto_instrument.rb +9 -2
  474. data/lib/ddtrace/transport/ext.rb +7 -1
  475. data/lib/ddtrace/transport/http/adapters/net.rb +3 -2
  476. data/lib/ddtrace/transport/http/adapters/test.rb +1 -1
  477. data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -2
  478. data/lib/ddtrace/transport/http/api/map.rb +1 -1
  479. data/lib/ddtrace/transport/http/api.rb +4 -4
  480. data/lib/ddtrace/transport/http/builder.rb +5 -5
  481. data/lib/ddtrace/transport/http/client.rb +2 -2
  482. data/lib/ddtrace/transport/http/response.rb +1 -1
  483. data/lib/ddtrace/transport/http/statistics.rb +1 -1
  484. data/lib/ddtrace/transport/http/traces.rb +5 -5
  485. data/lib/ddtrace/transport/http.rb +12 -9
  486. data/lib/ddtrace/transport/io/client.rb +2 -2
  487. data/lib/ddtrace/transport/io/response.rb +1 -1
  488. data/lib/ddtrace/transport/io/traces.rb +3 -3
  489. data/lib/ddtrace/transport/io.rb +3 -3
  490. data/lib/ddtrace/transport/statistics.rb +2 -2
  491. data/lib/ddtrace/transport/trace_formatter.rb +5 -5
  492. data/lib/ddtrace/transport/traces.rb +5 -5
  493. data/lib/ddtrace/version.rb +1 -1
  494. data/lib/ddtrace.rb +6 -6
  495. metadata +35 -22
  496. data/.editorconfig +0 -22
  497. data/.gitignore +0 -58
  498. data/CONTRIBUTING.md +0 -81
  499. data/ddtrace.gemspec +0 -71
  500. data/docs/0.x-trace.png +0 -0
  501. data/docs/1.0-trace.png +0 -0
  502. data/docs/AutoInstrumentation.md +0 -36
  503. data/docs/Deprecation.md +0 -8
  504. data/docs/DevelopmentGuide.md +0 -259
  505. data/docs/GettingStarted.md +0 -2712
  506. data/docs/ProfilingDevelopment.md +0 -109
  507. data/docs/PublicApi.md +0 -14
  508. data/docs/UpgradeGuide.md +0 -736
@@ -0,0 +1,52 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes payload for telemetry V1 API app-integrations-change event
6
+ class AppEvent
7
+ include Kernel
8
+
9
+ attr_reader \
10
+ :additional_payload,
11
+ :configuration,
12
+ :dependencies,
13
+ :integrations
14
+
15
+ # @param additional_payload [Array<Telemetry::V1::Configuration>] List of Additional payload to track (any key
16
+ # value not mentioned and doesn't fit under a metric)
17
+ # @param configuration [Array<Telemetry::V1::Configuration>] List of Tracer related configuration data
18
+ # @param dependencies [Array<Telemetry::V1::Dependency>] List of all loaded modules requested by the app
19
+ # @param integrations [Array<Telemetry::V1::Integration>] List of integrations that are available within the app
20
+ # and applicable to be traced
21
+ def initialize(additional_payload: nil, configuration: nil, dependencies: nil, integrations: nil)
22
+ @additional_payload = additional_payload
23
+ @configuration = configuration
24
+ @dependencies = dependencies
25
+ @integrations = integrations
26
+ end
27
+
28
+ def to_h
29
+ {}.tap do |hash|
30
+ hash[:additional_payload] = map_hash(@additional_payload) if @additional_payload
31
+ hash[:configuration] = map_hash(@configuration) if @configuration
32
+ hash[:dependencies] = map_array(@dependencies) if @dependencies
33
+ hash[:integrations] = map_array(@integrations) if @integrations
34
+ end
35
+ end
36
+
37
+ private
38
+
39
+ def map_hash(hash)
40
+ hash.map do |k, v|
41
+ { name: k.to_s, value: v }
42
+ end
43
+ end
44
+
45
+ def map_array(arr)
46
+ arr.map(&:to_h)
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,86 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for application environment object
6
+ class Application
7
+ ERROR_NIL_LANGUAGE_NAME_MESSAGE = ':language_name must not be nil'.freeze
8
+ ERROR_NIL_LANGUAGE_VERSION_MESSAGE = ':language_version must not be nil'.freeze
9
+ ERROR_NIL_SERVICE_NAME_MESSAGE = ':service_name must not be nil'.freeze
10
+ ERROR_NIL_TRACER_VERSION_MESSAGE = ':tracer_version must not be nil'.freeze
11
+
12
+ attr_reader \
13
+ :env,
14
+ :language_name,
15
+ :language_version,
16
+ :products,
17
+ :runtime_name,
18
+ :runtime_patches,
19
+ :runtime_version,
20
+ :service_name,
21
+ :service_version,
22
+ :tracer_version
23
+
24
+ # @param env [String] Service's environment
25
+ # @param language_name [String] 'ruby'
26
+ # @param language_version [String] Version of language used
27
+ # @param products [Telemetry::V1::Product] Contains information about specific products added to the environment
28
+ # @param runtime_name [String] Runtime being used
29
+ # @param runtime_patches [String] String of patches applied to the runtime
30
+ # @param runtime_version [String] Runtime version; potentially the same as :language_version
31
+ # @param service_name [String] Service’s name (DD_SERVICE)
32
+ # @param service_version [String] Service’s version (DD_VERSION)
33
+ # @param tracer_version [String] Version of the used tracer
34
+ def initialize(
35
+ language_name:, language_version:, service_name:, tracer_version:, env: nil, products: nil,
36
+ runtime_name: nil, runtime_patches: nil, runtime_version: nil, service_version: nil
37
+ )
38
+ validate(
39
+ language_name: language_name,
40
+ language_version: language_version,
41
+ service_name: service_name,
42
+ tracer_version: tracer_version
43
+ )
44
+ @env = env
45
+ @language_name = language_name
46
+ @language_version = language_version
47
+ @products = products
48
+ @runtime_name = runtime_name
49
+ @runtime_patches = runtime_patches
50
+ @runtime_version = runtime_version
51
+ @service_name = service_name
52
+ @service_version = service_version
53
+ @tracer_version = tracer_version
54
+ end
55
+
56
+ def to_h
57
+ {
58
+ env: @env,
59
+ language_name: @language_name,
60
+ language_version: @language_version,
61
+ products: @products.to_h,
62
+ runtime_name: @runtime_name,
63
+ runtime_patches: @runtime_patches,
64
+ runtime_version: @runtime_version,
65
+ service_name: @service_name,
66
+ service_version: @service_version,
67
+ tracer_version: @tracer_version
68
+ }
69
+ end
70
+
71
+ private
72
+
73
+ # Validates required arguments passed to the class on initialization are not nil
74
+ #
75
+ # @!visibility private
76
+ def validate(language_name:, language_version:, service_name:, tracer_version:)
77
+ raise ArgumentError, ERROR_NIL_LANGUAGE_NAME_MESSAGE if language_name.nil?
78
+ raise ArgumentError, ERROR_NIL_LANGUAGE_VERSION_MESSAGE if language_version.nil?
79
+ raise ArgumentError, ERROR_NIL_SERVICE_NAME_MESSAGE if service_name.nil?
80
+ raise ArgumentError, ERROR_NIL_TRACER_VERSION_MESSAGE if tracer_version.nil?
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -0,0 +1,25 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for additional payload or configuration object
6
+ class Configuration
7
+ ERROR_NIL_NAME_MESSAGE = ':name must not be nil'.freeze
8
+
9
+ attr_reader \
10
+ :name,
11
+ :value
12
+
13
+ # @param name [String] Configuration/additional payload attribute name
14
+ # @param value [String, Integer, Boolean] Corresponding value
15
+ def initialize(name:, value: nil)
16
+ raise ArgumentError, ERROR_NIL_NAME_MESSAGE if name.nil?
17
+
18
+ @name = name
19
+ @value = value
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,36 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for dependency object
6
+ class Dependency
7
+ ERROR_NIL_NAME_MESSAGE = ':name must not be nil'.freeze
8
+
9
+ attr_reader \
10
+ :hash,
11
+ :name,
12
+ :version
13
+
14
+ # @param name [String] Module name
15
+ # @param version [String] Version of resolved module
16
+ # @param hash [String] Dependency hash
17
+ def initialize(name:, version: nil, hash: nil)
18
+ raise ArgumentError, ERROR_NIL_NAME_MESSAGE if name.nil?
19
+
20
+ @hash = hash
21
+ @name = name
22
+ @version = version
23
+ end
24
+
25
+ def to_h
26
+ {
27
+ hash: @hash,
28
+ name: @name,
29
+ version: @version
30
+ }
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,51 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for host object
6
+ class Host
7
+ attr_reader \
8
+ :container_id,
9
+ :hostname,
10
+ :kernel_name,
11
+ :kernel_release,
12
+ :kernel_version,
13
+ :os_version,
14
+ :os
15
+
16
+ # @param container_id [String] Docker container ID
17
+ # @param hostname [String] uname -n
18
+ # @param kernel_name [String] uname -s
19
+ # @param kernel_release [String] uname -r
20
+ # @param kernel_version [String] uname -v
21
+ # @param os [String] uname -o
22
+ # @param os_version [String] Version of OS running
23
+ def initialize(
24
+ container_id: nil, hostname: nil, kernel_name: nil, kernel_release: nil, kernel_version: nil,
25
+ os_version: nil, os: nil
26
+ )
27
+ @container_id = container_id
28
+ @hostname = hostname
29
+ @kernel_name = kernel_name
30
+ @kernel_release = kernel_release
31
+ @kernel_version = kernel_version
32
+ @os = os
33
+ @os_version = os_version
34
+ end
35
+
36
+ def to_h
37
+ {
38
+ container_id: @container_id,
39
+ hostname: @hostname,
40
+ kernel_name: @kernel_name,
41
+ kernel_release: @kernel_release,
42
+ kernel_version: @kernel_version,
43
+ os: @os,
44
+ os_version: @os_version,
45
+ }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,58 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for integration object
6
+ class Integration
7
+ ERROR_NIL_ENABLED_MESSAGE = ':enabled must not be nil'.freeze
8
+ ERROR_NIL_NAME_MESSAGE = ':name must not be nil'.freeze
9
+
10
+ attr_reader \
11
+ :auto_enabled,
12
+ :compatible,
13
+ :enabled,
14
+ :error,
15
+ :name,
16
+ :version
17
+
18
+ # @param enabled [Boolean] Whether integration is enabled at time of request
19
+ # @param name [String] Integration name
20
+ # @param auto_enabled [Boolean] If integration is not enabled by default, but by user choice
21
+ # @param compatible [Boolean] If integration is available, but incompatible
22
+ # @param error [String] Error message if integration fails to load
23
+ # @param version [String] Integration version (if specified in app-started, it should be for other events too)
24
+ def initialize(enabled:, name:, auto_enabled: nil, compatible: nil, error: nil, version: nil)
25
+ validate(enabled: enabled, name: name)
26
+ @auto_enabled = auto_enabled
27
+ @compatible = compatible
28
+ @enabled = enabled
29
+ @error = error
30
+ @name = name
31
+ @version = version
32
+ end
33
+
34
+ def to_h
35
+ {
36
+ auto_enabled: @auto_enabled,
37
+ compatible: @compatible,
38
+ enabled: @enabled,
39
+ error: @error,
40
+ name: @name,
41
+ version: @version
42
+ }
43
+ end
44
+
45
+ private
46
+
47
+ # Validates all required arguments passed to the class on initialization are not nil
48
+ #
49
+ # @!visibility private
50
+ def validate(enabled:, name:)
51
+ raise ArgumentError, ERROR_NIL_ENABLED_MESSAGE if enabled.nil?
52
+ raise ArgumentError, ERROR_NIL_NAME_MESSAGE if name.nil?
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,28 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for products object
6
+ class Product
7
+ attr_reader \
8
+ :appsec,
9
+ :profiler
10
+
11
+ # @param appsec [Telemetry::V1::AppSec] Holds custom information about the appsec product
12
+ # @param profiler [Telemetry::V1::Profiler] Holds custom information about the profiler product
13
+ def initialize(appsec: nil, profiler: nil)
14
+ @appsec = appsec
15
+ @profiler = profiler
16
+ end
17
+
18
+ def to_h
19
+ {
20
+ appsec: @appsec,
21
+ profiler: @profiler
22
+ }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,100 @@
1
+ module Datadog
2
+ module Core
3
+ module Telemetry
4
+ module V1
5
+ # Describes attributes for telemetry API request
6
+ class TelemetryRequest
7
+ ERROR_NIL_API_VERSION_MESSAGE = ':api_version must not be nil'.freeze
8
+ ERROR_NIL_APPLICATION_MESSAGE = ':application must not be nil'.freeze
9
+ ERROR_NIL_HOST_MESSAGE = ':host must not be nil'.freeze
10
+ ERROR_NIL_PAYLOAD_MESSAGE = ':payload must not be nil'.freeze
11
+ ERROR_NIL_REQUEST_TYPE_MESSAGE = ':request_type must not be nil'.freeze
12
+ ERROR_NIL_RUNTIME_ID_MESSAGE = ':runtime_id must not be nil'.freeze
13
+ ERROR_NIL_SEQ_ID_MESSAGE = ':seq_id must not be nil'.freeze
14
+ ERROR_NIL_TRACER_TIME_MESSAGE = ':tracer_time must not be nil'.freeze
15
+
16
+ attr_reader \
17
+ :api_version,
18
+ :application,
19
+ :debug,
20
+ :host,
21
+ :payload,
22
+ :request_type,
23
+ :runtime_id,
24
+ :seq_id,
25
+ :session_id,
26
+ :tracer_time
27
+
28
+ # @param api_version [String] Requested API version, `v1`
29
+ # @param application [Telemetry::V1::Application] Object that contains information about the environment of the
30
+ # application
31
+ # @param host [Telemetry::V1::Host] Object that holds host related information
32
+ # @param payload [Telemetry::V1::AppEvent] The payload of the request, type impacted by :request_type
33
+ # @param request_type [String] Requested API function impacting the Payload type, `app-started`
34
+ # @param runtime_id [String] V4 UUID that represents a tracer session
35
+ # @param seq_id [Integer] Counter that should be auto incremented every time an API call is being made
36
+ # @param tracer_time [Integer] Unix timestamp (in seconds) of when the message is being sent
37
+ # @param debug [Boolean] Flag that enables payload debug mode
38
+ # @param session_id [String] V4 UUID that represents the session of the top level tracer process, often same\
39
+ # as runtime_id
40
+ def initialize(
41
+ api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:,
42
+ debug: nil, session_id: nil
43
+ )
44
+ validate(
45
+ api_version: api_version,
46
+ application: application,
47
+ host: host,
48
+ payload: payload,
49
+ request_type: request_type,
50
+ runtime_id: runtime_id,
51
+ seq_id: seq_id,
52
+ tracer_time: tracer_time
53
+ )
54
+ @api_version = api_version
55
+ @application = application
56
+ @debug = debug
57
+ @host = host
58
+ @payload = payload
59
+ @request_type = request_type
60
+ @runtime_id = runtime_id
61
+ @seq_id = seq_id
62
+ @session_id = session_id
63
+ @tracer_time = tracer_time
64
+ end
65
+
66
+ def to_h
67
+ {
68
+ api_version: @api_version,
69
+ application: @application.to_h,
70
+ debug: @debug,
71
+ host: @host.to_h,
72
+ payload: @payload.to_h,
73
+ request_type: @request_type,
74
+ runtime_id: @runtime_id,
75
+ seq_id: @seq_id,
76
+ session_id: @session_id,
77
+ tracer_time: @tracer_time
78
+ }
79
+ end
80
+
81
+ private
82
+
83
+ # Validates all required arguments passed to the class on initialization are not nil
84
+ #
85
+ # @!visibility private
86
+ def validate(api_version:, application:, host:, payload:, request_type:, runtime_id:, seq_id:, tracer_time:)
87
+ raise ArgumentError, ERROR_NIL_API_VERSION_MESSAGE if api_version.nil?
88
+ raise ArgumentError, ERROR_NIL_APPLICATION_MESSAGE if application.nil?
89
+ raise ArgumentError, ERROR_NIL_HOST_MESSAGE if host.nil?
90
+ raise ArgumentError, ERROR_NIL_PAYLOAD_MESSAGE if payload.nil?
91
+ raise ArgumentError, ERROR_NIL_REQUEST_TYPE_MESSAGE if request_type.nil?
92
+ raise ArgumentError, ERROR_NIL_RUNTIME_ID_MESSAGE if runtime_id.nil?
93
+ raise ArgumentError, ERROR_NIL_SEQ_ID_MESSAGE if seq_id.nil?
94
+ raise ArgumentError, ERROR_NIL_TRACER_TIME_MESSAGE if tracer_time.nil?
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
100
+ end
@@ -1,6 +1,6 @@
1
1
  # typed: true
2
2
 
3
- require 'datadog/core/utils/sequence'
3
+ require_relative 'sequence'
4
4
 
5
5
  module Datadog
6
6
  module Core
@@ -6,6 +6,7 @@ module Datadog
6
6
  # Generates values from a consistent sequence
7
7
  class Sequence
8
8
  def initialize(seed = 0, &block)
9
+ @seed = seed
9
10
  @current = seed
10
11
  @next_item = block
11
12
  end
@@ -15,6 +16,10 @@ module Datadog
15
16
  @current += 1
16
17
  next_item
17
18
  end
19
+
20
+ def reset!
21
+ @current = @seed
22
+ end
18
23
  end
19
24
  end
20
25
  end
@@ -1,6 +1,6 @@
1
1
  # typed: true
2
2
 
3
- require 'datadog/core/utils/sequence'
3
+ require_relative 'sequence'
4
4
 
5
5
  module Datadog
6
6
  module Core
@@ -36,10 +36,10 @@ module Datadog
36
36
  define_singleton_method(:now, &block)
37
37
  end
38
38
 
39
- def measure
40
- before = get_time
39
+ def measure(unit = :float_second)
40
+ before = get_time(unit)
41
41
  yield
42
- after = get_time
42
+ after = get_time(unit)
43
43
  after - before
44
44
  end
45
45
 
@@ -1,7 +1,7 @@
1
1
  # typed: true
2
2
 
3
- require 'datadog/core/utils/forking'
4
- require 'datadog/tracing/span'
3
+ require_relative 'utils/forking'
4
+ require_relative '../tracing/span'
5
5
 
6
6
  module Datadog
7
7
  module Core
@@ -6,8 +6,8 @@
6
6
  # software license details.
7
7
  #++
8
8
 
9
- require 'datadog/core/vendor/multipart-post/multipart/post/parts'
10
- require 'datadog/core/vendor/multipart-post/multipart/post/composite_read_io'
9
+ require_relative 'parts'
10
+ require_relative 'composite_read_io'
11
11
  require 'securerandom'
12
12
 
13
13
  module Datadog
@@ -9,9 +9,9 @@
9
9
  require 'net/http'
10
10
  require 'stringio'
11
11
  require 'cgi'
12
- require 'datadog/core/vendor/multipart-post/multipart/post/parts'
13
- require 'datadog/core/vendor/multipart-post/multipart/post/composite_read_io'
14
- require 'datadog/core/vendor/multipart-post/multipart/post/multipartable'
12
+ require_relative '../../../multipart/post/parts'
13
+ require_relative '../../../multipart/post/composite_read_io'
14
+ require_relative '../../../multipart/post/multipartable'
15
15
 
16
16
  module Datadog
17
17
  module Core
@@ -1,6 +1,6 @@
1
1
  # typed: false
2
2
 
3
- require 'datadog/core/logger'
3
+ require_relative '../logger'
4
4
 
5
5
  module Datadog
6
6
  module Core
@@ -1,7 +1,7 @@
1
1
  # typed: false
2
2
 
3
- require 'datadog/core/workers/async'
4
- require 'datadog/core/workers/interval_loop'
3
+ require_relative 'async'
4
+ require_relative 'interval_loop'
5
5
 
6
6
  module Datadog
7
7
  module Core
@@ -1,10 +1,10 @@
1
1
  # typed: false
2
2
 
3
- require 'datadog/core/runtime/metrics'
3
+ require_relative '../runtime/metrics'
4
4
 
5
- require 'datadog/core/worker'
6
- require 'datadog/core/workers/async'
7
- require 'datadog/core/workers/polling'
5
+ require_relative '../worker'
6
+ require_relative 'async'
7
+ require_relative 'polling'
8
8
 
9
9
  module Datadog
10
10
  module Core