ddtrace 0.45.0 → 0.46.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 +4 -4
- data/.circleci/config.yml +79 -0
- data/.rubocop.yml +250 -7
- data/.rubocop_todo.yml +396 -0
- data/Appraisals +15 -0
- data/CHANGELOG.md +68 -1
- data/Gemfile +38 -3
- data/Rakefile +5 -23
- data/ddtrace.gemspec +6 -36
- data/docs/DevelopmentGuide.md +28 -0
- data/docs/GettingStarted.md +8 -9
- 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 +0 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +1 -1
- 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 +2 -3
- data/lib/ddtrace/configuration/settings.rb +17 -3
- data/lib/ddtrace/context.rb +5 -6
- data/lib/ddtrace/context_provider.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_view/event.rb +1 -1
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +17 -5
- data/lib/ddtrace/contrib/active_record/utils.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -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 +1 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
- data/lib/ddtrace/contrib/aws/services.rb +1 -0
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +1 -4
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
- data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +5 -5
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
- data/lib/ddtrace/contrib/extensions.rb +1 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/endpoint.rb +8 -15
- 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 +5 -5
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +2 -3
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +2 -3
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patcher.rb +1 -1
- data/lib/ddtrace/contrib/qless/qless_job.rb +1 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +1 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +1 -1
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/middlewares.rb +5 -10
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -0
- 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/resque_job.rb +2 -0
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/rspec/example.rb +24 -10
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
- data/lib/ddtrace/contrib/rspec/integration.rb +1 -1
- data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +0 -1
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -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 +3 -3
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
- data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
- 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/ci.rb +2 -2
- data/lib/ddtrace/ext/distributed.rb +1 -1
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/runtime.rb +1 -1
- 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 +2 -3
- data/lib/ddtrace/pin.rb +3 -52
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +1 -1
- data/lib/ddtrace/runtime/container.rb +2 -2
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +1 -0
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +7 -10
- data/lib/ddtrace/tracer.rb +1 -1
- data/lib/ddtrace/transport/http.rb +1 -3
- data/lib/ddtrace/transport/http/adapters/net.rb +9 -4
- 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 +2 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/traces.rb +3 -0
- data/lib/ddtrace/utils/time.rb +25 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/version.rb +1 -1
- data/lib/ddtrace/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +8 -0
- data/lib/ddtrace/workers/loop.rb +3 -0
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/trace_writer.rb +9 -10
- data/lib/ddtrace/writer.rb +3 -3
- metadata +133 -400
- 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/contrib/rspec/example_group.rb +0 -61
- data/lib/ddtrace/monkey.rb +0 -58
data/lib/ddtrace/augmentation.rb
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
require 'ddtrace/augmentation/method_wrapper'
|
|
2
|
-
require 'ddtrace/augmentation/method_wrapping'
|
|
3
|
-
require 'ddtrace/augmentation/shim'
|
|
4
|
-
|
|
5
|
-
module Datadog
|
|
6
|
-
# Namespace for components that help modify
|
|
7
|
-
# existing code for instrumentation purposes.
|
|
8
|
-
module Augmentation
|
|
9
|
-
def shim(object, &block)
|
|
10
|
-
Shim.new(object, &block)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
module Datadog
|
|
2
|
-
# Represents an wrapped method, with a reference to the original block
|
|
3
|
-
# and the block that wraps around it.
|
|
4
|
-
class MethodWrapper
|
|
5
|
-
attr_reader \
|
|
6
|
-
:original,
|
|
7
|
-
:wrapper
|
|
8
|
-
|
|
9
|
-
DEFAULT_WRAPPER = proc { |original, *args, &block| original.call(*args, &block) }
|
|
10
|
-
|
|
11
|
-
def initialize(original, &block)
|
|
12
|
-
@original = original
|
|
13
|
-
@wrapper = block_given? ? block : DEFAULT_WRAPPER
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def call(*args, &block)
|
|
17
|
-
wrapper.call(original, *args, &block)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require 'set'
|
|
2
|
-
require 'ddtrace/patcher'
|
|
3
|
-
|
|
4
|
-
module Datadog
|
|
5
|
-
# Shorthands for wrapping methods
|
|
6
|
-
module MethodWrapping
|
|
7
|
-
include Datadog::Patcher
|
|
8
|
-
|
|
9
|
-
def wrapped_methods
|
|
10
|
-
@wrapped_methods ||= Set.new
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
# Adds method block directly to the object.
|
|
14
|
-
# Block is evaluated in the context of the object.
|
|
15
|
-
# Faster than #wrap_method!
|
|
16
|
-
def override_method!(method_name, &block)
|
|
17
|
-
return unless block_given?
|
|
18
|
-
|
|
19
|
-
without_warnings do
|
|
20
|
-
define_singleton_method(method_name, &block).tap do
|
|
21
|
-
wrapped_methods.add(method_name)
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# Adds method wrapper to the object.
|
|
27
|
-
# Block is evaluated in the original context of the block.
|
|
28
|
-
# Slower than #override_method!
|
|
29
|
-
def wrap_method!(original_method, &block)
|
|
30
|
-
return unless block_given?
|
|
31
|
-
original_method = original_method.is_a?(Symbol) ? method(original_method) : original_method
|
|
32
|
-
|
|
33
|
-
override_method!(original_method.name) do |*original_args, &original_block|
|
|
34
|
-
block.call(original_method, *original_args, &original_block)
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
require 'set'
|
|
2
|
-
require 'ddtrace/patcher'
|
|
3
|
-
require 'ddtrace/augmentation/method_wrapping'
|
|
4
|
-
|
|
5
|
-
module Datadog
|
|
6
|
-
# A "stand-in" that intercepts calls to another object. i.e. man-in-the-middle.
|
|
7
|
-
# This shim forwards all methods to object, except those overriden.
|
|
8
|
-
# Useful if you want to intercept inbound behavior to an object without modifying
|
|
9
|
-
# the object in question, especially useful if the overridding behavior shouldn't be global.
|
|
10
|
-
class Shim
|
|
11
|
-
extend Forwardable
|
|
12
|
-
include Datadog::Patcher
|
|
13
|
-
include Datadog::MethodWrapping
|
|
14
|
-
|
|
15
|
-
METHODS = Set[
|
|
16
|
-
:override_method!,
|
|
17
|
-
:shim,
|
|
18
|
-
:shim?,
|
|
19
|
-
:shim_target,
|
|
20
|
-
:wrap_method!,
|
|
21
|
-
:wrapped_methods
|
|
22
|
-
].freeze
|
|
23
|
-
|
|
24
|
-
EXCLUDED_METHODS = Set[
|
|
25
|
-
# For all objects
|
|
26
|
-
:__binding__,
|
|
27
|
-
:__id__,
|
|
28
|
-
:__send__,
|
|
29
|
-
:extend,
|
|
30
|
-
:itself,
|
|
31
|
-
:object_id,
|
|
32
|
-
:respond_to?,
|
|
33
|
-
:tap
|
|
34
|
-
].freeze
|
|
35
|
-
|
|
36
|
-
attr_reader :shim_target, :shim
|
|
37
|
-
|
|
38
|
-
def self.shim?(object)
|
|
39
|
-
# Check whether it responds to #shim? because otherwise the
|
|
40
|
-
# Shim forwards all method calls, including type checks to
|
|
41
|
-
# the wrapped object, to mimimize its intrusion.
|
|
42
|
-
object.respond_to?(:shim?)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Pass this a block to override methods
|
|
46
|
-
def initialize(shim_target)
|
|
47
|
-
@shim = self
|
|
48
|
-
@shim_target = shim_target
|
|
49
|
-
|
|
50
|
-
# Save a reference to the original :define_singleton_method
|
|
51
|
-
# so methods can be defined on the shim after forwarding is applied.
|
|
52
|
-
@definition_method = method(:define_singleton_method)
|
|
53
|
-
|
|
54
|
-
# Wrap any methods
|
|
55
|
-
yield(self) if block_given?
|
|
56
|
-
|
|
57
|
-
# Forward methods
|
|
58
|
-
forwarded_methods = (
|
|
59
|
-
shim_target.public_methods.to_set \
|
|
60
|
-
- METHODS \
|
|
61
|
-
- EXCLUDED_METHODS \
|
|
62
|
-
- wrapped_methods
|
|
63
|
-
)
|
|
64
|
-
forward_methods!(*forwarded_methods)
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def override_method!(method_name, &block)
|
|
68
|
-
return unless block_given?
|
|
69
|
-
|
|
70
|
-
without_warnings do
|
|
71
|
-
@definition_method.call(method_name, &block).tap do
|
|
72
|
-
wrapped_methods.add(method_name)
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def wrap_method!(method_name, &block)
|
|
78
|
-
super(shim_target.method(method_name), &block)
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
def shim?
|
|
82
|
-
true
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def respond_to?(method_name)
|
|
86
|
-
return true if METHODS.include?(method_name)
|
|
87
|
-
shim_target.respond_to?(method_name)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
private
|
|
91
|
-
|
|
92
|
-
def forward_methods!(*forwarded_methods)
|
|
93
|
-
return if forwarded_methods.empty?
|
|
94
|
-
|
|
95
|
-
singleton_class.send(
|
|
96
|
-
:def_delegators,
|
|
97
|
-
:@shim_target,
|
|
98
|
-
*forwarded_methods
|
|
99
|
-
)
|
|
100
|
-
end
|
|
101
|
-
end
|
|
102
|
-
end
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
module Datadog
|
|
2
|
-
module Contrib
|
|
3
|
-
module RSpec
|
|
4
|
-
# Instrument RSpec::Core::ExampleGroup
|
|
5
|
-
module ExampleGroup
|
|
6
|
-
def self.included(base)
|
|
7
|
-
base.singleton_class.send(:prepend, ClassMethods)
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
# Class methods for configuration
|
|
11
|
-
module ClassMethods
|
|
12
|
-
def run(reporter = ::RSpec::Core::NullReporter)
|
|
13
|
-
configuration = Datadog.configuration[:rspec]
|
|
14
|
-
return super unless configuration[:enabled]
|
|
15
|
-
|
|
16
|
-
trace_options = {
|
|
17
|
-
app: Ext::APP,
|
|
18
|
-
resource: description,
|
|
19
|
-
service: configuration[:service_name],
|
|
20
|
-
span_type: Datadog::Ext::AppTypes::TEST,
|
|
21
|
-
tags: tags.merge(Datadog.configuration.tags)
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
configuration[:tracer].trace(Ext::EXAMPLE_GROUP_OPERATION_NAME, trace_options) do |span|
|
|
25
|
-
span.set_tag(Datadog::Ext::Test::TAG_FRAMEWORK, Ext::FRAMEWORK)
|
|
26
|
-
span.set_tag(Datadog::Ext::Test::TAG_NAME, description)
|
|
27
|
-
span.set_tag(Datadog::Ext::Test::TAG_SUITE, file_path)
|
|
28
|
-
span.set_tag(Datadog::Ext::Test::TAG_TYPE, Ext::TEST_TYPE)
|
|
29
|
-
span.set_tag(Datadog::Ext::Test::TAG_SPAN_KIND, Datadog::Ext::AppTypes::TEST)
|
|
30
|
-
|
|
31
|
-
# Set analytics sample rate
|
|
32
|
-
if Datadog::Contrib::Analytics.enabled?(configuration[:analytics_enabled])
|
|
33
|
-
Datadog::Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Measure service stats
|
|
37
|
-
Contrib::Analytics.set_measured(span)
|
|
38
|
-
|
|
39
|
-
result = super
|
|
40
|
-
|
|
41
|
-
if ::RSpec.world.wants_to_quit
|
|
42
|
-
span.status = 1
|
|
43
|
-
span.set_tag(Datadog::Ext::Test::TAG_STATUS, Datadog::Ext::Test::Status::FAIL)
|
|
44
|
-
else
|
|
45
|
-
span.set_tag(Datadog::Ext::Test::TAG_STATUS, Datadog::Ext::Test::Status::PASS)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
result
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
private
|
|
53
|
-
|
|
54
|
-
def tags
|
|
55
|
-
@tags ||= Datadog::Ext::CI.tags(ENV)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
end
|
data/lib/ddtrace/monkey.rb
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
module Datadog
|
|
2
|
-
# TODO: Remove me!
|
|
3
|
-
# Monkey was used for monkey-patching 3rd party libs.
|
|
4
|
-
# It is now DEPRECATED. This API is no-op, and serves only to warn
|
|
5
|
-
# of its deactivation.
|
|
6
|
-
module Monkey
|
|
7
|
-
@registry = Datadog.registry
|
|
8
|
-
|
|
9
|
-
DEPRECATION_WARNING = %(
|
|
10
|
-
Datadog::Monkey has been REMOVED as of version 0.11.1.
|
|
11
|
-
All calls to Datadog::Monkey are no-ops.
|
|
12
|
-
*Implementations using Monkey will no longer function*.
|
|
13
|
-
Upgrade to the new configuration API using the migration guide here:
|
|
14
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
15
|
-
|
|
16
|
-
module_function
|
|
17
|
-
|
|
18
|
-
def registry
|
|
19
|
-
log_deprecation_warning('Monkey#registry')
|
|
20
|
-
@registry
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def autopatch_modules
|
|
24
|
-
log_deprecation_warning('Monkey#autopatch_modules')
|
|
25
|
-
{}
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def patch_all
|
|
29
|
-
log_deprecation_warning('Monkey#patch_all')
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def patch_module(m)
|
|
33
|
-
log_deprecation_warning('Monkey#patch_module')
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def patch(modules)
|
|
37
|
-
log_deprecation_warning('Monkey#patch')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def get_patched_modules
|
|
41
|
-
log_deprecation_warning('Monkey#get_patched_modules')
|
|
42
|
-
{}
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def without_warnings(&block)
|
|
46
|
-
log_deprecation_warning('Monkey#without_warnings')
|
|
47
|
-
Datadog::Patcher.without_warnings(&block)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
def log_deprecation_warning(method)
|
|
51
|
-
Datadog.logger.warn("#{method}:#{DEPRECATION_WARNING}")
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
class << self
|
|
55
|
-
attr_writer :registry
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|