Class: RSMP::Validator::SupervisorTester

Inherits:
Tester
  • Object
show all
Defined in:
lib/rsmp/validator/supervisor_tester.rb

Overview

Helper class for testing RSMP supervisors. Runs a local RSMP site inside an Async reactor.

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Tester

#config, #connected, #disconnected, #isolated, #reconnected, sentinel_errors, #stop

Methods included from Log

#log

Class Attribute Details

.instanceObject

Returns the value of attribute instance.



11
12
13
# File 'lib/rsmp/validator/supervisor_tester.rb', line 11

def instance
  @instance
end

Class Method Details

.connected(options = {}) ⇒ Object



13
14
15
# File 'lib/rsmp/validator/supervisor_tester.rb', line 13

def connected(options = {}, &)
  instance.connected(options, &)
end

.disconnectedObject



21
22
23
# File 'lib/rsmp/validator/supervisor_tester.rb', line 21

def disconnected(&)
  instance.disconnected(&)
end

.isolated(options = {}) ⇒ Object



25
26
27
# File 'lib/rsmp/validator/supervisor_tester.rb', line 25

def isolated(options = {}, &)
  instance.isolated(options, &)
end

.reconnected(options = {}) ⇒ Object



17
18
19
# File 'lib/rsmp/validator/supervisor_tester.rb', line 17

def reconnected(options = {}, &)
  instance.reconnected(options, &)
end

Instance Method Details

#build_node(options) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/rsmp/validator/supervisor_tester.rb', line 35

def build_node(options)
  klass = case @site_config['type']
          when 'tlc'
            RSMP::TLC::TrafficControllerSite
          else
            RSMP::Site
          end
  site_settings = ConfigNormalizer.normalize_site_settings(@site_config.deep_merge(options))
  logger = create_site_logger(@site_config)
  @site = klass.new(
    site_settings: site_settings,
    logger: logger,
    collect: options['collect']
  )
end

#create_site_logger(site_config) ⇒ Object



65
66
67
68
69
70
71
72
73
# File 'lib/rsmp/validator/supervisor_tester.rb', line 65

def create_site_logger(site_config)
  log_settings = site_config.is_a?(Hash) ? site_config['log'] : nil
  logger_settings = RSMP::Validator.node_log_settings.merge('prefix' => '[TLC]       ')
  return RSMP::Logger.new(logger_settings) unless log_settings && !log_settings.empty?

  logger_settings.merge!(log_settings)
  logger_settings.delete('stream') if log_settings['path']
  RSMP::Logger.new(logger_settings)
end

#parse_configObject



30
31
32
33
# File 'lib/rsmp/validator/supervisor_tester.rb', line 30

def parse_config
  @site_config = config['local_site']
  raise "config 'local_site' is missing" unless @site_config
end

#wait_for_connectionObject



51
52
53
54
55
56
57
# File 'lib/rsmp/validator/supervisor_tester.rb', line 51

def wait_for_connection
  log 'Waiting for connection to supervisor'
  @proxy = @node.find_supervisor :any
  @proxy.wait_for_state %i[connected ready], timeout: config['timeouts']['connect']
rescue RSMP::TimeoutError
  raise RSMP::ConnectionError, "Could not connect to supervisor within #{config['timeouts']['connect']}s"
end

#wait_for_handshakeObject



59
60
61
62
63
# File 'lib/rsmp/validator/supervisor_tester.rb', line 59

def wait_for_handshake
  @proxy.wait_for_state :ready, timeout: config['timeouts']['ready']
rescue RSMP::TimeoutError
  raise RSMP::ConnectionError, "Handshake didn't complete within #{config['timeouts']['ready']}s"
end