示例#1
0
 def test_msg_debug_mode(self, m_logging_config, config, worker_name,
                         exp_msg):
     worker = NowcastWorker(worker_name, "description")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=True)
     msg = worker._configure_logging()
     assert msg == "**debug mode** writing log messages to console"
示例#2
0
 def test_tell_manager(self):
     worker = NowcastWorker("test_worker", "description")
     worker._parsed_args = Mock(debug=False)
     worker._socket = Mock(name="_socket")
     worker.logger = Mock(name="logger")
     config = Config()
     config.file = "nowcast.yaml"
     worker.config._dict = {
         "message registry": {
             "manager": {
                 "ack": "message acknowledged"
             },
             "workers": {
                 "test_worker": {
                     "success": "successful test"
                 }
             },
         }
     }
     mgr_msg = Message(source="manager", type="ack")
     worker._socket.recv_string.return_value = mgr_msg.serialize()
     response = worker.tell_manager("success", "payload")
     worker._socket.send_string.assert_called_once_with(
         Message(source="test_worker", type="success",
                 payload="payload").serialize())
     worker._socket.recv_string.assert_called_once_with()
     assert worker.logger.debug.call_count == 2
     assert response == mgr_msg
示例#3
0
 def test_debug_mode(self):
     worker = NowcastWorker("worker_name", "description")
     worker._parsed_args = Mock(debug=True)
     worker.logger = Mock(name="logger")
     worker._context = Mock(name="context")
     worker._init_zmq_interface()
     assert worker.logger.debug.call_count == 1
     assert not worker._context.socket.called
示例#4
0
 def test_all_ports_in_use(self, m_logging_config, config, worker_name,
                           exception):
     worker = NowcastWorker(worker_name, "description")
     worker._socket = Mock(name="zmq_socket")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=False)
     m_logging_config.dictConfig.side_effect = exception
     with pytest.raises(WorkerError):
         worker._configure_logging()
示例#5
0
 def test_unregistered_worker(self):
     worker = NowcastWorker("test_worker", "description")
     worker._parsed_args = Mock(debug=True)
     worker.logger = Mock(name="logger")
     config = Config()
     config.file = "nowcast.yaml"
     worker.config._dict = {"message registry": {"workers": {}}}
     with pytest.raises(WorkerError):
         worker.tell_manager("success", "payload")
示例#6
0
 def test_port_in_use(self, m_logging_config, config, worker_name,
                      exception, exp_msg):
     worker = NowcastWorker(worker_name, "description")
     worker._socket = Mock(name="zmq_socket")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=False)
     m_logging_config.dictConfig.side_effect = (exception, None)
     msg = worker._configure_logging()
     assert msg == exp_msg
示例#7
0
 def test_zmq_handler_root_topic(self, m_logging, m_logging_config):
     worker = NowcastWorker("test_worker", "description")
     worker.config._dict = self.zmq_logging_config_ports_list
     worker._parsed_args = SimpleNamespace(debug=False)
     m_handler = Mock(name="m_zmq_handler",
                      spec=zmq.log.handlers.PUBHandler)
     m_logging.getLogger.return_value = Mock(root=Mock(
         handlers=[m_handler]))
     worker._configure_logging()
     assert m_handler.root_topic == "test_worker"
示例#8
0
 def test_debug_mode_no_console_handler(self, m_logging, m_logging_config,
                                        config, worker_name):
     worker = NowcastWorker(worker_name, "description")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=True)
     m_file_handler = Mock(name="m_file_handler")
     m_logging.getLogger.return_value = Mock(root=Mock(
         handlers=[m_file_handler]))
     worker._configure_logging()
     m_file_handler.setLevel.assert_called_once_with(100)
示例#9
0
 def test_logging_dictConfig(self, m_logging_config, config, worker_name):
     worker = NowcastWorker(worker_name, "description")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=False)
     worker._configure_logging()
     if "publisher" in worker.config["logging"]:
         m_logging_config.dictConfig.assert_called_once_with(
             worker.config["logging"]["publisher"])
     else:
         m_logging_config.dictConfig.assert_called_once_with(
             worker.config["logging"])
示例#10
0
 def test_different_hosts_different_ports(self, m_logging,
                                          m_logging_config):
     worker = NowcastWorker("remote_worker", "description")
     worker.config._dict = self.zmq_logging_config_different_hosts_different_ports
     worker._parsed_args = SimpleNamespace(debug=False)
     m_handler = Mock(name="m_zmq_handler",
                      spec=zmq.log.handlers.PUBHandler)
     m_logging.getLogger.return_value = Mock(root=Mock(
         handlers=[m_handler]))
     with pytest.raises(WorkerError):
         worker._configure_logging()
示例#11
0
 def test_zmq_handler_formatters(self, m_logging, m_logging_config):
     worker = NowcastWorker("test_worker", "description")
     worker.config._dict = self.zmq_logging_config_ports_list
     worker._parsed_args = SimpleNamespace(debug=False)
     m_handler = Mock(name="m_zmq_handler",
                      spec=zmq.log.handlers.PUBHandler)
     m_logging.getLogger.return_value = Mock(root=Mock(
         handlers=[m_handler]))
     worker._configure_logging()
     expected = {
         m_logging.DEBUG: m_logging.Formatter("%(message)s\n"),
         m_logging.INFO: m_logging.Formatter("%(message)s\n"),
         m_logging.WARNING: m_logging.Formatter("%(message)s\n"),
         m_logging.ERROR: m_logging.Formatter("%(message)s\n"),
         m_logging.CRITICAL: m_logging.Formatter("%(message)s\n"),
     }
     assert m_handler.formatters == expected
示例#12
0
 def test_debug_mode(self):
     worker = NowcastWorker("test_worker", "description")
     worker._parsed_args = Mock(debug=True)
     worker.logger = Mock(name="logger")
     config = Config()
     config.file = "nowcast.yaml"
     worker.config._dict = {
         "message registry": {
             "workers": {
                 "test_worker": {
                     "success": "successful test"
                 }
             }
         }
     }
     response_payload = worker.tell_manager("success", "payload")
     assert worker.logger.debug.call_count == 1
     assert response_payload is None
示例#13
0
 def test_socket(self):
     worker = NowcastWorker("worker_name", "description")
     worker._parsed_args = Mock(debug=False)
     worker.logger = Mock(name="logger")
     worker._context = Mock(name="context")
     worker.config = {
         "zmq": {
             "host": "example.com",
             "ports": {
                 "workers": 4343
             }
         }
     }
     worker._init_zmq_interface()
     worker._context.socket.assert_called_once_with(zmq.REQ)
     assert worker._socket.setsockopt.call_args_list == [
         call(zmq.TCP_KEEPALIVE, 1),
         call(zmq.TCP_KEEPALIVE_IDLE, 900),
     ]
     worker._socket.connect.assert_called_once_with(
         "tcp://example.com:4343")
     assert worker.logger.info.call_count == 1
示例#14
0
 def test_unregistered_manager_message_type(self):
     worker = NowcastWorker("test_worker", "description")
     worker._parsed_args = Mock(debug=False)
     worker._socket = Mock(name="_socket")
     worker.logger = Mock(name="logger")
     config = Config()
     config.file = "nowcast.yaml"
     worker.config._dict = {
         "message registry": {
             "manager": {
                 "ack": "message acknowledged"
             },
             "workers": {
                 "test_worker": {
                     "success": "successful test"
                 }
             },
         }
     }
     mgr_msg = Message(source="manager", type="foo")
     worker._socket.recv_string.return_value = mgr_msg.serialize()
     with pytest.raises(WorkerError):
         worker.tell_manager("success", "payload")
示例#15
0
 def test_debug_mode_console_logging_only(self, m_logging, m_logging_config,
                                          config, worker_name):
     worker = NowcastWorker(worker_name, "description")
     if "publisher" in config["logging"]:
         p_config = patch.dict(config["logging"]["publisher"]["handlers"],
                               {"console": {
                                   "level": 1000
                               }})
     else:
         p_config = patch.dict(config["logging"]["handlers"],
                               {"console": {
                                   "level": 1000
                               }})
     worker._parsed_args = SimpleNamespace(debug=True)
     m_file_handler = Mock(name="m_file_handler")
     m_console_handler = Mock(name="m_console_handler")
     m_console_handler.name = "console"
     m_logging.getLogger.return_value = Mock(root=Mock(
         handlers=[m_file_handler, m_console_handler]))
     with p_config:
         worker.config._dict = config
         worker._configure_logging()
     m_console_handler.setLevel.assert_called_once_with(m_logging.DEBUG)
     m_file_handler.setLevel.assert_called_once_with(1000)
示例#16
0
 def test_logger_name(self, m_logging_config, config, worker_name):
     worker = NowcastWorker(worker_name, "description")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=False)
     worker._configure_logging()
     assert worker.logger.name == worker_name
示例#17
0
 def test_msg(self, m_logging_config, config, worker_name, exp_msg):
     worker = NowcastWorker(worker_name, "description")
     worker.config._dict = config
     worker._parsed_args = SimpleNamespace(debug=False)
     msg = worker._configure_logging()
     assert msg == exp_msg