From b0a957e365e21cb6519e63f1b170b87d2fe86084 Mon Sep 17 00:00:00 2001 From: Andrey Date: Wed, 24 Jul 2024 12:55:36 +0200 Subject: [PATCH] do not fail when monkey patching datadog's internal classes, print warning instead --- lib/datadog/ci/configuration/components.rb | 17 +++++++++++------ .../datadog/ci/configuration/components_spec.rb | 4 ++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/lib/datadog/ci/configuration/components.rb b/lib/datadog/ci/configuration/components.rb index b0b8df78..7a012bdc 100644 --- a/lib/datadog/ci/configuration/components.rb +++ b/lib/datadog/ci/configuration/components.rb @@ -1,8 +1,6 @@ # frozen_string_literal: true -require "datadog/core/environment/identity" require "datadog/core/telemetry/ext" -require "datadog/core/telemetry/http/adapters/net" require_relative "../ext/settings" require_relative "../git/tree_uploader" @@ -261,11 +259,18 @@ def configure_telemetry(settings) return unless settings.telemetry.enabled - # patch gem's identity to report datadog-ci library version instead of datadog gem version - Core::Environment::Identity.include(CI::Utils::Identity) + begin + require "datadog/core/environment/identity" + require "datadog/core/telemetry/http/adapters/net" - # patch gem's telemetry transport layer to use Net::HTTP instead of WebMock's Net::HTTP - Core::Telemetry::Http::Adapters::Net.include(CI::Transport::Adapters::TelemetryWebmockSafeAdapter) + # patch gem's identity to report datadog-ci library version instead of datadog gem version + Core::Environment::Identity.include(CI::Utils::Identity) + + # patch gem's telemetry transport layer to use Net::HTTP instead of WebMock's Net::HTTP + Core::Telemetry::Http::Adapters::Net.include(CI::Transport::Adapters::TelemetryWebmockSafeAdapter) + rescue => e + Datadog.logger.warn("Failed to patch Datadog gem's telemetry layer: #{e}") + end # REMOVE BEFORE SUBMITTING FOR REVIEW # settings.telemetry.agentless_enabled = true diff --git a/spec/datadog/ci/configuration/components_spec.rb b/spec/datadog/ci/configuration/components_spec.rb index ca67d4db..5e8af105 100644 --- a/spec/datadog/ci/configuration/components_spec.rb +++ b/spec/datadog/ci/configuration/components_spec.rb @@ -153,6 +153,10 @@ it "patches Core::Environment::Identity module to replace the library version" do expect(Datadog::Core::Environment::Identity.gem_datadog_version).to eq(Datadog::CI::VERSION::STRING) end + + it "patches Datadog::Core::Telemetry::Http::Adapters::Net" do + expect(Datadog::Core::Telemetry::Http::Adapters::Net).to be < Datadog::CI::Transport::Adapters::TelemetryWebmockSafeAdapter + end end context "when environment value for telemetry is present" do