Class: Datadog::CI::TestVisibility::Store::Global

Inherits:
Object
  • Object
show all
Defined in:
lib/datadog/ci/test_visibility/store/global.rb

Overview

This context is shared between threads and represents the current test session and test module.

Instance Method Summary collapse

Constructor Details

#initializeGlobal

Returns a new instance of Global.



9
10
11
12
13
14
15
16
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 9

def initialize
  # we are using Monitor instead of Mutex because it is reentrant
  @mutex = Monitor.new

  @test_session = nil
  @test_module = nil
  @test_suites = {}
end

Instance Method Details

#active_test_moduleObject



44
45
46
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 44

def active_test_module
  @test_module
end

#active_test_sessionObject



48
49
50
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 48

def active_test_session
  @test_session
end

#active_test_suite(test_suite_name) ⇒ Object



52
53
54
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 52

def active_test_suite(test_suite_name)
  @mutex.synchronize { @test_suites[test_suite_name] }
end

#deactivate_test_module!Object



77
78
79
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 77

def deactivate_test_module!
  @mutex.synchronize { @test_module = nil }
end

#deactivate_test_session!Object



73
74
75
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 73

def deactivate_test_session!
  @mutex.synchronize { @test_session = nil }
end

#deactivate_test_suite!(test_suite_name) ⇒ Object



81
82
83
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 81

def deactivate_test_suite!(test_suite_name)
  @mutex.synchronize { @test_suites.delete(test_suite_name) }
end

#fetch_or_activate_test_module(&block) ⇒ Object



32
33
34
35
36
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 32

def fetch_or_activate_test_module(&block)
  @mutex.synchronize do
    @test_module ||= block.call
  end
end

#fetch_or_activate_test_session(&block) ⇒ Object



38
39
40
41
42
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 38

def fetch_or_activate_test_session(&block)
  @mutex.synchronize do
    @test_session ||= block.call
  end
end

#fetch_or_activate_test_suite(test_suite_name, &block) ⇒ Object



18
19
20
21
22
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 18

def fetch_or_activate_test_suite(test_suite_name, &block)
  @mutex.synchronize do
    @test_suites[test_suite_name] ||= block.call
  end
end

#fetch_single_test_suiteObject



24
25
26
27
28
29
30
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 24

def fetch_single_test_suite
  @mutex.synchronize do
    return nil if @test_suites.empty? || @test_suites.size > 1

    @test_suites.values.first
  end
end

#inheritable_session_tagsObject



62
63
64
65
66
67
68
69
70
71
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 62

def inheritable_session_tags
  @mutex.synchronize do
    test_session = @test_session
    if test_session
      test_session.inheritable_tags
    else
      {}
    end
  end
end

#serviceObject



56
57
58
59
60
# File 'lib/datadog/ci/test_visibility/store/global.rb', line 56

def service
  @mutex.synchronize do
    @test_session&.service
  end
end