datadog-ci 0.5.1 → 0.6.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 (45) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/lib/datadog/ci/configuration/components.rb +11 -7
  4. data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +1 -1
  5. data/lib/datadog/ci/contrib/cucumber/ext.rb +7 -5
  6. data/lib/datadog/ci/contrib/cucumber/formatter.rb +99 -19
  7. data/lib/datadog/ci/contrib/minitest/configuration/settings.rb +1 -1
  8. data/lib/datadog/ci/contrib/minitest/ext.rb +6 -4
  9. data/lib/datadog/ci/contrib/minitest/helpers.rb +22 -0
  10. data/lib/datadog/ci/contrib/minitest/hooks.rb +45 -17
  11. data/lib/datadog/ci/contrib/minitest/patcher.rb +7 -0
  12. data/lib/datadog/ci/contrib/minitest/plugin.rb +73 -0
  13. data/lib/datadog/ci/contrib/minitest/runnable.rb +42 -0
  14. data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +1 -1
  15. data/lib/datadog/ci/contrib/rspec/example.rb +2 -2
  16. data/lib/datadog/ci/contrib/rspec/example_group.rb +46 -0
  17. data/lib/datadog/ci/contrib/rspec/ext.rb +5 -4
  18. data/lib/datadog/ci/contrib/rspec/integration.rb +1 -1
  19. data/lib/datadog/ci/contrib/rspec/patcher.rb +5 -0
  20. data/lib/datadog/ci/contrib/rspec/runner.rb +57 -0
  21. data/lib/datadog/ci/contrib/settings.rb +1 -1
  22. data/lib/datadog/ci/ext/test.rb +2 -0
  23. data/lib/datadog/ci/span.rb +24 -0
  24. data/lib/datadog/ci/test.rb +30 -0
  25. data/lib/datadog/ci/test_session.rb +8 -0
  26. data/lib/datadog/ci/test_visibility/null_recorder.rb +73 -0
  27. data/lib/datadog/ci/test_visibility/recorder.rb +30 -9
  28. data/lib/datadog/ci/version.rb +2 -2
  29. data/sig/datadog/ci/contrib/cucumber/ext.rbs +1 -5
  30. data/sig/datadog/ci/contrib/cucumber/formatter.rbs +17 -4
  31. data/sig/datadog/ci/contrib/minitest/ext.rbs +1 -5
  32. data/sig/datadog/ci/contrib/minitest/helpers.rbs +13 -0
  33. data/sig/datadog/ci/contrib/minitest/hooks.rbs +9 -1
  34. data/sig/datadog/ci/contrib/minitest/plugin.rbs +31 -0
  35. data/sig/datadog/ci/contrib/minitest/runnable.rbs +24 -0
  36. data/sig/datadog/ci/contrib/rspec/example_group.rbs +21 -0
  37. data/sig/datadog/ci/contrib/rspec/ext.rbs +2 -8
  38. data/sig/datadog/ci/contrib/rspec/runner.rbs +21 -0
  39. data/sig/datadog/ci/ext/test.rbs +2 -0
  40. data/sig/datadog/ci/span.rbs +8 -0
  41. data/sig/datadog/ci/test.rbs +5 -0
  42. data/sig/datadog/ci/test_visibility/null_recorder.rbs +45 -0
  43. data/sig/datadog/ci/test_visibility/recorder.rbs +5 -5
  44. data/sig/datadog/ci.rbs +2 -0
  45. metadata +15 -3
@@ -1,7 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "datadog/tracing/contrib/patcher"
4
+
4
5
  require_relative "example"
6
+ require_relative "example_group"
7
+ require_relative "runner"
5
8
 
6
9
  module Datadog
7
10
  module CI
@@ -19,6 +22,8 @@ module Datadog
19
22
 
20
23
  def patch
21
24
  ::RSpec::Core::Example.include(Example)
25
+ ::RSpec::Core::Runner.include(Runner)
26
+ ::RSpec::Core::ExampleGroup.include(ExampleGroup)
22
27
  end
23
28
  end
24
29
  end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../ext/test"
4
+ require_relative "ext"
5
+
6
+ module Datadog
7
+ module CI
8
+ module Contrib
9
+ module RSpec
10
+ # Instrument RSpec::Core::Runner
11
+ module Runner
12
+ def self.included(base)
13
+ base.prepend(InstanceMethods)
14
+ end
15
+
16
+ module InstanceMethods
17
+ def run_specs(example_groups)
18
+ return super unless configuration[:enabled]
19
+
20
+ test_session = CI.start_test_session(
21
+ tags: {
22
+ CI::Ext::Test::TAG_FRAMEWORK => Ext::FRAMEWORK,
23
+ CI::Ext::Test::TAG_FRAMEWORK_VERSION => CI::Contrib::RSpec::Integration.version.to_s,
24
+ CI::Ext::Test::TAG_TYPE => CI::Ext::Test::TEST_TYPE
25
+ },
26
+ service: configuration[:service_name]
27
+ )
28
+
29
+ test_module = CI.start_test_module(test_session.name)
30
+
31
+ result = super
32
+
33
+ if result != 0
34
+ # TODO: repeating this twice feels clunky, we need to remove test_module API before GA
35
+ test_module.failed!
36
+ test_session.failed!
37
+ else
38
+ test_module.passed!
39
+ test_session.passed!
40
+ end
41
+ test_module.finish
42
+ test_session.finish
43
+
44
+ result
45
+ end
46
+
47
+ private
48
+
49
+ def configuration
50
+ Datadog.configuration.ci[:rspec]
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -27,7 +27,7 @@ module Datadog
27
27
  end
28
28
 
29
29
  def []=(name, value)
30
- respond_to?("#{name}=") ? send("#{name}=", value) : set_option(name, value)
30
+ respond_to?(:"#{name}=") ? send(:"#{name}=", value) : set_option(name, value)
31
31
  end
32
32
  end
33
33
  end
@@ -20,6 +20,8 @@ module Datadog
20
20
  TAG_TYPE = "test.type"
21
21
  TAG_COMMAND = "test.command"
22
22
 
23
+ TEST_TYPE = "test"
24
+
23
25
  # those tags are special and they are used to correlate tests with the test sessions, suites, and modules
24
26
  TAG_TEST_SESSION_ID = "_test.session_id"
25
27
  TAG_TEST_MODULE_ID = "_test.module_id"
@@ -36,6 +36,30 @@ module Datadog
36
36
  tracer_span.type
37
37
  end
38
38
 
39
+ # Checks whether span status is not set yet.
40
+ # @return [bool] true if span does not have status
41
+ def undefined?
42
+ tracer_span.get_tag(Ext::Test::TAG_STATUS).nil?
43
+ end
44
+
45
+ # Checks whether span status is PASS.
46
+ # @return [bool] true if span status is PASS
47
+ def passed?
48
+ tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::PASS
49
+ end
50
+
51
+ # Checks whether span status is FAIL.
52
+ # @return [bool] true if span status is FAIL
53
+ def failed?
54
+ tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::FAIL
55
+ end
56
+
57
+ # Checks whether span status is SKIP.
58
+ # @return [bool] true if span status is SKIP
59
+ def skipped?
60
+ tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::SKIP
61
+ end
62
+
39
63
  # Sets the status of the span to "pass".
40
64
  # @return [void]
41
65
  def passed!
@@ -20,6 +20,36 @@ module Datadog
20
20
 
21
21
  CI.deactivate_test(self)
22
22
  end
23
+
24
+ # Running test suite that this test is part of (if any).
25
+ # @return [Datadog::CI::TestSuite] the test suite this test belongs to
26
+ # @return [nil] if the test suite is not found
27
+ def test_suite
28
+ suite_name = test_suite_name
29
+ CI.active_test_suite(suite_name) if suite_name
30
+ end
31
+
32
+ # Span id of the running test suite this test belongs to.
33
+ # @return [String] the span id of the test suite.
34
+ def test_suite_id
35
+ get_tag(Ext::Test::TAG_TEST_SUITE_ID)
36
+ end
37
+
38
+ def test_suite_name
39
+ get_tag(Ext::Test::TAG_SUITE)
40
+ end
41
+
42
+ # Span id of the running test module this test belongs to.
43
+ # @return [String] the span id of the test module.
44
+ def test_module_id
45
+ get_tag(Ext::Test::TAG_TEST_MODULE_ID)
46
+ end
47
+
48
+ # Span id of the running test module this test belongs to.
49
+ # @return [String] the span id of the test session.
50
+ def test_session_id
51
+ get_tag(Ext::Test::TAG_TEST_SESSION_ID)
52
+ end
23
53
  end
24
54
  end
25
55
  end
@@ -20,6 +20,14 @@ module Datadog
20
20
  CI.deactivate_test_session
21
21
  end
22
22
 
23
+ # Return the test session's name which is equal to test command used
24
+ # @return [String] the command for this test session.
25
+ def name
26
+ get_tag(Ext::Test::TAG_COMMAND)
27
+ end
28
+
29
+ # Return the test session tags that could be inherited by sub-spans
30
+ # @return [Hash] the tags to be inherited by sub-spans.
23
31
  def inheritable_tags
24
32
  return @inheritable_tags if defined?(@inheritable_tags)
25
33
 
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "recorder"
4
+
5
+ module Datadog
6
+ module CI
7
+ module TestVisibility
8
+ # Special recorder that does not record anything
9
+ class NullRecorder
10
+ def start_test_session(service: nil, tags: {})
11
+ skip_tracing
12
+ end
13
+
14
+ def start_test_module(test_module_name, service: nil, tags: {})
15
+ skip_tracing
16
+ end
17
+
18
+ def start_test_suite(test_suite_name, service: nil, tags: {})
19
+ skip_tracing
20
+ end
21
+
22
+ def trace_test(test_name, test_suite_name, service: nil, tags: {}, &block)
23
+ skip_tracing(block)
24
+ end
25
+
26
+ def trace(span_type, span_name, tags: {}, &block)
27
+ skip_tracing(block)
28
+ end
29
+
30
+ def active_span
31
+ end
32
+
33
+ def active_test
34
+ end
35
+
36
+ def active_test_session
37
+ end
38
+
39
+ def active_test_module
40
+ end
41
+
42
+ def active_test_suite(test_suite_name)
43
+ end
44
+
45
+ def deactivate_test(test)
46
+ end
47
+
48
+ def deactivate_test_session
49
+ end
50
+
51
+ def deactivate_test_module
52
+ end
53
+
54
+ def deactivate_test_suite(test_suite_name)
55
+ end
56
+
57
+ private
58
+
59
+ def skip_tracing(block = nil)
60
+ if block
61
+ block.call(null_span)
62
+ else
63
+ null_span
64
+ end
65
+ end
66
+
67
+ def null_span
68
+ @null_span ||= NullSpan.new
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -25,13 +25,12 @@ module Datadog
25
25
  # Common behavior for CI tests
26
26
  # Note: this class has too many responsibilities and should be split into multiple classes
27
27
  class Recorder
28
- attr_reader :environment_tags, :test_suite_level_visibility_enabled, :enabled
28
+ attr_reader :environment_tags, :test_suite_level_visibility_enabled
29
29
 
30
- def initialize(enabled: true, test_suite_level_visibility_enabled: false)
31
- @enabled = enabled
32
- @test_suite_level_visibility_enabled = enabled && test_suite_level_visibility_enabled
30
+ def initialize(test_suite_level_visibility_enabled: false)
31
+ @test_suite_level_visibility_enabled = test_suite_level_visibility_enabled
33
32
 
34
- @environment_tags = @enabled ? Ext::Environment.tags(ENV).freeze : {}
33
+ @environment_tags = Ext::Environment.tags(ENV).freeze
35
34
  @local_context = Context::Local.new
36
35
  @global_context = Context::Global.new
37
36
  end
@@ -83,8 +82,6 @@ module Datadog
83
82
  end
84
83
 
85
84
  def trace_test(test_name, test_suite_name, service: nil, tags: {}, &block)
86
- return skip_tracing(block) unless enabled
87
-
88
85
  set_inherited_globals(tags)
89
86
  set_session_context(tags)
90
87
  set_module_context(tags)
@@ -118,8 +115,6 @@ module Datadog
118
115
  end
119
116
 
120
117
  def trace(span_type, span_name, tags: {}, &block)
121
- return skip_tracing(block) unless enabled
122
-
123
118
  span_options = build_span_options(
124
119
  nil, # service name is completely optional for custom spans
125
120
  span_type,
@@ -210,6 +205,7 @@ module Datadog
210
205
  def build_test(tracer_span, tags)
211
206
  test = Test.new(tracer_span)
212
207
  set_initial_tags(test, tags)
208
+ validate_test_suite_level_visibility_correctness(test)
213
209
  test
214
210
  end
215
211
 
@@ -287,6 +283,31 @@ module Datadog
287
283
  def null_span
288
284
  @null_span ||= NullSpan.new
289
285
  end
286
+
287
+ def validate_test_suite_level_visibility_correctness(test)
288
+ return unless test_suite_level_visibility_enabled
289
+
290
+ if test.test_suite_id.nil?
291
+ Datadog.logger.debug do
292
+ "Test [#{test.name}] does not have a test suite associated with it. " \
293
+ "Expected test suite [#{test.test_suite_name}] to be running."
294
+ end
295
+ end
296
+
297
+ if test.test_module_id.nil?
298
+ Datadog.logger.debug do
299
+ "Test [#{test.name}] does not have a test module associated with it. " \
300
+ "Make sure that there is a test module running within a session."
301
+ end
302
+ end
303
+
304
+ if test.test_session_id.nil?
305
+ Datadog.logger.debug do
306
+ "Test [#{test.name}] does not have a test session associated with it. " \
307
+ "Make sure that there is a test session running."
308
+ end
309
+ end
310
+ end
290
311
  end
291
312
  end
292
313
  end
@@ -4,8 +4,8 @@ module Datadog
4
4
  module CI
5
5
  module VERSION
6
6
  MAJOR = "0"
7
- MINOR = "5"
8
- PATCH = "1"
7
+ MINOR = "6"
8
+ PATCH = "0"
9
9
  PRE = nil
10
10
  BUILD = nil
11
11
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
@@ -3,8 +3,6 @@ module Datadog
3
3
  module Contrib
4
4
  module Cucumber
5
5
  module Ext
6
- APP: String
7
-
8
6
  ENV_ENABLED: String
9
7
 
10
8
  ENV_OPERATION_NAME: String
@@ -13,11 +11,9 @@ module Datadog
13
11
 
14
12
  OPERATION_NAME: String
15
13
 
16
- SERVICE_NAME: String
14
+ DEFAULT_SERVICE_NAME: String
17
15
 
18
16
  STEP_SPAN_TYPE: String
19
-
20
- TEST_TYPE: String
21
17
  end
22
18
  end
23
19
  end
@@ -4,19 +4,22 @@ module Datadog
4
4
  module Cucumber
5
5
  class Formatter
6
6
  private
7
+ @failed_tests_count: Integer
8
+ @current_test_suite: Datadog::CI::Span?
9
+ @failed_tests_in_current_test_suite: Integer
7
10
 
8
11
  attr_reader config: untyped
9
12
 
10
- attr_reader current_feature_span: untyped
11
-
12
- attr_reader current_step_span: untyped
13
-
14
13
  public
15
14
 
16
15
  def initialize: (untyped config) -> void
17
16
 
18
17
  def bind_events: (untyped config) -> untyped
19
18
 
19
+ def on_test_run_started: (untyped event) -> untyped
20
+
21
+ def on_test_run_finished: (untyped event) -> untyped
22
+
20
23
  def on_test_case_started: (untyped event) -> untyped
21
24
 
22
25
  def on_test_case_finished: (untyped event) -> (nil | untyped)
@@ -27,6 +30,16 @@ module Datadog
27
30
 
28
31
  private
29
32
 
33
+ def start_test_suite: (String test_suite_name) -> void
34
+
35
+ def finish_current_test_suite: () -> void
36
+
37
+ def same_test_suite_as_current?: (String test_suite_name) -> bool
38
+
39
+ def finish_session: (bool result) -> void
40
+
41
+ def finish_test: (Datadog::CI::Span test, Cucumber::Core::Test::Result result) -> void
42
+
30
43
  def configuration: () -> untyped
31
44
  end
32
45
  end
@@ -3,8 +3,6 @@ module Datadog
3
3
  module Contrib
4
4
  module Minitest
5
5
  module Ext
6
- APP: String
7
-
8
6
  ENV_ENABLED: String
9
7
 
10
8
  ENV_OPERATION_NAME: String
@@ -13,9 +11,7 @@ module Datadog
13
11
 
14
12
  OPERATION_NAME: String
15
13
 
16
- SERVICE_NAME: String
17
-
18
- TEST_TYPE: String
14
+ DEFAULT_SERVICE_NAME: String
19
15
  end
20
16
  end
21
17
  end
@@ -0,0 +1,13 @@
1
+ module Datadog
2
+ module CI
3
+ module Contrib
4
+ module Minitest
5
+ module Helpers
6
+ def self.test_suite_name: (untyped klass, String? method_name) -> ::String
7
+
8
+ def self.parallel?: (untyped klass) -> bool
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -11,7 +11,15 @@ module Datadog
11
11
 
12
12
  private
13
13
 
14
- def configuration: () -> untyped
14
+ def datadog_configuration: () -> untyped
15
+
16
+ def finish_test: (Datadog::CI::Test test_span, String result_code) -> void
17
+
18
+ def finish_test_suite: (Datadog::CI::TestSuite? test_suite, String result_code) -> void
19
+
20
+ def finish_with_result: (Datadog::CI::Span span, String result_code) -> void
21
+
22
+ def self.test_order: () -> (nil | :parallel | :sorted | :random | :alpha)
15
23
  end
16
24
  end
17
25
  end
@@ -0,0 +1,31 @@
1
+ module Datadog
2
+ module CI
3
+ module Contrib
4
+ module Minitest
5
+ module Plugin
6
+ def self.included: (untyped base) -> untyped
7
+
8
+ class DatadogReporter < ::Minitest::AbstractReporter
9
+ @reporter: WeakRef
10
+
11
+ def initialize: (Minitest::AbstractReporter reporter) -> void
12
+ end
13
+
14
+ module ClassMethods
15
+ def plugin_datadog_ci_init: (*untyped) -> (nil | untyped)
16
+
17
+ def initialize: (untyped reporter) -> void
18
+
19
+ def report: () -> (nil | untyped)
20
+
21
+ def reporter: () -> Minitest::CompositeReporter
22
+
23
+ private
24
+
25
+ def datadog_configuration: () -> untyped
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,24 @@
1
+ module Datadog
2
+ module CI
3
+ module Contrib
4
+ module Minitest
5
+ module Runnable
6
+ def self.included: (untyped base) -> untyped
7
+
8
+ module ClassMethods : ::Minitest::Runnable
9
+
10
+ def run: (*untyped) -> untyped
11
+
12
+ private
13
+
14
+ def datadog_configuration: () -> untyped
15
+
16
+ def test_order: () -> (nil | :parallel | :random | :sorted | :alpha)
17
+
18
+ def runnable_methods: () -> Array[String]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,21 @@
1
+ module Datadog
2
+ module CI
3
+ module Contrib
4
+ module RSpec
5
+ module ExampleGroup
6
+ def self.included: (untyped base) -> untyped
7
+
8
+ module ClassMethods
9
+ include ::RSpec::Core::ExampleGroup::ClassMethods
10
+
11
+ def run: (?untyped reporter) -> untyped
12
+
13
+ private
14
+
15
+ def configuration: () -> untyped
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -3,19 +3,13 @@ module Datadog
3
3
  module Contrib
4
4
  module RSpec
5
5
  module Ext
6
- APP: String
7
-
8
6
  ENV_ENABLED: String
9
7
 
10
- ENV_OPERATION_NAME: String
11
-
12
8
  FRAMEWORK: String
9
+ DEFAULT_SERVICE_NAME: String
13
10
 
14
11
  OPERATION_NAME: String
15
-
16
- SERVICE_NAME: String
17
-
18
- TEST_TYPE: String
12
+ ENV_OPERATION_NAME: String
19
13
  end
20
14
  end
21
15
  end
@@ -0,0 +1,21 @@
1
+ module Datadog
2
+ module CI
3
+ module Contrib
4
+ module RSpec
5
+ module Runner
6
+ def self.included: (untyped base) -> untyped
7
+
8
+ module InstanceMethods
9
+ include ::RSpec::Core::Runner
10
+
11
+ def run_specs: (untyped example_groups) -> untyped
12
+
13
+ private
14
+
15
+ def configuration: () -> untyped
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -32,6 +32,8 @@ module Datadog
32
32
 
33
33
  TAG_TEST_SUITE_ID: String
34
34
 
35
+ TEST_TYPE: String
36
+
35
37
  SPECIAL_TAGS: Array[String]
36
38
 
37
39
  INHERITABLE_TAGS: Array[String]
@@ -13,6 +13,14 @@ module Datadog
13
13
 
14
14
  def service: () -> String
15
15
 
16
+ def undefined?: () -> bool
17
+
18
+ def passed?: () -> bool
19
+
20
+ def failed?: () -> bool
21
+
22
+ def skipped?: () -> bool
23
+
16
24
  def passed!: () -> void
17
25
 
18
26
  def failed!: (?exception: untyped?) -> void
@@ -2,6 +2,11 @@ module Datadog
2
2
  module CI
3
3
  class Test < Span
4
4
  def finish: () -> void
5
+ def test_suite: () -> Datadog::CI::TestSuite?
6
+ def test_suite_id: () -> String?
7
+ def test_suite_name: () -> String?
8
+ def test_module_id: () -> String?
9
+ def test_session_id: () -> String?
5
10
  end
6
11
  end
7
12
  end
@@ -0,0 +1,45 @@
1
+ module Datadog
2
+ module CI
3
+ module TestVisibility
4
+ class NullRecorder
5
+ @null_span: Datadog::CI::NullSpan
6
+
7
+ def initialize: (?untyped args) -> void
8
+
9
+ def trace_test: (String span_name, String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
10
+
11
+ def trace: (String span_type, String span_name, ?tags: Hash[untyped, untyped]) ?{ (Datadog::CI::Span span) -> untyped } -> untyped
12
+
13
+ def start_test_session: (?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
14
+
15
+ def start_test_module: (String test_module_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
16
+
17
+ def start_test_suite: (String test_suite_name, ?service: String?, ?tags: Hash[untyped, untyped]) -> Datadog::CI::Span
18
+
19
+ def active_test_session: () -> Datadog::CI::TestSession?
20
+
21
+ def active_test_module: () -> Datadog::CI::TestModule?
22
+
23
+ def active_test_suite: (String test_suite_name) -> Datadog::CI::TestSuite?
24
+
25
+ def active_test: () -> Datadog::CI::Test?
26
+
27
+ def active_span: () -> Datadog::CI::Span?
28
+
29
+ def deactivate_test: (Datadog::CI::Test test) -> void
30
+
31
+ def deactivate_test_session: () -> void
32
+
33
+ def deactivate_test_module: () -> void
34
+
35
+ def deactivate_test_suite: (String test_suite_name) -> void
36
+
37
+ private
38
+
39
+ def null_span: () -> Datadog::CI::Span
40
+
41
+ def skip_tracing: (?untyped block) -> untyped
42
+ end
43
+ end
44
+ end
45
+ end