datadog-ci 1.14.0 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +35 -2
- data/lib/datadog/ci/async_writer.rb +112 -0
- data/lib/datadog/ci/configuration/components.rb +36 -6
- data/lib/datadog/ci/configuration/settings.rb +17 -0
- data/lib/datadog/ci/contrib/activesupport/configuration/settings.rb +25 -0
- data/lib/datadog/ci/contrib/activesupport/ext.rb +14 -0
- data/lib/datadog/ci/contrib/activesupport/integration.rb +43 -0
- data/lib/datadog/ci/contrib/activesupport/logs_formatter.rb +41 -0
- data/lib/datadog/ci/contrib/activesupport/patcher.rb +50 -0
- data/lib/datadog/ci/contrib/lograge/configuration/settings.rb +25 -0
- data/lib/datadog/ci/contrib/lograge/ext.rb +14 -0
- data/lib/datadog/ci/contrib/lograge/integration.rb +43 -0
- data/lib/datadog/ci/contrib/lograge/log_subscriber.rb +41 -0
- data/lib/datadog/ci/contrib/lograge/patcher.rb +32 -0
- data/lib/datadog/ci/contrib/minitest/runner.rb +4 -1
- data/lib/datadog/ci/contrib/parallel_tests/cli.rb +84 -0
- data/lib/datadog/ci/contrib/parallel_tests/configuration/settings.rb +32 -0
- data/lib/datadog/ci/contrib/parallel_tests/ext.rb +16 -0
- data/lib/datadog/ci/contrib/parallel_tests/integration.rb +42 -0
- data/lib/datadog/ci/contrib/parallel_tests/patcher.rb +23 -0
- data/lib/datadog/ci/contrib/rspec/example.rb +7 -0
- data/lib/datadog/ci/contrib/rspec/example_group.rb +18 -8
- data/lib/datadog/ci/contrib/rspec/helpers.rb +18 -0
- data/lib/datadog/ci/contrib/rspec/runner.rb +2 -0
- data/lib/datadog/ci/contrib/semantic_logger/configuration/settings.rb +25 -0
- data/lib/datadog/ci/contrib/semantic_logger/ext.rb +14 -0
- data/lib/datadog/ci/contrib/semantic_logger/integration.rb +42 -0
- data/lib/datadog/ci/contrib/semantic_logger/logger.rb +32 -0
- data/lib/datadog/ci/contrib/semantic_logger/patcher.rb +32 -0
- data/lib/datadog/ci/ext/settings.rb +3 -0
- data/lib/datadog/ci/ext/test.rb +23 -2
- data/lib/datadog/ci/ext/transport.rb +2 -0
- data/lib/datadog/ci/git/local_repository.rb +1 -1
- data/lib/datadog/ci/git/tree_uploader.rb +9 -0
- data/lib/datadog/ci/logs/component.rb +46 -0
- data/lib/datadog/ci/logs/transport.rb +73 -0
- data/lib/datadog/ci/readonly_test_module.rb +28 -0
- data/lib/datadog/ci/readonly_test_session.rb +31 -0
- data/lib/datadog/ci/remote/component.rb +43 -16
- data/lib/datadog/ci/test.rb +10 -0
- data/lib/datadog/ci/test_management/component.rb +34 -1
- data/lib/datadog/ci/test_management/tests_properties.rb +2 -1
- data/lib/datadog/ci/test_optimisation/component.rb +31 -5
- data/lib/datadog/ci/test_retries/driver/retry_new.rb +1 -1
- data/lib/datadog/ci/test_session.rb +7 -1
- data/lib/datadog/ci/test_visibility/component.rb +82 -28
- data/lib/datadog/ci/test_visibility/context.rb +77 -29
- data/lib/datadog/ci/test_visibility/null_component.rb +7 -1
- data/lib/datadog/ci/test_visibility/store/{local.rb → fiber_local.rb} +1 -1
- data/lib/datadog/ci/test_visibility/store/{global.rb → process.rb} +23 -18
- data/lib/datadog/ci/test_visibility/transport.rb +1 -2
- data/lib/datadog/ci/transport/api/agentless.rb +8 -1
- data/lib/datadog/ci/transport/api/base.rb +4 -0
- data/lib/datadog/ci/transport/api/builder.rb +5 -1
- data/lib/datadog/ci/transport/api/evp_proxy.rb +4 -0
- data/lib/datadog/ci/transport/http.rb +1 -1
- data/lib/datadog/ci/utils/file_storage.rb +57 -0
- data/lib/datadog/ci/utils/stateful.rb +52 -0
- data/lib/datadog/ci/version.rb +1 -1
- data/lib/datadog/ci.rb +7 -3
- metadata +32 -6
- data/lib/datadog/ci/test_optimisation/coverage/writer.rb +0 -116
- data/lib/datadog/ci/test_visibility/capabilities.rb +0 -36
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datadog-ci
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.16.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
bindir: exe
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-04-15 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: datadog
|
@@ -74,6 +74,7 @@ files:
|
|
74
74
|
- ext/datadog_cov/datadog_cov.c
|
75
75
|
- ext/datadog_cov/extconf.rb
|
76
76
|
- lib/datadog/ci.rb
|
77
|
+
- lib/datadog/ci/async_writer.rb
|
77
78
|
- lib/datadog/ci/auto_instrument.rb
|
78
79
|
- lib/datadog/ci/cli/cli.rb
|
79
80
|
- lib/datadog/ci/cli/command/base.rb
|
@@ -87,6 +88,11 @@ files:
|
|
87
88
|
- lib/datadog/ci/configuration/components.rb
|
88
89
|
- lib/datadog/ci/configuration/extensions.rb
|
89
90
|
- lib/datadog/ci/configuration/settings.rb
|
91
|
+
- lib/datadog/ci/contrib/activesupport/configuration/settings.rb
|
92
|
+
- lib/datadog/ci/contrib/activesupport/ext.rb
|
93
|
+
- lib/datadog/ci/contrib/activesupport/integration.rb
|
94
|
+
- lib/datadog/ci/contrib/activesupport/logs_formatter.rb
|
95
|
+
- lib/datadog/ci/contrib/activesupport/patcher.rb
|
90
96
|
- lib/datadog/ci/contrib/ciqueue/integration.rb
|
91
97
|
- lib/datadog/ci/contrib/ciqueue/patcher.rb
|
92
98
|
- lib/datadog/ci/contrib/cucumber/configuration/settings.rb
|
@@ -108,6 +114,11 @@ files:
|
|
108
114
|
- lib/datadog/ci/contrib/knapsack/integration.rb
|
109
115
|
- lib/datadog/ci/contrib/knapsack/patcher.rb
|
110
116
|
- lib/datadog/ci/contrib/knapsack/runner.rb
|
117
|
+
- lib/datadog/ci/contrib/lograge/configuration/settings.rb
|
118
|
+
- lib/datadog/ci/contrib/lograge/ext.rb
|
119
|
+
- lib/datadog/ci/contrib/lograge/integration.rb
|
120
|
+
- lib/datadog/ci/contrib/lograge/log_subscriber.rb
|
121
|
+
- lib/datadog/ci/contrib/lograge/patcher.rb
|
111
122
|
- lib/datadog/ci/contrib/minitest/configuration/settings.rb
|
112
123
|
- lib/datadog/ci/contrib/minitest/ext.rb
|
113
124
|
- lib/datadog/ci/contrib/minitest/helpers.rb
|
@@ -117,11 +128,17 @@ files:
|
|
117
128
|
- lib/datadog/ci/contrib/minitest/runnable.rb
|
118
129
|
- lib/datadog/ci/contrib/minitest/runner.rb
|
119
130
|
- lib/datadog/ci/contrib/minitest/test.rb
|
131
|
+
- lib/datadog/ci/contrib/parallel_tests/cli.rb
|
132
|
+
- lib/datadog/ci/contrib/parallel_tests/configuration/settings.rb
|
133
|
+
- lib/datadog/ci/contrib/parallel_tests/ext.rb
|
134
|
+
- lib/datadog/ci/contrib/parallel_tests/integration.rb
|
135
|
+
- lib/datadog/ci/contrib/parallel_tests/patcher.rb
|
120
136
|
- lib/datadog/ci/contrib/patcher.rb
|
121
137
|
- lib/datadog/ci/contrib/rspec/configuration/settings.rb
|
122
138
|
- lib/datadog/ci/contrib/rspec/example.rb
|
123
139
|
- lib/datadog/ci/contrib/rspec/example_group.rb
|
124
140
|
- lib/datadog/ci/contrib/rspec/ext.rb
|
141
|
+
- lib/datadog/ci/contrib/rspec/helpers.rb
|
125
142
|
- lib/datadog/ci/contrib/rspec/integration.rb
|
126
143
|
- lib/datadog/ci/contrib/rspec/patcher.rb
|
127
144
|
- lib/datadog/ci/contrib/rspec/runner.rb
|
@@ -132,6 +149,11 @@ files:
|
|
132
149
|
- lib/datadog/ci/contrib/selenium/integration.rb
|
133
150
|
- lib/datadog/ci/contrib/selenium/navigation.rb
|
134
151
|
- lib/datadog/ci/contrib/selenium/patcher.rb
|
152
|
+
- lib/datadog/ci/contrib/semantic_logger/configuration/settings.rb
|
153
|
+
- lib/datadog/ci/contrib/semantic_logger/ext.rb
|
154
|
+
- lib/datadog/ci/contrib/semantic_logger/integration.rb
|
155
|
+
- lib/datadog/ci/contrib/semantic_logger/logger.rb
|
156
|
+
- lib/datadog/ci/contrib/semantic_logger/patcher.rb
|
135
157
|
- lib/datadog/ci/contrib/settings.rb
|
136
158
|
- lib/datadog/ci/contrib/simplecov/configuration/settings.rb
|
137
159
|
- lib/datadog/ci/contrib/simplecov/ext.rb
|
@@ -172,6 +194,10 @@ files:
|
|
172
194
|
- lib/datadog/ci/git/tree_uploader.rb
|
173
195
|
- lib/datadog/ci/git/upload_packfile.rb
|
174
196
|
- lib/datadog/ci/git/user.rb
|
197
|
+
- lib/datadog/ci/logs/component.rb
|
198
|
+
- lib/datadog/ci/logs/transport.rb
|
199
|
+
- lib/datadog/ci/readonly_test_module.rb
|
200
|
+
- lib/datadog/ci/readonly_test_session.rb
|
175
201
|
- lib/datadog/ci/remote/component.rb
|
176
202
|
- lib/datadog/ci/remote/library_settings.rb
|
177
203
|
- lib/datadog/ci/remote/library_settings_client.rb
|
@@ -186,7 +212,6 @@ files:
|
|
186
212
|
- lib/datadog/ci/test_optimisation/coverage/ddcov.rb
|
187
213
|
- lib/datadog/ci/test_optimisation/coverage/event.rb
|
188
214
|
- lib/datadog/ci/test_optimisation/coverage/transport.rb
|
189
|
-
- lib/datadog/ci/test_optimisation/coverage/writer.rb
|
190
215
|
- lib/datadog/ci/test_optimisation/skippable.rb
|
191
216
|
- lib/datadog/ci/test_optimisation/skippable_percentage/base.rb
|
192
217
|
- lib/datadog/ci/test_optimisation/skippable_percentage/calculator.rb
|
@@ -206,7 +231,6 @@ files:
|
|
206
231
|
- lib/datadog/ci/test_retries/strategy/retry_new.rb
|
207
232
|
- lib/datadog/ci/test_session.rb
|
208
233
|
- lib/datadog/ci/test_suite.rb
|
209
|
-
- lib/datadog/ci/test_visibility/capabilities.rb
|
210
234
|
- lib/datadog/ci/test_visibility/component.rb
|
211
235
|
- lib/datadog/ci/test_visibility/context.rb
|
212
236
|
- lib/datadog/ci/test_visibility/flush.rb
|
@@ -222,8 +246,8 @@ files:
|
|
222
246
|
- lib/datadog/ci/test_visibility/serializers/test_suite.rb
|
223
247
|
- lib/datadog/ci/test_visibility/serializers/test_v1.rb
|
224
248
|
- lib/datadog/ci/test_visibility/serializers/test_v2.rb
|
225
|
-
- lib/datadog/ci/test_visibility/store/
|
226
|
-
- lib/datadog/ci/test_visibility/store/
|
249
|
+
- lib/datadog/ci/test_visibility/store/fiber_local.rb
|
250
|
+
- lib/datadog/ci/test_visibility/store/process.rb
|
227
251
|
- lib/datadog/ci/test_visibility/telemetry.rb
|
228
252
|
- lib/datadog/ci/test_visibility/total_coverage.rb
|
229
253
|
- lib/datadog/ci/test_visibility/transport.rb
|
@@ -240,9 +264,11 @@ files:
|
|
240
264
|
- lib/datadog/ci/transport/telemetry.rb
|
241
265
|
- lib/datadog/ci/utils/bundle.rb
|
242
266
|
- lib/datadog/ci/utils/configuration.rb
|
267
|
+
- lib/datadog/ci/utils/file_storage.rb
|
243
268
|
- lib/datadog/ci/utils/git.rb
|
244
269
|
- lib/datadog/ci/utils/parsing.rb
|
245
270
|
- lib/datadog/ci/utils/rum.rb
|
271
|
+
- lib/datadog/ci/utils/stateful.rb
|
246
272
|
- lib/datadog/ci/utils/telemetry.rb
|
247
273
|
- lib/datadog/ci/utils/test_run.rb
|
248
274
|
- lib/datadog/ci/version.rb
|
@@ -1,116 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "datadog/core/workers/async"
|
4
|
-
require "datadog/core/workers/queue"
|
5
|
-
require "datadog/core/workers/polling"
|
6
|
-
|
7
|
-
require "datadog/core/buffer/cruby"
|
8
|
-
require "datadog/core/buffer/thread_safe"
|
9
|
-
|
10
|
-
require "datadog/core/environment/ext"
|
11
|
-
|
12
|
-
module Datadog
|
13
|
-
module CI
|
14
|
-
module TestOptimisation
|
15
|
-
module Coverage
|
16
|
-
class Writer
|
17
|
-
include Core::Workers::Queue
|
18
|
-
include Core::Workers::Polling
|
19
|
-
|
20
|
-
attr_reader :transport
|
21
|
-
|
22
|
-
DEFAULT_BUFFER_MAX_SIZE = 10_000
|
23
|
-
DEFAULT_SHUTDOWN_TIMEOUT = 60
|
24
|
-
|
25
|
-
DEFAULT_INTERVAL = 3
|
26
|
-
|
27
|
-
def initialize(transport:, options: {})
|
28
|
-
@transport = transport
|
29
|
-
|
30
|
-
# Workers::Polling settings
|
31
|
-
self.enabled = options.fetch(:enabled, true)
|
32
|
-
|
33
|
-
# Workers::Async::Thread settings
|
34
|
-
self.fork_policy = Core::Workers::Async::Thread::FORK_POLICY_RESTART
|
35
|
-
|
36
|
-
# Workers::IntervalLoop settings
|
37
|
-
self.loop_base_interval = options[:interval] || DEFAULT_INTERVAL
|
38
|
-
self.loop_back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
|
39
|
-
self.loop_back_off_max = options[:back_off_max] if options.key?(:back_off_max)
|
40
|
-
|
41
|
-
@buffer_size = options.fetch(:buffer_size, DEFAULT_BUFFER_MAX_SIZE)
|
42
|
-
|
43
|
-
self.buffer = buffer_klass.new(@buffer_size)
|
44
|
-
|
45
|
-
@shutdown_timeout = options.fetch(:shutdown_timeout, DEFAULT_SHUTDOWN_TIMEOUT)
|
46
|
-
|
47
|
-
@stopped = false
|
48
|
-
end
|
49
|
-
|
50
|
-
def write(event)
|
51
|
-
return if @stopped
|
52
|
-
|
53
|
-
# Start worker thread. If the process has forked, it will trigger #after_fork to
|
54
|
-
# reconfigure the worker accordingly.
|
55
|
-
perform
|
56
|
-
|
57
|
-
enqueue(event)
|
58
|
-
end
|
59
|
-
|
60
|
-
def perform(*events)
|
61
|
-
responses = transport.send_events(events)
|
62
|
-
|
63
|
-
if responses.find(&:server_error?)
|
64
|
-
loop_back_off!
|
65
|
-
Datadog.logger.warn { "Encountered server error while sending coverage events" }
|
66
|
-
end
|
67
|
-
|
68
|
-
nil
|
69
|
-
rescue => e
|
70
|
-
Datadog.logger.warn { "Error while sending coverage events: #{e}" }
|
71
|
-
loop_back_off!
|
72
|
-
end
|
73
|
-
|
74
|
-
def stop(force_stop = false, timeout = @shutdown_timeout)
|
75
|
-
@stopped = true
|
76
|
-
|
77
|
-
buffer.close if running?
|
78
|
-
|
79
|
-
super
|
80
|
-
end
|
81
|
-
|
82
|
-
def enqueue(event)
|
83
|
-
buffer.push(event)
|
84
|
-
end
|
85
|
-
|
86
|
-
def dequeue
|
87
|
-
buffer.pop
|
88
|
-
end
|
89
|
-
|
90
|
-
def work_pending?
|
91
|
-
!buffer.empty?
|
92
|
-
end
|
93
|
-
|
94
|
-
def async?
|
95
|
-
true
|
96
|
-
end
|
97
|
-
|
98
|
-
def after_fork
|
99
|
-
# In multiprocess environments, forks will share the same buffer until its written to.
|
100
|
-
# A.K.A. copy-on-write. We don't want forks to write events generated from another process.
|
101
|
-
# Instead, we reset it after the fork. (Make sure any enqueue operations happen after this.)
|
102
|
-
self.buffer = buffer_klass.new(@buffer_size)
|
103
|
-
end
|
104
|
-
|
105
|
-
def buffer_klass
|
106
|
-
if Core::Environment::Ext::RUBY_ENGINE == "ruby"
|
107
|
-
Core::Buffer::CRuby
|
108
|
-
else
|
109
|
-
Core::Buffer::ThreadSafe
|
110
|
-
end
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
115
|
-
end
|
116
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require_relative "../ext/test"
|
4
|
-
|
5
|
-
module Datadog
|
6
|
-
module CI
|
7
|
-
module TestVisibility
|
8
|
-
# Generates internal tags for library capabilities
|
9
|
-
module Capabilities
|
10
|
-
def self.tags
|
11
|
-
tags = {}
|
12
|
-
|
13
|
-
test_optimisation = Datadog::CI.send(:test_optimisation)
|
14
|
-
tags[Ext::Test::LibraryCapabilities::TAG_TEST_IMPACT_ANALYSIS] = test_optimisation.enabled.to_s
|
15
|
-
|
16
|
-
test_management = Datadog::CI.send(:test_management)
|
17
|
-
test_management_tag_value = test_management.enabled.to_s
|
18
|
-
|
19
|
-
[
|
20
|
-
Ext::Test::LibraryCapabilities::TAG_TEST_MANAGEMENT_ATTEMPT_TO_FIX,
|
21
|
-
Ext::Test::LibraryCapabilities::TAG_TEST_MANAGEMENT_QUARANTINE,
|
22
|
-
Ext::Test::LibraryCapabilities::TAG_TEST_MANAGEMENT_DISABLE
|
23
|
-
].each do |tag|
|
24
|
-
tags[tag] = test_management_tag_value
|
25
|
-
end
|
26
|
-
|
27
|
-
test_retries = Datadog::CI.send(:test_retries)
|
28
|
-
tags[Ext::Test::LibraryCapabilities::TAG_AUTO_TEST_RETRIES] = test_retries.auto_test_retries_feature_enabled.to_s
|
29
|
-
tags[Ext::Test::LibraryCapabilities::TAG_EARLY_FLAKE_DETECTION] = test_retries.early_flake_detection_feature_enabled.to_s
|
30
|
-
|
31
|
-
tags
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|