Exemplo n.º 1
0
 def test_start_behaviour_if_daemonize_raises_PermissionError(
         self, pdaemonize, prun):
     exception_msg = "another funny error"
     error = PermissionError(exception_msg)
     error.to_error = PROTO_NO_PERMISSION_PIDFILE.format(
         pidfile=self.simple_instance.pidfile,
         action=PIDFILE_ACTION_CREATED)
     pdaemonize.side_effect = error
     logger_name = self.simple_instance.__class__.__name__
     from fructosa.logs import setup_logging
     logger = setup_logging(logger_name=logger_name,
                            rotatingfile_conf=self.simple_logging)
     self.simple_instance.logger = logger
     expected_log_critical = "{}:{}:{}: {}".format("WARNING", logger_name,
                                                   "Exception message",
                                                   exception_msg)
     expected_log_error = "{}:{}:{}".format("ERROR", logger_name,
                                            error.to_error)
     with self.assertRaises(SystemExit) as e:
         with self.assertLogs(
                 fructosa.fructosad.FructosaD.__name__) as log_msg:
             self.simple_instance.start()
     self.assertEqual(e.exception.code, START_STOP_ERROR)
     prun.assert_not_called()
     self.assertIn(expected_log_critical, log_msg.output)
     self.assertIn(expected_log_error, log_msg.output)
Exemplo n.º 2
0
 def test_start_behaviour_if_daemonize_raises_RuntimeError(
         self, pdaemonize, prun):
     from fructosa.fructosad import START_STOP_ERROR
     import sys
     logger_name = self.simple_instance.__class__.__name__
     from fructosa.logs import setup_logging
     logger = setup_logging(logger_name=logger_name,
                            rotatingfile_conf=self.simple_logging)
     self.simple_instance.logger = logger
     pidfile_mock = MagicMock()
     self.simple_instance.pidfile = pidfile_mock
     msg = "my funny error"
     log_level = "ERROR"
     error = RuntimeError(msg)
     pdaemonize.side_effect = error
     expected_log_error = "{}:{}:{}".format(log_level, logger_name, msg)
     warn_msgs = ("wanna", "be", "porquerizo")
     expected_log_warnings = [
         "{}:{}:{}".format("WARNING", logger_name, msg) for msg in warn_msgs
     ]
     error.to_warning = warn_msgs
     with self.assertRaises(SystemExit) as e:
         with self.assertLogs(
                 fructosa.fructosad.FructosaD.__name__) as log_msg:
             self.simple_instance.start()
     self.assertEqual(e.exception.code, START_STOP_ERROR)
     self.assertIn(expected_log_error, log_msg.output)
     for warn in expected_log_warnings:
         self.assertIn(warn, log_msg.output)
     prun.assert_not_called()
Exemplo n.º 3
0
 def test_post_process_configuration_messages_to_logger_if_missing_conf_file(
         self, plmaster_from_config_file):
     from fructosa.constants import CONF_READ_MSG
     from fructosa.logs import setup_logging
     instance = self.empty_init_instance
     logger = setup_logging(
         logger_name=instance.__class__.__name__,
         rotatingfile_conf={"filename": "/dev/null"},
     )
     instance.logger = logger
     config_file = MagicMock()
     mopen = MagicMock(side_effect=OSError)
     instance._config_file = config_file
     msg = CONF_READ_MSG.format(config_file=config_file)
     with self.assertLogs(instance.__class__.__name__, level="INFO") as log:
         with patch('fructosa.conf.open', mopen) as m:
             instance._post_process_configuration()
     self.assertIn(msg, log.output[0])
     self.assertEqual(len(log.output), 1)
     m.assert_called_once_with(config_file)
Exemplo n.º 4
0
 def test_make_sensor_from_section_behaviour_if_NameError_raised(
         self, psensor_factory):
     from fructosa.constants import PROTO_INVALID_SENSOR_MSG
     from fructosa.logs import setup_logging
     psensor_factory.side_effect = NameError()
     section = MagicMock()
     sensor = MagicMock()
     section.partition.return_value = ("sensor", ":", sensor)
     self.empty_init_instance._config_file_conf = MagicMock()
     logging = MagicMock()
     self.empty_init_instance.logging = logging
     logger = setup_logging(
         logger_name=self.empty_init_instance.__class__.__name__,
         rotatingfile_conf={"filename": "/dev/null"},
     )
     self.empty_init_instance.logger = logger
     with self.assertLogs(self.empty_init_instance.__class__.__name__,
                          "ERROR") as cm:
         result = self.empty_init_instance._make_sensor_from_section(
             section)
     self.assertEqual(result, None)
     self.assertIn(PROTO_INVALID_SENSOR_MSG.format(sensor_name=sensor),
                   cm.output[0])
Exemplo n.º 5
0
 def test_post_process_configuration_messages_to_logger(
         self, plmaster_from_config_file):
     from fructosa.constants import CONF_READ_MSG
     from fructosa.logs import setup_logging
     instance = self.empty_init_instance
     logger = setup_logging(
         logger_name=instance.__class__.__name__,
         rotatingfile_conf={"filename": "/dev/null"},
     )
     instance.logger = logger
     config_file = MagicMock()
     instance._config_file = config_file
     msg = CONF_READ_MSG.format(config_file=config_file)
     other_msg = 'winnipeg\ngonzalez'
     with self.assertLogs(instance.__class__.__name__, level="INFO") as log:
         with patch('fructosa.conf.open',
                    mock_open(read_data=other_msg)) as m:
             instance._post_process_configuration()
     self.assertIn(msg, log.output[0])
     self.assertEqual(len(log.output), 3)
     for ielement, element in enumerate(other_msg.split("\n")):
         self.assertIn(f" ... {element}", log.output[ielement + 1])
     m.assert_called_once_with(config_file)
Exemplo n.º 6
0
 def __init__(self, protocol_class, logging_conf):
     self.logger = setup_logging(
         "Heartbeat",
         rotatingfile_conf=logging_conf
     )
     self._protocol_class = protocol_class