Skip to content

Commit

Permalink
do not fail when monkey patching datadog's internal classes, print wa…
Browse files Browse the repository at this point in the history
…rning instead
  • Loading branch information
anmarchenko committed Jul 24, 2024
1 parent 4e78d3d commit b0a957e
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
17 changes: 11 additions & 6 deletions lib/datadog/ci/configuration/components.rb
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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
Expand Down
4 changes: 4 additions & 0 deletions spec/datadog/ci/configuration/components_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit b0a957e

Please sign in to comment.