datadog-ci 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -2
  3. data/lib/datadog/ci/configuration/components.rb +30 -3
  4. data/lib/datadog/ci/contrib/cucumber/formatter.rb +13 -9
  5. data/lib/datadog/ci/contrib/minitest/runnable.rb +5 -1
  6. data/lib/datadog/ci/contrib/minitest/runner.rb +6 -2
  7. data/lib/datadog/ci/contrib/minitest/test.rb +7 -3
  8. data/lib/datadog/ci/contrib/rspec/example.rb +6 -2
  9. data/lib/datadog/ci/contrib/rspec/example_group.rb +5 -1
  10. data/lib/datadog/ci/contrib/rspec/knapsack_pro/runner.rb +6 -2
  11. data/lib/datadog/ci/contrib/rspec/runner.rb +6 -2
  12. data/lib/datadog/ci/ext/environment/providers/appveyor.rb +1 -1
  13. data/lib/datadog/ci/ext/environment/providers/aws_code_pipeline.rb +1 -1
  14. data/lib/datadog/ci/ext/environment/providers/azure.rb +1 -1
  15. data/lib/datadog/ci/ext/environment/providers/bitbucket.rb +1 -1
  16. data/lib/datadog/ci/ext/environment/providers/bitrise.rb +1 -1
  17. data/lib/datadog/ci/ext/environment/providers/buddy.rb +1 -1
  18. data/lib/datadog/ci/ext/environment/providers/buildkite.rb +1 -1
  19. data/lib/datadog/ci/ext/environment/providers/circleci.rb +1 -1
  20. data/lib/datadog/ci/ext/environment/providers/codefresh.rb +1 -1
  21. data/lib/datadog/ci/ext/environment/providers/github_actions.rb +1 -1
  22. data/lib/datadog/ci/ext/environment/providers/gitlab.rb +1 -1
  23. data/lib/datadog/ci/ext/environment/providers/jenkins.rb +1 -1
  24. data/lib/datadog/ci/ext/environment/providers/teamcity.rb +1 -1
  25. data/lib/datadog/ci/ext/environment/providers/travis.rb +1 -1
  26. data/lib/datadog/ci/ext/environment.rb +17 -0
  27. data/lib/datadog/ci/ext/telemetry.rb +120 -0
  28. data/lib/datadog/ci/git/local_repository.rb +116 -25
  29. data/lib/datadog/ci/git/search_commits.rb +20 -1
  30. data/lib/datadog/ci/git/telemetry.rb +37 -0
  31. data/lib/datadog/ci/git/tree_uploader.rb +7 -0
  32. data/lib/datadog/ci/git/upload_packfile.rb +22 -1
  33. data/lib/datadog/ci/test.rb +5 -0
  34. data/lib/datadog/ci/test_optimisation/component.rb +16 -2
  35. data/lib/datadog/ci/test_optimisation/coverage/transport.rb +10 -1
  36. data/lib/datadog/ci/test_optimisation/skippable.rb +24 -0
  37. data/lib/datadog/ci/test_optimisation/telemetry.rb +56 -0
  38. data/lib/datadog/ci/test_visibility/component.rb +95 -235
  39. data/lib/datadog/ci/test_visibility/context.rb +274 -0
  40. data/lib/datadog/ci/test_visibility/{context → store}/global.rb +1 -1
  41. data/lib/datadog/ci/test_visibility/{context → store}/local.rb +1 -1
  42. data/lib/datadog/ci/test_visibility/telemetry.rb +69 -0
  43. data/lib/datadog/ci/test_visibility/transport.rb +8 -9
  44. data/lib/datadog/ci/transport/adapters/net.rb +42 -11
  45. data/lib/datadog/ci/transport/adapters/net_http_client.rb +17 -0
  46. data/lib/datadog/ci/transport/adapters/telemetry_webmock_safe_adapter.rb +28 -0
  47. data/lib/datadog/ci/transport/event_platform_transport.rb +42 -5
  48. data/lib/datadog/ci/transport/http.rb +49 -21
  49. data/lib/datadog/ci/transport/remote_settings_api.rb +39 -1
  50. data/lib/datadog/ci/transport/telemetry.rb +93 -0
  51. data/lib/datadog/ci/utils/identity.rb +20 -0
  52. data/lib/datadog/ci/utils/parsing.rb +2 -1
  53. data/lib/datadog/ci/utils/telemetry.rb +23 -0
  54. data/lib/datadog/ci/version.rb +1 -1
  55. data/lib/datadog/ci.rb +30 -0
  56. metadata +16 -6
@@ -3,6 +3,8 @@
3
3
  require "delegate"
4
4
  require "socket"
5
5
 
6
+ require "datadog/core/utils/time"
7
+
6
8
  require_relative "gzip"
7
9
  require_relative "adapters/net"
8
10
  require_relative "../ext/transport"
@@ -39,27 +41,36 @@ module Datadog
39
41
  backoff: INITIAL_BACKOFF,
40
42
  accept_compressed_response: false
41
43
  )
42
- if compress
43
- headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
44
- payload = Gzip.compress(payload)
45
- end
44
+ response = nil
46
45
 
47
- if accept_compressed_response
48
- headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
49
- end
46
+ duration_ms = Core::Utils::Time.measure(:float_millisecond) do
47
+ if compress
48
+ headers[Ext::Transport::HEADER_CONTENT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
49
+ payload = Gzip.compress(payload)
50
+ end
50
51
 
51
- Datadog.logger.debug do
52
- "Sending #{verb} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
53
- "compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
54
- end
52
+ if accept_compressed_response
53
+ headers[Ext::Transport::HEADER_ACCEPT_ENCODING] = Ext::Transport::CONTENT_ENCODING_GZIP
54
+ end
55
55
 
56
- response = ResponseDecorator.new(
57
- perform_http_call(path: path, payload: payload, headers: headers, verb: verb, retries: retries, backoff: backoff)
58
- )
56
+ Datadog.logger.debug do
57
+ "Sending #{verb} request: host=#{host}; port=#{port}; ssl_enabled=#{ssl}; " \
58
+ "compression_enabled=#{compress}; path=#{path}; payload_size=#{payload.size}"
59
+ end
60
+
61
+ response = perform_http_call(path: path, payload: payload, headers: headers, verb: verb, retries: retries, backoff: backoff)
59
62
 
60
- Datadog.logger.debug do
61
- "Received server response: #{response.inspect}"
63
+ Datadog.logger.debug do
64
+ "Received server response: #{response.inspect}"
65
+ end
62
66
  end
67
+ # @type var response: Datadog::CI::Transport::Adapters::Net::Response
68
+ # @type var duration_ms: Float
69
+
70
+ # set some stats about the request
71
+ response.request_compressed = compress
72
+ response.request_size = payload.bytesize
73
+ response.duration_ms = duration_ms
63
74
 
64
75
  response
65
76
  end
@@ -81,7 +92,7 @@ module Datadog
81
92
  )
82
93
  else
83
94
  Datadog.logger.error("Failed to send request after #{MAX_RETRIES} retries")
84
- raise e
95
+ ErrorResponse.new(e)
85
96
  end
86
97
  end
87
98
 
@@ -91,10 +102,27 @@ module Datadog
91
102
  )
92
103
  end
93
104
 
94
- # adds compatibility with Datadog::Tracing transport
95
- class ResponseDecorator < ::SimpleDelegator
96
- def trace_count
97
- 0
105
+ class ErrorResponse < Adapters::Net::Response
106
+ def initialize(error)
107
+ @error = error
108
+ end
109
+
110
+ attr_reader :error
111
+
112
+ def payload
113
+ ""
114
+ end
115
+
116
+ def header(name)
117
+ nil
118
+ end
119
+
120
+ def code
121
+ nil
122
+ end
123
+
124
+ def inspect
125
+ "ErrorResponse error:#{error}"
98
126
  end
99
127
  end
100
128
  end
@@ -4,8 +4,11 @@ require "json"
4
4
 
5
5
  require "datadog/core/environment/identity"
6
6
 
7
+ require_relative "../ext/telemetry"
7
8
  require_relative "../ext/transport"
9
+ require_relative "../transport/telemetry"
8
10
  require_relative "../utils/parsing"
11
+ require_relative "../utils/telemetry"
9
12
 
10
13
  module Datadog
11
14
  module CI
@@ -36,6 +39,14 @@ module Datadog
36
39
  default_payload
37
40
  rescue JSON::ParserError => e
38
41
  Datadog.logger.error("Failed to parse settings response payload: #{e}. Payload was: #{resp.payload}")
42
+
43
+ Transport::Telemetry.api_requests_errors(
44
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_ERRORS,
45
+ 1,
46
+ error_type: "invalid_json",
47
+ status_code: nil
48
+ )
49
+
39
50
  @json = default_payload
40
51
  end
41
52
  end
@@ -69,7 +80,34 @@ module Datadog
69
80
  payload: request_payload
70
81
  )
71
82
 
72
- Response.new(http_response)
83
+ Transport::Telemetry.api_requests(
84
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS,
85
+ 1,
86
+ compressed: http_response.request_compressed
87
+ )
88
+ Utils::Telemetry.distribution(Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_MS, http_response.duration_ms)
89
+
90
+ unless http_response.ok?
91
+ Transport::Telemetry.api_requests_errors(
92
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_ERRORS,
93
+ 1,
94
+ error_type: http_response.telemetry_error_type,
95
+ status_code: http_response.code
96
+ )
97
+ end
98
+
99
+ response = Response.new(http_response)
100
+
101
+ Utils::Telemetry.inc(
102
+ Ext::Telemetry::METRIC_GIT_REQUESTS_SETTINGS_RESPONSE,
103
+ 1,
104
+ {
105
+ Ext::Telemetry::TAG_COVERAGE_ENABLED => response.payload[Ext::Transport::DD_API_SETTINGS_RESPONSE_CODE_COVERAGE_KEY],
106
+ Ext::Telemetry::TAG_ITR_SKIP_ENABLED => response.payload[Ext::Transport::DD_API_SETTINGS_RESPONSE_TESTS_SKIPPING_KEY]
107
+ }
108
+ )
109
+
110
+ response
73
111
  end
74
112
 
75
113
  private
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../ext/telemetry"
4
+ require_relative "../utils/telemetry"
5
+
6
+ module Datadog
7
+ module CI
8
+ module Transport
9
+ module Telemetry
10
+ def self.events_enqueued_for_serialization(count)
11
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_EVENTS_ENQUEUED, count)
12
+ end
13
+
14
+ def self.endpoint_payload_events_count(count, endpoint:)
15
+ Utils::Telemetry.distribution(
16
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_EVENTS_COUNT,
17
+ count.to_f,
18
+ tags(endpoint: endpoint)
19
+ )
20
+ end
21
+
22
+ def self.endpoint_payload_serialization_ms(duration_ms, endpoint:)
23
+ Utils::Telemetry.distribution(
24
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_EVENTS_SERIALIZATION_MS,
25
+ duration_ms,
26
+ tags(endpoint: endpoint)
27
+ )
28
+ end
29
+
30
+ def self.endpoint_payload_dropped(count, endpoint:)
31
+ Utils::Telemetry.inc(
32
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_DROPPED,
33
+ count,
34
+ tags(endpoint: endpoint)
35
+ )
36
+ end
37
+
38
+ def self.endpoint_payload_requests(count, endpoint:, compressed:)
39
+ tags = tags(endpoint: endpoint)
40
+ tags[Ext::Telemetry::TAG_REQUEST_COMPRESSED] = "true" if compressed
41
+
42
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS, count, tags)
43
+ end
44
+
45
+ def self.endpoint_payload_requests_ms(duration_ms, endpoint:)
46
+ Utils::Telemetry.distribution(
47
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS_MS,
48
+ duration_ms,
49
+ tags(endpoint: endpoint)
50
+ )
51
+ end
52
+
53
+ def self.endpoint_payload_bytes(bytesize, endpoint:)
54
+ Utils::Telemetry.distribution(
55
+ Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_BYTES,
56
+ bytesize.to_f,
57
+ tags(endpoint: endpoint)
58
+ )
59
+ end
60
+
61
+ def self.endpoint_payload_requests_errors(count, endpoint:, error_type:, status_code:)
62
+ tags = tags(endpoint: endpoint)
63
+ set_error_tags(tags, error_type: error_type, status_code: status_code)
64
+
65
+ Utils::Telemetry.inc(Ext::Telemetry::METRIC_ENDPOINT_PAYLOAD_REQUESTS_ERRORS, count, tags)
66
+ end
67
+
68
+ def self.api_requests(metric_name, count, compressed:)
69
+ tags = {}
70
+ tags[Ext::Telemetry::TAG_REQUEST_COMPRESSED] = "true" if compressed
71
+
72
+ Utils::Telemetry.inc(metric_name, count, tags)
73
+ end
74
+
75
+ def self.api_requests_errors(metric_name, count, error_type:, status_code:)
76
+ tags = {}
77
+ set_error_tags(tags, error_type: error_type, status_code: status_code)
78
+
79
+ Utils::Telemetry.inc(metric_name, count, tags)
80
+ end
81
+
82
+ def self.tags(endpoint:)
83
+ {Ext::Telemetry::TAG_ENDPOINT => endpoint}
84
+ end
85
+
86
+ def self.set_error_tags(tags, error_type:, status_code:)
87
+ tags[Ext::Telemetry::TAG_ERROR_TYPE] = error_type if error_type
88
+ tags[Ext::Telemetry::TAG_STATUS_CODE] = status_code.to_s if status_code
89
+ end
90
+ end
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module CI
5
+ module Utils
6
+ module Identity
7
+ def self.included(base)
8
+ base.singleton_class.prepend(ClassMethods)
9
+ end
10
+
11
+ module ClassMethods
12
+ # return datadog-ci gem version instead of datadog gem version
13
+ def gem_datadog_version
14
+ Datadog::CI::VERSION::STRING
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -8,7 +8,8 @@ module Datadog
8
8
  module Utils
9
9
  module Parsing
10
10
  def self.convert_to_bool(value)
11
- value.to_s.downcase == "true"
11
+ normalized_value = value.to_s.downcase
12
+ normalized_value == "true" || normalized_value == "1"
12
13
  end
13
14
  end
14
15
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../ext/telemetry"
4
+
5
+ module Datadog
6
+ module CI
7
+ module Utils
8
+ module Telemetry
9
+ def self.inc(metric_name, count, tags = {})
10
+ telemetry.inc(Ext::Telemetry::NAMESPACE, metric_name, count, tags: tags)
11
+ end
12
+
13
+ def self.distribution(metric_name, value, tags = {})
14
+ telemetry.distribution(Ext::Telemetry::NAMESPACE, metric_name, value, tags: tags)
15
+ end
16
+
17
+ def self.telemetry
18
+ Datadog.send(:components).telemetry
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -4,7 +4,7 @@ module Datadog
4
4
  module CI
5
5
  module VERSION
6
6
  MAJOR = 1
7
- MINOR = 2
7
+ MINOR = 3
8
8
  PATCH = 0
9
9
  PRE = nil
10
10
  BUILD = nil
data/lib/datadog/ci.rb CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  require_relative "ci/version"
4
4
  require_relative "ci/utils/configuration"
5
+ require_relative "ci/utils/telemetry"
5
6
  require_relative "ci/ext/app_types"
7
+ require_relative "ci/ext/telemetry"
6
8
 
7
9
  require "datadog/core"
8
10
 
@@ -39,6 +41,11 @@ module Datadog
39
41
  # @return [Datadog::CI::TestSession] the active, running {Datadog::CI::TestSession}.
40
42
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
41
43
  def start_test_session(service: Utils::Configuration.fetch_service_name("test"), tags: {})
44
+ Utils::Telemetry.inc(
45
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
46
+ 1,
47
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::SESSION}
48
+ )
42
49
  test_visibility.start_test_session(service: service, tags: tags)
43
50
  end
44
51
 
@@ -93,6 +100,12 @@ module Datadog
93
100
  # @return [Datadog::CI::TestModule] the active, running {Datadog::CI::TestModule}.
94
101
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
95
102
  def start_test_module(test_module_name, service: nil, tags: {})
103
+ Utils::Telemetry.inc(
104
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
105
+ 1,
106
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::MODULE}
107
+ )
108
+
96
109
  test_visibility.start_test_module(test_module_name, service: service, tags: tags)
97
110
  end
98
111
 
@@ -145,6 +158,12 @@ module Datadog
145
158
  # @return [Datadog::CI::TestSuite] the active, running {Datadog::CI::TestSuite}.
146
159
  # @return [nil] if test suite level visibility is disabled or CI mode is disabled.
147
160
  def start_test_suite(test_suite_name, service: nil, tags: {})
161
+ Utils::Telemetry.inc(
162
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
163
+ 1,
164
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::SUITE}
165
+ )
166
+
148
167
  test_visibility.start_test_suite(test_suite_name, service: service, tags: tags)
149
168
  end
150
169
 
@@ -222,6 +241,12 @@ module Datadog
222
241
  # @yieldparam [Datadog::CI::Test] ci_test the newly created and active [Datadog::CI::Test]
223
242
  # @yieldparam [nil] if CI mode is disabled
224
243
  def trace_test(test_name, test_suite_name, service: nil, tags: {}, &block)
244
+ Utils::Telemetry.inc(
245
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
246
+ 1,
247
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::TEST}
248
+ )
249
+
225
250
  test_visibility.trace_test(test_name, test_suite_name, service: service, tags: tags, &block)
226
251
  end
227
252
 
@@ -248,6 +273,11 @@ module Datadog
248
273
  # @return [Datadog::CI::Test] the active, unfinished {Datadog::CI::Test}.
249
274
  # @return [nil] if CI mode is disabled.
250
275
  def start_test(test_name, test_suite_name, service: nil, tags: {})
276
+ Utils::Telemetry.inc(
277
+ Ext::Telemetry::METRIC_MANUAL_API_EVENTS,
278
+ 1,
279
+ {Ext::Telemetry::TAG_EVENT_TYPE => Ext::Telemetry::EventType::TEST}
280
+ )
251
281
  test_visibility.trace_test(test_name, test_suite_name, service: service, tags: tags)
252
282
  end
253
283
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: datadog-ci
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-16 00:00:00.000000000 Z
11
+ date: 2024-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: datadog
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: '2.2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: '2.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: msgpack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -126,11 +126,13 @@ files:
126
126
  - lib/datadog/ci/ext/environment/providers/user_defined_tags.rb
127
127
  - lib/datadog/ci/ext/git.rb
128
128
  - lib/datadog/ci/ext/settings.rb
129
+ - lib/datadog/ci/ext/telemetry.rb
129
130
  - lib/datadog/ci/ext/test.rb
130
131
  - lib/datadog/ci/ext/transport.rb
131
132
  - lib/datadog/ci/git/local_repository.rb
132
133
  - lib/datadog/ci/git/packfiles.rb
133
134
  - lib/datadog/ci/git/search_commits.rb
135
+ - lib/datadog/ci/git/telemetry.rb
134
136
  - lib/datadog/ci/git/tree_uploader.rb
135
137
  - lib/datadog/ci/git/upload_packfile.rb
136
138
  - lib/datadog/ci/git/user.rb
@@ -143,11 +145,11 @@ files:
143
145
  - lib/datadog/ci/test_optimisation/coverage/transport.rb
144
146
  - lib/datadog/ci/test_optimisation/coverage/writer.rb
145
147
  - lib/datadog/ci/test_optimisation/skippable.rb
148
+ - lib/datadog/ci/test_optimisation/telemetry.rb
146
149
  - lib/datadog/ci/test_session.rb
147
150
  - lib/datadog/ci/test_suite.rb
148
151
  - lib/datadog/ci/test_visibility/component.rb
149
- - lib/datadog/ci/test_visibility/context/global.rb
150
- - lib/datadog/ci/test_visibility/context/local.rb
152
+ - lib/datadog/ci/test_visibility/context.rb
151
153
  - lib/datadog/ci/test_visibility/flush.rb
152
154
  - lib/datadog/ci/test_visibility/null_component.rb
153
155
  - lib/datadog/ci/test_visibility/serializers/base.rb
@@ -159,8 +161,13 @@ files:
159
161
  - lib/datadog/ci/test_visibility/serializers/test_suite.rb
160
162
  - lib/datadog/ci/test_visibility/serializers/test_v1.rb
161
163
  - lib/datadog/ci/test_visibility/serializers/test_v2.rb
164
+ - lib/datadog/ci/test_visibility/store/global.rb
165
+ - lib/datadog/ci/test_visibility/store/local.rb
166
+ - lib/datadog/ci/test_visibility/telemetry.rb
162
167
  - lib/datadog/ci/test_visibility/transport.rb
163
168
  - lib/datadog/ci/transport/adapters/net.rb
169
+ - lib/datadog/ci/transport/adapters/net_http_client.rb
170
+ - lib/datadog/ci/transport/adapters/telemetry_webmock_safe_adapter.rb
164
171
  - lib/datadog/ci/transport/api/agentless.rb
165
172
  - lib/datadog/ci/transport/api/base.rb
166
173
  - lib/datadog/ci/transport/api/builder.rb
@@ -169,10 +176,13 @@ files:
169
176
  - lib/datadog/ci/transport/gzip.rb
170
177
  - lib/datadog/ci/transport/http.rb
171
178
  - lib/datadog/ci/transport/remote_settings_api.rb
179
+ - lib/datadog/ci/transport/telemetry.rb
172
180
  - lib/datadog/ci/utils/bundle.rb
173
181
  - lib/datadog/ci/utils/configuration.rb
174
182
  - lib/datadog/ci/utils/git.rb
183
+ - lib/datadog/ci/utils/identity.rb
175
184
  - lib/datadog/ci/utils/parsing.rb
185
+ - lib/datadog/ci/utils/telemetry.rb
176
186
  - lib/datadog/ci/utils/test_run.rb
177
187
  - lib/datadog/ci/version.rb
178
188
  - lib/datadog/ci/worker.rb