datadog-ci 0.3.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
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