From f5320cca68f5207de8c39d20fb1755bcb0ef6860 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 21 Dec 2023 15:21:00 +0100 Subject: [PATCH 01/35] Add crude span for Rails routing --- lib/datadog/tracing/contrib/rails/ext.rb | 2 ++ lib/datadog/tracing/contrib/rails/patcher.rb | 29 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/lib/datadog/tracing/contrib/rails/ext.rb b/lib/datadog/tracing/contrib/rails/ext.rb index 3149c54be10..5d9a4862e5c 100644 --- a/lib/datadog/tracing/contrib/rails/ext.rb +++ b/lib/datadog/tracing/contrib/rails/ext.rb @@ -12,6 +12,8 @@ module Ext ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED' ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE' ENV_DISABLE = 'DISABLE_DATADOG_RAILS' + SPAN_ROUTE = 'rails.route' + TAG_ROUTE_PATH = 'rails.route.path' end end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d5837adf171..1054e7cc42b 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -5,11 +5,38 @@ require_relative 'middlewares' require_relative 'utils' require_relative '../semantic_logger/patcher' +require_relative 'ext' module Datadog module Tracing module Contrib module Rails + module JourneyRouterPatch + def find_routes(*) + result = nil + configuration = Datadog.configuration.tracing[:rails] + + Tracing.trace( + Ext::SPAN_ROUTE, + service: configuration[:service_name], + span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, + # resource: "#{request.request_method} #{datadog_route}", + ) do |span, trace| + binding.pry + + result = super + + binding.pry + + datadog_route = result.first[2].path.spec.to_s + + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + end + + result + end + end + # Patcher enables patching of 'rails' module. module Patcher include Contrib::Patcher @@ -41,6 +68,8 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) + Rails::LogInjection.configure_log_tags(app.config) end end From 1a1909c91a38513fe4fc961921058fe0d6a1e80c Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 21 Dec 2023 17:50:31 +0100 Subject: [PATCH 02/35] Move span creation to Routing::RouteSet --- lib/datadog/tracing/contrib/rails/patcher.rb | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 1054e7cc42b..d9b3418606a 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,9 +11,10 @@ module Datadog module Tracing module Contrib module Rails - module JourneyRouterPatch - def find_routes(*) + module RoutingRouteSetPatch + def call(*) result = nil + configuration = Datadog.configuration.tracing[:rails] Tracing.trace( @@ -22,12 +23,18 @@ def find_routes(*) span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, # resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| - binding.pry - result = super + end - binding.pry + result + end + end + + module JourneyRouterPatch + def find_routes(*) + result = super + if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) @@ -68,6 +75,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + ActionDispatch::Routing::RouteSet.prepend(RoutingRouteSetPatch) ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) From 047e41a708c4da109b7897ccabba9d8511c08218 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 27 Dec 2023 14:32:53 -0500 Subject: [PATCH 03/35] added routes to sinatra/grape and fixes up rails --- lib/datadog/tracing/contrib/grape/endpoint.rb | 8 ++++++++ lib/datadog/tracing/contrib/rails/ext.rb | 2 ++ lib/datadog/tracing/contrib/rails/patcher.rb | 10 ++++++++-- lib/datadog/tracing/contrib/sinatra/env.rb | 1 - lib/datadog/tracing/contrib/sinatra/tracer.rb | 3 +++ lib/datadog/tracing/metadata/ext.rb | 1 + sig/datadog/tracing/metadata/ext.rbs | 1 + 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 3231b853074..a6233fe291f 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -101,6 +101,9 @@ def endpoint_run(name, start, finish, id, payload) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) + + # TEMP REMOVE ONCE SENT TO RACK // ENSURE APPLICATION ROOT IS PREPENDED IN RACK VIA URL# + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, extract_root(endpoint.env['REQUEST_URI'], path)) ensure span.start(start) span.finish(finish) @@ -192,6 +195,11 @@ def endpoint_run_filters(name, start, finish, id, payload) private + def extract_root(url, path) + parts = path.split('/').reject(&:empty?) + root = url.slice(0, url.index(parts.first)) + parts.join('/').prepend(root) + end def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rails/ext.rb b/lib/datadog/tracing/contrib/rails/ext.rb index 5d9a4862e5c..8da924e939c 100644 --- a/lib/datadog/tracing/contrib/rails/ext.rb +++ b/lib/datadog/tracing/contrib/rails/ext.rb @@ -14,6 +14,8 @@ module Ext ENV_DISABLE = 'DISABLE_DATADOG_RAILS' SPAN_ROUTE = 'rails.route' TAG_ROUTE_PATH = 'rails.route.path' + TAG_COMPONENT = 'rails' + TAG_OPERATION_ROUTING = 'routing' end end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d9b3418606a..52a4ae922d0 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -21,7 +21,6 @@ def call(*) Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - # resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| result = super end @@ -37,7 +36,14 @@ def find_routes(*) if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.resource = "#{datadog_route}" + + # TEMP REMOVE ONCE SENT TO RACK # + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + + span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) + span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) + end result diff --git a/lib/datadog/tracing/contrib/sinatra/env.rb b/lib/datadog/tracing/contrib/sinatra/env.rb index 5b8766f8927..f839f5c6ea1 100644 --- a/lib/datadog/tracing/contrib/sinatra/env.rb +++ b/lib/datadog/tracing/contrib/sinatra/env.rb @@ -21,7 +21,6 @@ def set_datadog_span(env, span) def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names]) return unless env['sinatra.route'] - _, path = env['sinatra.route'].split(' ', 2) if use_script_names env['SCRIPT_NAME'].to_s + path diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 5b52e7649e7..1a93b1b783a 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -65,6 +65,9 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) + # TEMP REMOVE ONCE SENT TO RACK # + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + trace.resource = span.resource sinatra_request_span = Sinatra::Env.datadog_span(env) diff --git a/lib/datadog/tracing/metadata/ext.rb b/lib/datadog/tracing/metadata/ext.rb index e8d2a6f0ed2..3ea239a2c87 100644 --- a/lib/datadog/tracing/metadata/ext.rb +++ b/lib/datadog/tracing/metadata/ext.rb @@ -86,6 +86,7 @@ module HTTP TYPE_TEMPLATE = 'template' TAG_CLIENT_IP = 'http.client_ip' HEADER_USER_AGENT = 'User-Agent' + TAG_ROUTE = 'http.route' # General header functionality module Headers diff --git a/sig/datadog/tracing/metadata/ext.rbs b/sig/datadog/tracing/metadata/ext.rbs index aeca3b827a1..ed4d78e2d2d 100644 --- a/sig/datadog/tracing/metadata/ext.rbs +++ b/sig/datadog/tracing/metadata/ext.rbs @@ -42,6 +42,7 @@ module Datadog ERROR_RANGE: ::Range[::Integer] TAG_BASE_URL: ::String TAG_METHOD: ::String + TAG_ROUTE: String TAG_STATUS_CODE: ::String TAG_USER_AGENT: ::String TAG_URL: ::String From 52246bca82dd5b4956bc6de614ecba00e2907dc1 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 27 Dec 2023 15:14:41 -0500 Subject: [PATCH 04/35] linter fixes --- lib/datadog/tracing/contrib/grape/endpoint.rb | 1 + lib/datadog/tracing/contrib/rails/patcher.rb | 12 ++++++------ lib/datadog/tracing/contrib/sinatra/env.rb | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index a6233fe291f..7e7e40ae8c5 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -200,6 +200,7 @@ def extract_root(url, path) root = url.slice(0, url.index(parts.first)) parts.join('/').prepend(root) end + def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 52a4ae922d0..bcec35d57c2 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,6 +11,7 @@ module Datadog module Tracing module Contrib module Rails + # Patcher to begin span on Rails routing module RoutingRouteSetPatch def call(*) result = nil @@ -21,7 +22,9 @@ def call(*) Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - ) do |span, trace| + ) do |span| + span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) + span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) result = super end @@ -29,6 +32,7 @@ def call(*) end end + # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch def find_routes(*) result = super @@ -36,14 +40,10 @@ def find_routes(*) if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s - span.resource = "#{datadog_route}" + span.resource = datadog_route.to_s # TEMP REMOVE ONCE SENT TO RACK # span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) - - span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) - span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) - end result diff --git a/lib/datadog/tracing/contrib/sinatra/env.rb b/lib/datadog/tracing/contrib/sinatra/env.rb index f839f5c6ea1..5b8766f8927 100644 --- a/lib/datadog/tracing/contrib/sinatra/env.rb +++ b/lib/datadog/tracing/contrib/sinatra/env.rb @@ -21,6 +21,7 @@ def set_datadog_span(env, span) def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names]) return unless env['sinatra.route'] + _, path = env['sinatra.route'].split(' ', 2) if use_script_names env['SCRIPT_NAME'].to_s + path From 00cf5af49c6a01188cfe2630403c6cb7d2173d57 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Wed, 10 Jan 2024 14:04:24 +0100 Subject: [PATCH 05/35] Handle all sorts of nesting --- lib/datadog/tracing/contrib/grape/endpoint.rb | 24 ++++++++++-------- .../tracing/contrib/rack/middlewares.rb | 25 +++++++++++++++++++ lib/datadog/tracing/contrib/rails/patcher.rb | 20 ++++++++++----- lib/datadog/tracing/contrib/sinatra/tracer.rb | 10 ++++++-- 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 7e7e40ae8c5..87b8513e149 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,16 +94,26 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) + # TODO: pick one, but Rails has only the first one, and I feel like it makes the most sense + + # this one has (.json) + datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + # this one does not have (.json) + datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :grape should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], endpoint.env['PATH_INFO'], datadog_route] + # override the current span with this notification values span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil? - span.set_tag(Ext::TAG_ROUTE_PATH, path) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) span.set_tag(Ext::TAG_ROUTE_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) - - # TEMP REMOVE ONCE SENT TO RACK // ENSURE APPLICATION ROOT IS PREPENDED IN RACK VIA URL# - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, extract_root(endpoint.env['REQUEST_URI'], path)) ensure span.start(start) span.finish(finish) @@ -195,12 +205,6 @@ def endpoint_run_filters(name, start, finish, id, payload) private - def extract_root(url, path) - parts = path.split('/').reject(&:empty?) - root = url.slice(0, url.index(parts.first)) - parts.join('/').prepend(root) - end - def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 3784f5ed210..036a8829adb 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -93,6 +93,7 @@ def call(env) request_span.resource = nil request_trace = Tracing.active_trace env[Ext::RACK_ENV_REQUEST_SPAN] = request_span + Thread.current[:datadog_http_routing] = [] # Copy the original env, before the rest of the stack executes. # Values may change; we want values before that happens. @@ -100,6 +101,30 @@ def call(env) # call the rest of the stack status, headers, response = @app.call(env) + + # TODO: might be wrong if say rails routed to sinatra but sinatra + # fails to find a route, so I dumbly checked for 404? + if status != 404 && (routed = Thread.current[:datadog_http_routing].last) + # TODO: array == bad, this should be a Struct + last_script_name = routed[1] + last_route = routed[3] + # TODO: probably should get HTTP method from route resolvers as well + + # TODO: I seem to have gathered that in some (all?) cases this + # should be nil when no route is found, which woudl cater for the + # note above + if last_route + # TODO: concatenate better? (according to spec I think it's fine /-wise) + composite_route = last_script_name + last_route + composite_path = last_script_name + last_route + + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) + + # TODO: should it be composite_route? + request_span.resource = env['REQUEST_METHOD'] + ' ' + composite_path + end + end + [status, headers, response] # rubocop:disable Lint/RescueException diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index bcec35d57c2..42ab3bc5024 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -13,7 +13,7 @@ module Contrib module Rails # Patcher to begin span on Rails routing module RoutingRouteSetPatch - def call(*) + def call(*args, **kwargs) result = nil configuration = Datadog.configuration.tracing[:rails] @@ -34,16 +34,24 @@ def call(*) # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch - def find_routes(*) + def find_routes(*args, **kwargs) result = super - if (span = Datadog::Tracing.active_span) - datadog_route = result.first[2].path.spec.to_s + if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) + if result.any? + datadog_route = result.first[2].path.spec.to_s + end + + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :rails should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], args.first.env['PATH_INFO'], datadog_route] span.resource = datadog_route.to_s - # TEMP REMOVE ONCE SENT TO RACK # - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) end result diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 1a93b1b783a..29aba355d7f 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -49,6 +49,10 @@ def route_eval datadog_route = Sinatra::Env.route_path(env) + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :sinatra should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], env['PATH_INFO'], datadog_route] + Tracing.trace( Ext::SPAN_ROUTE, service: configuration[:service_name], @@ -65,8 +69,10 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) - # TEMP REMOVE ONCE SENT TO RACK # - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) trace.resource = span.resource From 737b9ecd51e4282a7cf9ca1a2d8990a15b9d537d Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 10 Jan 2024 15:46:15 -0500 Subject: [PATCH 06/35] cleaned up and addressed most todos --- lib/datadog/tracing/contrib/grape/endpoint.rb | 16 +++------------- lib/datadog/tracing/contrib/rack/middlewares.rb | 9 +-------- lib/datadog/tracing/contrib/rails/patcher.rb | 16 +++------------- lib/datadog/tracing/contrib/sinatra/tracer.rb | 16 ++++------------ 4 files changed, 11 insertions(+), 46 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 87b8513e149..02ed99eafb7 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,22 +94,12 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) - # TODO: pick one, but Rails has only the first one, and I feel like it makes the most sense - - # this one has (.json) - datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.path - # this one does not have (.json) - datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :grape should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], endpoint.env['PATH_INFO'], datadog_route] + integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] # override the current span with this notification values span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil? - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.set_tag(Ext::TAG_ROUTE_PATH, path) span.set_tag(Ext::TAG_ROUTE_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 036a8829adb..2f15c34c679 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -107,21 +107,14 @@ def call(env) if status != 404 && (routed = Thread.current[:datadog_http_routing].last) # TODO: array == bad, this should be a Struct last_script_name = routed[1] - last_route = routed[3] - # TODO: probably should get HTTP method from route resolvers as well + last_route = routed[2] # TODO: I seem to have gathered that in some (all?) cases this # should be nil when no route is found, which woudl cater for the # note above if last_route - # TODO: concatenate better? (according to spec I think it's fine /-wise) composite_route = last_script_name + last_route - composite_path = last_script_name + last_route - request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) - - # TODO: should it be composite_route? - request_span.resource = env['REQUEST_METHOD'] + ' ' + composite_path end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 42ab3bc5024..d942c35d167 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -38,20 +38,10 @@ def find_routes(*args, **kwargs) result = super if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) - if result.any? - datadog_route = result.first[2].path.spec.to_s - end + integration_route = result.first[2].path.spec.to_s if result.any? - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :rails should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], args.first.env['PATH_INFO'], datadog_route] - - span.resource = datadog_route.to_s - - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] + span.resource = "#{args.first.env['REQUEST_METHOD']} #{integration_route}" end result diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 29aba355d7f..a8d16ce9e02 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -47,20 +47,17 @@ def route_eval configuration = Datadog.configuration.tracing[:sinatra] return super unless Tracing.enabled? - datadog_route = Sinatra::Env.route_path(env) - - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :sinatra should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], env['PATH_INFO'], datadog_route] + integration_route = Sinatra::Env.route_path(env) + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] Tracing.trace( Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - resource: "#{request.request_method} #{datadog_route}", + resource: "#{request.request_method} #{integration_route}", ) do |span, trace| span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.set_tag(Ext::TAG_ROUTE_PATH, integration_route) if request.script_name && !request.script_name.empty? span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name) @@ -69,11 +66,6 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) - trace.resource = span.resource sinatra_request_span = Sinatra::Env.datadog_span(env) From 2d9676a68199fd14927f9872d6336b386f70b520 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 11 Jan 2024 12:18:46 -0500 Subject: [PATCH 07/35] removes unnecessary rails tracing --- lib/datadog/tracing/contrib/rails/patcher.rb | 32 ++------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d942c35d167..31a9f5c074d 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,39 +11,12 @@ module Datadog module Tracing module Contrib module Rails - # Patcher to begin span on Rails routing - module RoutingRouteSetPatch - def call(*args, **kwargs) - result = nil - - configuration = Datadog.configuration.tracing[:rails] - - Tracing.trace( - Ext::SPAN_ROUTE, - service: configuration[:service_name], - span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - ) do |span| - span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) - span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) - result = super - end - - result - end - end - # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch def find_routes(*args, **kwargs) result = super - - if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) - integration_route = result.first[2].path.spec.to_s if result.any? - - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] - span.resource = "#{args.first.env['REQUEST_METHOD']} #{integration_route}" - end - + integration_route = result.first[2].path.spec.to_s if result.any? + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] result end end @@ -79,7 +52,6 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - ActionDispatch::Routing::RouteSet.prepend(RoutingRouteSetPatch) ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) From db033da687ecbd4c569ec767b04e65145bc5168e Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 11 Jan 2024 15:31:02 -0500 Subject: [PATCH 08/35] adds tracing to rack requests and basic testing --- lib/datadog/tracing/contrib/grape/endpoint.rb | 2 +- .../tracing/contrib/rack/middlewares.rb | 20 ++++++++----------- lib/datadog/tracing/contrib/rails/patcher.rb | 3 ++- .../tracing/contrib/rails/rack_spec.rb | 4 ++++ 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 02ed99eafb7..fa19b4d9c67 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,7 +94,7 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) - integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] # override the current span with this notification values diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 2f15c34c679..9c57ea59fc0 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -65,6 +65,9 @@ def compute_queue_time(env) end end + # rubocop:disable Metrics/CyclomaticComplexity + # rubocop:disable Metrics/PerceivedComplexity + # rubocop:disable Metrics/MethodLength def call(env) # Find out if this is rack within rack previous_request_span = env[Ext::RACK_ENV_REQUEST_SPAN] @@ -102,20 +105,16 @@ def call(env) # call the rest of the stack status, headers, response = @app.call(env) - # TODO: might be wrong if say rails routed to sinatra but sinatra - # fails to find a route, so I dumbly checked for 404? if status != 404 && (routed = Thread.current[:datadog_http_routing].last) - # TODO: array == bad, this should be a Struct last_script_name = routed[1] last_route = routed[2] - # TODO: I seem to have gathered that in some (all?) cases this - # should be nil when no route is found, which woudl cater for the - # note above - if last_route - composite_route = last_script_name + last_route - request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) + if last_script_name == '' && env['SCRIPT_NAME'] != '' + last_route = last_script_name + last_script_name = env['PATH_INFO'] end + + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) if last_route end [status, headers, response] @@ -154,9 +153,6 @@ def call(env) # rubocop:enable Lint/RescueException # rubocop:disable Metrics/AbcSize - # rubocop:disable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/PerceivedComplexity - # rubocop:disable Metrics/MethodLength def set_request_tags!(trace, request_span, env, status, headers, response, original_env) request_header_collection = Header::RequestHeaderCollection.new(env) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 31a9f5c074d..5ae3837508d 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -15,7 +15,7 @@ module Rails module JourneyRouterPatch def find_routes(*args, **kwargs) result = super - integration_route = result.first[2].path.spec.to_s if result.any? + integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any? Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] result end @@ -52,6 +52,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + # Check rails version if this works ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index 19c3b687e9f..18496f90caa 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -144,6 +144,7 @@ def internal_server_error expect(request_span.service).to eq(tracer.default_service) expect(request_span.resource).to eq('TestController#full') expect(request_span.get_tag('http.url')).to eq('/full') + expect(request_span.get_tag('http.route')).to eq('/full') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('200') expect(request_span).to be_measured @@ -379,6 +380,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#error') expect(request_span.get_tag('http.url')).to eq('/error') + expect(request_span.get_tag('http.route')).to eq('/error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error @@ -414,6 +416,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#soft_error') expect(request_span.get_tag('http.url')).to eq('/soft_error') + expect(request_span.get_tag('http.route')).to eq('/soft_error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('520') expect(request_span).to have_error @@ -449,6 +452,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#sub_error') expect(request_span.get_tag('http.url')).to eq('/sub_error') + expect(request_span.get_tag('http.route')).to eq('/sub_error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error From d3dfe3239c1bcc7aaf8da26bc51969f4ac7985fd Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 21 Dec 2023 15:21:00 +0100 Subject: [PATCH 09/35] Add crude span for Rails routing --- lib/datadog/tracing/contrib/rails/ext.rb | 2 ++ lib/datadog/tracing/contrib/rails/patcher.rb | 29 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/lib/datadog/tracing/contrib/rails/ext.rb b/lib/datadog/tracing/contrib/rails/ext.rb index 3149c54be10..5d9a4862e5c 100644 --- a/lib/datadog/tracing/contrib/rails/ext.rb +++ b/lib/datadog/tracing/contrib/rails/ext.rb @@ -12,6 +12,8 @@ module Ext ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED' ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE' ENV_DISABLE = 'DISABLE_DATADOG_RAILS' + SPAN_ROUTE = 'rails.route' + TAG_ROUTE_PATH = 'rails.route.path' end end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d5837adf171..1054e7cc42b 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -5,11 +5,38 @@ require_relative 'middlewares' require_relative 'utils' require_relative '../semantic_logger/patcher' +require_relative 'ext' module Datadog module Tracing module Contrib module Rails + module JourneyRouterPatch + def find_routes(*) + result = nil + configuration = Datadog.configuration.tracing[:rails] + + Tracing.trace( + Ext::SPAN_ROUTE, + service: configuration[:service_name], + span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, + # resource: "#{request.request_method} #{datadog_route}", + ) do |span, trace| + binding.pry + + result = super + + binding.pry + + datadog_route = result.first[2].path.spec.to_s + + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + end + + result + end + end + # Patcher enables patching of 'rails' module. module Patcher include Contrib::Patcher @@ -41,6 +68,8 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) + Rails::LogInjection.configure_log_tags(app.config) end end From 2a26d9c95519688957c837730ad9c0b790a65bbe Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Thu, 21 Dec 2023 17:50:31 +0100 Subject: [PATCH 10/35] Move span creation to Routing::RouteSet --- lib/datadog/tracing/contrib/rails/patcher.rb | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 1054e7cc42b..d9b3418606a 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,9 +11,10 @@ module Datadog module Tracing module Contrib module Rails - module JourneyRouterPatch - def find_routes(*) + module RoutingRouteSetPatch + def call(*) result = nil + configuration = Datadog.configuration.tracing[:rails] Tracing.trace( @@ -22,12 +23,18 @@ def find_routes(*) span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, # resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| - binding.pry - result = super + end - binding.pry + result + end + end + + module JourneyRouterPatch + def find_routes(*) + result = super + if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) @@ -68,6 +75,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + ActionDispatch::Routing::RouteSet.prepend(RoutingRouteSetPatch) ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) From 8e3973340d54ac68bb35dd317403406079517504 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 27 Dec 2023 14:32:53 -0500 Subject: [PATCH 11/35] added routes to sinatra/grape and fixes up rails --- lib/datadog/tracing/contrib/grape/endpoint.rb | 8 ++++++++ lib/datadog/tracing/contrib/rails/ext.rb | 2 ++ lib/datadog/tracing/contrib/rails/patcher.rb | 10 ++++++++-- lib/datadog/tracing/contrib/sinatra/env.rb | 1 - lib/datadog/tracing/contrib/sinatra/tracer.rb | 3 +++ lib/datadog/tracing/metadata/ext.rb | 1 + sig/datadog/tracing/metadata/ext.rbs | 1 + 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 3231b853074..a6233fe291f 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -101,6 +101,9 @@ def endpoint_run(name, start, finish, id, payload) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) + + # TEMP REMOVE ONCE SENT TO RACK // ENSURE APPLICATION ROOT IS PREPENDED IN RACK VIA URL# + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, extract_root(endpoint.env['REQUEST_URI'], path)) ensure span.start(start) span.finish(finish) @@ -192,6 +195,11 @@ def endpoint_run_filters(name, start, finish, id, payload) private + def extract_root(url, path) + parts = path.split('/').reject(&:empty?) + root = url.slice(0, url.index(parts.first)) + parts.join('/').prepend(root) + end def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rails/ext.rb b/lib/datadog/tracing/contrib/rails/ext.rb index 5d9a4862e5c..8da924e939c 100644 --- a/lib/datadog/tracing/contrib/rails/ext.rb +++ b/lib/datadog/tracing/contrib/rails/ext.rb @@ -14,6 +14,8 @@ module Ext ENV_DISABLE = 'DISABLE_DATADOG_RAILS' SPAN_ROUTE = 'rails.route' TAG_ROUTE_PATH = 'rails.route.path' + TAG_COMPONENT = 'rails' + TAG_OPERATION_ROUTING = 'routing' end end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d9b3418606a..52a4ae922d0 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -21,7 +21,6 @@ def call(*) Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - # resource: "#{request.request_method} #{datadog_route}", ) do |span, trace| result = super end @@ -37,7 +36,14 @@ def find_routes(*) if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.resource = "#{datadog_route}" + + # TEMP REMOVE ONCE SENT TO RACK # + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + + span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) + span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) + end result diff --git a/lib/datadog/tracing/contrib/sinatra/env.rb b/lib/datadog/tracing/contrib/sinatra/env.rb index 5b8766f8927..f839f5c6ea1 100644 --- a/lib/datadog/tracing/contrib/sinatra/env.rb +++ b/lib/datadog/tracing/contrib/sinatra/env.rb @@ -21,7 +21,6 @@ def set_datadog_span(env, span) def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names]) return unless env['sinatra.route'] - _, path = env['sinatra.route'].split(' ', 2) if use_script_names env['SCRIPT_NAME'].to_s + path diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 5b52e7649e7..1a93b1b783a 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -65,6 +65,9 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) + # TEMP REMOVE ONCE SENT TO RACK # + span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + trace.resource = span.resource sinatra_request_span = Sinatra::Env.datadog_span(env) diff --git a/lib/datadog/tracing/metadata/ext.rb b/lib/datadog/tracing/metadata/ext.rb index e8d2a6f0ed2..3ea239a2c87 100644 --- a/lib/datadog/tracing/metadata/ext.rb +++ b/lib/datadog/tracing/metadata/ext.rb @@ -86,6 +86,7 @@ module HTTP TYPE_TEMPLATE = 'template' TAG_CLIENT_IP = 'http.client_ip' HEADER_USER_AGENT = 'User-Agent' + TAG_ROUTE = 'http.route' # General header functionality module Headers diff --git a/sig/datadog/tracing/metadata/ext.rbs b/sig/datadog/tracing/metadata/ext.rbs index aeca3b827a1..ed4d78e2d2d 100644 --- a/sig/datadog/tracing/metadata/ext.rbs +++ b/sig/datadog/tracing/metadata/ext.rbs @@ -42,6 +42,7 @@ module Datadog ERROR_RANGE: ::Range[::Integer] TAG_BASE_URL: ::String TAG_METHOD: ::String + TAG_ROUTE: String TAG_STATUS_CODE: ::String TAG_USER_AGENT: ::String TAG_URL: ::String From 02761bb76b6352849cf52d76af05646fca4dd543 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 27 Dec 2023 15:14:41 -0500 Subject: [PATCH 12/35] linter fixes --- lib/datadog/tracing/contrib/grape/endpoint.rb | 1 + lib/datadog/tracing/contrib/rails/patcher.rb | 12 ++++++------ lib/datadog/tracing/contrib/sinatra/env.rb | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index a6233fe291f..7e7e40ae8c5 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -200,6 +200,7 @@ def extract_root(url, path) root = url.slice(0, url.index(parts.first)) parts.join('/').prepend(root) end + def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 52a4ae922d0..bcec35d57c2 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,6 +11,7 @@ module Datadog module Tracing module Contrib module Rails + # Patcher to begin span on Rails routing module RoutingRouteSetPatch def call(*) result = nil @@ -21,7 +22,9 @@ def call(*) Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - ) do |span, trace| + ) do |span| + span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) + span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) result = super end @@ -29,6 +32,7 @@ def call(*) end end + # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch def find_routes(*) result = super @@ -36,14 +40,10 @@ def find_routes(*) if (span = Datadog::Tracing.active_span) datadog_route = result.first[2].path.spec.to_s - span.resource = "#{datadog_route}" + span.resource = datadog_route.to_s # TEMP REMOVE ONCE SENT TO RACK # span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) - - span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) - span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) - end result diff --git a/lib/datadog/tracing/contrib/sinatra/env.rb b/lib/datadog/tracing/contrib/sinatra/env.rb index f839f5c6ea1..5b8766f8927 100644 --- a/lib/datadog/tracing/contrib/sinatra/env.rb +++ b/lib/datadog/tracing/contrib/sinatra/env.rb @@ -21,6 +21,7 @@ def set_datadog_span(env, span) def route_path(env, use_script_names: Datadog.configuration.tracing[:sinatra][:resource_script_names]) return unless env['sinatra.route'] + _, path = env['sinatra.route'].split(' ', 2) if use_script_names env['SCRIPT_NAME'].to_s + path From 016df1141e65b07babf1a77aaf00a7ebff245f50 Mon Sep 17 00:00:00 2001 From: Loic Nageleisen Date: Wed, 10 Jan 2024 14:04:24 +0100 Subject: [PATCH 13/35] Handle all sorts of nesting --- lib/datadog/tracing/contrib/grape/endpoint.rb | 24 ++++++++++-------- .../tracing/contrib/rack/middlewares.rb | 25 +++++++++++++++++++ lib/datadog/tracing/contrib/rails/patcher.rb | 20 ++++++++++----- lib/datadog/tracing/contrib/sinatra/tracer.rb | 10 ++++++-- 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 7e7e40ae8c5..87b8513e149 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,16 +94,26 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) + # TODO: pick one, but Rails has only the first one, and I feel like it makes the most sense + + # this one has (.json) + datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + # this one does not have (.json) + datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :grape should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], endpoint.env['PATH_INFO'], datadog_route] + # override the current span with this notification values span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil? - span.set_tag(Ext::TAG_ROUTE_PATH, path) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) span.set_tag(Ext::TAG_ROUTE_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) - - # TEMP REMOVE ONCE SENT TO RACK // ENSURE APPLICATION ROOT IS PREPENDED IN RACK VIA URL# - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, extract_root(endpoint.env['REQUEST_URI'], path)) ensure span.start(start) span.finish(finish) @@ -195,12 +205,6 @@ def endpoint_run_filters(name, start, finish, id, payload) private - def extract_root(url, path) - parts = path.split('/').reject(&:empty?) - root = url.slice(0, url.index(parts.first)) - parts.join('/').prepend(root) - end - def api_view(api) # If the API inherits from Grape::API in version >= 1.2.0 # then the API will be an instance and the name must be derived from the base. diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 3784f5ed210..036a8829adb 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -93,6 +93,7 @@ def call(env) request_span.resource = nil request_trace = Tracing.active_trace env[Ext::RACK_ENV_REQUEST_SPAN] = request_span + Thread.current[:datadog_http_routing] = [] # Copy the original env, before the rest of the stack executes. # Values may change; we want values before that happens. @@ -100,6 +101,30 @@ def call(env) # call the rest of the stack status, headers, response = @app.call(env) + + # TODO: might be wrong if say rails routed to sinatra but sinatra + # fails to find a route, so I dumbly checked for 404? + if status != 404 && (routed = Thread.current[:datadog_http_routing].last) + # TODO: array == bad, this should be a Struct + last_script_name = routed[1] + last_route = routed[3] + # TODO: probably should get HTTP method from route resolvers as well + + # TODO: I seem to have gathered that in some (all?) cases this + # should be nil when no route is found, which woudl cater for the + # note above + if last_route + # TODO: concatenate better? (according to spec I think it's fine /-wise) + composite_route = last_script_name + last_route + composite_path = last_script_name + last_route + + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) + + # TODO: should it be composite_route? + request_span.resource = env['REQUEST_METHOD'] + ' ' + composite_path + end + end + [status, headers, response] # rubocop:disable Lint/RescueException diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index bcec35d57c2..42ab3bc5024 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -13,7 +13,7 @@ module Contrib module Rails # Patcher to begin span on Rails routing module RoutingRouteSetPatch - def call(*) + def call(*args, **kwargs) result = nil configuration = Datadog.configuration.tracing[:rails] @@ -34,16 +34,24 @@ def call(*) # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch - def find_routes(*) + def find_routes(*args, **kwargs) result = super - if (span = Datadog::Tracing.active_span) - datadog_route = result.first[2].path.spec.to_s + if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) + if result.any? + datadog_route = result.first[2].path.spec.to_s + end + + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :rails should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], args.first.env['PATH_INFO'], datadog_route] span.resource = datadog_route.to_s - # TEMP REMOVE ONCE SENT TO RACK # - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) end result diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 1a93b1b783a..29aba355d7f 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -49,6 +49,10 @@ def route_eval datadog_route = Sinatra::Env.route_path(env) + # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 + # TODO: :sinatra should be a reference to the integration name + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], env['PATH_INFO'], datadog_route] + Tracing.trace( Ext::SPAN_ROUTE, service: configuration[:service_name], @@ -65,8 +69,10 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) - # TEMP REMOVE ONCE SENT TO RACK # - span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, datadog_route) + # TODO: should this rather be like this? + # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) + # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) + span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) trace.resource = span.resource From 898e9590cecb1c5095c5583010a8a6b659963277 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Wed, 10 Jan 2024 15:46:15 -0500 Subject: [PATCH 14/35] cleaned up and addressed most todos --- lib/datadog/tracing/contrib/grape/endpoint.rb | 16 +++------------- lib/datadog/tracing/contrib/rack/middlewares.rb | 9 +-------- lib/datadog/tracing/contrib/rails/patcher.rb | 16 +++------------- lib/datadog/tracing/contrib/sinatra/tracer.rb | 16 ++++------------ 4 files changed, 11 insertions(+), 46 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 87b8513e149..02ed99eafb7 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,22 +94,12 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) - # TODO: pick one, but Rails has only the first one, and I feel like it makes the most sense - - # this one has (.json) - datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.path - # this one does not have (.json) - datadog_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :grape should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], endpoint.env['PATH_INFO'], datadog_route] + integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] # override the current span with this notification values span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil? - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.set_tag(Ext::TAG_ROUTE_PATH, path) span.set_tag(Ext::TAG_ROUTE_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 036a8829adb..2f15c34c679 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -107,21 +107,14 @@ def call(env) if status != 404 && (routed = Thread.current[:datadog_http_routing].last) # TODO: array == bad, this should be a Struct last_script_name = routed[1] - last_route = routed[3] - # TODO: probably should get HTTP method from route resolvers as well + last_route = routed[2] # TODO: I seem to have gathered that in some (all?) cases this # should be nil when no route is found, which woudl cater for the # note above if last_route - # TODO: concatenate better? (according to spec I think it's fine /-wise) composite_route = last_script_name + last_route - composite_path = last_script_name + last_route - request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) - - # TODO: should it be composite_route? - request_span.resource = env['REQUEST_METHOD'] + ' ' + composite_path end end diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 42ab3bc5024..d942c35d167 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -38,20 +38,10 @@ def find_routes(*args, **kwargs) result = super if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) - if result.any? - datadog_route = result.first[2].path.spec.to_s - end + integration_route = result.first[2].path.spec.to_s if result.any? - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :rails should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], args.first.env['PATH_INFO'], datadog_route] - - span.resource = datadog_route.to_s - - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] + span.resource = "#{args.first.env['REQUEST_METHOD']} #{integration_route}" end result diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 29aba355d7f..a8d16ce9e02 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -47,20 +47,17 @@ def route_eval configuration = Datadog.configuration.tracing[:sinatra] return super unless Tracing.enabled? - datadog_route = Sinatra::Env.route_path(env) - - # TODO: instead of a thread local this may be put in env[something], but I'm not sure we can rely on it bubbling all the way up. see https://github.com/rack/rack/issues/2144 - # TODO: :sinatra should be a reference to the integration name - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], env['PATH_INFO'], datadog_route] + integration_route = Sinatra::Env.route_path(env) + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] Tracing.trace( Ext::SPAN_ROUTE, service: configuration[:service_name], span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - resource: "#{request.request_method} #{datadog_route}", + resource: "#{request.request_method} #{integration_route}", ) do |span, trace| span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) + span.set_tag(Ext::TAG_ROUTE_PATH, integration_route) if request.script_name && !request.script_name.empty? span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name) @@ -69,11 +66,6 @@ def route_eval span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTE) - # TODO: should this rather be like this? - # span.set_tag(Ext::TAG_ROUTE_PATH, path_info) - # span.set_tag(Ext::TAG_ROUTE_PATTERN, datadog_path) - span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route) - trace.resource = span.resource sinatra_request_span = Sinatra::Env.datadog_span(env) From 9353f02de4092d57434fdfa232ac35ad5cb19779 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 11 Jan 2024 12:18:46 -0500 Subject: [PATCH 15/35] removes unnecessary rails tracing --- lib/datadog/tracing/contrib/rails/patcher.rb | 32 ++------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index d942c35d167..31a9f5c074d 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -11,39 +11,12 @@ module Datadog module Tracing module Contrib module Rails - # Patcher to begin span on Rails routing - module RoutingRouteSetPatch - def call(*args, **kwargs) - result = nil - - configuration = Datadog.configuration.tracing[:rails] - - Tracing.trace( - Ext::SPAN_ROUTE, - service: configuration[:service_name], - span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND, - ) do |span| - span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT) - span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_ROUTING) - result = super - end - - result - end - end - # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch def find_routes(*args, **kwargs) result = super - - if Datadog::Tracing.enabled? && (span = Datadog::Tracing.active_span) - integration_route = result.first[2].path.spec.to_s if result.any? - - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] - span.resource = "#{args.first.env['REQUEST_METHOD']} #{integration_route}" - end - + integration_route = result.first[2].path.spec.to_s if result.any? + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] result end end @@ -79,7 +52,6 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - ActionDispatch::Routing::RouteSet.prepend(RoutingRouteSetPatch) ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) From 118bc826d7660be3d09bbf0f89c571785c2a66d8 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 11 Jan 2024 15:31:02 -0500 Subject: [PATCH 16/35] adds tracing to rack requests and basic testing --- lib/datadog/tracing/contrib/grape/endpoint.rb | 2 +- .../tracing/contrib/rack/middlewares.rb | 20 ++++++++----------- lib/datadog/tracing/contrib/rails/patcher.rb | 3 ++- .../tracing/contrib/rails/rack_spec.rb | 4 ++++ 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 02ed99eafb7..fa19b4d9c67 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -94,7 +94,7 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) - integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.path + integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] # override the current span with this notification values diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 2f15c34c679..9c57ea59fc0 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -65,6 +65,9 @@ def compute_queue_time(env) end end + # rubocop:disable Metrics/CyclomaticComplexity + # rubocop:disable Metrics/PerceivedComplexity + # rubocop:disable Metrics/MethodLength def call(env) # Find out if this is rack within rack previous_request_span = env[Ext::RACK_ENV_REQUEST_SPAN] @@ -102,20 +105,16 @@ def call(env) # call the rest of the stack status, headers, response = @app.call(env) - # TODO: might be wrong if say rails routed to sinatra but sinatra - # fails to find a route, so I dumbly checked for 404? if status != 404 && (routed = Thread.current[:datadog_http_routing].last) - # TODO: array == bad, this should be a Struct last_script_name = routed[1] last_route = routed[2] - # TODO: I seem to have gathered that in some (all?) cases this - # should be nil when no route is found, which woudl cater for the - # note above - if last_route - composite_route = last_script_name + last_route - request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, composite_route) + if last_script_name == '' && env['SCRIPT_NAME'] != '' + last_route = last_script_name + last_script_name = env['PATH_INFO'] end + + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) if last_route end [status, headers, response] @@ -154,9 +153,6 @@ def call(env) # rubocop:enable Lint/RescueException # rubocop:disable Metrics/AbcSize - # rubocop:disable Metrics/CyclomaticComplexity - # rubocop:disable Metrics/PerceivedComplexity - # rubocop:disable Metrics/MethodLength def set_request_tags!(trace, request_span, env, status, headers, response, original_env) request_header_collection = Header::RequestHeaderCollection.new(env) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 31a9f5c074d..5ae3837508d 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -15,7 +15,7 @@ module Rails module JourneyRouterPatch def find_routes(*args, **kwargs) result = super - integration_route = result.first[2].path.spec.to_s if result.any? + integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any? Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] result end @@ -52,6 +52,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] + # Check rails version if this works ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index 19c3b687e9f..18496f90caa 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -144,6 +144,7 @@ def internal_server_error expect(request_span.service).to eq(tracer.default_service) expect(request_span.resource).to eq('TestController#full') expect(request_span.get_tag('http.url')).to eq('/full') + expect(request_span.get_tag('http.route')).to eq('/full') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('200') expect(request_span).to be_measured @@ -379,6 +380,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#error') expect(request_span.get_tag('http.url')).to eq('/error') + expect(request_span.get_tag('http.route')).to eq('/error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error @@ -414,6 +416,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#soft_error') expect(request_span.get_tag('http.url')).to eq('/soft_error') + expect(request_span.get_tag('http.route')).to eq('/soft_error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('520') expect(request_span).to have_error @@ -449,6 +452,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#sub_error') expect(request_span.get_tag('http.url')).to eq('/sub_error') + expect(request_span.get_tag('http.route')).to eq('/sub_error') expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error From 604f07b49f0e56e3925bad78f8610e8f51395c6c Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Fri, 12 Jan 2024 10:51:45 -0500 Subject: [PATCH 17/35] fixes grape flaky test --- lib/datadog/tracing/contrib/grape/endpoint.rb | 3 ++- lib/datadog/tracing/contrib/rails/patcher.rb | 2 +- lib/datadog/tracing/contrib/sinatra/tracer.rb | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index fa19b4d9c67..3d34d6da4e9 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -95,7 +95,6 @@ def endpoint_run(name, start, finish, id, payload) span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object]) integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin - Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] # override the current span with this notification values span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil? @@ -104,6 +103,8 @@ def endpoint_run(name, start, finish, id, payload) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) + + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] ensure span.start(start) span.finish(finish) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 5ae3837508d..7192acbdc90 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -52,7 +52,7 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - # Check rails version if this works + # MAKE SURE ONLY RUNS >RAILS4 ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index a8d16ce9e02..3296d0aabe2 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -48,7 +48,6 @@ def route_eval return super unless Tracing.enabled? integration_route = Sinatra::Env.route_path(env) - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] Tracing.trace( Ext::SPAN_ROUTE, @@ -74,6 +73,7 @@ def route_eval Contrib::Analytics.set_measured(span) + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] super end end From 48334db5850de604e09af36c802ed7e27eac710b Mon Sep 17 00:00:00 2001 From: zarirhamza Date: Fri, 12 Jan 2024 16:35:48 +0000 Subject: [PATCH 18/35] Update gemfiles/* --- gemfiles/jruby_9.2_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.2_aws.gemfile.lock | 2 +- gemfiles/jruby_9.2_contrib.gemfile.lock | 2 +- gemfiles/jruby_9.2_contrib_old.gemfile.lock | 2 +- gemfiles/jruby_9.2_core_old.gemfile.lock | 2 +- gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock | 2 +- gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock | 2 +- gemfiles/jruby_9.2_hanami_1.gemfile.lock | 2 +- gemfiles/jruby_9.2_http.gemfile.lock | 2 +- gemfiles/jruby_9.2_opensearch_2.gemfile.lock | 2 +- gemfiles/jruby_9.2_opensearch_3.gemfile.lock | 2 +- gemfiles/jruby_9.2_opentracing.gemfile.lock | 2 +- gemfiles/jruby_9.2_rack_1.gemfile.lock | 2 +- gemfiles/jruby_9.2_rack_2.gemfile.lock | 2 +- gemfiles/jruby_9.2_rack_3.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails5_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock | 2 +- .../jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails61_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails6_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock | 2 +- .../jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.2_redis_3.gemfile.lock | 2 +- gemfiles/jruby_9.2_redis_4.gemfile.lock | 2 +- gemfiles/jruby_9.2_redis_5.gemfile.lock | 2 +- gemfiles/jruby_9.2_relational_db.gemfile.lock | 2 +- gemfiles/jruby_9.2_resque2_redis3.gemfile.lock | 2 +- gemfiles/jruby_9.2_resque2_redis4.gemfile.lock | 2 +- gemfiles/jruby_9.2_sinatra.gemfile.lock | 2 +- gemfiles/jruby_9.3_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.3_aws.gemfile.lock | 2 +- gemfiles/jruby_9.3_contrib.gemfile.lock | 2 +- gemfiles/jruby_9.3_contrib_old.gemfile.lock | 2 +- gemfiles/jruby_9.3_core_old.gemfile.lock | 2 +- gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock | 2 +- gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock | 2 +- gemfiles/jruby_9.3_hanami_1.gemfile.lock | 2 +- gemfiles/jruby_9.3_http.gemfile.lock | 2 +- gemfiles/jruby_9.3_opensearch_2.gemfile.lock | 2 +- gemfiles/jruby_9.3_opensearch_3.gemfile.lock | 2 +- gemfiles/jruby_9.3_opentracing.gemfile.lock | 2 +- gemfiles/jruby_9.3_rack_1.gemfile.lock | 2 +- gemfiles/jruby_9.3_rack_2.gemfile.lock | 2 +- gemfiles/jruby_9.3_rack_3.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails5_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock | 2 +- .../jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails61_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails6_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock | 2 +- .../jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.3_redis_3.gemfile.lock | 2 +- gemfiles/jruby_9.3_redis_4.gemfile.lock | 2 +- gemfiles/jruby_9.3_redis_5.gemfile.lock | 2 +- gemfiles/jruby_9.3_relational_db.gemfile.lock | 2 +- gemfiles/jruby_9.3_resque2_redis3.gemfile.lock | 2 +- gemfiles/jruby_9.3_resque2_redis4.gemfile.lock | 2 +- gemfiles/jruby_9.3_sinatra.gemfile.lock | 2 +- gemfiles/jruby_9.4_activesupport.gemfile.lock | 2 +- gemfiles/jruby_9.4_aws.gemfile.lock | 2 +- gemfiles/jruby_9.4_contrib.gemfile.lock | 2 +- gemfiles/jruby_9.4_contrib_old.gemfile.lock | 2 +- gemfiles/jruby_9.4_core_old.gemfile.lock | 2 +- gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock | 2 +- gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock | 2 +- gemfiles/jruby_9.4_http.gemfile.lock | 2 +- gemfiles/jruby_9.4_opensearch_2.gemfile.lock | 2 +- gemfiles/jruby_9.4_opensearch_3.gemfile.lock | 2 +- gemfiles/jruby_9.4_opentracing.gemfile.lock | 2 +- gemfiles/jruby_9.4_rack_1.gemfile.lock | 2 +- gemfiles/jruby_9.4_rack_2.gemfile.lock | 2 +- gemfiles/jruby_9.4_rack_3.gemfile.lock | 2 +- gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock | 2 +- gemfiles/jruby_9.4_rails61_postgres.gemfile.lock | 2 +- gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock | 2 +- gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock | 2 +- gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock | 2 +- gemfiles/jruby_9.4_redis_3.gemfile.lock | 2 +- gemfiles/jruby_9.4_redis_4.gemfile.lock | 2 +- gemfiles/jruby_9.4_redis_5.gemfile.lock | 2 +- gemfiles/jruby_9.4_relational_db.gemfile.lock | 2 +- gemfiles/jruby_9.4_resque2_redis3.gemfile.lock | 2 +- gemfiles/jruby_9.4_resque2_redis4.gemfile.lock | 2 +- gemfiles/jruby_9.4_sinatra.gemfile.lock | 2 +- 104 files changed, 104 insertions(+), 104 deletions(-) diff --git a/gemfiles/jruby_9.2_activesupport.gemfile.lock b/gemfiles/jruby_9.2_activesupport.gemfile.lock index a57f94b710d..1ccea0a683e 100644 --- a/gemfiles/jruby_9.2_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_aws.gemfile.lock b/gemfiles/jruby_9.2_aws.gemfile.lock index 3def1bd67ad..b6c58983a35 100644 --- a/gemfiles/jruby_9.2_aws.gemfile.lock +++ b/gemfiles/jruby_9.2_aws.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_contrib.gemfile.lock b/gemfiles/jruby_9.2_contrib.gemfile.lock index 2c4a17e6611..7c3f135c32c 100644 --- a/gemfiles/jruby_9.2_contrib.gemfile.lock +++ b/gemfiles/jruby_9.2_contrib.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_contrib_old.gemfile.lock b/gemfiles/jruby_9.2_contrib_old.gemfile.lock index 0dc31fef2e7..abb601db622 100644 --- a/gemfiles/jruby_9.2_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.2_contrib_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_core_old.gemfile.lock b/gemfiles/jruby_9.2_core_old.gemfile.lock index 7f08c33d270..b35a9fd1e07 100644 --- a/gemfiles/jruby_9.2_core_old.gemfile.lock +++ b/gemfiles/jruby_9.2_core_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock index f75e45b716a..8dfa7f78056 100644 --- a/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.2_elasticsearch_7.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock index 2b1f675953a..74afddd985d 100644 --- a/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.2_elasticsearch_8.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_hanami_1.gemfile.lock b/gemfiles/jruby_9.2_hanami_1.gemfile.lock index 634a8cf8f4d..82acd05cb89 100644 --- a/gemfiles/jruby_9.2_hanami_1.gemfile.lock +++ b/gemfiles/jruby_9.2_hanami_1.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_http.gemfile.lock b/gemfiles/jruby_9.2_http.gemfile.lock index 49c8e845e7a..3f20a959a75 100644 --- a/gemfiles/jruby_9.2_http.gemfile.lock +++ b/gemfiles/jruby_9.2_http.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_opensearch_2.gemfile.lock b/gemfiles/jruby_9.2_opensearch_2.gemfile.lock index ae2e7c281cf..57a9668bb4c 100644 --- a/gemfiles/jruby_9.2_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.2_opensearch_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_opensearch_3.gemfile.lock b/gemfiles/jruby_9.2_opensearch_3.gemfile.lock index ab8bc03f442..f90fd395672 100644 --- a/gemfiles/jruby_9.2_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.2_opensearch_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_opentracing.gemfile.lock b/gemfiles/jruby_9.2_opentracing.gemfile.lock index dbc40d570fb..1270fb2bf76 100644 --- a/gemfiles/jruby_9.2_opentracing.gemfile.lock +++ b/gemfiles/jruby_9.2_opentracing.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rack_1.gemfile.lock b/gemfiles/jruby_9.2_rack_1.gemfile.lock index 6b463067bad..e44b970c9cb 100644 --- a/gemfiles/jruby_9.2_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_1.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rack_2.gemfile.lock b/gemfiles/jruby_9.2_rack_2.gemfile.lock index 24d853ee560..caf3355b175 100644 --- a/gemfiles/jruby_9.2_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rack_3.gemfile.lock b/gemfiles/jruby_9.2_rack_3.gemfile.lock index 611fd442447..e89f0316bbd 100644 --- a/gemfiles/jruby_9.2_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.2_rack_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock index 2809f94d02d..fea7a0edc58 100644 --- a/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock index 4dcbe4c83c5..1084378d7a8 100644 --- a/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock index 5045907d329..ec8f5049f96 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock index 899d135a098..c59c20b6200 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock index 572c910a81c..b0b019696b9 100644 --- a/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock index 83605d3e5ed..b2275c6643f 100644 --- a/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails5_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock index 2768fb556ae..ec093063a8d 100644 --- a/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock index 7271005ec73..8f593e77c93 100644 --- a/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock index 10a33a4a964..fdb4f88ed07 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock index fc061513761..4213175f150 100644 --- a/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock index 08f459c0228..a31f87b5f61 100644 --- a/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails61_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock b/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock index a87e603873f..78efaf373ed 100644 --- a/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock index 6d7bada9542..83336631709 100644 --- a/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock index ab9f290e790..518daf728f4 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock index 0170ed5796f..9cd42e77f71 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock index 50193a54cba..dca4588189b 100644 --- a/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock index b86a73fbcbe..1ee8e92226f 100644 --- a/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.2_rails6_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_redis_3.gemfile.lock b/gemfiles/jruby_9.2_redis_3.gemfile.lock index 980e86bdb9d..d69b0794318 100644 --- a/gemfiles/jruby_9.2_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_redis_4.gemfile.lock b/gemfiles/jruby_9.2_redis_4.gemfile.lock index 9b5aec54208..d71b3f15dd6 100644 --- a/gemfiles/jruby_9.2_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_redis_5.gemfile.lock b/gemfiles/jruby_9.2_redis_5.gemfile.lock index ba33e77c64c..42d56b8ff16 100644 --- a/gemfiles/jruby_9.2_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.2_redis_5.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_relational_db.gemfile.lock b/gemfiles/jruby_9.2_relational_db.gemfile.lock index 9e6d15f8c65..b5c95c44cfc 100644 --- a/gemfiles/jruby_9.2_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.2_relational_db.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock index 55369a1d2ac..bf17127fc77 100644 --- a/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.2_resque2_redis3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock index 8842ddd3345..de7b0a7ecd8 100644 --- a/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.2_resque2_redis4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.2_sinatra.gemfile.lock b/gemfiles/jruby_9.2_sinatra.gemfile.lock index e7dd539a737..0885410709b 100644 --- a/gemfiles/jruby_9.2_sinatra.gemfile.lock +++ b/gemfiles/jruby_9.2_sinatra.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_activesupport.gemfile.lock b/gemfiles/jruby_9.3_activesupport.gemfile.lock index a11845cb97a..f127ea65b8b 100644 --- a/gemfiles/jruby_9.3_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_aws.gemfile.lock b/gemfiles/jruby_9.3_aws.gemfile.lock index 4355d4bf68d..920273f0224 100644 --- a/gemfiles/jruby_9.3_aws.gemfile.lock +++ b/gemfiles/jruby_9.3_aws.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_contrib.gemfile.lock b/gemfiles/jruby_9.3_contrib.gemfile.lock index 73405a6cc0e..afda85888ae 100644 --- a/gemfiles/jruby_9.3_contrib.gemfile.lock +++ b/gemfiles/jruby_9.3_contrib.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_contrib_old.gemfile.lock b/gemfiles/jruby_9.3_contrib_old.gemfile.lock index faf2f1c6257..0f03d143db9 100644 --- a/gemfiles/jruby_9.3_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.3_contrib_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_core_old.gemfile.lock b/gemfiles/jruby_9.3_core_old.gemfile.lock index 3d4264fb324..fb8dc0c31ff 100644 --- a/gemfiles/jruby_9.3_core_old.gemfile.lock +++ b/gemfiles/jruby_9.3_core_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock index 4bd789ac2d6..07ab5517e57 100644 --- a/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.3_elasticsearch_7.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock index a0b0ad9331e..469b9376790 100644 --- a/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.3_elasticsearch_8.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_hanami_1.gemfile.lock b/gemfiles/jruby_9.3_hanami_1.gemfile.lock index 376c909064b..07215e6b676 100644 --- a/gemfiles/jruby_9.3_hanami_1.gemfile.lock +++ b/gemfiles/jruby_9.3_hanami_1.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_http.gemfile.lock b/gemfiles/jruby_9.3_http.gemfile.lock index a6ef4f06b8c..f9e71bbc8b0 100644 --- a/gemfiles/jruby_9.3_http.gemfile.lock +++ b/gemfiles/jruby_9.3_http.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_opensearch_2.gemfile.lock b/gemfiles/jruby_9.3_opensearch_2.gemfile.lock index 95450bece07..77f3164782a 100644 --- a/gemfiles/jruby_9.3_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.3_opensearch_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_opensearch_3.gemfile.lock b/gemfiles/jruby_9.3_opensearch_3.gemfile.lock index 59abd8b0e33..efdb76d35bc 100644 --- a/gemfiles/jruby_9.3_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.3_opensearch_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_opentracing.gemfile.lock b/gemfiles/jruby_9.3_opentracing.gemfile.lock index 674b7435bfa..fa367f952f2 100644 --- a/gemfiles/jruby_9.3_opentracing.gemfile.lock +++ b/gemfiles/jruby_9.3_opentracing.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rack_1.gemfile.lock b/gemfiles/jruby_9.3_rack_1.gemfile.lock index 2d90e4416d6..9c8737750b3 100644 --- a/gemfiles/jruby_9.3_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_1.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rack_2.gemfile.lock b/gemfiles/jruby_9.3_rack_2.gemfile.lock index 810c87118bd..52980df335d 100644 --- a/gemfiles/jruby_9.3_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rack_3.gemfile.lock b/gemfiles/jruby_9.3_rack_3.gemfile.lock index 5488952f428..1acd037245a 100644 --- a/gemfiles/jruby_9.3_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.3_rack_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock index 0232276a04b..df89e450c93 100644 --- a/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock index 62d278cc543..de90114e78c 100644 --- a/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock index ad884bf7d8c..4696cca7b07 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock index ee202f0d350..029885f3677 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_redis_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock index ec25976a77a..ea758b0c151 100644 --- a/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock index 40b905aa393..bdc48ac6d02 100644 --- a/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails5_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock index 2efee639262..7ab5e6ac1ca 100644 --- a/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock index a3b6887659c..6aa09a7ec62 100644 --- a/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock index 653e6a55519..d12c47df7ac 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock index 68d9fe5cbe2..aa51e08d1a9 100644 --- a/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock index 4782fa68645..39991cdc349 100644 --- a/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails61_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock b/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock index 84ae8edabee..adb34559439 100644 --- a/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock index 68dd4961819..beb99d93741 100644 --- a/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock index 93dcb783134..df1e08378b3 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock index 21068ea4ed1..efb149db05e 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_redis_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock index 131f87ae369..0bed5eaea4c 100644 --- a/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock index d05592555cd..5c8dae983e5 100644 --- a/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.3_rails6_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_redis_3.gemfile.lock b/gemfiles/jruby_9.3_redis_3.gemfile.lock index b3b862e1f3d..3af8926defb 100644 --- a/gemfiles/jruby_9.3_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_redis_4.gemfile.lock b/gemfiles/jruby_9.3_redis_4.gemfile.lock index 1c5d13cb68c..815fddaeb0b 100644 --- a/gemfiles/jruby_9.3_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_redis_5.gemfile.lock b/gemfiles/jruby_9.3_redis_5.gemfile.lock index f5ac07e87c4..1b6a52bde0a 100644 --- a/gemfiles/jruby_9.3_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.3_redis_5.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_relational_db.gemfile.lock b/gemfiles/jruby_9.3_relational_db.gemfile.lock index 9fec5d6a0b0..516b6ae0710 100644 --- a/gemfiles/jruby_9.3_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.3_relational_db.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock index 1f1e369aba5..ca8bde96779 100644 --- a/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.3_resque2_redis3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock index 3e0f992ee1f..0e899ee5acb 100644 --- a/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.3_resque2_redis4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.3_sinatra.gemfile.lock b/gemfiles/jruby_9.3_sinatra.gemfile.lock index a7d680407b7..9c2897707c0 100644 --- a/gemfiles/jruby_9.3_sinatra.gemfile.lock +++ b/gemfiles/jruby_9.3_sinatra.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_activesupport.gemfile.lock b/gemfiles/jruby_9.4_activesupport.gemfile.lock index 42bde584a86..2ac2542a115 100644 --- a/gemfiles/jruby_9.4_activesupport.gemfile.lock +++ b/gemfiles/jruby_9.4_activesupport.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_aws.gemfile.lock b/gemfiles/jruby_9.4_aws.gemfile.lock index 3fd7acc2852..f389195c15b 100644 --- a/gemfiles/jruby_9.4_aws.gemfile.lock +++ b/gemfiles/jruby_9.4_aws.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_contrib.gemfile.lock b/gemfiles/jruby_9.4_contrib.gemfile.lock index 61a2116eb65..6f7fbe54830 100644 --- a/gemfiles/jruby_9.4_contrib.gemfile.lock +++ b/gemfiles/jruby_9.4_contrib.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_contrib_old.gemfile.lock b/gemfiles/jruby_9.4_contrib_old.gemfile.lock index ae1d99db136..436e798564e 100644 --- a/gemfiles/jruby_9.4_contrib_old.gemfile.lock +++ b/gemfiles/jruby_9.4_contrib_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_core_old.gemfile.lock b/gemfiles/jruby_9.4_core_old.gemfile.lock index cd7559349d2..0d153d0de42 100644 --- a/gemfiles/jruby_9.4_core_old.gemfile.lock +++ b/gemfiles/jruby_9.4_core_old.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock b/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock index fc3349c5b87..5a78a84ce9b 100644 --- a/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock +++ b/gemfiles/jruby_9.4_elasticsearch_7.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock b/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock index 7f87c27b80c..a97e3e17dbe 100644 --- a/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock +++ b/gemfiles/jruby_9.4_elasticsearch_8.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_http.gemfile.lock b/gemfiles/jruby_9.4_http.gemfile.lock index d32cff20e3a..a90666028bf 100644 --- a/gemfiles/jruby_9.4_http.gemfile.lock +++ b/gemfiles/jruby_9.4_http.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_opensearch_2.gemfile.lock b/gemfiles/jruby_9.4_opensearch_2.gemfile.lock index 940aee04cb4..9dff3f27ee0 100644 --- a/gemfiles/jruby_9.4_opensearch_2.gemfile.lock +++ b/gemfiles/jruby_9.4_opensearch_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_opensearch_3.gemfile.lock b/gemfiles/jruby_9.4_opensearch_3.gemfile.lock index 72305093cf5..61697f821ef 100644 --- a/gemfiles/jruby_9.4_opensearch_3.gemfile.lock +++ b/gemfiles/jruby_9.4_opensearch_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_opentracing.gemfile.lock b/gemfiles/jruby_9.4_opentracing.gemfile.lock index 7850da9869c..0c2be94cf73 100644 --- a/gemfiles/jruby_9.4_opentracing.gemfile.lock +++ b/gemfiles/jruby_9.4_opentracing.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rack_1.gemfile.lock b/gemfiles/jruby_9.4_rack_1.gemfile.lock index b7555a1546c..1599a05e3a0 100644 --- a/gemfiles/jruby_9.4_rack_1.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_1.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rack_2.gemfile.lock b/gemfiles/jruby_9.4_rack_2.gemfile.lock index 4d9c2a92d8e..5462fa150db 100644 --- a/gemfiles/jruby_9.4_rack_2.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rack_3.gemfile.lock b/gemfiles/jruby_9.4_rack_3.gemfile.lock index e99f50d5bf8..238b131119c 100644 --- a/gemfiles/jruby_9.4_rack_3.gemfile.lock +++ b/gemfiles/jruby_9.4_rack_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock b/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock index ace7ddac3b4..7dec1c8e3b5 100644 --- a/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_mysql2.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock index a27001c4ccf..1528034d170 100644 --- a/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock index 7253006a97a..717d27e8a11 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres_redis.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock index a384a41e0e4..fba7c3f914f 100644 --- a/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_postgres_sidekiq.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock index 43f77482a72..419d75ad053 100644 --- a/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock +++ b/gemfiles/jruby_9.4_rails61_semantic_logger.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_redis_3.gemfile.lock b/gemfiles/jruby_9.4_redis_3.gemfile.lock index be81c3d512a..02fda158faf 100644 --- a/gemfiles/jruby_9.4_redis_3.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_redis_4.gemfile.lock b/gemfiles/jruby_9.4_redis_4.gemfile.lock index 13b0df61e4f..b3a8a9581fa 100644 --- a/gemfiles/jruby_9.4_redis_4.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_redis_5.gemfile.lock b/gemfiles/jruby_9.4_redis_5.gemfile.lock index 1fddb46cf9b..159d13e57c1 100644 --- a/gemfiles/jruby_9.4_redis_5.gemfile.lock +++ b/gemfiles/jruby_9.4_redis_5.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_relational_db.gemfile.lock b/gemfiles/jruby_9.4_relational_db.gemfile.lock index f363f6f1c9f..0e06b15500e 100644 --- a/gemfiles/jruby_9.4_relational_db.gemfile.lock +++ b/gemfiles/jruby_9.4_relational_db.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock b/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock index 9ed741c7fa2..d66e14eceff 100644 --- a/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock +++ b/gemfiles/jruby_9.4_resque2_redis3.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock b/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock index 2bc372dca95..e0bea5cf7fc 100644 --- a/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock +++ b/gemfiles/jruby_9.4_resque2_redis4.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) diff --git a/gemfiles/jruby_9.4_sinatra.gemfile.lock b/gemfiles/jruby_9.4_sinatra.gemfile.lock index 65b3696ba99..5b7b8045399 100644 --- a/gemfiles/jruby_9.4_sinatra.gemfile.lock +++ b/gemfiles/jruby_9.4_sinatra.gemfile.lock @@ -11,7 +11,7 @@ GIT PATH remote: .. specs: - ddtrace (1.18.0) + ddtrace (1.19.0) datadog-ci (~> 0.6.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) From b335dd591ebf8bacd7f138aa2312c8cd3dafa4a6 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Fri, 12 Jan 2024 12:00:56 -0500 Subject: [PATCH 19/35] remove kwargs to fix tests --- lib/datadog/tracing/contrib/rails/patcher.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 7192acbdc90..b7bd9eee845 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -13,7 +13,7 @@ module Contrib module Rails # Patcher to trace rails routing done by JourneyRouter module JourneyRouterPatch - def find_routes(*args, **kwargs) + def find_routes(*args) result = super integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any? Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] @@ -52,7 +52,6 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - # MAKE SURE ONLY RUNS >RAILS4 ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) Rails::LogInjection.configure_log_tags(app.config) From e4aa83ae8e8b331e7246b8a566bf8db38184be64 Mon Sep 17 00:00:00 2001 From: Marco Costa Date: Fri, 12 Jan 2024 16:49:16 -0800 Subject: [PATCH 20/35] Skip patching for Rails 3 --- lib/datadog/tracing/contrib/rails/patcher.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index b7bd9eee845..b60b6db7e5b 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -52,7 +52,8 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) + # ActionDispatch::Journey not available in Rails 3.2 + ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) if defined?(ActionDispatch::Journey::Router) Rails::LogInjection.configure_log_tags(app.config) end From 78fe38d93bbf306498b7313608822c89b2377e00 Mon Sep 17 00:00:00 2001 From: Marco Costa Date: Fri, 12 Jan 2024 17:03:57 -0800 Subject: [PATCH 21/35] Skip patching for Rails 3 --- spec/datadog/tracing/contrib/rails/rack_spec.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index 18496f90caa..e6de8806cd0 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -144,7 +144,7 @@ def internal_server_error expect(request_span.service).to eq(tracer.default_service) expect(request_span.resource).to eq('TestController#full') expect(request_span.get_tag('http.url')).to eq('/full') - expect(request_span.get_tag('http.route')).to eq('/full') + expect(request_span.get_tag('http.route')).to eq('/full') if Rails::VERSION::MAJOR.to_i >= 4 expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('200') expect(request_span).to be_measured @@ -380,7 +380,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#error') expect(request_span.get_tag('http.url')).to eq('/error') - expect(request_span.get_tag('http.route')).to eq('/error') + expect(request_span.get_tag('http.route')).to eq('/error') if Rails::VERSION::MAJOR.to_i >= 4 expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error @@ -416,7 +416,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#soft_error') expect(request_span.get_tag('http.url')).to eq('/soft_error') - expect(request_span.get_tag('http.route')).to eq('/soft_error') + expect(request_span.get_tag('http.route')).to eq('/soft_error') if Rails::VERSION::MAJOR.to_i >= 4 expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('520') expect(request_span).to have_error @@ -452,7 +452,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#sub_error') expect(request_span.get_tag('http.url')).to eq('/sub_error') - expect(request_span.get_tag('http.route')).to eq('/sub_error') + expect(request_span.get_tag('http.route')).to eq('/sub_error') if Rails::VERSION::MAJOR.to_i >= 4 expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error From 2f901db5d556869c11844cec16ceea624ea3cdb3 Mon Sep 17 00:00:00 2001 From: Marco Costa Date: Mon, 15 Jan 2024 16:40:12 -0800 Subject: [PATCH 22/35] Skip for Rails < 4.2 --- lib/datadog/tracing/contrib/rails/patcher.rb | 6 ++++-- spec/datadog/tracing/contrib/rails/rack_spec.rb | 8 ++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index b60b6db7e5b..1b66c62395a 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -52,8 +52,10 @@ def before_initialize(app) # Sometimes we don't want to activate middleware e.g. OpenTracing, etc. add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] - # ActionDispatch::Journey not available in Rails 3.2 - ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) if defined?(ActionDispatch::Journey::Router) + # ActionDispatch::Journey is not available or incompatible in Rails < 4.2. + if Integration.version >= Gem::Version.new('4.2') + ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) + end Rails::LogInjection.configure_log_tags(app.config) end diff --git a/spec/datadog/tracing/contrib/rails/rack_spec.rb b/spec/datadog/tracing/contrib/rails/rack_spec.rb index e6de8806cd0..79471b94326 100644 --- a/spec/datadog/tracing/contrib/rails/rack_spec.rb +++ b/spec/datadog/tracing/contrib/rails/rack_spec.rb @@ -144,7 +144,7 @@ def internal_server_error expect(request_span.service).to eq(tracer.default_service) expect(request_span.resource).to eq('TestController#full') expect(request_span.get_tag('http.url')).to eq('/full') - expect(request_span.get_tag('http.route')).to eq('/full') if Rails::VERSION::MAJOR.to_i >= 4 + expect(request_span.get_tag('http.route')).to eq('/full') if Rails.version >= '4.2' expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('200') expect(request_span).to be_measured @@ -380,7 +380,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#error') expect(request_span.get_tag('http.url')).to eq('/error') - expect(request_span.get_tag('http.route')).to eq('/error') if Rails::VERSION::MAJOR.to_i >= 4 + expect(request_span.get_tag('http.route')).to eq('/error') if Rails.version >= '4.2' expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error @@ -416,7 +416,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#soft_error') expect(request_span.get_tag('http.url')).to eq('/soft_error') - expect(request_span.get_tag('http.route')).to eq('/soft_error') if Rails::VERSION::MAJOR.to_i >= 4 + expect(request_span.get_tag('http.route')).to eq('/soft_error') if Rails.version >= '4.2' expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('520') expect(request_span).to have_error @@ -452,7 +452,7 @@ def internal_server_error expect(request_span.span_type).to eq('web') expect(request_span.resource).to eq('TestController#sub_error') expect(request_span.get_tag('http.url')).to eq('/sub_error') - expect(request_span.get_tag('http.route')).to eq('/sub_error') if Rails::VERSION::MAJOR.to_i >= 4 + expect(request_span.get_tag('http.route')).to eq('/sub_error') if Rails.version >= '4.2' expect(request_span.get_tag('http.method')).to eq('GET') expect(request_span.get_tag('http.status_code')).to eq('500') expect(request_span).to have_error From 16e3cb308f836758ea697695bd12f1833ee061a1 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Tue, 16 Jan 2024 09:47:43 -0500 Subject: [PATCH 23/35] linter fixes --- lib/datadog/tracing/contrib/rails/patcher.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 1b66c62395a..5e8b92c5493 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -53,9 +53,7 @@ def before_initialize(app) add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware] # ActionDispatch::Journey is not available or incompatible in Rails < 4.2. - if Integration.version >= Gem::Version.new('4.2') - ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) - end + ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) if Integration.version >= Gem::Version.new('4.2') Rails::LogInjection.configure_log_tags(app.config) end From 82aaa029c251aa41ca756c589fe760b336183a63 Mon Sep 17 00:00:00 2001 From: Marco Costa Date: Tue, 16 Jan 2024 09:30:10 -0800 Subject: [PATCH 24/35] Try to fix Spring test failure --- spec/datadog/core/environment/execution_spec.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/spec/datadog/core/environment/execution_spec.rb b/spec/datadog/core/environment/execution_spec.rb index 76c56be2bbb..d36f6818a9f 100644 --- a/spec/datadog/core/environment/execution_spec.rb +++ b/spec/datadog/core/environment/execution_spec.rb @@ -107,6 +107,7 @@ gemfile(true) do source 'https://rubygems.org' gem 'spring', '>= 2.0.2' + gem 'concurrent-ruby', '#{Gem.loaded_specs['concurrent-ruby'].version}' end # Load the `bin/spring` file, just like a real Spring application would. From 84196547c821de0b3f0f2ecb214b20990a6de3e8 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 25 Jan 2024 14:56:26 -0500 Subject: [PATCH 25/35] removes unnecessary constants --- lib/datadog/tracing/contrib/rails/ext.rb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/lib/datadog/tracing/contrib/rails/ext.rb b/lib/datadog/tracing/contrib/rails/ext.rb index 8da924e939c..3149c54be10 100644 --- a/lib/datadog/tracing/contrib/rails/ext.rb +++ b/lib/datadog/tracing/contrib/rails/ext.rb @@ -12,10 +12,6 @@ module Ext ENV_ANALYTICS_ENABLED = 'DD_TRACE_RAILS_ANALYTICS_ENABLED' ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_RAILS_ANALYTICS_SAMPLE_RATE' ENV_DISABLE = 'DISABLE_DATADOG_RAILS' - SPAN_ROUTE = 'rails.route' - TAG_ROUTE_PATH = 'rails.route.path' - TAG_COMPONENT = 'rails' - TAG_OPERATION_ROUTING = 'routing' end end end From 696a3d0820cdc311a0877acd2bf5d41b9f222318 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 25 Jan 2024 16:32:48 -0500 Subject: [PATCH 26/35] added comment and fixed nested rack routes --- lib/datadog/tracing/contrib/rack/middlewares.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index 9c57ea59fc0..efcd72b9be0 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -109,9 +109,15 @@ def call(env) last_script_name = routed[1] last_route = routed[2] + # If the last_script_name is empty but the env['SCRIPT_NAME'] is NOT empty + # then the current rack request was not routed and must be accounted for + # which only happens in pure nested rack requests i.e /rack/rack/hello/world + # + # To account for the unaccounted nested rack requests of /rack/hello/world, + # we use 'PATH_INFO knowing that rack cannot have named parameters if last_script_name == '' && env['SCRIPT_NAME'] != '' - last_route = last_script_name - last_script_name = env['PATH_INFO'] + last_script_name = last_route + last_route = env['PATH_INFO'] end request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) if last_route From ce0db69c3f3174f6e79df7a8d5366050aebc5908 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Tue, 30 Jan 2024 13:57:22 -0500 Subject: [PATCH 27/35] fixes leak and potential errors --- lib/datadog/tracing/contrib/grape/endpoint.rb | 6 +++++- lib/datadog/tracing/contrib/rack/middlewares.rb | 3 ++- lib/datadog/tracing/contrib/rails/patcher.rb | 4 +++- lib/datadog/tracing/contrib/sinatra/tracer.rb | 4 +++- spec/datadog/tracing/contrib/rack/http_route_spec.rb | 0 5 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 spec/datadog/tracing/contrib/rack/http_route_spec.rb diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index 3d34d6da4e9..bc88ea2118e 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -64,6 +64,7 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) Datadog.logger.error(e.message) end + # rubocop:disable Metrics/AbcSize def endpoint_run(name, start, finish, id, payload) return unless Thread.current[KEY_RUN] @@ -104,7 +105,9 @@ def endpoint_run(name, start, finish, id, payload) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) - Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] + if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) + Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] + end ensure span.start(start) span.finish(finish) @@ -112,6 +115,7 @@ def endpoint_run(name, start, finish, id, payload) rescue StandardError => e Datadog.logger.error(e.message) end + # rubocop:enable Metrics/AbcSize def endpoint_start_render(*) return if Thread.current[KEY_RENDER] diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index efcd72b9be0..fd979c01c5f 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -68,6 +68,7 @@ def compute_queue_time(env) # rubocop:disable Metrics/CyclomaticComplexity # rubocop:disable Metrics/PerceivedComplexity # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def call(env) # Find out if this is rack within rack previous_request_span = env[Ext::RACK_ENV_REQUEST_SPAN] @@ -121,6 +122,7 @@ def call(env) end request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) if last_route + Thread.current[:datadog_http_routing] = [] end [status, headers, response] @@ -158,7 +160,6 @@ def call(env) end # rubocop:enable Lint/RescueException - # rubocop:disable Metrics/AbcSize def set_request_tags!(trace, request_span, env, status, headers, response, original_env) request_header_collection = Header::RequestHeaderCollection.new(env) diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index 5e8b92c5493..b87ee263fbe 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -16,7 +16,9 @@ module JourneyRouterPatch def find_routes(*args) result = super integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any? - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] + if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) + Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] + end result end end diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 3296d0aabe2..131908dde13 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -73,7 +73,9 @@ def route_eval Contrib::Analytics.set_measured(span) - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] + if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] + end super end end diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/rack/http_route_spec.rb new file mode 100644 index 00000000000..e69de29bb2d From 4ad8a6d23b6948154a17dabc790dab1bb81ab468 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Mon, 5 Feb 2024 13:11:06 -0500 Subject: [PATCH 28/35] fixed sinatra route when using script name --- lib/datadog/tracing/contrib/sinatra/tracer.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 131908dde13..5116b6566aa 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -73,8 +73,9 @@ def route_eval Contrib::Analytics.set_measured(span) + _, path = env['sinatra.route'].split(' ', 2) if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], integration_route] + Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], path] end super end From 1f89257c22c947705eb0b8b313fe3db2eba372a4 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Mon, 5 Feb 2024 16:48:49 -0500 Subject: [PATCH 29/35] adds tests --- Rakefile | 9 + appraisal/ruby-3.1.rb | 8 + gemfiles/ruby_3.1_multi_rack_app.gemfile | 49 +++ gemfiles/ruby_3.1_multi_rack_app.gemfile.lock | 372 ++++++++++++++++++ .../tracing/contrib/rack/http_route_spec.rb | 333 ++++++++++++++++ 5 files changed, 771 insertions(+) create mode 100644 gemfiles/ruby_3.1_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_3.1_multi_rack_app.gemfile.lock diff --git a/Rakefile b/Rakefile index a3791ec2688..8749e2ba6ff 100644 --- a/Rakefile +++ b/Rakefile @@ -248,6 +248,9 @@ TEST_METADATA = { 'redis-4' => '❌ 2.1 / ❌ 2.2 / ❌ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby', 'redis-5' => '❌ 2.1 / ❌ 2.2 / ❌ 2.3 / ❌ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' }, + 'routetest' => { + 'multi-rack-app' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' + }, 'appsec:rack' => { # Non-deprecated form of Regexp.new does not backport to Rack 1.x, see: https://github.com/rack/rack/pull/1998 'rack-1' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ❌ 3.3 / ✅ jruby', @@ -365,6 +368,12 @@ namespace :spec do t.rspec_opts = args.to_a.join(' ') end + #desc '' # "Explicitly hiding from `rake -T`" + RSpec::Core::RakeTask.new(:routetest) do |t, args| + t.pattern = 'spec/datadog/tracing/contrib/rack/http_route_spec.rb' + t.rspec_opts = args.to_a.join(' ') + end + desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:railsredis) do |t, args| t.pattern = 'spec/datadog/tracing/contrib/rails/**/*redis*_spec.rb' diff --git a/appraisal/ruby-3.1.rb b/appraisal/ruby-3.1.rb index ef3903a77a3..c2ad28f2c23 100644 --- a/appraisal/ruby-3.1.rb +++ b/appraisal/ruby-3.1.rb @@ -157,3 +157,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 6.1.0' +end diff --git a/gemfiles/ruby_3.1_multi_rack_app.gemfile b/gemfiles/ruby_3.1_multi_rack_app.gemfile new file mode 100644 index 00000000000..c3efafe49a7 --- /dev/null +++ b/gemfiles/ruby_3.1_multi_rack_app.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 6.1.0" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..cfbe6035a15 --- /dev/null +++ b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock @@ -0,0 +1,372 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.19.0) + datadog-ci (~> 0.6.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.6.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.2-x86_64-linux) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.16.2-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.12) + +PLATFORMS + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack-contrib + rack-test + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/rack/http_route_spec.rb index e69de29bb2d..9cad717447f 100644 --- a/spec/datadog/tracing/contrib/rack/http_route_spec.rb +++ b/spec/datadog/tracing/contrib/rack/http_route_spec.rb @@ -0,0 +1,333 @@ +require 'datadog/tracing/contrib/support/spec_helper' + +require 'grape' +require 'rack/test' +require 'sinatra' +require 'rails' +require 'action_controller' + +require 'ddtrace' + +RSpec.describe 'Multi-app testing for http.route' do + include Rack::Test::Methods + + let(:options) { {} } + + before do + Datadog.configure do |c| + c.tracing.instrument :sinatra, options + c.tracing.instrument :rack, options + c.tracing.instrument :grape, options + c.tracing.instrument :rails, options + end + end + + after do + Datadog.registry[:sinatra].reset_configuration! + Datadog.registry[:rack].reset_configuration! + Datadog.registry[:grape].reset_configuration! + Datadog.registry[:rails].reset_configuration! + end + + shared_context 'multi-app' do + + let(:app) do + apps_to_build = apps + + Rack::Builder.new do + apps_to_build.each do |root, app| + map root do + run app + end + end + end.to_app + end + + let(:apps) do + { + '/' => rack_app, + '/rack' => rack_app, + '/sinatra' => sinatra_app, + '/grape' => grape_app, + '/rails' => rails_app, + '/rack/rack' => rack_app, + '/rack/sinatra' => sinatra_app, + '/rack/grape' => grape_app, + '/rack/rails' => rails_app + } + end + + let(:rack_app) do + Rack::Builder.new do + map '/hello/world' do + run -> (env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } + end + end + end + + let(:sinatra_app) do + Class.new(Sinatra::Application) do + get '/hello/world' do + "hello world" + end + + get '/hello/:id' do + "hello #{params[:id]}" + end + end + end + + let(:grape_app) do + Class.new(Grape::API) do + get '/hello/world' do + 'hello world' + end + get '/hello/:id' do + "hello #{params[:id]}" + end + end + end + + let(:rails_app) do + Class.new(Rails::Engine) do + class HelloController < ActionController::Base + unless method_defined?(:world) + define_method(:world) do + render plain: 'Hello, world!' + end + end + + unless method_defined?(:show) + define_method(:show) do + render plain: "Hello, #{params[:id]}!" + end + end + end + + routes.draw do + get "/hello/world" => "hello#world" + get "/hello/:id" => "hello#show" + end + end + end + end + + context 'base routes' do + include_context 'multi-app' + + describe 'request to base app' do + subject(:response) { get '/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/hello/world') + + break + end + end + end + end + + describe 'request to rack app' do + subject(:response) { get '/rack/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/hello/world') + + break + end + end + end + end + + describe 'request to sinatra app' do + subject(:response) { get '/sinatra/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/sinatra/hello/world') + + next + end + end + end + end + + describe 'request to sinatra app w/param' do + subject(:response) { get '/sinatra/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/sinatra/hello/:id') + + break + end + end + end + end + + describe 'request to grape app' do + subject(:response) { get '/grape/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/grape/hello/world') + + break + end + end + end + end + + describe 'request to grape app w/param' do + subject(:response) { get '/grape/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/grape/hello/:id') + + break + end + end + end + end + + describe 'request to rails app' do + subject(:response) { get '/rails/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rails/hello/world') + + break + end + end + end + end + + describe 'request to rails app w/param' do + subject(:response) { get '/rails/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rails/hello/:id') + + break + end + end + end + end + end + + context 'nested rack routes' do + include_context 'multi-app' + + describe 'request to nested sinatra app' do + subject(:response) { get '/rack/sinatra/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/world') + + break + end + end + end + end + + describe 'request to nested sinatra app w/param' do + subject(:response) { get '/rack/sinatra/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/:id') + + break + end + end + end + end + + describe 'request to nested grape app' do + subject(:response) { get '/rack/grape/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/grape/hello/world') + + break + end + end + end + end + + describe 'request to nested grape app w/param' do + subject(:response) { get '/rack/grape/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/grape/hello/:id') + + break + end + end + end + end + + describe 'request to nested rails app' do + subject(:response) { get '/rack/rails/hello/world' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/rails/hello/world') + + break + end + end + end + end + + describe 'request to nested rails app w/param' do + subject(:response) { get '/rack/rails/hello/7' } + + it do + is_expected.to be_ok + spans.each do |span| + if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST + expect(span.get_tag('http.route')).to eq('/rack/rails/hello/:id') + + break + end + end + end + end + end + +end From 293e8c46279bda9fd1fed32b1ac7de4e94c78c96 Mon Sep 17 00:00:00 2001 From: zarirhamza Date: Mon, 5 Feb 2024 22:28:20 +0000 Subject: [PATCH 30/35] Update gemfiles/* --- gemfiles/ruby_3.1_multi_rack_app.gemfile.lock | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock index cfbe6035a15..3a7b07223da 100644 --- a/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock +++ b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock @@ -133,6 +133,7 @@ GEM ffi (1.16.3) globalid (1.2.1) activesupport (>= 6.1) + google-protobuf (3.25.2-aarch64-linux) google-protobuf (3.25.2-x86_64-linux) grape (2.0.0) activesupport (>= 5) @@ -147,7 +148,10 @@ GEM json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) loofah (2.22.0) @@ -178,6 +182,8 @@ GEM net-smtp (0.4.0.1) net-protocol nio4r (2.7.0) + nokogiri (1.16.2-aarch64-linux) + racc (~> 1.4) nokogiri (1.16.2-x86_64-linux) racc (~> 1.4) os (1.1.4) @@ -324,6 +330,7 @@ GEM zeitwerk (2.6.12) PLATFORMS + aarch64-linux x86_64-linux DEPENDENCIES From 40fd7bb18ee95a988eb2d39c43b9622ee0634f01 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Tue, 6 Feb 2024 10:46:19 -0500 Subject: [PATCH 31/35] update appraisal files --- Rakefile | 2 +- appraisal/ruby-2.5.rb | 8 ++++++++ appraisal/ruby-2.6.rb | 8 ++++++++ appraisal/ruby-2.7.rb | 8 ++++++++ appraisal/ruby-3.0.rb | 8 ++++++++ appraisal/ruby-3.2.rb | 8 ++++++++ appraisal/ruby-3.3.rb | 8 ++++++++ 7 files changed, 49 insertions(+), 1 deletion(-) diff --git a/Rakefile b/Rakefile index 8749e2ba6ff..3abce5dffa6 100644 --- a/Rakefile +++ b/Rakefile @@ -249,7 +249,7 @@ TEST_METADATA = { 'redis-5' => '❌ 2.1 / ❌ 2.2 / ❌ 2.3 / ❌ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' }, 'routetest' => { - 'multi-rack-app' => '✅ 2.1 / ✅ 2.2 / ✅ 2.3 / ✅ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' + 'multi-rack-app' => '❌ 2.1 / ❌ 2.2 / ❌ 2.3 / ❌ 2.4 / ✅ 2.5 / ✅ 2.6 / ✅ 2.7 / ✅ 3.0 / ✅ 3.1 / ✅ 3.2 / ✅ 3.3 / ✅ jruby' }, 'appsec:rack' => { # Non-deprecated form of Regexp.new does not backport to Rack 1.x, see: https://github.com/rack/rack/pull/1998 diff --git a/appraisal/ruby-2.5.rb b/appraisal/ruby-2.5.rb index 3969799f4d3..012008f2feb 100644 --- a/appraisal/ruby-2.5.rb +++ b/appraisal/ruby-2.5.rb @@ -254,3 +254,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 5.2.1' +end diff --git a/appraisal/ruby-2.6.rb b/appraisal/ruby-2.6.rb index 4612de80712..ecf32e6c5a1 100644 --- a/appraisal/ruby-2.6.rb +++ b/appraisal/ruby-2.6.rb @@ -255,3 +255,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 5.2.1' +end diff --git a/appraisal/ruby-2.7.rb b/appraisal/ruby-2.7.rb index c4e1d39e1a5..e3bc956b17b 100644 --- a/appraisal/ruby-2.7.rb +++ b/appraisal/ruby-2.7.rb @@ -254,3 +254,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 5.2.1' +end diff --git a/appraisal/ruby-3.0.rb b/appraisal/ruby-3.0.rb index ef3903a77a3..c2ad28f2c23 100644 --- a/appraisal/ruby-3.0.rb +++ b/appraisal/ruby-3.0.rb @@ -157,3 +157,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 6.1.0' +end diff --git a/appraisal/ruby-3.2.rb b/appraisal/ruby-3.2.rb index ef3903a77a3..c2ad28f2c23 100644 --- a/appraisal/ruby-3.2.rb +++ b/appraisal/ruby-3.2.rb @@ -157,3 +157,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 6.1.0' +end diff --git a/appraisal/ruby-3.3.rb b/appraisal/ruby-3.3.rb index 6cca55fd17c..33577b58d03 100644 --- a/appraisal/ruby-3.3.rb +++ b/appraisal/ruby-3.3.rb @@ -161,3 +161,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 6.1.0' +end From c7301d3c2c41c28cd591bdb8a13e56d6825e46ce Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Tue, 6 Feb 2024 11:25:06 -0500 Subject: [PATCH 32/35] adds jruby tests and lint --- Rakefile | 2 +- appraisal/jruby-9.2.rb | 8 + appraisal/jruby-9.3.rb | 8 + appraisal/jruby-9.4.rb | 8 + gemfiles/ruby_3.1_multi_rack_app.gemfile.lock | 9 +- .../tracing/contrib/rack/http_route_spec.rb | 149 +++++++++--------- 6 files changed, 102 insertions(+), 82 deletions(-) diff --git a/Rakefile b/Rakefile index 04eab094249..4aa6ed2e76e 100644 --- a/Rakefile +++ b/Rakefile @@ -381,7 +381,7 @@ namespace :spec do t.rspec_opts = args.to_a.join(' ') end - #desc '' # "Explicitly hiding from `rake -T`" + # desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:routetest) do |t, args| t.pattern = 'spec/datadog/tracing/contrib/rack/http_route_spec.rb' t.rspec_opts = args.to_a.join(' ') diff --git a/appraisal/jruby-9.2.rb b/appraisal/jruby-9.2.rb index 60d0c1ebab6..499f2d27dc3 100644 --- a/appraisal/jruby-9.2.rb +++ b/appraisal/jruby-9.2.rb @@ -289,3 +289,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 5.2.1' +end diff --git a/appraisal/jruby-9.3.rb b/appraisal/jruby-9.3.rb index bdc4da0c834..909f16428ee 100644 --- a/appraisal/jruby-9.3.rb +++ b/appraisal/jruby-9.3.rb @@ -260,3 +260,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 5.2.1' +end diff --git a/appraisal/jruby-9.4.rb b/appraisal/jruby-9.4.rb index 3e27e129855..2be3709b7c0 100644 --- a/appraisal/jruby-9.4.rb +++ b/appraisal/jruby-9.4.rb @@ -166,3 +166,11 @@ appraise 'core-old' do gem 'dogstatsd-ruby', '~> 4' end + +appraise 'multi-rack-app' do + gem 'sinatra', '>= 3' + gem 'rack-contrib' + gem 'rack-test' # Dev dependencies for testing rack-based code + gem 'grape' + gem 'rails', '~> 6.1.0' +end diff --git a/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock index 3a7b07223da..ecd61e5927d 100644 --- a/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock +++ b/gemfiles/ruby_3.1_multi_rack_app.gemfile.lock @@ -11,8 +11,8 @@ GIT PATH remote: .. specs: - ddtrace (1.19.0) - datadog-ci (~> 0.6.0) + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) debase-ruby_core_source (= 3.3.1) libdatadog (~> 5.0.0.1.0) libddwaf (~> 1.14.0.0.0) @@ -105,7 +105,7 @@ GEM rexml crass (1.0.6) cri (2.15.11) - datadog-ci (0.6.0) + datadog-ci (0.7.0) msgpack date (3.3.4) debase-ruby_core_source (3.3.1) @@ -148,10 +148,7 @@ GEM json (2.7.1) json-schema (2.8.1) addressable (>= 2.4) - libdatadog (5.0.0.1.0-aarch64-linux) libdatadog (5.0.0.1.0-x86_64-linux) - libddwaf (1.14.0.0.0-aarch64-linux) - ffi (~> 1.0) libddwaf (1.14.0.0.0-x86_64-linux) ffi (~> 1.0) loofah (2.22.0) diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/rack/http_route_spec.rb index 9cad717447f..8a48e0cc780 100644 --- a/spec/datadog/tracing/contrib/rack/http_route_spec.rb +++ b/spec/datadog/tracing/contrib/rack/http_route_spec.rb @@ -30,7 +30,6 @@ end shared_context 'multi-app' do - let(:app) do apps_to_build = apps @@ -60,7 +59,7 @@ let(:rack_app) do Rack::Builder.new do map '/hello/world' do - run -> (env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } + run ->(_env) { [200, { 'content-type' => 'text/plain' }, 'hello world'] } end end end @@ -68,7 +67,7 @@ let(:sinatra_app) do Class.new(Sinatra::Application) do get '/hello/world' do - "hello world" + 'hello world' end get '/hello/:id' do @@ -90,25 +89,26 @@ let(:rails_app) do Class.new(Rails::Engine) do - class HelloController < ActionController::Base - unless method_defined?(:world) - define_method(:world) do - render plain: 'Hello, world!' - end - end + routes.draw do + get '/hello/world' => 'hello#world' + get '/hello/:id' => 'hello#show' + end + end + end - unless method_defined?(:show) - define_method(:show) do - render plain: "Hello, #{params[:id]}!" - end + before do + stub_const( + 'HelloController', + Class.new(ActionController::Base) do + def world + render plain: 'Hello, world!' end - end - routes.draw do - get "/hello/world" => "hello#world" - get "/hello/:id" => "hello#show" + def show + render plain: "Hello, #{params[:id]}!" + end end - end + ) end end @@ -121,11 +121,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/hello/world') + + break end end end @@ -136,11 +136,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/hello/world') + + break end end end @@ -151,11 +151,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/sinatra/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - next - end + expect(span.get_tag('http.route')).to eq('/sinatra/hello/world') + + next end end end @@ -166,11 +166,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/sinatra/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/sinatra/hello/:id') + + break end end end @@ -181,11 +181,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/grape/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/grape/hello/world') + + break end end end @@ -196,11 +196,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/grape/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/grape/hello/:id') + + break end end end @@ -211,11 +211,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rails/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rails/hello/world') + + break end end end @@ -226,11 +226,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rails/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rails/hello/:id') + + break end end end @@ -245,11 +245,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/world') + + break end end end @@ -260,11 +260,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/sinatra/hello/:id') + + break end end end @@ -275,11 +275,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/grape/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/grape/hello/world') + + break end end end @@ -290,11 +290,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/grape/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/grape/hello/:id') + + break end end end @@ -305,11 +305,11 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/rails/hello/world') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/rails/hello/world') + + break end end end @@ -320,14 +320,13 @@ class HelloController < ActionController::Base it do is_expected.to be_ok spans.each do |span| - if span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - expect(span.get_tag('http.route')).to eq('/rack/rails/hello/:id') + next unless span.name == Datadog::Tracing::Contrib::Rack::Ext::SPAN_REQUEST - break - end + expect(span.get_tag('http.route')).to eq('/rack/rails/hello/:id') + + break end end end end - end From b640089d4bc8513a87f59b24b529440a45e38847 Mon Sep 17 00:00:00 2001 From: zarirhamza Date: Tue, 6 Feb 2024 17:03:06 +0000 Subject: [PATCH 33/35] Update gemfiles/* --- gemfiles/jruby_9.2_multi_rack_app.gemfile | 40 ++ .../jruby_9.2_multi_rack_app.gemfile.lock | 311 ++++++++++++++ gemfiles/jruby_9.3_multi_rack_app.gemfile | 44 ++ .../jruby_9.3_multi_rack_app.gemfile.lock | 343 ++++++++++++++++ gemfiles/jruby_9.4_multi_rack_app.gemfile | 45 +++ .../jruby_9.4_multi_rack_app.gemfile.lock | 362 +++++++++++++++++ gemfiles/ruby_2.5_multi_rack_app.gemfile | 44 ++ gemfiles/ruby_2.5_multi_rack_app.gemfile.lock | 328 +++++++++++++++ gemfiles/ruby_2.6_multi_rack_app.gemfile | 48 +++ gemfiles/ruby_2.6_multi_rack_app.gemfile.lock | 360 +++++++++++++++++ gemfiles/ruby_2.7_multi_rack_app.gemfile | 48 +++ gemfiles/ruby_2.7_multi_rack_app.gemfile.lock | 358 +++++++++++++++++ gemfiles/ruby_3.0_multi_rack_app.gemfile | 49 +++ gemfiles/ruby_3.0_multi_rack_app.gemfile.lock | 379 ++++++++++++++++++ gemfiles/ruby_3.2_multi_rack_app.gemfile | 48 +++ gemfiles/ruby_3.2_multi_rack_app.gemfile.lock | 374 +++++++++++++++++ gemfiles/ruby_3.3_multi_rack_app.gemfile | 48 +++ gemfiles/ruby_3.3_multi_rack_app.gemfile.lock | 373 +++++++++++++++++ 18 files changed, 3602 insertions(+) create mode 100644 gemfiles/jruby_9.2_multi_rack_app.gemfile create mode 100644 gemfiles/jruby_9.2_multi_rack_app.gemfile.lock create mode 100644 gemfiles/jruby_9.3_multi_rack_app.gemfile create mode 100644 gemfiles/jruby_9.3_multi_rack_app.gemfile.lock create mode 100644 gemfiles/jruby_9.4_multi_rack_app.gemfile create mode 100644 gemfiles/jruby_9.4_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_2.5_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_2.5_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_2.6_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_2.6_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_2.7_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_2.7_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_3.0_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_3.0_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_3.2_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_3.2_multi_rack_app.gemfile.lock create mode 100644 gemfiles/ruby_3.3_multi_rack_app.gemfile create mode 100644 gemfiles/ruby_3.3_multi_rack_app.gemfile.lock diff --git a/gemfiles/jruby_9.2_multi_rack_app.gemfile b/gemfiles/jruby_9.2_multi_rack_app.gemfile new file mode 100644 index 00000000000..c6ad9c076fb --- /dev/null +++ b/gemfiles/jruby_9.2_multi_rack_app.gemfile @@ -0,0 +1,40 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "yard", "~> 0.9" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "sinatra" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 5.2.1" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.2_multi_rack_app.gemfile.lock b/gemfiles/jruby_9.2_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..9f3cf167164 --- /dev/null +++ b/gemfiles/jruby_9.2_multi_rack_app.gemfile.lock @@ -0,0 +1,311 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) + globalid (>= 0.3.6) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + arel (9.0.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6-java) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + debase-ruby_core_source (3.3.1) + diff-lcs (1.5.1) + digest (3.1.1-java) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-configurable (0.12.1) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5.0) + dry-container (0.7.2) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.1, >= 0.1.3) + dry-core (0.6.0) + concurrent-ruby (~> 1.0) + dry-inflector (0.2.0) + dry-logic (1.2.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5) + dry-types (1.5.1) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.5, >= 0.5) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) + erubi (1.12.0) + ffi (1.16.3-java) + globalid (1.1.0) + activesupport (>= 5.0) + grape (1.7.0) + activesupport + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + io-wait (0.3.1-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.2) + minitest (5.15.0) + msgpack (1.7.2-java) + mustermann (2.0.2) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.2.2) + digest + net-protocol + strscan + net-pop (0.1.2) + net-protocol + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.0) + digest + net-protocol + timeout + nio4r (2.7.0-java) + nokogiri (1.12.5-java) + racc (~> 1.4) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (4.0.7) + racc (1.7.3-java) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (2.2.4) + rack + rack-test (2.1.0) + rack (>= 1.3) + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) + method_source + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rake (13.1.0) + rake-compiler (1.2.7) + rake + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.3.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + ruby-debug-base (0.11.0-java) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (2.2.4) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.4) + tilt (~> 2.0) + spoon (0.0.6) + ffi + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + strscan (3.1.0-java) + thor (1.2.2) + thread_safe (0.3.6-java) + tilt (2.3.0) + timeout (0.4.0) + tzinfo (1.2.11) + thread_safe (~> 0.1) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + +PLATFORMS + universal-java-1.8 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack-contrib + rack-test + rails (~> 5.2.1) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra + warning (~> 1) + webmock (>= 3.10.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.3_multi_rack_app.gemfile b/gemfiles/jruby_9.3_multi_rack_app.gemfile new file mode 100644 index 00000000000..1c1fa567d47 --- /dev/null +++ b/gemfiles/jruby_9.3_multi_rack_app.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 5.2.1" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.3_multi_rack_app.gemfile.lock b/gemfiles/jruby_9.3_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..108797066cc --- /dev/null +++ b/gemfiles/jruby_9.3_multi_rack_app.gemfile.lock @@ -0,0 +1,343 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) + globalid (>= 0.3.6) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + arel (9.0.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6-java) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4-java) + debase-ruby_core_source (3.3.1) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-configurable (0.13.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.6) + dry-container (0.9.0) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.13, >= 0.13.0) + dry-core (0.7.1) + concurrent-ruby (~> 1.0) + dry-inflector (0.2.1) + dry-logic (1.2.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5) + dry-types (1.5.1) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.5, >= 0.5) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) + erubi (1.12.0) + ffi (1.16.3-java) + globalid (1.1.0) + activesupport (>= 5.0) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2-java) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0-java) + nokogiri (1.13.10-java) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.0.4) + racc (1.7.3-java) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) + method_source + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.4.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + spoon (0.0.6) + ffi + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + thread_safe (0.3.6-java) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (1.2.11) + thread_safe (~> 0.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack-contrib + rack-test + rails (~> 5.2.1) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/jruby_9.4_multi_rack_app.gemfile b/gemfiles/jruby_9.4_multi_rack_app.gemfile new file mode 100644 index 00000000000..497f65f4870 --- /dev/null +++ b/gemfiles/jruby_9.4_multi_rack_app.gemfile @@ -0,0 +1,45 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-debugger-jruby" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 6.1.0" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/jruby_9.4_multi_rack_app.gemfile.lock b/gemfiles/jruby_9.4_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..54f206722bb --- /dev/null +++ b/gemfiles/jruby_9.4_multi_rack_app.gemfile.lock @@ -0,0 +1,362 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6-java) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4-java) + debase-ruby_core_source (3.3.1) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + ffi (1.16.3-java) + globalid (1.2.1) + activesupport (>= 6.1) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1-java) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0) + libddwaf (1.14.0.0.0-java) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2-java) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0-java) + nokogiri (1.16.2-java) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2-java) + coderay (~> 1.1) + method_source (~> 1.0) + spoon (~> 0.0) + pry-debugger-jruby (2.1.1-java) + pry (>= 0.13, < 0.15) + ruby-debug-base (>= 0.10.4, < 0.12) + public_suffix (5.0.4) + racc (1.7.3-java) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-debug-base (0.11.0-java) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + spoon (0.0.6) + ffi + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6-java) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.13) + +PLATFORMS + universal-java-11 + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-debugger-jruby + rack-contrib + rack-test + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.5_multi_rack_app.gemfile b/gemfiles/ruby_2.5_multi_rack_app.gemfile new file mode 100644 index 00000000000..29e9626adaf --- /dev/null +++ b/gemfiles/ruby_2.5_multi_rack_app.gemfile @@ -0,0 +1,44 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-nav" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "yard", "~> 0.9" +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "sinatra" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 5.2.1" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.5_multi_rack_app.gemfile.lock b/gemfiles/ruby_2.5_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..c9a78ed615d --- /dev/null +++ b/gemfiles/ruby_2.5_multi_rack_app.gemfile.lock @@ -0,0 +1,328 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) + globalid (>= 0.3.6) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + arel (9.0.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (0.8.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + digest (3.1.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-configurable (0.12.1) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5.0) + dry-container (0.7.2) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.1, >= 0.1.3) + dry-core (0.6.0) + concurrent-ruby (~> 1.0) + dry-inflector (0.2.0) + dry-logic (1.2.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5) + dry-types (1.5.1) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.5, >= 0.5) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.1.0) + activesupport (>= 5.0) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + grape (1.7.0) + activesupport + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + io-wait (0.3.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.2) + mini_portile2 (2.6.1) + minitest (5.15.0) + msgpack (1.7.2) + mustermann (2.0.2) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.2.2) + digest + net-protocol + strscan + net-pop (0.1.2) + net-protocol + net-protocol (0.1.2) + io-wait + timeout + net-smtp (0.3.0) + digest + net-protocol + timeout + nio4r (2.7.0) + nokogiri (1.12.5) + mini_portile2 (~> 2.6.1) + racc (~> 1.4) + nokogiri (1.12.5-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-nav (1.0.0) + pry (>= 0.9.10, < 0.15) + pry-stack_explorer (0.4.13) + binding_of_caller (~> 0.7) + pry (~> 0.13) + public_suffix (4.0.7) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (2.2.4) + rack + rack-test (2.1.0) + rack (>= 1.3) + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) + method_source + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.3.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (2.2.4) + mustermann (~> 2.0) + rack (~> 2.2) + rack-protection (= 2.2.4) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + strscan (3.1.0) + thor (1.2.2) + thread_safe (0.3.6) + tilt (2.3.0) + timeout (0.4.0) + tzinfo (1.2.11) + thread_safe (~> 0.1) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-nav + pry-stack_explorer + rack-contrib + rack-test + rails (~> 5.2.1) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra + warning (~> 1) + webmock (>= 3.10.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.6_multi_rack_app.gemfile b/gemfiles/ruby_2.6_multi_rack_app.gemfile new file mode 100644 index 00000000000..e63f93f08f3 --- /dev/null +++ b/gemfiles/ruby_2.6_multi_rack_app.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1", "< 3.19.2"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 5.2.1" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.6_multi_rack_app.gemfile.lock b/gemfiles/ruby_2.6_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..49044e453d5 --- /dev/null +++ b/gemfiles/ruby_2.6_multi_rack_app.gemfile.lock @@ -0,0 +1,360 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) + globalid (>= 0.3.6) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + arel (9.0.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-configurable (0.13.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.6) + dry-container (0.9.0) + concurrent-ruby (~> 1.0) + dry-configurable (~> 0.13, >= 0.13.0) + dry-core (0.7.1) + concurrent-ruby (~> 1.0) + dry-inflector (0.2.1) + dry-logic (1.2.0) + concurrent-ruby (~> 1.0) + dry-core (~> 0.5, >= 0.5) + dry-types (1.5.1) + concurrent-ruby (~> 1.0) + dry-container (~> 0.3) + dry-core (~> 0.5, >= 0.5) + dry-inflector (~> 0.1, >= 0.1.2) + dry-logic (~> 1.0, >= 1.0.2) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.1.0) + activesupport (>= 5.0) + google-protobuf (3.19.1) + google-protobuf (3.19.1-x86_64-linux) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.3.7) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.13.10-aarch64-linux) + racc (~> 1.4) + nokogiri (1.13.10-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.8.0) + byebug (~> 11.0) + pry (~> 0.10) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.5.0) + loofah (~> 2.19, >= 2.19.1) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) + method_source + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.4.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.18.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.17.1) + rubocop (>= 1.7.0, < 2.0) + rubocop-ast (>= 0.4.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + thread_safe (0.3.6) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (1.2.11) + thread_safe (~> 0.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, < 3.19.2, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack-contrib + rack-test + rails (~> 5.2.1) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_2.7_multi_rack_app.gemfile b/gemfiles/ruby_2.7_multi_rack_app.gemfile new file mode 100644 index 00000000000..6a5ceddeba5 --- /dev/null +++ b/gemfiles/ruby_2.7_multi_rack_app.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 5.2.1" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_2.7_multi_rack_app.gemfile.lock b/gemfiles/ruby_2.7_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..3aaf9df480d --- /dev/null +++ b/gemfiles/ruby_2.7_multi_rack_app.gemfile.lock @@ -0,0 +1,358 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (5.2.8.1) + actionpack (= 5.2.8.1) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailer (5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (5.2.8.1) + actionview (= 5.2.8.1) + activesupport (= 5.2.8.1) + rack (~> 2.0, >= 2.0.8) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.2) + actionview (5.2.8.1) + activesupport (= 5.2.8.1) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.0.3) + activejob (5.2.8.1) + activesupport (= 5.2.8.1) + globalid (>= 0.3.6) + activemodel (5.2.8.1) + activesupport (= 5.2.8.1) + activerecord (5.2.8.1) + activemodel (= 5.2.8.1) + activesupport (= 5.2.8.1) + arel (>= 9.0) + activestorage (5.2.8.1) + actionpack (= 5.2.8.1) + activerecord (= 5.2.8.1) + marcel (~> 1.0.0) + activesupport (5.2.8.1) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 0.7, < 2) + minitest (~> 5.1) + tzinfo (~> 1.1) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + arel (9.0.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.0) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.1) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.1.0) + activesupport (>= 5.0) + google-protobuf (3.25.2-aarch64-linux) + google-protobuf (3.25.2-x86_64-linux) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.15.5-aarch64-linux) + racc (~> 1.4) + nokogiri (1.15.5-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (5.2.8.1) + actioncable (= 5.2.8.1) + actionmailer (= 5.2.8.1) + actionpack (= 5.2.8.1) + actionview (= 5.2.8.1) + activejob (= 5.2.8.1) + activemodel (= 5.2.8.1) + activerecord (= 5.2.8.1) + activestorage (= 5.2.8.1) + activesupport (= 5.2.8.1) + bundler (>= 1.3.0) + railties (= 5.2.8.1) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (5.2.8.1) + actionpack (= 5.2.8.1) + activesupport (= 5.2.8.1) + method_source + rake (>= 0.8.7) + thor (>= 0.19.0, < 2.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + thread_safe (0.3.6) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (1.2.11) + thread_safe (~> 0.1) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.13) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack-contrib + rack-test + rails (~> 5.2.1) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.0_multi_rack_app.gemfile b/gemfiles/ruby_3.0_multi_rack_app.gemfile new file mode 100644 index 00000000000..c3efafe49a7 --- /dev/null +++ b/gemfiles/ruby_3.0_multi_rack_app.gemfile @@ -0,0 +1,49 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-byebug" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 6.1.0" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.0_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.0_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..0d461b48119 --- /dev/null +++ b/gemfiles/ruby_3.0_multi_rack_app.gemfile.lock @@ -0,0 +1,379 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + byebug (11.1.3) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.2-aarch64-linux) + google-protobuf (3.25.2-x86_64-linux) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.16.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.2-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-byebug (3.10.1) + byebug (~> 11.0) + pry (>= 0.13, < 0.15) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.13) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-byebug + pry-stack_explorer + rack-contrib + rack-test + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.2_multi_rack_app.gemfile b/gemfiles/ruby_3.2_multi_rack_app.gemfile new file mode 100644 index 00000000000..d5deb903244 --- /dev/null +++ b/gemfiles/ruby_3.2_multi_rack_app.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 6.1.0" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.2_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.2_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..1901570110e --- /dev/null +++ b/gemfiles/ruby_3.2_multi_rack_app.gemfile.lock @@ -0,0 +1,374 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.2-aarch64-linux) + google-protobuf (3.25.2-x86_64-linux) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.16.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.2-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.13) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rack-contrib + rack-test + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 diff --git a/gemfiles/ruby_3.3_multi_rack_app.gemfile b/gemfiles/ruby_3.3_multi_rack_app.gemfile new file mode 100644 index 00000000000..d5deb903244 --- /dev/null +++ b/gemfiles/ruby_3.3_multi_rack_app.gemfile @@ -0,0 +1,48 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal", "~> 2.4.0" +gem "benchmark-ips", "~> 2.8" +gem "benchmark-memory", "< 0.2" +gem "builder" +gem "climate_control", "~> 0.2.0" +gem "concurrent-ruby" +gem "extlz4", "~> 0.3", ">= 0.3.3" +gem "json-schema", "< 3" +gem "memory_profiler", "~> 0.9" +gem "os", "~> 1.1" +gem "pimpmychangelog", ">= 0.1.2" +gem "pry" +gem "pry-stack_explorer" +gem "rake", ">= 10.5" +gem "rake-compiler", "~> 1.1", ">= 1.1.1" +gem "redcarpet", "~> 3.4" +gem "rspec", "~> 3.12" +gem "rspec-collection_matchers", "~> 1.1" +gem "rspec-wait", "~> 0" +gem "rspec_junit_formatter", ">= 0.5.1" +gem "rspec_n", "~> 1.3" +gem "simplecov", git: "https://github.com/DataDog/simplecov", ref: "3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db" +gem "simplecov-cobertura", "~> 2.1.0" +gem "warning", "~> 1" +gem "webmock", ">= 3.10.0" +gem "webrick", ">= 1.7.0" +gem "yard", "~> 0.9" +gem "rubocop", "~> 1.50.0", require: false +gem "rubocop-packaging", "~> 0.5.2", require: false +gem "rubocop-performance", "~> 1.9", require: false +gem "rubocop-rspec", ["~> 2.20", "< 2.21"], require: false +gem "dogstatsd-ruby", ">= 3.3.0", "!= 5.0.0", "!= 5.0.1", "!= 5.1.0" +gem "google-protobuf", ["~> 3.0", "!= 3.7.0", "!= 3.7.1"] +gem "sinatra", ">= 3" +gem "rack-contrib" +gem "rack-test" +gem "grape" +gem "rails", "~> 6.1.0" + +group :check do + +end + +gemspec path: "../" diff --git a/gemfiles/ruby_3.3_multi_rack_app.gemfile.lock b/gemfiles/ruby_3.3_multi_rack_app.gemfile.lock new file mode 100644 index 00000000000..d8ff8e4c3f2 --- /dev/null +++ b/gemfiles/ruby_3.3_multi_rack_app.gemfile.lock @@ -0,0 +1,373 @@ +GIT + remote: https://github.com/DataDog/simplecov + revision: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + ref: 3bb6b7ee58bf4b1954ca205f50dd44d6f41c57db + specs: + simplecov (0.21.2) + docile (~> 1.1) + simplecov-html (~> 0.11) + simplecov_json_formatter (~> 0.1) + +PATH + remote: .. + specs: + ddtrace (1.20.0) + datadog-ci (~> 0.7.0) + debase-ruby_core_source (= 3.3.1) + libdatadog (~> 5.0.0.1.0) + libddwaf (~> 1.14.0.0.0) + msgpack + +GEM + remote: https://rubygems.org/ + specs: + actioncable (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + nio4r (~> 2.0) + websocket-driver (>= 0.6.1) + actionmailbox (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (>= 2.7.1) + actionmailer (6.1.7.6) + actionpack (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activesupport (= 6.1.7.6) + mail (~> 2.5, >= 2.5.4) + rails-dom-testing (~> 2.0) + actionpack (6.1.7.6) + actionview (= 6.1.7.6) + activesupport (= 6.1.7.6) + rack (~> 2.0, >= 2.0.9) + rack-test (>= 0.6.3) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.0, >= 1.2.0) + actiontext (6.1.7.6) + actionpack (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + nokogiri (>= 1.8.5) + actionview (6.1.7.6) + activesupport (= 6.1.7.6) + builder (~> 3.1) + erubi (~> 1.4) + rails-dom-testing (~> 2.0) + rails-html-sanitizer (~> 1.1, >= 1.2.0) + activejob (6.1.7.6) + activesupport (= 6.1.7.6) + globalid (>= 0.3.6) + activemodel (6.1.7.6) + activesupport (= 6.1.7.6) + activerecord (6.1.7.6) + activemodel (= 6.1.7.6) + activesupport (= 6.1.7.6) + activestorage (6.1.7.6) + actionpack (= 6.1.7.6) + activejob (= 6.1.7.6) + activerecord (= 6.1.7.6) + activesupport (= 6.1.7.6) + marcel (~> 1.0) + mini_mime (>= 1.1.0) + activesupport (6.1.7.6) + concurrent-ruby (~> 1.0, >= 1.0.2) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + zeitwerk (~> 2.3) + addressable (2.8.6) + public_suffix (>= 2.0.2, < 6.0) + appraisal (2.4.1) + bundler + rake + thor (>= 0.14.0) + ast (2.4.2) + base64 (0.2.0) + benchmark-ips (2.13.0) + benchmark-memory (0.1.2) + memory_profiler (~> 0.9) + bigdecimal (3.1.6) + binding_of_caller (1.0.0) + debug_inspector (>= 0.0.1) + builder (3.2.4) + climate_control (0.2.0) + coderay (1.1.3) + colorize (0.8.1) + concurrent-ruby (1.2.3) + crack (0.4.6) + bigdecimal + rexml + crass (1.0.6) + cri (2.15.11) + datadog-ci (0.7.0) + msgpack + date (3.3.4) + debase-ruby_core_source (3.3.1) + debug_inspector (1.2.0) + diff-lcs (1.5.1) + docile (1.4.0) + dogstatsd-ruby (5.6.1) + dry-core (1.0.1) + concurrent-ruby (~> 1.0) + zeitwerk (~> 2.6) + dry-inflector (1.0.0) + dry-logic (1.5.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0, < 2) + zeitwerk (~> 2.6) + dry-types (1.7.2) + bigdecimal (~> 3.0) + concurrent-ruby (~> 1.0) + dry-core (~> 1.0) + dry-inflector (~> 1.0) + dry-logic (~> 1.4) + zeitwerk (~> 2.6) + erubi (1.12.0) + extlz4 (0.3.4) + ffi (1.16.3) + globalid (1.2.1) + activesupport (>= 6.1) + google-protobuf (3.25.2) + grape (2.0.0) + activesupport (>= 5) + builder + dry-types (>= 1.1) + mustermann-grape (~> 1.0.0) + rack (>= 1.3.0) + rack-accept + hashdiff (1.1.0) + i18n (1.14.1) + concurrent-ruby (~> 1.0) + json (2.7.1) + json-schema (2.8.1) + addressable (>= 2.4) + libdatadog (5.0.0.1.0-aarch64-linux) + libdatadog (5.0.0.1.0-x86_64-linux) + libddwaf (1.14.0.0.0-aarch64-linux) + ffi (~> 1.0) + libddwaf (1.14.0.0.0-x86_64-linux) + ffi (~> 1.0) + loofah (2.22.0) + crass (~> 1.0.2) + nokogiri (>= 1.12.0) + mail (2.8.1) + mini_mime (>= 0.1.1) + net-imap + net-pop + net-smtp + marcel (1.0.2) + memory_profiler (0.9.14) + method_source (1.0.0) + mini_mime (1.1.5) + minitest (5.22.0) + msgpack (1.7.2) + mustermann (3.0.0) + ruby2_keywords (~> 0.0.1) + mustermann-grape (1.0.2) + mustermann (>= 1.0.0) + net-imap (0.4.10) + date + net-protocol + net-pop (0.1.2) + net-protocol + net-protocol (0.2.2) + timeout + net-smtp (0.4.0.1) + net-protocol + nio4r (2.7.0) + nokogiri (1.16.2-aarch64-linux) + racc (~> 1.4) + nokogiri (1.16.2-x86_64-linux) + racc (~> 1.4) + os (1.1.4) + parallel (1.24.0) + parser (3.3.0.5) + ast (~> 2.4.1) + racc + pimpmychangelog (0.1.3) + pry (0.14.2) + coderay (~> 1.1) + method_source (~> 1.0) + pry-stack_explorer (0.6.1) + binding_of_caller (~> 1.0) + pry (~> 0.13) + public_suffix (5.0.4) + racc (1.7.3) + rack (2.2.8) + rack-accept (0.4.5) + rack (>= 0.4) + rack-contrib (2.4.0) + rack (< 4) + rack-protection (3.2.0) + base64 (>= 0.1.0) + rack (~> 2.2, >= 2.2.4) + rack-test (2.1.0) + rack (>= 1.3) + rails (6.1.7.6) + actioncable (= 6.1.7.6) + actionmailbox (= 6.1.7.6) + actionmailer (= 6.1.7.6) + actionpack (= 6.1.7.6) + actiontext (= 6.1.7.6) + actionview (= 6.1.7.6) + activejob (= 6.1.7.6) + activemodel (= 6.1.7.6) + activerecord (= 6.1.7.6) + activestorage (= 6.1.7.6) + activesupport (= 6.1.7.6) + bundler (>= 1.15.0) + railties (= 6.1.7.6) + sprockets-rails (>= 2.0.0) + rails-dom-testing (2.2.0) + activesupport (>= 5.0.0) + minitest + nokogiri (>= 1.6) + rails-html-sanitizer (1.6.0) + loofah (~> 2.21) + nokogiri (~> 1.14) + railties (6.1.7.6) + actionpack (= 6.1.7.6) + activesupport (= 6.1.7.6) + method_source + rake (>= 12.2) + thor (~> 1.0) + rainbow (3.1.1) + rake (13.1.0) + rake-compiler (1.2.7) + rake + redcarpet (3.6.0) + regexp_parser (2.9.0) + rexml (3.2.6) + rspec (3.13.0) + rspec-core (~> 3.13.0) + rspec-expectations (~> 3.13.0) + rspec-mocks (~> 3.13.0) + rspec-collection_matchers (1.2.1) + rspec-expectations (>= 2.99.0.beta1) + rspec-core (3.13.0) + rspec-support (~> 3.13.0) + rspec-expectations (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-mocks (3.13.0) + diff-lcs (>= 1.2.0, < 2.0) + rspec-support (~> 3.13.0) + rspec-support (3.13.0) + rspec-wait (0.0.9) + rspec (>= 3, < 4) + rspec_junit_formatter (0.6.0) + rspec-core (>= 2, < 4, != 2.12.0) + rspec_n (1.5.0) + colorize (~> 0.8.0) + cri (~> 2.15.3) + rubocop (1.50.2) + json (~> 2.3) + parallel (~> 1.10) + parser (>= 3.2.0.0) + rainbow (>= 2.2.2, < 4.0) + regexp_parser (>= 1.8, < 3.0) + rexml (>= 3.2.5, < 4.0) + rubocop-ast (>= 1.28.0, < 2.0) + ruby-progressbar (~> 1.7) + unicode-display_width (>= 2.4.0, < 3.0) + rubocop-ast (1.30.0) + parser (>= 3.2.1.0) + rubocop-capybara (2.20.0) + rubocop (~> 1.41) + rubocop-packaging (0.5.2) + rubocop (>= 1.33, < 2.0) + rubocop-performance (1.20.2) + rubocop (>= 1.48.1, < 2.0) + rubocop-ast (>= 1.30.0, < 2.0) + rubocop-rspec (2.20.0) + rubocop (~> 1.33) + rubocop-capybara (~> 2.17) + ruby-progressbar (1.13.0) + ruby2_keywords (0.0.5) + simplecov-cobertura (2.1.0) + rexml + simplecov (~> 0.19) + simplecov-html (0.12.3) + simplecov_json_formatter (0.1.4) + sinatra (3.2.0) + mustermann (~> 3.0) + rack (~> 2.2, >= 2.2.4) + rack-protection (= 3.2.0) + tilt (~> 2.0) + sprockets (4.2.1) + concurrent-ruby (~> 1.0) + rack (>= 2.2.4, < 4) + sprockets-rails (3.4.2) + actionpack (>= 5.2) + activesupport (>= 5.2) + sprockets (>= 3.0.0) + thor (1.3.0) + tilt (2.3.0) + timeout (0.4.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) + unicode-display_width (2.5.0) + warning (1.3.0) + webmock (3.19.1) + addressable (>= 2.8.0) + crack (>= 0.3.2) + hashdiff (>= 0.4.0, < 2.0.0) + webrick (1.8.1) + websocket-driver (0.7.6) + websocket-extensions (>= 0.1.0) + websocket-extensions (0.1.5) + yard (0.9.34) + zeitwerk (2.6.13) + +PLATFORMS + aarch64-linux + x86_64-linux + +DEPENDENCIES + appraisal (~> 2.4.0) + benchmark-ips (~> 2.8) + benchmark-memory (< 0.2) + builder + climate_control (~> 0.2.0) + concurrent-ruby + ddtrace! + dogstatsd-ruby (>= 3.3.0, != 5.1.0, != 5.0.1, != 5.0.0) + extlz4 (~> 0.3, >= 0.3.3) + google-protobuf (~> 3.0, != 3.7.1, != 3.7.0) + grape + json-schema (< 3) + memory_profiler (~> 0.9) + os (~> 1.1) + pimpmychangelog (>= 0.1.2) + pry + pry-stack_explorer + rack-contrib + rack-test + rails (~> 6.1.0) + rake (>= 10.5) + rake-compiler (~> 1.1, >= 1.1.1) + redcarpet (~> 3.4) + rspec (~> 3.12) + rspec-collection_matchers (~> 1.1) + rspec-wait (~> 0) + rspec_junit_formatter (>= 0.5.1) + rspec_n (~> 1.3) + rubocop (~> 1.50.0) + rubocop-packaging (~> 0.5.2) + rubocop-performance (~> 1.9) + rubocop-rspec (~> 2.20, < 2.21) + simplecov! + simplecov-cobertura (~> 2.1.0) + sinatra (>= 3) + warning (~> 1) + webmock (>= 3.10.0) + webrick (>= 1.7.0) + yard (~> 0.9) + +BUNDLED WITH + 2.3.26 From 128ce7d39d3b634a81a067539d0cced1ba105614 Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Tue, 6 Feb 2024 12:21:39 -0500 Subject: [PATCH 34/35] fixed rakefile --- Rakefile | 4 ++-- spec/datadog/tracing/contrib/{rack => }/http_route_spec.rb | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename spec/datadog/tracing/contrib/{rack => }/http_route_spec.rb (100%) diff --git a/Rakefile b/Rakefile index 4aa6ed2e76e..11afc6126a8 100644 --- a/Rakefile +++ b/Rakefile @@ -346,7 +346,7 @@ namespace :spec do task all: [:main, :benchmark, :rails, :railsredis, :railsredis_activesupport, :railsactivejob, :elasticsearch, :http, :redis, :sidekiq, :sinatra, :hanami, :hanami_autoinstrument, - :profiling] + :profiling, :routetest] desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:main) do |t, args| @@ -381,7 +381,7 @@ namespace :spec do t.rspec_opts = args.to_a.join(' ') end - # desc '' # "Explicitly hiding from `rake -T`" + desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:routetest) do |t, args| t.pattern = 'spec/datadog/tracing/contrib/rack/http_route_spec.rb' t.rspec_opts = args.to_a.join(' ') diff --git a/spec/datadog/tracing/contrib/rack/http_route_spec.rb b/spec/datadog/tracing/contrib/http_route_spec.rb similarity index 100% rename from spec/datadog/tracing/contrib/rack/http_route_spec.rb rename to spec/datadog/tracing/contrib/http_route_spec.rb From 6d0f1186cd067a19bdebe5eabe660e50f97f94aa Mon Sep 17 00:00:00 2001 From: Zarir Hamza Date: Thu, 8 Feb 2024 13:37:22 -0500 Subject: [PATCH 35/35] rewrites as trace tag --- Rakefile | 2 +- lib/datadog/tracing/contrib/grape/endpoint.rb | 7 ++----- lib/datadog/tracing/contrib/rack/middlewares.rb | 15 +++++++++------ lib/datadog/tracing/contrib/rails/patcher.rb | 6 +++--- lib/datadog/tracing/contrib/sinatra/tracer.rb | 6 +++--- lib/datadog/tracing/metadata/ext.rb | 1 + sig/datadog/tracing/metadata/ext.rbs | 1 + spec/datadog/tracing/contrib/http_route_spec.rb | 6 +++--- 8 files changed, 23 insertions(+), 21 deletions(-) diff --git a/Rakefile b/Rakefile index 11afc6126a8..a29cb33859e 100644 --- a/Rakefile +++ b/Rakefile @@ -383,7 +383,7 @@ namespace :spec do desc '' # "Explicitly hiding from `rake -T`" RSpec::Core::RakeTask.new(:routetest) do |t, args| - t.pattern = 'spec/datadog/tracing/contrib/rack/http_route_spec.rb' + t.pattern = 'spec/datadog/tracing/contrib/http_route_spec.rb' t.rspec_opts = args.to_a.join(' ') end diff --git a/lib/datadog/tracing/contrib/grape/endpoint.rb b/lib/datadog/tracing/contrib/grape/endpoint.rb index bc88ea2118e..3081660ccfb 100644 --- a/lib/datadog/tracing/contrib/grape/endpoint.rb +++ b/lib/datadog/tracing/contrib/grape/endpoint.rb @@ -64,7 +64,6 @@ def endpoint_start_process(_name, _start, _finish, _id, payload) Datadog.logger.error(e.message) end - # rubocop:disable Metrics/AbcSize def endpoint_run(name, start, finish, id, payload) return unless Thread.current[KEY_RUN] @@ -105,9 +104,8 @@ def endpoint_run(name, start, finish, id, payload) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method) span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path) - if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) - Thread.current[:datadog_http_routing] << [:grape, endpoint.env['SCRIPT_NAME'], integration_route] - end + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, integration_route) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, endpoint.env['SCRIPT_NAME']) ensure span.start(start) span.finish(finish) @@ -115,7 +113,6 @@ def endpoint_run(name, start, finish, id, payload) rescue StandardError => e Datadog.logger.error(e.message) end - # rubocop:enable Metrics/AbcSize def endpoint_start_render(*) return if Thread.current[KEY_RENDER] diff --git a/lib/datadog/tracing/contrib/rack/middlewares.rb b/lib/datadog/tracing/contrib/rack/middlewares.rb index a316780442a..d2811a6517a 100644 --- a/lib/datadog/tracing/contrib/rack/middlewares.rb +++ b/lib/datadog/tracing/contrib/rack/middlewares.rb @@ -102,7 +102,6 @@ def call(env) request_trace = Tracing.active_trace || TraceOperation.new env[Ext::RACK_ENV_REQUEST_SPAN] = request_span - Thread.current[:datadog_http_routing] = [] Datadog::Core::Remote::Tie::Tracing.tag(boot, request_span) @@ -113,9 +112,8 @@ def call(env) # call the rest of the stack status, headers, response = @app.call(env) - if status != 404 && (routed = Thread.current[:datadog_http_routing].last) - last_script_name = routed[1] - last_route = routed[2] + if status != 404 && (last_route = request_trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE)) + last_script_name = request_trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) # If the last_script_name is empty but the env['SCRIPT_NAME'] is NOT empty # then the current rack request was not routed and must be accounted for @@ -128,8 +126,13 @@ def call(env) last_route = env['PATH_INFO'] end - request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) if last_route - Thread.current[:datadog_http_routing] = [] + # Clear the route and route path tags from the request trace to avoid possibility of misplacement + request_trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE) + request_trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) + + # Ensure tags are placed in rack.request span as desired + request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route) + request_span.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH) end [status, headers, response] diff --git a/lib/datadog/tracing/contrib/rails/patcher.rb b/lib/datadog/tracing/contrib/rails/patcher.rb index b87ee263fbe..e2d147cd0cb 100644 --- a/lib/datadog/tracing/contrib/rails/patcher.rb +++ b/lib/datadog/tracing/contrib/rails/patcher.rb @@ -16,9 +16,9 @@ module JourneyRouterPatch def find_routes(*args) result = super integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any? - if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) - Thread.current[:datadog_http_routing] << [:rails, args.first.env['SCRIPT_NAME'], integration_route] - end + request_trace = Tracing.active_trace || TraceOperation.new + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, integration_route) + request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, args.first.env['SCRIPT_NAME']) result end end diff --git a/lib/datadog/tracing/contrib/sinatra/tracer.rb b/lib/datadog/tracing/contrib/sinatra/tracer.rb index 5116b6566aa..e85f3ea6830 100644 --- a/lib/datadog/tracing/contrib/sinatra/tracer.rb +++ b/lib/datadog/tracing/contrib/sinatra/tracer.rb @@ -74,9 +74,9 @@ def route_eval Contrib::Analytics.set_measured(span) _, path = env['sinatra.route'].split(' ', 2) - if Thread.current.key?(:datadog_http_routing) && Thread.current[:datadog_http_routing].is_a?(Array) - Thread.current[:datadog_http_routing] << [:sinatra, env['SCRIPT_NAME'], path] - end + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, path) + trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME']) + # binding.pry super end end diff --git a/lib/datadog/tracing/metadata/ext.rb b/lib/datadog/tracing/metadata/ext.rb index 3ea239a2c87..a2c944bd1b9 100644 --- a/lib/datadog/tracing/metadata/ext.rb +++ b/lib/datadog/tracing/metadata/ext.rb @@ -87,6 +87,7 @@ module HTTP TAG_CLIENT_IP = 'http.client_ip' HEADER_USER_AGENT = 'User-Agent' TAG_ROUTE = 'http.route' + TAG_ROUTE_PATH = 'http.route.path' # General header functionality module Headers diff --git a/sig/datadog/tracing/metadata/ext.rbs b/sig/datadog/tracing/metadata/ext.rbs index ed4d78e2d2d..f5a236abffc 100644 --- a/sig/datadog/tracing/metadata/ext.rbs +++ b/sig/datadog/tracing/metadata/ext.rbs @@ -43,6 +43,7 @@ module Datadog TAG_BASE_URL: ::String TAG_METHOD: ::String TAG_ROUTE: String + TAG_ROUTE_PATH: String TAG_STATUS_CODE: ::String TAG_USER_AGENT: ::String TAG_URL: ::String diff --git a/spec/datadog/tracing/contrib/http_route_spec.rb b/spec/datadog/tracing/contrib/http_route_spec.rb index 8a48e0cc780..924db954d96 100644 --- a/spec/datadog/tracing/contrib/http_route_spec.rb +++ b/spec/datadog/tracing/contrib/http_route_spec.rb @@ -34,8 +34,8 @@ apps_to_build = apps Rack::Builder.new do - apps_to_build.each do |root, app| - map root do + apps_to_build.each do |route, app| + map route do run app end end @@ -155,7 +155,7 @@ def show expect(span.get_tag('http.route')).to eq('/sinatra/hello/world') - next + break end end end