def test_worker_parent_proc_exist_task_result_no_input(self): config = mock.Mock() parent_pid = 13 from tarantool import DatabaseError task = mock.MagicMock() task.ack = mock.Mock(side_effect=DatabaseError) input_tube = mock.MagicMock() input_tube.take = mock.Mock(return_value=task) output_tube = mock.MagicMock() mock_get_tube = mock.Mock(side_effect=[input_tube, output_tube]) is_input = False data = mock.Mock() mock_get_redirect_history_from_task = mock.Mock( return_value=[is_input, data]) mock_logger = mock.Mock() with mock.patch("lib.worker.get_tube", mock_get_tube): with mock.patch("os.path.exists", mock.Mock(side_effect=[True, False])): with mock.patch("lib.worker.get_redirect_history_from_task", mock_get_redirect_history_from_task): with mock.patch("lib.worker.logger", mock_logger): worker.worker(config, parent_pid) assert input_tube.take.call_count == 1 assert mock_get_redirect_history_from_task.call_count == 1 assert output_tube.put.call_count == 1 assert task.ack.call_count == 1 assert mock_logger.exception.call_count == 1
def test_worker_when_no_result_and_no_exception(self, path_exs_m, get_tubes_m, get_redirect_m): config = Mock(None) config.HTTP_TIMEOUT = 100 config.MAX_REDIRECTS = 10 config.USER_AGENT = 'abc' config.QUEUE_TAKE_TIMEOUT = 50 task_mock = Mock(None) task_mock.ack = Mock(None) in_tube_mock = Mock(None) out_tube_mock = Mock(None) in_tube_mock.take = Mock(return_value=task_mock) in_tube_mock.put = Mock(None) out_tube_mock.put = Mock(None) path_exs_m.side_effect = [True, False] get_redirect_m.return_value = None get_tubes_m.return_value = in_tube_mock, out_tube_mock wr.worker(config, 666) get_tubes_m.assert_called_once_with(config) in_tube_mock.take.assert_called_once_with(50) get_redirect_m.assert_called_once_with(task_mock, 100, 10, 'abc') self.assertEqual(in_tube_mock.put.call_count, 0) self.assertEqual(out_tube_mock.put.call_count, 0) self.assertTrue(task_mock.ack.called)
def test_worker_is_input_false(self): config = get_confog() with patch("os.path.exists", Mock(return_value=True)): with patch("lib.worker.break_func_for_test", Mock(return_value=True)): with patch("lib.worker.get_tube", Mock(return_value=MagicMock())): data = dict(url='url', recheck=True, url_id='url_id', suspicious='suspicious') with patch("lib.worker.get_redirect_history_from_task", Mock(return_value=(False, data))): worker.worker(config, 42)
def test_worker_ifresult_false(self): config = get_confog() with patch('lib.worker.logger', Mock()) as logger: with patch("os.path.exists", Mock(return_value=True)): with patch("lib.worker.break_func_for_test", Mock(return_value=True)): with patch("lib.worker.get_tube", Mock(return_value=MagicMock())): with patch("lib.worker.get_redirect_history_from_task", Mock(return_value=False)): worker.worker(config, 42) self.assertTrue(logger.info.called)
def test_worker_no_task(self): config = get_confog() input_tube = MagicMock() input_tube.take = Mock(return_value=False) with patch('lib.worker.logger', Mock()) as logger: with patch("os.path.exists", Mock(return_value=True)): with patch("lib.worker.break_func_for_test", Mock(return_value=True)): with patch("lib.worker.get_tube", Mock(return_value=input_tube)): worker.worker(config, 42) self.assertTrue(logger.info.called)
def test_worker_parent_proc_not_exist(self): config = mock.MagicMock() parent_pid = 13 input_tube = mock.MagicMock() output_tube = mock.MagicMock() mock_get_tube = mock.Mock(side_effect=[input_tube, output_tube]) with mock.patch("lib.worker.get_tube", mock_get_tube): with mock.patch("os.path.exists", mock.Mock(return_value=False)): worker.worker(config, parent_pid) assert input_tube.take.call_count == 0
def test_worker_exception(self): config = get_confog() task = MagicMock() task.ack = Mock(side_effect=DatabaseError) input_tube = MagicMock() input_tube.take = Mock(return_value=task) with patch('lib.worker.logger', Mock()) as logger: with patch("os.path.exists", Mock(return_value=True)): with patch("lib.worker.break_func_for_test", Mock(return_value=True)): with patch("lib.worker.get_tube", Mock(return_value=input_tube)): data = dict(url='url', recheck=True, url_id='url_id', suspicious='suspicious') with patch("lib.worker.get_redirect_history_from_task", Mock(return_value=(True, data))): worker.worker(config, 42) self.assertTrue(logger.info.called)
def test_worker_when_no_task_at_all(self, path_exs_m, get_tubes_m, get_redirect_m): config = Mock(None) config.QUEUE_TAKE_TIMEOUT = 50 in_tube_mock = Mock(None) out_tube_mock = Mock(None) in_tube_mock.take = Mock(return_value=None) in_tube_mock.put = Mock(None) out_tube_mock.put = Mock(None) path_exs_m.side_effect = [True, False] get_tubes_m.return_value = in_tube_mock, out_tube_mock wr.worker(config, 666) self.assertFalse(get_redirect_m.called)
def test_worker_parent_proc_exist_not_task(self): config = mock.Mock() parent_pid = 13 input_tube = mock.MagicMock() input_tube.take = mock.Mock(return_value=None) output_tube = mock.MagicMock() mock_get_tube = mock.Mock(side_effect=[input_tube, output_tube]) mock_get_redirect_history_from_task = mock.Mock() with mock.patch("lib.worker.get_tube", mock_get_tube): with mock.patch("os.path.exists", mock.Mock(side_effect=[True, False])): with mock.patch("lib.worker.get_redirect_history_from_task", mock_get_redirect_history_from_task): worker.worker(config, parent_pid) assert mock_get_redirect_history_from_task.call_count == 0 assert input_tube.take.call_count == 1
def test_worker_when_no_result_and_exception(self, exc_m, path_exs_m, get_tubes_m, get_redirect_m): config = Mock(None) config.HTTP_TIMEOUT = 100 config.MAX_REDIRECTS = 10 config.USER_AGENT = 'abc' config.QUEUE_TAKE_TIMEOUT = 50 task_mock = Mock(None) task_mock.ack = Mock(side_effect=DatabaseError()) in_tube_mock = Mock(None) out_tube_mock = Mock(None) in_tube_mock.take = Mock(return_value=task_mock) in_tube_mock.put = Mock(None) out_tube_mock.put = Mock(None) path_exs_m.side_effect = [True, False] get_redirect_m.return_value = None get_tubes_m.return_value = in_tube_mock, out_tube_mock wr.worker(config, 666) self.assertTrue(exc_m.called)
def test_worker_when_result_putting_to_output(self, path_exs_m, get_tubes_m, get_redirect_m): config = Mock(None) config.HTTP_TIMEOUT = 100 config.MAX_REDIRECTS = 10 config.USER_AGENT = 'abc' config.QUEUE_TAKE_TIMEOUT = 50 task_mock = Mock(None) task_mock.ack = Mock(None) in_tube_mock = Mock(None) out_tube_mock = Mock(None) in_tube_mock.take = Mock(return_value=task_mock) in_tube_mock.put = Mock(None) out_tube_mock.put = Mock(None) path_exs_m.side_effect = [True, False] get_redirect_m.return_value = False, 'data' get_tubes_m.return_value = in_tube_mock, out_tube_mock wr.worker(config, 666) out_tube_mock.put.assert_called_once_with('data') self.assertFalse(in_tube_mock.put.called)
def test_worker_no_while(self): config = get_confog() with patch('lib.worker.logger', Mock()) as logger: with patch("os.path.exists", Mock(return_value=False)): worker.worker(config, 42) self.assertTrue(logger.info.called)