ddtrace 0.42.0 → 0.47.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.
- checksums.yaml +5 -5
- data/.circleci/config.yml +274 -137
- data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
- data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2-latest} +2 -1
- data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +73 -0
- data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +42 -0
- data/.github/workflows/create-next-milestone.yml +20 -0
- data/.rubocop.yml +250 -7
- data/.rubocop_todo.yml +397 -0
- data/.simplecov +9 -0
- data/Appraisals +386 -142
- data/CHANGELOG.md +1218 -362
- data/CONTRIBUTING.md +1 -1
- data/Gemfile +55 -3
- data/LICENSE-3rdparty.csv +2 -0
- data/README.md +1 -0
- data/Rakefile +216 -29
- data/ddtrace.gemspec +4 -36
- data/docker-compose.yml +105 -7
- data/docs/DevelopmentGuide.md +30 -2
- data/docs/GettingStarted.md +242 -22
- data/integration/README.md +68 -0
- data/integration/apps/rack/.dockerignore +1 -0
- data/integration/apps/rack/.envrc.sample +1 -0
- data/integration/apps/rack/.gitignore +4 -0
- data/integration/apps/rack/.rspec +1 -0
- data/integration/apps/rack/Dockerfile +25 -0
- data/integration/apps/rack/Dockerfile-ci +11 -0
- data/integration/apps/rack/Gemfile +24 -0
- data/integration/apps/rack/README.md +93 -0
- data/integration/apps/rack/app/acme.rb +80 -0
- data/integration/apps/rack/app/datadog.rb +17 -0
- data/integration/apps/rack/bin/run +22 -0
- data/integration/apps/rack/bin/setup +17 -0
- data/integration/apps/rack/bin/test +24 -0
- data/integration/apps/rack/config.ru +6 -0
- data/integration/apps/rack/config/puma.rb +14 -0
- data/integration/apps/rack/config/unicorn.rb +23 -0
- data/integration/apps/rack/docker-compose.ci.yml +62 -0
- data/integration/apps/rack/docker-compose.yml +78 -0
- data/integration/apps/rack/script/build-images +38 -0
- data/integration/apps/rack/script/ci +50 -0
- data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rack/spec/spec_helper.rb +16 -0
- data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/.dockerignore +1 -0
- data/integration/apps/rails-five/.env +3 -0
- data/integration/apps/rails-five/.envrc.sample +1 -0
- data/integration/apps/rails-five/.gitignore +30 -0
- data/integration/apps/rails-five/Dockerfile +25 -0
- data/integration/apps/rails-five/Dockerfile-ci +11 -0
- data/integration/apps/rails-five/Gemfile +104 -0
- data/integration/apps/rails-five/README.md +94 -0
- data/integration/apps/rails-five/Rakefile +6 -0
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
- data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
- data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
- data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
- data/integration/apps/rails-five/app/models/application_record.rb +3 -0
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +2 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
- data/integration/apps/rails-five/bin/bundle +3 -0
- data/integration/apps/rails-five/bin/rails +9 -0
- data/integration/apps/rails-five/bin/rake +9 -0
- data/integration/apps/rails-five/bin/run +24 -0
- data/integration/apps/rails-five/bin/setup +27 -0
- data/integration/apps/rails-five/bin/spring +17 -0
- data/integration/apps/rails-five/bin/test +21 -0
- data/integration/apps/rails-five/bin/update +28 -0
- data/integration/apps/rails-five/config.ru +5 -0
- data/integration/apps/rails-five/config/application.rb +97 -0
- data/integration/apps/rails-five/config/boot.rb +4 -0
- data/integration/apps/rails-five/config/cable.yml +10 -0
- data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
- data/integration/apps/rails-five/config/database.yml +28 -0
- data/integration/apps/rails-five/config/environment.rb +5 -0
- data/integration/apps/rails-five/config/environments/development.rb +51 -0
- data/integration/apps/rails-five/config/environments/production.rb +82 -0
- data/integration/apps/rails-five/config/environments/test.rb +43 -0
- data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
- data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
- data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
- data/integration/apps/rails-five/config/locales/en.yml +33 -0
- data/integration/apps/rails-five/config/puma.rb +24 -0
- data/integration/apps/rails-five/config/routes.rb +11 -0
- data/integration/apps/rails-five/config/spring.rb +6 -0
- data/integration/apps/rails-five/config/unicorn.rb +29 -0
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
- data/integration/apps/rails-five/db/schema.rb +23 -0
- data/integration/apps/rails-five/db/seeds.rb +7 -0
- data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
- data/integration/apps/rails-five/docker-compose.yml +100 -0
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +1 -0
- data/integration/apps/rails-five/script/build-images +35 -0
- data/integration/apps/rails-five/script/ci +50 -0
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
- data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/ruby/.dockerignore +1 -0
- data/integration/apps/ruby/.envrc.sample +1 -0
- data/integration/apps/ruby/.gitignore +2 -0
- data/integration/apps/ruby/Dockerfile +25 -0
- data/integration/apps/ruby/Dockerfile-ci +11 -0
- data/integration/apps/ruby/Gemfile +11 -0
- data/integration/apps/ruby/README.md +70 -0
- data/integration/apps/ruby/agent.yaml +3 -0
- data/integration/apps/ruby/app/datadog.rb +13 -0
- data/integration/apps/ruby/app/fibonacci.rb +58 -0
- data/integration/apps/ruby/bin/run +20 -0
- data/integration/apps/ruby/bin/setup +17 -0
- data/integration/apps/ruby/bin/test +21 -0
- data/integration/apps/ruby/docker-compose.ci.yml +51 -0
- data/integration/apps/ruby/docker-compose.yml +63 -0
- data/integration/apps/ruby/script/build-images +38 -0
- data/integration/apps/ruby/script/ci +50 -0
- data/integration/images/agent/Dockerfile +2 -0
- data/integration/images/agent/agent.yaml +3 -0
- data/integration/images/include/datadog/analyzer.rb +71 -0
- data/integration/images/include/datadog/demo_env.rb +101 -0
- data/integration/images/include/http-health-check +33 -0
- data/integration/images/ruby/2.0/Dockerfile +54 -0
- data/integration/images/ruby/2.1/Dockerfile +54 -0
- data/integration/images/ruby/2.2/Dockerfile +54 -0
- data/integration/images/ruby/2.3/Dockerfile +70 -0
- data/integration/images/ruby/2.4/Dockerfile +54 -0
- data/integration/images/ruby/2.5/Dockerfile +54 -0
- data/integration/images/ruby/2.6/Dockerfile +54 -0
- data/integration/images/ruby/2.7/Dockerfile +54 -0
- data/integration/images/ruby/3.0/Dockerfile +54 -0
- data/integration/images/wrk/Dockerfile +33 -0
- data/integration/images/wrk/scripts/entrypoint.sh +17 -0
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
- data/integration/script/build-images +43 -0
- data/lib/ddtrace.rb +10 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/auto_instrument.rb +3 -0
- data/lib/ddtrace/auto_instrument_base.rb +6 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +108 -23
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +2 -2
- data/lib/ddtrace/configuration/option_definition.rb +1 -3
- data/lib/ddtrace/configuration/options.rb +4 -7
- data/lib/ddtrace/configuration/settings.rb +21 -5
- data/lib/ddtrace/context.rb +23 -6
- data/lib/ddtrace/context_provider.rb +12 -2
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/event.rb +1 -5
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +101 -18
- data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +104 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +21 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +3 -0
- data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +12 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
- data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +2 -1
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -1
- data/lib/ddtrace/contrib/aws/services.rb +3 -0
- data/lib/ddtrace/contrib/configurable.rb +63 -37
- data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -20
- data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/cucumber/ext.rb +17 -0
- data/lib/ddtrace/contrib/cucumber/formatter.rb +98 -0
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +24 -0
- data/lib/ddtrace/contrib/cucumber/integration.rb +45 -0
- data/lib/ddtrace/contrib/cucumber/patcher.rb +23 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +2 -1
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
- data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +9 -7
- data/lib/ddtrace/contrib/extensions.rb +53 -3
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +47 -21
- data/lib/ddtrace/contrib/grape/ext.rb +1 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
- data/lib/ddtrace/contrib/http/instrumentation.rb +7 -7
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
- data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
- data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
- data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
- data/lib/ddtrace/contrib/kafka/event.rb +1 -1
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patchable.rb +18 -7
- data/lib/ddtrace/contrib/patcher.rb +9 -6
- data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/qless/ext.rb +20 -0
- data/lib/ddtrace/contrib/qless/integration.rb +38 -0
- data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
- data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +3 -2
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/integration.rb +7 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +11 -4
- data/lib/ddtrace/contrib/rails/utils.rb +4 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/rake/integration.rb +1 -1
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/redis/ext.rb +1 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
- data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
- data/lib/ddtrace/contrib/redis/tags.rb +5 -1
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
- data/lib/ddtrace/contrib/registry.rb +2 -2
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/resque_job.rb +3 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +28 -0
- data/lib/ddtrace/contrib/rspec/example.rb +75 -0
- data/lib/ddtrace/contrib/rspec/ext.rb +16 -0
- data/lib/ddtrace/contrib/rspec/integration.rb +46 -0
- data/lib/ddtrace/contrib/rspec/patcher.rb +23 -0
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +3 -1
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +5 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +16 -21
- data/lib/ddtrace/contrib/status_code_matcher.rb +69 -0
- data/lib/ddtrace/correlation.rb +1 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +2 -1
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/ci.rb +297 -0
- data/lib/ddtrace/ext/distributed.rb +8 -2
- data/lib/ddtrace/ext/git.rb +11 -0
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/runtime.rb +4 -1
- data/lib/ddtrace/ext/test.rb +24 -0
- data/lib/ddtrace/forced_tracing.rb +2 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/metrics.rb +10 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
- data/lib/ddtrace/opentracer/span.rb +2 -6
- data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
- data/lib/ddtrace/patcher.rb +25 -4
- data/lib/ddtrace/pin.rb +8 -61
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/propagation/http_propagator.rb +17 -2
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +2 -2
- data/lib/ddtrace/runtime/container.rb +27 -29
- data/lib/ddtrace/runtime/identity.rb +12 -5
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rate_limiter.rb +65 -16
- data/lib/ddtrace/sampling/rule_sampler.rb +1 -0
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +12 -12
- data/lib/ddtrace/tracer.rb +21 -6
- data/lib/ddtrace/transport/http.rb +15 -8
- data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
- data/lib/ddtrace/transport/http/builder.rb +7 -1
- data/lib/ddtrace/transport/http/env.rb +8 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/io/response.rb +1 -3
- data/lib/ddtrace/transport/io/traces.rb +6 -0
- data/lib/ddtrace/transport/traces.rb +18 -1
- data/lib/ddtrace/utils.rb +10 -11
- data/lib/ddtrace/utils/compression.rb +27 -0
- data/lib/ddtrace/utils/forking.rb +52 -0
- data/lib/ddtrace/utils/object_set.rb +41 -0
- data/lib/ddtrace/utils/only_once.rb +40 -0
- data/lib/ddtrace/utils/sequence.rb +17 -0
- data/lib/ddtrace/utils/string_table.rb +45 -0
- data/lib/ddtrace/utils/time.rb +32 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +11 -3
- data/lib/ddtrace/workers/loop.rb +17 -3
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/queue.rb +1 -0
- data/lib/ddtrace/workers/runtime_metrics.rb +7 -3
- data/lib/ddtrace/workers/trace_writer.rb +10 -10
- data/lib/ddtrace/writer.rb +26 -5
- metadata +186 -373
- data/lib/ddtrace/augmentation.rb +0 -13
- data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
- data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
- data/lib/ddtrace/augmentation/shim.rb +0 -102
- data/lib/ddtrace/monkey.rb +0 -58
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Contrib
|
|
3
|
+
module Cucumber
|
|
4
|
+
# Cucumber integration constants
|
|
5
|
+
module Ext
|
|
6
|
+
APP = 'cucumber'.freeze
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_CUCUMBER_ENABLED'.freeze
|
|
8
|
+
ENV_OPERATION_NAME = 'DD_TRACE_CUCUMBER_OPERATION_NAME'.freeze
|
|
9
|
+
FRAMEWORK = 'cucumber'.freeze
|
|
10
|
+
OPERATION_NAME = 'cucumber.test'.freeze
|
|
11
|
+
SERVICE_NAME = 'cucumber'.freeze
|
|
12
|
+
STEP_SPAN_TYPE = 'step'.freeze
|
|
13
|
+
TEST_TYPE = 'test'.freeze
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
require 'ddtrace/ext/app_types'
|
|
2
|
+
require 'ddtrace/ext/ci'
|
|
3
|
+
require 'ddtrace/ext/test'
|
|
4
|
+
require 'ddtrace/contrib/analytics'
|
|
5
|
+
require 'ddtrace/contrib/cucumber/ext'
|
|
6
|
+
|
|
7
|
+
module Datadog
|
|
8
|
+
module Contrib
|
|
9
|
+
module Cucumber
|
|
10
|
+
# Defines collection of instrumented Cucumber events
|
|
11
|
+
class Formatter
|
|
12
|
+
attr_reader :config, :current_feature_span, :current_step_span
|
|
13
|
+
private :config
|
|
14
|
+
private :current_feature_span, :current_step_span
|
|
15
|
+
|
|
16
|
+
def initialize(config)
|
|
17
|
+
@config = config
|
|
18
|
+
|
|
19
|
+
bind_events(config)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def bind_events(config)
|
|
23
|
+
config.on_event :test_case_started, &method(:on_test_case_started)
|
|
24
|
+
config.on_event :test_case_finished, &method(:on_test_case_finished)
|
|
25
|
+
config.on_event :test_step_started, &method(:on_test_step_started)
|
|
26
|
+
config.on_event :test_step_finished, &method(:on_test_step_finished)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def on_test_case_started(event)
|
|
30
|
+
trace_options = {
|
|
31
|
+
app: Ext::APP,
|
|
32
|
+
resource: event.test_case.name,
|
|
33
|
+
service: configuration[:service_name],
|
|
34
|
+
span_type: Datadog::Ext::AppTypes::TEST,
|
|
35
|
+
tags: tags.merge(Datadog.configuration.tags)
|
|
36
|
+
}
|
|
37
|
+
@current_feature_span = tracer.trace(configuration[:operation_name], trace_options)
|
|
38
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_FRAMEWORK, Ext::FRAMEWORK)
|
|
39
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_NAME, event.test_case.name)
|
|
40
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_SUITE, event.test_case.location.file)
|
|
41
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_TYPE, Ext::TEST_TYPE)
|
|
42
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_SPAN_KIND, Datadog::Ext::AppTypes::TEST)
|
|
43
|
+
|
|
44
|
+
# Measure service stats
|
|
45
|
+
Contrib::Analytics.set_measured(@current_feature_span)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def on_test_case_finished(event)
|
|
49
|
+
return if @current_feature_span.nil?
|
|
50
|
+
|
|
51
|
+
@current_feature_span.status = 1 if event.result.failed?
|
|
52
|
+
@current_feature_span.set_tag(Datadog::Ext::Test::TAG_STATUS, status_from_result(event.result))
|
|
53
|
+
@current_feature_span.finish
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def on_test_step_started(event)
|
|
57
|
+
trace_options = {
|
|
58
|
+
resource: event.test_step.to_s,
|
|
59
|
+
span_type: Ext::STEP_SPAN_TYPE
|
|
60
|
+
}
|
|
61
|
+
@current_step_span = tracer.trace(Ext::STEP_SPAN_TYPE, trace_options)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def on_test_step_finished(event)
|
|
65
|
+
return if @current_step_span.nil?
|
|
66
|
+
|
|
67
|
+
@current_step_span.set_error event.result.exception unless event.result.passed?
|
|
68
|
+
@current_step_span.set_tag(Datadog::Ext::Test::TAG_STATUS, status_from_result(event.result))
|
|
69
|
+
@current_step_span.finish
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def status_from_result(result)
|
|
75
|
+
if result.skipped?
|
|
76
|
+
return Datadog::Ext::Test::Status::SKIP
|
|
77
|
+
elsif result.ok?
|
|
78
|
+
return Datadog::Ext::Test::Status::PASS
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
Datadog::Ext::Test::Status::FAIL
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def configuration
|
|
85
|
+
Datadog.configuration[:cucumber]
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def tracer
|
|
89
|
+
configuration[:tracer]
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def tags
|
|
93
|
+
@tags ||= Datadog::Ext::CI.tags(ENV)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require 'ddtrace/contrib/cucumber/formatter'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module Contrib
|
|
5
|
+
module Cucumber
|
|
6
|
+
# Instrumentation for Cucumber
|
|
7
|
+
module Instrumentation
|
|
8
|
+
def self.included(base)
|
|
9
|
+
base.send(:prepend, InstanceMethods)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Instance methods for configuration
|
|
13
|
+
module InstanceMethods
|
|
14
|
+
attr_reader :datadog_formatter
|
|
15
|
+
|
|
16
|
+
def formatters
|
|
17
|
+
@datadog_formatter ||= Datadog::Contrib::Cucumber::Formatter.new(@configuration)
|
|
18
|
+
[@datadog_formatter] + super
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'ddtrace/contrib/integration'
|
|
2
|
+
require 'ddtrace/contrib/cucumber/configuration/settings'
|
|
3
|
+
require 'ddtrace/contrib/cucumber/patcher'
|
|
4
|
+
require 'ddtrace/contrib/integration'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Contrib
|
|
8
|
+
module Cucumber
|
|
9
|
+
# Description of Cucumber integration
|
|
10
|
+
class Integration
|
|
11
|
+
include Contrib::Integration
|
|
12
|
+
|
|
13
|
+
MINIMUM_VERSION = Gem::Version.new('3.0.0')
|
|
14
|
+
|
|
15
|
+
register_as :cucumber, auto_patch: true
|
|
16
|
+
|
|
17
|
+
def self.version
|
|
18
|
+
Gem.loaded_specs['cucumber'] \
|
|
19
|
+
&& Gem.loaded_specs['cucumber'].version
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.loaded?
|
|
23
|
+
!defined?(::Cucumber).nil? && !defined?(::Cucumber::Runtime).nil?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def self.compatible?
|
|
27
|
+
super && version >= MINIMUM_VERSION
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# test environments should not auto instrument test libraries
|
|
31
|
+
def auto_instrument?
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def default_configuration
|
|
36
|
+
Configuration::Settings.new
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def patcher
|
|
40
|
+
Patcher
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'ddtrace/contrib/patcher'
|
|
2
|
+
require 'ddtrace/contrib/cucumber/instrumentation'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module Contrib
|
|
6
|
+
module Cucumber
|
|
7
|
+
# Patcher enables patching of 'cucumber' module.
|
|
8
|
+
module Patcher
|
|
9
|
+
include Contrib::Patcher
|
|
10
|
+
|
|
11
|
+
module_function
|
|
12
|
+
|
|
13
|
+
def target_version
|
|
14
|
+
Integration.version
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def patch
|
|
18
|
+
::Cucumber::Runtime.send(:include, Instrumentation)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -17,46 +17,8 @@ module Datadog
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def patch
|
|
20
|
-
add_pin!
|
|
21
20
|
::Dalli::Server.send(:include, Instrumentation)
|
|
22
21
|
end
|
|
23
|
-
|
|
24
|
-
# DEPRECATED: Only kept for users still using `Dalli.datadog_pin` to configure.
|
|
25
|
-
# Replaced by configuration API, i.e. `c.use :dalli`.
|
|
26
|
-
def add_pin!
|
|
27
|
-
DeprecatedPin
|
|
28
|
-
.new(
|
|
29
|
-
get_option(:service_name),
|
|
30
|
-
app: Ext::APP,
|
|
31
|
-
app_type: Datadog::Ext::AppTypes::CACHE,
|
|
32
|
-
tracer: -> { get_option(:tracer) }
|
|
33
|
-
).onto(::Dalli)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def get_option(option)
|
|
37
|
-
Datadog.configuration[:dalli].get_option(option)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
41
|
-
# To be removed when support for Datadog::Pin with Dalli is removed.
|
|
42
|
-
class DeprecatedPin < Datadog::Pin
|
|
43
|
-
include Datadog::DeprecatedPin
|
|
44
|
-
|
|
45
|
-
DEPRECATION_WARNING = %(
|
|
46
|
-
Use of Datadog::Pin with Dalli is DEPRECATED.
|
|
47
|
-
Upgrade to the configuration API using the migration guide here:
|
|
48
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
49
|
-
|
|
50
|
-
def service_name=(service_name)
|
|
51
|
-
Datadog.configuration[:dalli][:service_name] = service_name
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def log_deprecation_warning(method_name)
|
|
55
|
-
do_once(method_name) do
|
|
56
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
22
|
end
|
|
61
23
|
end
|
|
62
24
|
end
|
|
@@ -10,7 +10,8 @@ module Datadog
|
|
|
10
10
|
def self.instrument_invoke(job, &block)
|
|
11
11
|
return block.call(job) unless tracer && tracer.enabled
|
|
12
12
|
|
|
13
|
-
tracer.trace(Ext::SPAN_JOB, service: configuration[:service_name], resource: job_name(job)
|
|
13
|
+
tracer.trace(Ext::SPAN_JOB, service: configuration[:service_name], resource: job_name(job),
|
|
14
|
+
on_error: configuration[:error_handler]) do |span|
|
|
14
15
|
set_sample_rate(span)
|
|
15
16
|
|
|
16
17
|
# Measure service stats
|
|
@@ -17,7 +17,7 @@ module Datadog
|
|
|
17
17
|
|
|
18
18
|
def format_url(url)
|
|
19
19
|
sanitize_fragment_with_id(url)
|
|
20
|
-
.gsub(/(
|
|
20
|
+
.gsub(/(?:\d+)/, PLACEHOLDER)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def format_body(body, options = {})
|
|
@@ -60,6 +60,7 @@ module Datadog
|
|
|
60
60
|
# If JSON parsing fails, it prints fail_value.
|
|
61
61
|
def reserialize_json(string, fail_value = PLACEHOLDER)
|
|
62
62
|
return string unless block_given?
|
|
63
|
+
|
|
63
64
|
begin
|
|
64
65
|
JSON.dump(yield(JSON.parse(string)))
|
|
65
66
|
rescue JSON::ParserError
|
|
@@ -72,7 +73,7 @@ module Datadog
|
|
|
72
73
|
# This is meant as simple heuristic that attempts to detect if particular fragment
|
|
73
74
|
# represents document Id. This is meant to reduce the cardinality in most frequent cases.
|
|
74
75
|
def sanitize_fragment_with_id(url)
|
|
75
|
-
url.gsub(%r{^(/?[^/]*/[^/]*/)(?:[
|
|
76
|
+
url.gsub(%r{^(/?[^/]*/[^/]*/)(?:[^?/\d]*\d+[^?/]*)}, ID_PLACEHOLDER)
|
|
76
77
|
end
|
|
77
78
|
end
|
|
78
79
|
end
|
|
@@ -13,8 +13,8 @@ module Datadog
|
|
|
13
13
|
def self.included(base)
|
|
14
14
|
base.send(:prepend, InstanceMethods)
|
|
15
15
|
end
|
|
16
|
+
|
|
16
17
|
# InstanceMethods - implementing instrumentation
|
|
17
|
-
# rubocop:disable Metrics/ModuleLength
|
|
18
18
|
module InstanceMethods
|
|
19
19
|
include Datadog::Contrib::HttpAnnotationHelper
|
|
20
20
|
|
|
@@ -36,12 +36,14 @@ module Datadog
|
|
|
36
36
|
def perform
|
|
37
37
|
load_datadog_configuration_for(url)
|
|
38
38
|
return super unless tracer_enabled?
|
|
39
|
+
|
|
39
40
|
datadog_before_request
|
|
40
41
|
super
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
def complete
|
|
44
45
|
return super unless tracer_enabled?
|
|
46
|
+
|
|
45
47
|
begin
|
|
46
48
|
response_options = mirror.options
|
|
47
49
|
response_code = (response_options[:response_code] || response_options[:code]).to_i
|
|
@@ -99,21 +101,21 @@ module Datadog
|
|
|
99
101
|
|
|
100
102
|
def datadog_tag_request
|
|
101
103
|
span = @datadog_span
|
|
102
|
-
method =
|
|
103
|
-
if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
|
|
104
|
-
method = @datadog_method.to_s
|
|
105
|
-
end
|
|
104
|
+
method = Ext::NOT_APPLICABLE_METHOD
|
|
105
|
+
method = @datadog_method.to_s if instance_variable_defined?(:@datadog_method) && !@datadog_method.nil?
|
|
106
106
|
span.resource = method
|
|
107
107
|
# Tag as an external peer service
|
|
108
108
|
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
109
109
|
# Set analytics sample rate
|
|
110
110
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
111
111
|
|
|
112
|
-
|
|
113
|
-
|
|
112
|
+
this_uri = uri
|
|
113
|
+
return unless this_uri
|
|
114
|
+
|
|
115
|
+
span.set_tag(Datadog::Ext::HTTP::URL, this_uri.path)
|
|
114
116
|
span.set_tag(Datadog::Ext::HTTP::METHOD, method)
|
|
115
|
-
span.set_tag(Datadog::Ext::NET::TARGET_HOST,
|
|
116
|
-
span.set_tag(Datadog::Ext::NET::TARGET_PORT,
|
|
117
|
+
span.set_tag(Datadog::Ext::NET::TARGET_HOST, this_uri.host)
|
|
118
|
+
span.set_tag(Datadog::Ext::NET::TARGET_PORT, this_uri.port)
|
|
117
119
|
end
|
|
118
120
|
|
|
119
121
|
def set_span_error_message(message)
|
|
@@ -124,7 +126,6 @@ module Datadog
|
|
|
124
126
|
|
|
125
127
|
def uri
|
|
126
128
|
URI.parse(url)
|
|
127
|
-
# rubocop:disable Lint/HandleExceptions
|
|
128
129
|
rescue URI::InvalidURIError
|
|
129
130
|
end
|
|
130
131
|
|
|
@@ -63,6 +63,12 @@ module Datadog
|
|
|
63
63
|
@options
|
|
64
64
|
end
|
|
65
65
|
|
|
66
|
+
# default_options in this case contains our specific middleware options
|
|
67
|
+
# so we want it to take precedence in build_request_options
|
|
68
|
+
def build_request_options!(datum)
|
|
69
|
+
datadog_configuration(datum[:host]).options_hash.merge(@default_options)
|
|
70
|
+
end
|
|
71
|
+
|
|
66
72
|
def initialize(stack)
|
|
67
73
|
super(stack, self.class.options)
|
|
68
74
|
end
|
|
@@ -113,9 +119,7 @@ module Datadog
|
|
|
113
119
|
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
|
|
114
120
|
|
|
115
121
|
# Set analytics sample rate
|
|
116
|
-
if analytics_enabled?
|
|
117
|
-
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
|
118
|
-
end
|
|
122
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
119
123
|
|
|
120
124
|
span.set_tag(Datadog::Ext::HTTP::URL, datum[:path])
|
|
121
125
|
span.set_tag(Datadog::Ext::HTTP::METHOD, datum[:method].to_s.upcase)
|
|
@@ -130,9 +134,7 @@ module Datadog
|
|
|
130
134
|
|
|
131
135
|
if datum.key?(:response)
|
|
132
136
|
response = datum[:response]
|
|
133
|
-
if error_handler.call(response)
|
|
134
|
-
span.set_error(["Error #{response[:status]}", response[:body]])
|
|
135
|
-
end
|
|
137
|
+
span.set_error(["Error #{response[:status]}", response[:body]]) if error_handler.call(response)
|
|
136
138
|
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, response[:status])
|
|
137
139
|
end
|
|
138
140
|
span.set_error(datum[:error]) if datum.key?(:error)
|
|
@@ -149,7 +151,7 @@ module Datadog
|
|
|
149
151
|
end
|
|
150
152
|
|
|
151
153
|
def build_request_options!(datum)
|
|
152
|
-
datadog_configuration(datum[:host]).options_hash
|
|
154
|
+
@default_options.merge(datadog_configuration(datum[:host]).options_hash)
|
|
153
155
|
end
|
|
154
156
|
|
|
155
157
|
def datadog_configuration(host = :default)
|
|
@@ -27,8 +27,27 @@ module Datadog
|
|
|
27
27
|
|
|
28
28
|
# Activate integrations
|
|
29
29
|
if target.respond_to?(:integrations_pending_activation)
|
|
30
|
+
reduce_verbosity = target.respond_to?(:reduce_verbosity?) ? target.reduce_verbosity? : false
|
|
30
31
|
target.integrations_pending_activation.each do |integration|
|
|
31
|
-
|
|
32
|
+
next unless integration.respond_to?(:patch)
|
|
33
|
+
|
|
34
|
+
# integration.patch returns either true or a hash of details on why patching failed
|
|
35
|
+
patch_results = integration.patch
|
|
36
|
+
|
|
37
|
+
next if patch_results == true
|
|
38
|
+
|
|
39
|
+
# if patching failed, only log output if verbosity is unset
|
|
40
|
+
# or if patching failure is due to compatibility or integration specific reasons
|
|
41
|
+
next unless !reduce_verbosity ||
|
|
42
|
+
((patch_results[:available] && patch_results[:loaded]) &&
|
|
43
|
+
(!patch_results[:compatible] || !patch_results[:patchable]))
|
|
44
|
+
|
|
45
|
+
desc = "Available?: #{patch_results[:available]}"
|
|
46
|
+
desc += ", Loaded? #{patch_results[:loaded]}"
|
|
47
|
+
desc += ", Compatible? #{patch_results[:compatible]}"
|
|
48
|
+
desc += ", Patchable? #{patch_results[:patchable]}"
|
|
49
|
+
|
|
50
|
+
Datadog.logger.warn("Unable to patch #{patch_results[:name]} (#{desc})")
|
|
32
51
|
end
|
|
33
52
|
|
|
34
53
|
target.integrations_pending_activation.clear
|
|
@@ -48,9 +67,32 @@ module Datadog
|
|
|
48
67
|
end
|
|
49
68
|
end
|
|
50
69
|
|
|
51
|
-
|
|
70
|
+
# For the provided `integration_name`, resolves a matching configuration
|
|
71
|
+
# for the provided integration from an integration-specific `key`.
|
|
72
|
+
#
|
|
73
|
+
# How the matching is performed is integration-specific.
|
|
74
|
+
#
|
|
75
|
+
# @param [Symbol] integration_name the integration name
|
|
76
|
+
# @param [Object] key the integration-specific lookup key
|
|
77
|
+
# @return [Datadog::Contrib::Configuration::Settings]
|
|
78
|
+
def [](integration_name, key = :default)
|
|
79
|
+
integration = fetch_integration(integration_name)
|
|
80
|
+
integration.resolve(key) unless integration.nil?
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# For the provided `integration_name`, retrieves a configuration previously
|
|
84
|
+
# stored by `#instrument`. Specifically, `describes` should be
|
|
85
|
+
# the same value provided in the `describes:` option for `#instrument`.
|
|
86
|
+
#
|
|
87
|
+
# If no `describes` value is provided, the default configuration is returned.
|
|
88
|
+
#
|
|
89
|
+
# @param [Symbol] integration_name the integration name
|
|
90
|
+
# @param [Object] describes the previously configured `describes:` object. If `nil`,
|
|
91
|
+
# fetches the default configuration
|
|
92
|
+
# @return [Datadog::Contrib::Configuration::Settings]
|
|
93
|
+
def configuration(integration_name, describes = nil)
|
|
52
94
|
integration = fetch_integration(integration_name)
|
|
53
|
-
integration.configuration(
|
|
95
|
+
integration.configuration(describes) unless integration.nil?
|
|
54
96
|
end
|
|
55
97
|
|
|
56
98
|
def instrument(integration_name, options = {}, &block)
|
|
@@ -86,6 +128,14 @@ module Datadog
|
|
|
86
128
|
registry[name] ||
|
|
87
129
|
raise(InvalidIntegrationError, "'#{name}' is not a valid integration.")
|
|
88
130
|
end
|
|
131
|
+
|
|
132
|
+
def reduce_verbosity?
|
|
133
|
+
defined?(@reduce_verbosity) ? @reduce_verbosity : false
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def reduce_log_verbosity
|
|
137
|
+
@reduce_verbosity ||= true
|
|
138
|
+
end
|
|
89
139
|
end
|
|
90
140
|
end
|
|
91
141
|
end
|