datadog-ci 0.3.0 → 0.5.1

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +89 -1
  3. data/README.md +57 -34
  4. data/lib/datadog/ci/concurrent_span.rb +59 -0
  5. data/lib/datadog/ci/configuration/components.rb +40 -1
  6. data/lib/datadog/ci/configuration/extensions.rb +21 -0
  7. data/lib/datadog/ci/configuration/settings.rb +7 -1
  8. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +12 -1
  9. data/lib/datadog/ci/contrib/cucumber/formatter.rb +22 -29
  10. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +10 -1
  11. data/lib/datadog/ci/contrib/minitest/hooks.rb +15 -25
  12. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +10 -1
  13. data/lib/datadog/ci/contrib/rspec/example.rb +13 -18
  14. data/lib/datadog/ci/contrib/settings.rb +2 -0
  15. data/lib/datadog/ci/ext/app_types.rb +5 -0
  16. data/lib/datadog/ci/ext/environment/extractor.rb +5 -10
  17. data/lib/datadog/ci/ext/environment/providers/github_actions.rb +13 -4
  18. data/lib/datadog/ci/ext/settings.rb +11 -0
  19. data/lib/datadog/ci/ext/test.rb +12 -1
  20. data/lib/datadog/ci/null_span.rb +63 -0
  21. data/lib/datadog/ci/span.rb +117 -0
  22. data/lib/datadog/ci/test.rb +25 -0
  23. data/lib/datadog/ci/test_module.rb +23 -0
  24. data/lib/datadog/ci/test_session.rb +36 -0
  25. data/lib/datadog/ci/test_suite.rb +25 -0
  26. data/lib/datadog/ci/test_visibility/context/global.rb +82 -0
  27. data/lib/datadog/ci/test_visibility/context/local.rb +52 -0
  28. data/lib/datadog/ci/test_visibility/recorder.rb +293 -0
  29. data/lib/datadog/ci/test_visibility/serializers/base.rb +100 -12
  30. data/lib/datadog/ci/test_visibility/serializers/factories/test_suite_level.rb +37 -0
  31. data/lib/datadog/ci/test_visibility/serializers/span.rb +2 -16
  32. data/lib/datadog/ci/test_visibility/serializers/test_module.rb +46 -0
  33. data/lib/datadog/ci/test_visibility/serializers/test_session.rb +46 -0
  34. data/lib/datadog/ci/test_visibility/serializers/test_suite.rb +46 -0
  35. data/lib/datadog/ci/test_visibility/serializers/test_v1.rb +3 -17
  36. data/lib/datadog/ci/test_visibility/serializers/test_v2.rb +38 -0
  37. data/lib/datadog/ci/test_visibility/transport.rb +4 -4
  38. data/lib/datadog/ci/utils/test_run.rb +15 -0
  39. data/lib/datadog/ci/utils/url.rb +15 -0
  40. data/lib/datadog/ci/version.rb +2 -2
  41. data/lib/datadog/ci.rb +378 -7
  42. data/sig/datadog/ci/concurrent_span.rbs +23 -0
  43. data/sig/datadog/ci/configuration/components.rbs +6 -0
  44. data/sig/datadog/ci/configuration/extensions.rbs +9 -0
  45. data/sig/datadog/ci/ext/app_types.rbs +6 -1
  46. data/sig/datadog/ci/ext/environment/extractor.rbs +0 -2
  47. data/sig/datadog/ci/ext/environment/providers/github_actions.rbs +5 -0
  48. data/sig/datadog/ci/ext/settings.rbs +3 -0
  49. data/sig/datadog/ci/ext/test.rbs +15 -0
  50. data/sig/datadog/ci/null_span.rbs +37 -0
  51. data/sig/datadog/ci/span.rbs +39 -0
  52. data/sig/datadog/ci/test.rbs +7 -0
  53. data/sig/datadog/ci/test_module.rbs +6 -0
  54. data/sig/datadog/ci/test_session.rbs +9 -0
  55. data/sig/datadog/ci/test_suite.rbs +6 -0
  56. data/sig/datadog/ci/test_visibility/context/global.rbs +39 -0
  57. data/sig/datadog/ci/test_visibility/context/local.rbs +23 -0
  58. data/sig/datadog/ci/test_visibility/recorder.rbs +85 -0
  59. data/sig/datadog/ci/test_visibility/serializers/base.rbs +26 -5
  60. data/sig/datadog/ci/test_visibility/serializers/factories/test_suite_level.rbs +13 -0
  61. data/sig/datadog/ci/test_visibility/serializers/test_module.rbs +26 -0
  62. data/sig/datadog/ci/test_visibility/serializers/test_session.rbs +26 -0
  63. data/sig/datadog/ci/test_visibility/serializers/test_suite.rbs +26 -0
  64. data/sig/datadog/ci/test_visibility/serializers/test_v1.rbs +1 -1
  65. data/sig/datadog/ci/test_visibility/serializers/test_v2.rbs +25 -0
  66. data/sig/datadog/ci/test_visibility/transport.rbs +3 -3
  67. data/sig/datadog/ci/utils/test_run.rbs +11 -0
  68. data/sig/datadog/ci/utils/url.rbs +9 -0
  69. data/sig/datadog/ci.rbs +31 -3
  70. metadata +38 -6
  71. data/lib/datadog/ci/extensions.rb +0 -19
  72. data/lib/datadog/ci/recorder.rb +0 -83
  73. data/sig/datadog/ci/extensions.rbs +0 -7
  74. data/sig/datadog/ci/recorder.rbs +0 -18
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: 0.3.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-25 00:00:00.000000000 Z
11
+ date: 2023-12-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -42,7 +42,9 @@ files:
42
42
  - NOTICE
43
43
  - README.md
44
44
  - lib/datadog/ci.rb
45
+ - lib/datadog/ci/concurrent_span.rb
45
46
  - lib/datadog/ci/configuration/components.rb
47
+ - lib/datadog/ci/configuration/extensions.rb
46
48
  - lib/datadog/ci/configuration/settings.rb
47
49
  - lib/datadog/ci/contrib/cucumber/configuration/settings.rb
48
50
  - lib/datadog/ci/contrib/cucumber/ext.rb
@@ -87,13 +89,25 @@ files:
87
89
  - lib/datadog/ci/ext/settings.rb
88
90
  - lib/datadog/ci/ext/test.rb
89
91
  - lib/datadog/ci/ext/transport.rb
90
- - lib/datadog/ci/extensions.rb
91
- - lib/datadog/ci/recorder.rb
92
+ - lib/datadog/ci/null_span.rb
93
+ - lib/datadog/ci/span.rb
94
+ - lib/datadog/ci/test.rb
95
+ - lib/datadog/ci/test_module.rb
96
+ - lib/datadog/ci/test_session.rb
97
+ - lib/datadog/ci/test_suite.rb
98
+ - lib/datadog/ci/test_visibility/context/global.rb
99
+ - lib/datadog/ci/test_visibility/context/local.rb
92
100
  - lib/datadog/ci/test_visibility/flush.rb
101
+ - lib/datadog/ci/test_visibility/recorder.rb
93
102
  - lib/datadog/ci/test_visibility/serializers/base.rb
94
103
  - lib/datadog/ci/test_visibility/serializers/factories/test_level.rb
104
+ - lib/datadog/ci/test_visibility/serializers/factories/test_suite_level.rb
95
105
  - lib/datadog/ci/test_visibility/serializers/span.rb
106
+ - lib/datadog/ci/test_visibility/serializers/test_module.rb
107
+ - lib/datadog/ci/test_visibility/serializers/test_session.rb
108
+ - lib/datadog/ci/test_visibility/serializers/test_suite.rb
96
109
  - lib/datadog/ci/test_visibility/serializers/test_v1.rb
110
+ - lib/datadog/ci/test_visibility/serializers/test_v2.rb
97
111
  - lib/datadog/ci/test_visibility/transport.rb
98
112
  - lib/datadog/ci/transport/api/base.rb
99
113
  - lib/datadog/ci/transport/api/builder.rb
@@ -102,9 +116,13 @@ files:
102
116
  - lib/datadog/ci/transport/gzip.rb
103
117
  - lib/datadog/ci/transport/http.rb
104
118
  - lib/datadog/ci/utils/git.rb
119
+ - lib/datadog/ci/utils/test_run.rb
120
+ - lib/datadog/ci/utils/url.rb
105
121
  - lib/datadog/ci/version.rb
106
122
  - sig/datadog/ci.rbs
123
+ - sig/datadog/ci/concurrent_span.rbs
107
124
  - sig/datadog/ci/configuration/components.rbs
125
+ - sig/datadog/ci/configuration/extensions.rbs
108
126
  - sig/datadog/ci/configuration/settings.rbs
109
127
  - sig/datadog/ci/contrib/cucumber/configuration/settings.rbs
110
128
  - sig/datadog/ci/contrib/cucumber/ext.rbs
@@ -149,13 +167,25 @@ files:
149
167
  - sig/datadog/ci/ext/settings.rbs
150
168
  - sig/datadog/ci/ext/test.rbs
151
169
  - sig/datadog/ci/ext/transport.rbs
152
- - sig/datadog/ci/extensions.rbs
153
- - sig/datadog/ci/recorder.rbs
170
+ - sig/datadog/ci/null_span.rbs
171
+ - sig/datadog/ci/span.rbs
172
+ - sig/datadog/ci/test.rbs
173
+ - sig/datadog/ci/test_module.rbs
174
+ - sig/datadog/ci/test_session.rbs
175
+ - sig/datadog/ci/test_suite.rbs
176
+ - sig/datadog/ci/test_visibility/context/global.rbs
177
+ - sig/datadog/ci/test_visibility/context/local.rbs
154
178
  - sig/datadog/ci/test_visibility/flush.rbs
179
+ - sig/datadog/ci/test_visibility/recorder.rbs
155
180
  - sig/datadog/ci/test_visibility/serializers/base.rbs
156
181
  - sig/datadog/ci/test_visibility/serializers/factories/test_level.rbs
182
+ - sig/datadog/ci/test_visibility/serializers/factories/test_suite_level.rbs
157
183
  - sig/datadog/ci/test_visibility/serializers/span.rbs
184
+ - sig/datadog/ci/test_visibility/serializers/test_module.rbs
185
+ - sig/datadog/ci/test_visibility/serializers/test_session.rbs
186
+ - sig/datadog/ci/test_visibility/serializers/test_suite.rbs
158
187
  - sig/datadog/ci/test_visibility/serializers/test_v1.rbs
188
+ - sig/datadog/ci/test_visibility/serializers/test_v2.rbs
159
189
  - sig/datadog/ci/test_visibility/transport.rbs
160
190
  - sig/datadog/ci/transport/api/base.rbs
161
191
  - sig/datadog/ci/transport/api/builder.rbs
@@ -164,6 +194,8 @@ files:
164
194
  - sig/datadog/ci/transport/gzip.rbs
165
195
  - sig/datadog/ci/transport/http.rbs
166
196
  - sig/datadog/ci/utils/git.rbs
197
+ - sig/datadog/ci/utils/test_run.rbs
198
+ - sig/datadog/ci/utils/url.rbs
167
199
  - sig/datadog/ci/version.rbs
168
200
  homepage: https://github.com/DataDog/datadog-ci-rb
169
201
  licenses:
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "datadog/core/configuration/settings"
4
- require "datadog/core/configuration/components"
5
-
6
- require_relative "configuration/settings"
7
- require_relative "configuration/components"
8
-
9
- module Datadog
10
- module CI
11
- # Extends Datadog tracing with CI features
12
- module Extensions
13
- def self.activate!
14
- Core::Configuration::Settings.extend(CI::Configuration::Settings)
15
- Core::Configuration::Components.prepend(CI::Configuration::Components)
16
- end
17
- end
18
- end
19
- end
@@ -1,83 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "datadog/tracing"
4
- require "datadog/tracing/contrib/analytics"
5
-
6
- require_relative "ext/app_types"
7
- require_relative "ext/test"
8
- require_relative "ext/environment"
9
-
10
- require "rbconfig"
11
-
12
- module Datadog
13
- module CI
14
- # Common behavior for CI tests
15
- module Recorder
16
- # Creates a new span for a CI test
17
- def self.trace(span_name, options = {})
18
- span_options = {
19
- span_type: Ext::AppTypes::TYPE_TEST
20
- }.merge(options[:span_options] || {})
21
-
22
- if block_given?
23
- ::Datadog::Tracing.trace(span_name, **span_options) do |span, trace|
24
- set_tags!(trace, span, options)
25
- yield(span, trace)
26
- end
27
- else
28
- span = ::Datadog::Tracing.trace(span_name, **span_options)
29
- trace = ::Datadog::Tracing.active_trace
30
- set_tags!(trace, span, options)
31
- span
32
- end
33
- end
34
-
35
- # Adds tags to a CI test span.
36
- def self.set_tags!(trace, span, tags = {})
37
- tags ||= {}
38
-
39
- # Set default tags
40
- trace.origin = Ext::Test::CONTEXT_ORIGIN if trace
41
- ::Datadog::Tracing::Contrib::Analytics.set_measured(span)
42
- span.set_tag(Ext::Test::TAG_SPAN_KIND, Ext::AppTypes::TYPE_TEST)
43
-
44
- # Set environment tags
45
- @environment_tags ||= Ext::Environment.tags(ENV)
46
- @environment_tags.each { |k, v| span.set_tag(k, v) }
47
-
48
- # Set contextual tags
49
- span.set_tag(Ext::Test::TAG_FRAMEWORK, tags[:framework]) if tags[:framework]
50
- span.set_tag(Ext::Test::TAG_FRAMEWORK_VERSION, tags[:framework_version]) if tags[:framework_version]
51
- span.set_tag(Ext::Test::TAG_NAME, tags[:test_name]) if tags[:test_name]
52
- span.set_tag(Ext::Test::TAG_SUITE, tags[:test_suite]) if tags[:test_suite]
53
- span.set_tag(Ext::Test::TAG_TYPE, tags[:test_type]) if tags[:test_type]
54
-
55
- set_environment_runtime_tags!(span)
56
-
57
- span
58
- end
59
-
60
- def self.passed!(span)
61
- span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::PASS)
62
- end
63
-
64
- def self.failed!(span, exception = nil)
65
- span.status = 1
66
- span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::FAIL)
67
- span.set_error(exception) unless exception.nil?
68
- end
69
-
70
- def self.skipped!(span, exception = nil)
71
- span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::SKIP)
72
- span.set_error(exception) unless exception.nil?
73
- end
74
-
75
- private_class_method def self.set_environment_runtime_tags!(span)
76
- span.set_tag(Ext::Test::TAG_OS_ARCHITECTURE, ::RbConfig::CONFIG["host_cpu"])
77
- span.set_tag(Ext::Test::TAG_OS_PLATFORM, ::RbConfig::CONFIG["host_os"])
78
- span.set_tag(Ext::Test::TAG_RUNTIME_NAME, Core::Environment::Ext::LANG_ENGINE)
79
- span.set_tag(Ext::Test::TAG_RUNTIME_VERSION, Core::Environment::Ext::ENGINE_VERSION)
80
- end
81
- end
82
- end
83
- end
@@ -1,7 +0,0 @@
1
- module Datadog
2
- module CI
3
- module Extensions
4
- def self.activate!: () -> untyped
5
- end
6
- end
7
- end
@@ -1,18 +0,0 @@
1
- module Datadog
2
- module CI
3
- module Recorder
4
- self.@environment_tags: Hash[String, String]
5
-
6
- def self.trace: (untyped span_name, ?::Hash[untyped, untyped] options) ?{ (untyped, untyped) -> untyped } -> untyped
7
- def self.set_tags!: (untyped trace, untyped span, ?::Hash[untyped, untyped] tags) -> untyped
8
-
9
- def self.passed!: (untyped span) -> untyped
10
-
11
- def self.failed!: (untyped span, ?untyped? exception) -> untyped
12
-
13
- def self.skipped!: (untyped span, ?untyped? exception) -> untyped
14
-
15
- def self.set_environment_runtime_tags!: (untyped span) -> untyped
16
- end
17
- end
18
- end