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
def test_unregistered_msg_type(self): mgr = manager.NowcastManager() mgr._msg_registry = {"workers": {"test_worker": {}}} mgr._handle_unregistered_msg_type = Mock( name="_handle_unregistered_msg_type") mgr._log_received_msg = Mock(name="_log_received_msg") msg = Message(source="test_worker", type="foo", payload=None) reply, next_workers = mgr._message_handler(msg.serialize()) mgr._handle_unregistered_msg_type.assert_called_once_with(msg) assert reply == mgr._handle_unregistered_msg_type() assert next_workers == [] assert not mgr._log_received_msg.called
def test_need_msg(self): mgr = manager.NowcastManager() mgr._msg_registry = {"workers": {"test_worker": {"need": "Need info"}}} mgr._handle_need_msg = Mock( name="_handle_need_msg", return_value=("ack msg w/ requested info in payload"), ) mgr._log_received_msg = Mock(name="_log_received_msg") msg = Message(source="test_worker", type="need", payload="info") reply, next_workers = mgr._message_handler(msg.serialize()) assert mgr._log_received_msg.called mgr._handle_need_msg.assert_called_once_with(msg) assert reply == "ack msg w/ requested info in payload" assert next_workers == []
def test_continue_msg(self): mgr = manager.NowcastManager() mgr._msg_registry = { "workers": { "test_worker": { "success": "success" } } } mgr._handle_continue_msg = Mock(name="_handle_continue_msg", return_value=("ack", "next_worker")) mgr._log_received_msg = Mock(name="_log_received_msg") msg = Message(source="test_worker", type="success", payload=None) reply, next_workers = mgr._message_handler(msg.serialize()) assert mgr._log_received_msg.called mgr._handle_continue_msg.assert_called_once_with(msg) assert reply == "ack" assert next_workers == "next_worker"
def test_clear_checklist_msg(self): mgr = manager.NowcastManager() mgr._msg_registry = { "workers": { "test_worker": { "clear checklist": "request that manager clear system checklist" } } } mgr._clear_checklist = Mock(name="_clear_checklist", return_value="checklist cleared") mgr._log_received_msg = Mock(name="_log_received_msg") msg = Message(source="test_worker", type="clear checklist", payload=None) reply, next_workers = mgr._message_handler(msg.serialize()) assert mgr._log_received_msg.called mgr._clear_checklist.assert_called_once_with() assert reply == "checklist cleared" assert next_workers == []
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")