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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -2
  3. data/lib/datadog/ci/async_writer.rb +112 -0
  4. data/lib/datadog/ci/configuration/components.rb +36 -6
  5. data/lib/datadog/ci/configuration/settings.rb +17 -0
  6. data/lib/datadog/ci/contrib/activesupport/configuration/settings.rb +25 -0
  7. data/lib/datadog/ci/contrib/activesupport/ext.rb +14 -0
  8. data/lib/datadog/ci/contrib/activesupport/integration.rb +43 -0
  9. data/lib/datadog/ci/contrib/activesupport/logs_formatter.rb +41 -0
  10. data/lib/datadog/ci/contrib/activesupport/patcher.rb +50 -0
  11. data/lib/datadog/ci/contrib/lograge/configuration/settings.rb +25 -0
  12. data/lib/datadog/ci/contrib/lograge/ext.rb +14 -0
  13. data/lib/datadog/ci/contrib/lograge/integration.rb +43 -0
  14. data/lib/datadog/ci/contrib/lograge/log_subscriber.rb +41 -0
  15. data/lib/datadog/ci/contrib/lograge/patcher.rb +32 -0
  16. data/lib/datadog/ci/contrib/minitest/runner.rb +4 -1
  17. data/lib/datadog/ci/contrib/parallel_tests/cli.rb +84 -0
  18. data/lib/datadog/ci/contrib/parallel_tests/configuration/settings.rb +32 -0
  19. data/lib/datadog/ci/contrib/parallel_tests/ext.rb +16 -0
  20. data/lib/datadog/ci/contrib/parallel_tests/integration.rb +42 -0
  21. data/lib/datadog/ci/contrib/parallel_tests/patcher.rb +23 -0
  22. data/lib/datadog/ci/contrib/rspec/example.rb +7 -0
  23. data/lib/datadog/ci/contrib/rspec/example_group.rb +18 -8
  24. data/lib/datadog/ci/contrib/rspec/helpers.rb +18 -0
  25. data/lib/datadog/ci/contrib/rspec/runner.rb +2 -0
  26. data/lib/datadog/ci/contrib/semantic_logger/configuration/settings.rb +25 -0
  27. data/lib/datadog/ci/contrib/semantic_logger/ext.rb +14 -0
  28. data/lib/datadog/ci/contrib/semantic_logger/integration.rb +42 -0
  29. data/lib/datadog/ci/contrib/semantic_logger/logger.rb +32 -0
  30. data/lib/datadog/ci/contrib/semantic_logger/patcher.rb +32 -0
  31. data/lib/datadog/ci/ext/settings.rb +3 -0
  32. data/lib/datadog/ci/ext/test.rb +23 -2
  33. data/lib/datadog/ci/ext/transport.rb +2 -0
  34. data/lib/datadog/ci/git/local_repository.rb +1 -1
  35. data/lib/datadog/ci/git/tree_uploader.rb +9 -0
  36. data/lib/datadog/ci/logs/component.rb +46 -0
  37. data/lib/datadog/ci/logs/transport.rb +73 -0
  38. data/lib/datadog/ci/readonly_test_module.rb +28 -0
  39. data/lib/datadog/ci/readonly_test_session.rb +31 -0
  40. data/lib/datadog/ci/remote/component.rb +43 -16
  41. data/lib/datadog/ci/test.rb +10 -0
  42. data/lib/datadog/ci/test_management/component.rb +34 -1
  43. data/lib/datadog/ci/test_management/tests_properties.rb +2 -1
  44. data/lib/datadog/ci/test_optimisation/component.rb +31 -5
  45. data/lib/datadog/ci/test_retries/driver/retry_new.rb +1 -1
  46. data/lib/datadog/ci/test_session.rb +7 -1
  47. data/lib/datadog/ci/test_visibility/component.rb +82 -28
  48. data/lib/datadog/ci/test_visibility/context.rb +77 -29
  49. data/lib/datadog/ci/test_visibility/null_component.rb +7 -1
  50. data/lib/datadog/ci/test_visibility/store/{local.rb → fiber_local.rb} +1 -1
  51. data/lib/datadog/ci/test_visibility/store/{global.rb → process.rb} +23 -18
  52. data/lib/datadog/ci/test_visibility/transport.rb +1 -2
  53. data/lib/datadog/ci/transport/api/agentless.rb +8 -1
  54. data/lib/datadog/ci/transport/api/base.rb +4 -0
  55. data/lib/datadog/ci/transport/api/builder.rb +5 -1
  56. data/lib/datadog/ci/transport/api/evp_proxy.rb +4 -0
  57. data/lib/datadog/ci/transport/http.rb +1 -1
  58. data/lib/datadog/ci/utils/file_storage.rb +57 -0
  59. data/lib/datadog/ci/utils/stateful.rb +52 -0
  60. data/lib/datadog/ci/version.rb +1 -1
  61. data/lib/datadog/ci.rb +7 -3
  62. metadata +32 -6
  63. data/lib/datadog/ci/test_optimisation/coverage/writer.rb +0 -116
  64. 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.14.0
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-03-11 00:00:00.000000000 Z
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/global.rb
226
- - lib/datadog/ci/test_visibility/store/local.rb
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