datadog-ci 0.4.1 → 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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +57 -1
  3. data/README.md +26 -3
  4. data/lib/datadog/ci/concurrent_span.rb +59 -0
  5. data/lib/datadog/ci/configuration/components.rb +34 -4
  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 +3 -4
  10. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +10 -1
  11. data/lib/datadog/ci/contrib/minitest/hooks.rb +3 -4
  12. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +10 -1
  13. data/lib/datadog/ci/contrib/rspec/example.rb +3 -4
  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/settings.rb +11 -0
  17. data/lib/datadog/ci/ext/test.rb +12 -1
  18. data/lib/datadog/ci/null_span.rb +63 -0
  19. data/lib/datadog/ci/span.rb +13 -3
  20. data/lib/datadog/ci/test.rb +0 -1
  21. data/lib/datadog/ci/test_module.rb +23 -0
  22. data/lib/datadog/ci/test_session.rb +36 -0
  23. data/lib/datadog/ci/test_suite.rb +25 -0
  24. data/lib/datadog/ci/test_visibility/context/global.rb +82 -0
  25. data/lib/datadog/ci/test_visibility/context/local.rb +52 -0
  26. data/lib/datadog/ci/test_visibility/recorder.rb +293 -0
  27. data/lib/datadog/ci/test_visibility/serializers/base.rb +100 -12
  28. data/lib/datadog/ci/test_visibility/serializers/factories/test_suite_level.rb +37 -0
  29. data/lib/datadog/ci/test_visibility/serializers/span.rb +2 -16
  30. data/lib/datadog/ci/test_visibility/serializers/test_module.rb +46 -0
  31. data/lib/datadog/ci/test_visibility/serializers/test_session.rb +46 -0
  32. data/lib/datadog/ci/test_visibility/serializers/test_suite.rb +46 -0
  33. data/lib/datadog/ci/test_visibility/serializers/test_v1.rb +3 -17
  34. data/lib/datadog/ci/test_visibility/serializers/test_v2.rb +38 -0
  35. data/lib/datadog/ci/test_visibility/transport.rb +4 -4
  36. data/lib/datadog/ci/utils/test_run.rb +15 -0
  37. data/lib/datadog/ci/version.rb +1 -1
  38. data/lib/datadog/ci.rb +217 -35
  39. data/sig/datadog/ci/concurrent_span.rbs +23 -0
  40. data/sig/datadog/ci/configuration/components.rbs +4 -2
  41. data/sig/datadog/ci/configuration/extensions.rbs +9 -0
  42. data/sig/datadog/ci/ext/app_types.rbs +6 -1
  43. data/sig/datadog/ci/ext/settings.rbs +3 -0
  44. data/sig/datadog/ci/ext/test.rbs +15 -0
  45. data/sig/datadog/ci/null_span.rbs +37 -0
  46. data/sig/datadog/ci/span.rbs +4 -0
  47. data/sig/datadog/ci/test_module.rbs +6 -0
  48. data/sig/datadog/ci/test_session.rbs +9 -0
  49. data/sig/datadog/ci/test_suite.rbs +6 -0
  50. data/sig/datadog/ci/test_visibility/context/global.rbs +39 -0
  51. data/sig/datadog/ci/test_visibility/context/local.rbs +23 -0
  52. data/sig/datadog/ci/test_visibility/recorder.rbs +85 -0
  53. data/sig/datadog/ci/test_visibility/serializers/base.rbs +26 -5
  54. data/sig/datadog/ci/test_visibility/serializers/factories/test_suite_level.rbs +13 -0
  55. data/sig/datadog/ci/test_visibility/serializers/test_module.rbs +26 -0
  56. data/sig/datadog/ci/test_visibility/serializers/test_session.rbs +26 -0
  57. data/sig/datadog/ci/test_visibility/serializers/test_suite.rbs +26 -0
  58. data/sig/datadog/ci/test_visibility/serializers/test_v1.rbs +1 -1
  59. data/sig/datadog/ci/test_visibility/serializers/test_v2.rbs +25 -0
  60. data/sig/datadog/ci/test_visibility/transport.rbs +3 -3
  61. data/sig/datadog/ci/utils/test_run.rbs +11 -0
  62. data/sig/datadog/ci.rbs +19 -3
  63. metadata +32 -8
  64. data/lib/datadog/ci/context/local.rb +0 -50
  65. data/lib/datadog/ci/extensions.rb +0 -19
  66. data/lib/datadog/ci/recorder.rb +0 -119
  67. data/sig/datadog/ci/context/local.rbs +0 -21
  68. data/sig/datadog/ci/extensions.rbs +0 -7
  69. data/sig/datadog/ci/recorder.rbs +0 -30
@@ -0,0 +1,85 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ class Recorder
5
+ @test_suite_level_visibility_enabled: bool
6
+ @enabled: bool
7
+
8
+ @environment_tags: Hash[String, String]
9
+ @local_context: Datadog::CI::TestVisibility::Context::Local
10
+ @global_context: Datadog::CI::TestVisibility::Context::Global
11
+
12
+ @null_span: Datadog::CI::NullSpan
13
+
14
+ attr_reader environment_tags: Hash[String, String]
15
+ attr_reader test_suite_level_visibility_enabled: bool
16
+ attr_reader enabled: bool
17
+
18
+ def initialize: (?enabled: bool, ?test_suite_level_visibility_enabled: bool) -> void
19
+
20
+ def trace_test: (String span_name, String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
21
+
22
+ def trace: (String span_type, String span_name, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
23
+
24
+ def start_test_session: (?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
25
+
26
+ def start_test_module: (String test_module_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
27
+
28
+ def start_test_suite: (String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
29
+
30
+ def active_test_session: () -> Datadog::CI::TestSession?
31
+
32
+ def active_test_module: () -> Datadog::CI::TestModule?
33
+
34
+ def active_test_suite: (String test_suite_name) -> Datadog::CI::TestSuite?
35
+
36
+ def active_test: () -> Datadog::CI::Test?
37
+
38
+ def active_span: () -> Datadog::CI::Span?
39
+
40
+ def deactivate_test: (Datadog::CI::Test test) -> void
41
+
42
+ def deactivate_test_session: () -> void
43
+
44
+ def deactivate_test_module: () -> void
45
+
46
+ def deactivate_test_suite: (String test_suite_name) -> void
47
+
48
+ def create_datadog_span: (String span_name, ?span_options: Hash[untyped, untyped], ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
49
+
50
+ def set_trace_origin: (Datadog::Tracing::TraceOperation trace) -> untyped
51
+
52
+ private
53
+
54
+ def build_test: (Datadog::Tracing::SpanOperation tracer_span, Hash[untyped, untyped] tags) -> Datadog::CI::Test
55
+
56
+ def build_test_session: (Datadog::Tracing::SpanOperation tracer_span, Hash[untyped, untyped] tags) -> Datadog::CI::TestSession
57
+
58
+ def build_test_module: (Datadog::Tracing::SpanOperation tracer_span, Hash[untyped, untyped] tags) -> Datadog::CI::TestModule
59
+
60
+ def build_test_suite: (Datadog::Tracing::SpanOperation tracer_span, Hash[untyped, untyped] tags) -> Datadog::CI::TestSuite
61
+
62
+ def build_span: (Datadog::Tracing::SpanOperation tracer_span, Hash[untyped, untyped] tags) -> Datadog::CI::Span
63
+
64
+ def build_span_options: (String? service_name, String span_type, ?Hash[Symbol, untyped] other_options) -> Hash[Symbol, untyped]
65
+
66
+ def set_initial_tags: (Datadog::CI::Span ci_span, Hash[untyped, untyped] tags) -> void
67
+
68
+ # the type (Datadog::CI::TestSession | Datadog::Tracing::SpanOperation) screams of wrong/mising abstraction
69
+ def set_session_context: (Hash[untyped, untyped] tags, ?Datadog::CI::TestSession | Datadog::Tracing::SpanOperation? test_session) -> void
70
+
71
+ def set_suite_context: (Hash[untyped, untyped] tags, ?span: Datadog::Tracing::SpanOperation, ?name: String) -> void
72
+
73
+ def set_module_context: (Hash[untyped, untyped] tags, ?Datadog::CI::TestModule | Datadog::Tracing::SpanOperation? test_module) -> void
74
+
75
+ def null_span: () -> Datadog::CI::Span
76
+
77
+ def skip_tracing: (?untyped block) -> untyped
78
+
79
+ def start_datadog_tracer_span: (String span_name, Hash[untyped, untyped] span_options) ?{ (untyped) -> untyped } -> untyped
80
+
81
+ def set_inherited_globals: (Hash[untyped, untyped] tags) -> void
82
+ end
83
+ end
84
+ end
85
+ end
@@ -7,18 +7,28 @@ module Datadog
7
7
  MINIMUM_DURATION_NANO: 0
8
8
  MAXIMUM_DURATION_NANO: 9223372036854775807
9
9
 
10
+ CONTENT_FIELDS: Array[String | Hash[String, String]]
11
+ REQUIRED_FIELDS: Array[String]
12
+
10
13
  @content_fields_count: Integer
11
14
  @start: Integer
12
15
  @duration: Integer
16
+ @meta: Hash[untyped, untyped]
17
+ @errors: Hash[String, Set[String]]
18
+ @validated: bool
13
19
 
14
20
  attr_reader trace: Datadog::Tracing::TraceSegment
15
21
  attr_reader span: Datadog::Tracing::Span
22
+ attr_reader meta: Hash[untyped, untyped]
16
23
 
17
24
  def initialize: (Datadog::Tracing::TraceSegment trace, Datadog::Tracing::Span span) -> void
18
25
 
19
26
  def to_msgpack: (?untyped? packer) -> untyped
20
27
 
21
28
  def valid?: () -> bool
29
+ def validate!: () -> void
30
+ def validation_errors: () -> Hash[String, Set[String]]
31
+
22
32
  def content_fields: () -> ::Array[String | Hash[String, String]]
23
33
  def content_map_size: () -> Integer
24
34
 
@@ -30,6 +40,12 @@ module Datadog
30
40
 
31
41
  def parent_id: () -> String
32
42
 
43
+ def test_session_id: () -> Integer?
44
+
45
+ def test_module_id: () -> Integer?
46
+
47
+ def test_suite_id: () -> Integer?
48
+
33
49
  def type: () -> nil
34
50
 
35
51
  def version: () -> 1
@@ -46,8 +62,6 @@ module Datadog
46
62
 
47
63
  def duration: () -> Integer
48
64
 
49
- def meta: () -> Hash[String, untyped]
50
-
51
65
  def metrics: () -> Hash[String, untyped]
52
66
 
53
67
  def error: () -> Integer
@@ -56,15 +70,22 @@ module Datadog
56
70
 
57
71
  private
58
72
 
59
- def valid_start_time?: () -> bool
60
- def valid_duration?: () -> bool
61
- def required_fields_present?: () -> bool
73
+ def validate_start_time!: () -> void
74
+ def validate_duration!: () -> void
75
+ def validate_required_fields!: () -> void
76
+ def validate_required!: (String field) -> void
77
+ def validate_greater_than_or_equal!: (String field, Integer value) -> void
78
+ def validate_less_than_or_equal!: (String field, Integer value) -> void
79
+ def add_error: (String field, String message) -> void
80
+
62
81
  def required_fields: () -> Array[String]
63
82
 
64
83
  def write_field: (untyped packer, String field_name, ?String? method) -> untyped
65
84
  def time_nano: (Time time) -> Integer
66
85
  def duration_nano: (Float duration) -> Integer
67
86
 
87
+ def to_integer: (String? value) -> Integer?
88
+
68
89
  def content_fields_count: () -> Integer
69
90
  end
70
91
  end
@@ -0,0 +1,13 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ module Serializers
5
+ module Factories
6
+ module TestSuiteLevel
7
+ def self?.serializer: (Datadog::Tracing::TraceSegment trace, Datadog::Tracing::Span span) -> Datadog::CI::TestVisibility::Serializers::Base
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ module Serializers
5
+ class TestModule < Base
6
+ CONTENT_FIELDS: Array[String | Hash[String, String]]
7
+ CONTENT_MAP_SIZE: Integer
8
+ REQUIRED_FIELDS: Array[String]
9
+
10
+ def content_fields: () -> Array[String | Hash[String, String]]
11
+ def content_map_size: () -> Integer
12
+
13
+ def type: () -> ::String
14
+
15
+ def name: () -> ::String
16
+
17
+ def resource: () -> ::String
18
+
19
+ private
20
+
21
+ def required_fields: () -> Array[String]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ module Serializers
5
+ class TestSession < Base
6
+ CONTENT_FIELDS: Array[String | Hash[String, String]]
7
+ CONTENT_MAP_SIZE: Integer
8
+ REQUIRED_FIELDS: Array[String]
9
+
10
+ def content_fields: () -> Array[String | Hash[String, String]]
11
+ def content_map_size: () -> Integer
12
+
13
+ def type: () -> ::String
14
+
15
+ def name: () -> ::String
16
+
17
+ def resource: () -> ::String
18
+
19
+ private
20
+
21
+ def required_fields: () -> Array[String]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,26 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ module Serializers
5
+ class TestSuite < Base
6
+ CONTENT_FIELDS: Array[String | Hash[String, String]]
7
+ CONTENT_MAP_SIZE: Integer
8
+ REQUIRED_FIELDS: Array[String]
9
+
10
+ def content_fields: () -> Array[String | Hash[String, String]]
11
+ def content_map_size: () -> Integer
12
+
13
+ def type: () -> ::String
14
+
15
+ def name: () -> ::String
16
+
17
+ def resource: () -> ::String
18
+
19
+ private
20
+
21
+ def required_fields: () -> Array[String]
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -11,7 +11,7 @@ module Datadog
11
11
  def content_fields: () -> Array[String | Hash[String, String]]
12
12
  def content_map_size: () -> Integer
13
13
 
14
- def type: () -> "test"
14
+ def type: () -> ::String
15
15
 
16
16
  def name: () -> ::String
17
17
 
@@ -0,0 +1,25 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ module Serializers
5
+ class TestV2 < TestV1
6
+ CONTENT_FIELDS: ::Array[String | ::Hash[::String, String]]
7
+
8
+ CONTENT_MAP_SIZE: Integer
9
+
10
+ REQUIRED_FIELDS: ::Array[String]
11
+
12
+ def content_fields: () -> ::Array[String | ::Hash[::String, String]]
13
+
14
+ def content_map_size: () -> Integer
15
+
16
+ def version: () -> 2
17
+
18
+ private
19
+
20
+ def required_fields: () -> Array[String]
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -4,19 +4,19 @@ module Datadog
4
4
  class Transport
5
5
  DEFAULT_MAX_PAYLOAD_SIZE: Integer
6
6
 
7
- attr_reader serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel)
7
+ attr_reader serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel) | singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestSuiteLevel)
8
8
  attr_reader dd_env: String?
9
9
  attr_reader api: Datadog::CI::Transport::Api::Base
10
10
  attr_reader max_payload_size: Integer
11
11
 
12
12
  @dd_env: String?
13
- @serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel)
13
+ @serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel) | singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestSuiteLevel)
14
14
  @max_payload_size: Integer
15
15
 
16
16
  def initialize: (
17
17
  api: Datadog::CI::Transport::Api::Base,
18
18
  ?dd_env: ::String?,
19
- ?serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel),
19
+ ?serializers_factory: singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestLevel) | singleton(Datadog::CI::TestVisibility::Serializers::Factories::TestSuiteLevel),
20
20
  ?max_payload_size: Integer
21
21
  ) -> void
22
22
 
@@ -0,0 +1,11 @@
1
+ module Datadog
2
+ module CI
3
+ module Utils
4
+ module TestRun
5
+ self.@command: String
6
+
7
+ def self.command: () -> String
8
+ end
9
+ end
10
+ end
11
+ end
data/sig/datadog/ci.rbs CHANGED
@@ -1,19 +1,35 @@
1
1
  module Datadog
2
2
  module CI
3
- def self.trace_test: (String span_name, ?service_name: String?, ?operation_name: String, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Test test) -> untyped } -> untyped
3
+ def self.trace_test: (String test_name, String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span test) -> untyped } -> untyped
4
4
 
5
- def self.start_test: (String span_name, ?service_name: String?, ?operation_name: String, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Test
5
+ def self.start_test: (String test_name, String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
6
+
7
+ def self.start_test_session: (?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
8
+
9
+ def self.start_test_module: (String test_module_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
10
+
11
+ def self.start_test_suite: (String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
6
12
 
7
13
  def self.trace: (String span_type, String span_name, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
8
14
 
15
+ def self.active_test_session: () -> Datadog::CI::TestSession?
16
+
17
+ def self.active_test_module: () -> Datadog::CI::TestModule?
18
+
9
19
  def self.active_test: () -> Datadog::CI::Test?
10
20
 
11
21
  def self.active_span: (String span_type) -> Datadog::CI::Span?
12
22
 
13
23
  def self.deactivate_test: (Datadog::CI::Test test) -> void
14
24
 
25
+ def self.deactivate_test_session: () -> void
26
+
27
+ def self.deactivate_test_module: () -> void
28
+
29
+ def self.deactivate_test_suite: (String test_suite_name) -> void
30
+
15
31
  def self.components: () -> Datadog::CI::Configuration::Components
16
32
 
17
- def self.recorder: () -> Datadog::CI::Recorder
33
+ def self.recorder: () -> Datadog::CI::TestVisibility::Recorder
18
34
  end
19
35
  end
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.4.1
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-11-22 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,9 +42,10 @@ 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
- - lib/datadog/ci/context/local.rb
48
49
  - lib/datadog/ci/contrib/cucumber/configuration/settings.rb
49
50
  - lib/datadog/ci/contrib/cucumber/ext.rb
50
51
  - lib/datadog/ci/contrib/cucumber/formatter.rb
@@ -88,15 +89,25 @@ files:
88
89
  - lib/datadog/ci/ext/settings.rb
89
90
  - lib/datadog/ci/ext/test.rb
90
91
  - lib/datadog/ci/ext/transport.rb
91
- - lib/datadog/ci/extensions.rb
92
- - lib/datadog/ci/recorder.rb
92
+ - lib/datadog/ci/null_span.rb
93
93
  - lib/datadog/ci/span.rb
94
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
95
100
  - lib/datadog/ci/test_visibility/flush.rb
101
+ - lib/datadog/ci/test_visibility/recorder.rb
96
102
  - lib/datadog/ci/test_visibility/serializers/base.rb
97
103
  - lib/datadog/ci/test_visibility/serializers/factories/test_level.rb
104
+ - lib/datadog/ci/test_visibility/serializers/factories/test_suite_level.rb
98
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
99
109
  - lib/datadog/ci/test_visibility/serializers/test_v1.rb
110
+ - lib/datadog/ci/test_visibility/serializers/test_v2.rb
100
111
  - lib/datadog/ci/test_visibility/transport.rb
101
112
  - lib/datadog/ci/transport/api/base.rb
102
113
  - lib/datadog/ci/transport/api/builder.rb
@@ -105,12 +116,14 @@ files:
105
116
  - lib/datadog/ci/transport/gzip.rb
106
117
  - lib/datadog/ci/transport/http.rb
107
118
  - lib/datadog/ci/utils/git.rb
119
+ - lib/datadog/ci/utils/test_run.rb
108
120
  - lib/datadog/ci/utils/url.rb
109
121
  - lib/datadog/ci/version.rb
110
122
  - sig/datadog/ci.rbs
123
+ - sig/datadog/ci/concurrent_span.rbs
111
124
  - sig/datadog/ci/configuration/components.rbs
125
+ - sig/datadog/ci/configuration/extensions.rbs
112
126
  - sig/datadog/ci/configuration/settings.rbs
113
- - sig/datadog/ci/context/local.rbs
114
127
  - sig/datadog/ci/contrib/cucumber/configuration/settings.rbs
115
128
  - sig/datadog/ci/contrib/cucumber/ext.rbs
116
129
  - sig/datadog/ci/contrib/cucumber/formatter.rbs
@@ -154,15 +167,25 @@ files:
154
167
  - sig/datadog/ci/ext/settings.rbs
155
168
  - sig/datadog/ci/ext/test.rbs
156
169
  - sig/datadog/ci/ext/transport.rbs
157
- - sig/datadog/ci/extensions.rbs
158
- - sig/datadog/ci/recorder.rbs
170
+ - sig/datadog/ci/null_span.rbs
159
171
  - sig/datadog/ci/span.rbs
160
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
161
178
  - sig/datadog/ci/test_visibility/flush.rbs
179
+ - sig/datadog/ci/test_visibility/recorder.rbs
162
180
  - sig/datadog/ci/test_visibility/serializers/base.rbs
163
181
  - sig/datadog/ci/test_visibility/serializers/factories/test_level.rbs
182
+ - sig/datadog/ci/test_visibility/serializers/factories/test_suite_level.rbs
164
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
165
187
  - sig/datadog/ci/test_visibility/serializers/test_v1.rbs
188
+ - sig/datadog/ci/test_visibility/serializers/test_v2.rbs
166
189
  - sig/datadog/ci/test_visibility/transport.rbs
167
190
  - sig/datadog/ci/transport/api/base.rbs
168
191
  - sig/datadog/ci/transport/api/builder.rbs
@@ -171,6 +194,7 @@ files:
171
194
  - sig/datadog/ci/transport/gzip.rbs
172
195
  - sig/datadog/ci/transport/http.rbs
173
196
  - sig/datadog/ci/utils/git.rbs
197
+ - sig/datadog/ci/utils/test_run.rbs
174
198
  - sig/datadog/ci/utils/url.rbs
175
199
  - sig/datadog/ci/version.rbs
176
200
  homepage: https://github.com/DataDog/datadog-ci-rb
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Datadog
4
- module CI
5
- module Context
6
- class Local
7
- def initialize
8
- @key = :datadog_ci_active_test
9
-
10
- self.active_test = nil
11
- end
12
-
13
- def activate_test!(test)
14
- raise "Nested tests are not supported. Currently active test: #{active_test}" unless active_test.nil?
15
-
16
- if block_given?
17
- begin
18
- self.active_test = test
19
- yield
20
- ensure
21
- self.active_test = nil
22
- end
23
- else
24
- self.active_test = test
25
- end
26
- end
27
-
28
- def deactivate_test!(test)
29
- return if active_test.nil?
30
-
31
- if active_test == test
32
- self.active_test = nil
33
- else
34
- raise "Trying to deactivate test #{test}, but currently active test is #{active_test}"
35
- end
36
- end
37
-
38
- def active_test
39
- Thread.current[@key]
40
- end
41
-
42
- private
43
-
44
- def active_test=(test)
45
- Thread.current[@key] = test
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -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,119 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "datadog/tracing"
4
-
5
- require "rbconfig"
6
-
7
- require_relative "ext/app_types"
8
- require_relative "ext/test"
9
- require_relative "ext/environment"
10
-
11
- require_relative "context/local"
12
-
13
- require_relative "span"
14
- require_relative "test"
15
-
16
- module Datadog
17
- module CI
18
- # Common behavior for CI tests
19
- class Recorder
20
- attr_reader :environment_tags
21
-
22
- def initialize
23
- @environment_tags = Ext::Environment.tags(ENV).freeze
24
- @local_context = Context::Local.new
25
- end
26
-
27
- # Creates a new span for a CI test
28
- def trace_test(test_name, service_name: nil, operation_name: "test", tags: {}, &block)
29
- span_options = {
30
- resource: test_name,
31
- service: service_name,
32
- span_type: Ext::AppTypes::TYPE_TEST
33
- }
34
-
35
- tags[Ext::Test::TAG_NAME] = test_name
36
-
37
- if block
38
- Datadog::Tracing.trace(operation_name, **span_options) do |tracer_span, trace|
39
- set_trace_origin(trace)
40
-
41
- test = build_test(tracer_span, tags)
42
-
43
- @local_context.activate_test!(test) do
44
- block.call(test)
45
- end
46
- end
47
- else
48
- tracer_span = Datadog::Tracing.trace(operation_name, **span_options)
49
- trace = Datadog::Tracing.active_trace
50
-
51
- set_trace_origin(trace)
52
-
53
- test = build_test(tracer_span, tags)
54
- @local_context.activate_test!(test)
55
- test
56
- end
57
- end
58
-
59
- def trace(span_type, span_name, tags: {}, &block)
60
- span_options = {
61
- resource: span_name,
62
- span_type: span_type
63
- }
64
-
65
- if block
66
- Datadog::Tracing.trace(span_name, **span_options) do |tracer_span, trace|
67
- block.call(build_span(tracer_span, tags))
68
- end
69
- else
70
- tracer_span = Datadog::Tracing.trace(span_name, **span_options)
71
-
72
- build_span(tracer_span, tags)
73
- end
74
- end
75
-
76
- def active_test
77
- @local_context.active_test
78
- end
79
-
80
- def deactivate_test(test)
81
- @local_context.deactivate_test!(test)
82
- end
83
-
84
- def active_span
85
- tracer_span = Datadog::Tracing.active_span
86
- Span.new(tracer_span) if tracer_span
87
- end
88
-
89
- private
90
-
91
- # Sets trace's origin to ciapp-test
92
- def set_trace_origin(trace)
93
- trace.origin = Ext::Test::CONTEXT_ORIGIN if trace
94
- end
95
-
96
- def build_test(tracer_span, tags)
97
- test = Test.new(tracer_span)
98
-
99
- test.set_default_tags
100
- test.set_environment_runtime_tags
101
-
102
- test.set_tags(tags)
103
- test.set_tags(environment_tags)
104
-
105
- test
106
- end
107
-
108
- def build_span(tracer_span, tags)
109
- span = Span.new(tracer_span)
110
-
111
- span.set_default_tags
112
- span.set_environment_runtime_tags
113
- span.set_tags(tags)
114
-
115
- span
116
- end
117
- end
118
- end
119
- end