Class: HybridPlatformsConductor::Test

Inherits:
Plugin
  • Object
show all
Defined in:
lib/hybrid_platforms_conductor/test.rb

Overview

Common ancestor to any test class

Constant Summary

Constants included from LoggerHelpers

LoggerHelpers::LEVELS_MODIFIERS, LoggerHelpers::LEVELS_TO_STDERR

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Plugin

extend_config_dsl_with, valid?

Methods included from LoggerHelpers

#err, #init_loggers, #log_component=, #log_debug?, #log_level=, #out, #section, #set_loggers_format, #stderr_device, #stderr_device=, #stderr_displayed?, #stdout_device, #stdout_device=, #stdout_displayed?, #stdouts_to_s, #with_progress_bar

Constructor Details

#initialize(logger, logger_stderr, config, cmd_runner, nodes_handler, deployer, name: 'unknown_test', platform: nil, node: nil, expected_failure: nil) ⇒ Test

Constructor

Parameters
  • logger (Logger): Logger to be used

  • logger_stderr (Logger): Logger to be used for stderr

  • config (Config): Config to be used.

  • cmd_runner (CmdRunner): CmdRunner that can be used by tests

  • nodes_handler (NodesHandler): Nodes handler that can be used by tests

  • deployer (Deployer): Deployer that can be used by tests

  • name (String): Name of the test being instantiated [default: ‘unknown_test’]

  • platform (PlatformHandler): Platform handler for which the test is instantiated, or nil if global or node specific [default: nil]

  • node (String): Node name for which the test is instantiated, or nil if global or platform specific [default: nil]

  • expected_failure (String or nil): Expected failure, or nil if not expected to fail [default: nil]



49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/hybrid_platforms_conductor/test.rb', line 49

def initialize(logger, logger_stderr, config, cmd_runner, nodes_handler, deployer, name: 'unknown_test', platform: nil, node: nil, expected_failure: nil)
  super(logger: logger, logger_stderr: logger_stderr, config: config)
  @cmd_runner = cmd_runner
  @nodes_handler = nodes_handler
  @deployer = deployer
  @name = name
  @platform = platform
  @node = node
  @expected_failure = expected_failure
  @errors = []
  @executed = false
end

Class Attribute Details

.nodes_handlerObject

A NodesHandler instance that can be useful for test classes that need to access nodes information



12
13
14
# File 'lib/hybrid_platforms_conductor/test.rb', line 12

def nodes_handler
  @nodes_handler
end

Instance Attribute Details

#errorsObject (readonly)

Get errors encountered

Array<String>


18
19
20
# File 'lib/hybrid_platforms_conductor/test.rb', line 18

def errors
  @errors
end

#expected_failureObject (readonly)

Expected failure, or nil if not expected to fail

String or nil


34
35
36
# File 'lib/hybrid_platforms_conductor/test.rb', line 34

def expected_failure
  @expected_failure
end

#nameObject (readonly)

Get the test name

String


22
23
24
# File 'lib/hybrid_platforms_conductor/test.rb', line 22

def name
  @name
end

#nodeObject (readonly)

Get the node name being tested, or nil for global and platform tests

String or nil


30
31
32
# File 'lib/hybrid_platforms_conductor/test.rb', line 30

def node
  @node
end

#platformObject (readonly)

Get the platform being tested, or nil for global tests

PlatformHandler or nil


26
27
28
# File 'lib/hybrid_platforms_conductor/test.rb', line 26

def platform
  @platform
end

Class Method Details

.only_on_nodesObject

Limit the list of nodes for these tests.

Result
  • Array<String or Regex> or nil: List of nodes allowed for this test, or nil for all. Regular expressions matching node names can also be used.



135
136
137
# File 'lib/hybrid_platforms_conductor/test.rb', line 135

def self.only_on_nodes
  nil
end

.only_on_platformsObject

Limit the list of platform types for these tests.

Result
  • Array<Symbol> or nil: List of platform types allowed for this test, or nil for all



127
128
129
# File 'lib/hybrid_platforms_conductor/test.rb', line 127

def self.only_on_platforms
  nil
end

Instance Method Details

#assert_equal(tested_object, expected_object, error_msg, details = nil) ⇒ Object

Assert an equality

Parameters
  • tested_object (Object): The object being tested

  • expected_object (Object): The object being expected

  • error_msg (String): Error message to associate in case of inequality

  • details (String or nil): Additional details, or nil if none [default = nil]



85
86
87
# File 'lib/hybrid_platforms_conductor/test.rb', line 85

def assert_equal(tested_object, expected_object, error_msg, details = nil)
  error error_msg, details unless tested_object == expected_object
end

#assert_match(tested_object, expected_object, error_msg, details = nil) ⇒ Object

Assert a String match

Parameters
  • tested_object (String): The object being tested

  • expected_object (Regex): The object being expected

  • error_msg (String): Error message to associate in case of inequality

  • details (String or nil): Additional details, or nil if none [default = nil]



96
97
98
# File 'lib/hybrid_platforms_conductor/test.rb', line 96

def assert_match(tested_object, expected_object, error_msg, details = nil)
  error error_msg, details unless tested_object =~ expected_object
end

#error(message, details = nil) ⇒ Object

Register an error

Parameters
  • message (String): The error message

  • details (String or nil): Additional details, or nil if none [default = nil]



105
106
107
108
# File 'lib/hybrid_platforms_conductor/test.rb', line 105

def error(message, details = nil)
  log_error "[ #{self} ] - #{message}#{details.nil? ? '' : "\n#{details}"}" if @expected_failure.nil?
  @errors << message
end

#executedObject

Mark the test has being executed



111
112
113
# File 'lib/hybrid_platforms_conductor/test.rb', line 111

def executed
  @executed = true
end

#executed?Boolean

Has the test been executed?

Result
  • Boolean: Has the test been executed?

Returns:

  • (Boolean)


119
120
121
# File 'lib/hybrid_platforms_conductor/test.rb', line 119

def executed?
  @executed
end

#to_sObject

Get a String identifier of this test, useful for outputing messages

Result
  • String: Identifier of this test



66
67
68
69
70
71
72
73
74
75
76
# File 'lib/hybrid_platforms_conductor/test.rb', line 66

def to_s
  test_desc =
    if !node.nil?
      "Node #{@node}"
    elsif !platform.nil?
      "Platform #{@platform.name}"
    else
      'Global'
    end
  "#< Test #{name} - #{test_desc} >"
end