def test_expire_stream_error(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') stream = mock.MagicMock(name='stream') stream.name = 'test' pm.db = mock.MagicMock(spec=pm.db, name='db') pm.db.set_stream_state.return_value = stream trigger_def = mock.MagicMock(name='trigger_def') trigger_def.expire_pipeline = 'test_fire_pipeline' pm.trigger_manager.trigger_map = dict(test=trigger_def) pipeline_config = mock.MagicMock(name='pipeline_config') pm.pipeline_config = dict(test_fire_pipeline=pipeline_config) pm._expire_error_stream = mock.MagicMock(name='_expire_error_stream') pm._complete_stream = mock.MagicMock(name='_complete_stream') pm._run_pipeline = mock.MagicMock(name='_run_pipeline') pm._run_pipeline.return_value = False ret = pm.expire_stream(stream) pm.db.set_stream_state.assert_called_once_with(stream, StreamState.expiring) pm._run_pipeline.assert_called_once_with(stream, trigger_def, 'test_fire_pipeline', pipeline_config) self.assertFalse(pm._complete_stream.called) pm._expire_error_stream.assert_called_once_with(stream) self.assertFalse(ret)
def test_run_pipeline_with_error(self, mock_config_wrap, mock_pipeline): pm = pipeline_manager.PipelineManager('test') pm.db = mock.MagicMock(spec=pm.db, name='db') trigger_def = mock.MagicMock(name='trigger_def') trigger_def.debugger = self.debugger pipeline_name = "test" pipeline_config = mock.MagicMock(name='pipeline_config') stream = mock.MagicMock(name='stream') stream.name = "test" pm.add_new_events = mock.MagicMock(name='add_nemw_events') pm.pipeline_handlers = mock.MagicMock(name='pipeline_handlers') pipeline = mock_pipeline.return_value pipeline.handle_events.side_effect = \ pipeline_manager.PipelineExecutionError('test', 'thing') ret = pm._run_pipeline(stream, trigger_def, pipeline_name, pipeline_config) pm.db.get_stream_events.assert_called_once_with(stream) mock_pipeline.assert_called_once_with(pipeline_name, pipeline_config, pm.pipeline_handlers) pipeline.handle_events.assert_called_once_with( pm.db.get_stream_events.return_value, stream, self.debugger) self.assertFalse(pm.add_new_events.called) self.assertFalse(ret)
def test_expire_error_stream(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') pm.db = mock.MagicMock(spec=pm.db) stream = "test stream" pm._expire_error_stream(stream) pm.db.set_stream_state.assert_called_once_with( stream, StreamState.expire_error)
def test_complete_stream_purge(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') pm.db = mock.MagicMock(spec=pm.db) pm.purge_completed_streams = True stream = "test stream" pm._complete_stream(stream) pm.db.purge_stream.assert_called_once_with(stream)
def test_safe_get_debugger(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') tdef = mock.MagicMock(name="tdef") tdef.name = "my trigger" tdef.debugger = self.debugger self.assertEqual(pm.safe_get_debugger(tdef), self.debugger) self.assertEqual(pm.safe_get_debugger(None)._name, "n/a")
def test_complete_stream_nopurge(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') pm.db = mock.MagicMock(spec=pm.db) pm.purge_completed_streams = False stream = "test stream" pm._complete_stream(stream) pm.db.set_stream_state.assert_called_once_with(stream, StreamState.completed)
def test_process_ready_streams_expire(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') pm.db = mock.MagicMock(spec=pm.db, name='db') stream = mock.MagicMock(name='stream') stream.name = "my_stream" pm.expire_stream = mock.MagicMock(name='expire_stream') pm.fire_stream = mock.MagicMock(name='fire_stream') pm.current_time = mock.MagicMock(name='current_time') pm.db.get_ready_streams.return_value = [stream] ret = pm.process_ready_streams(42, expire=True) pm.db.get_ready_streams.assert_called_once_with( 42, pm.current_time.return_value, expire=True) pm.expire_stream.assert_called_once_with(stream) self.assertFalse(pm.fire_stream.called) self.assertEqual(ret, 1)
def test_fire_stream_locked(self, mock_config_wrap): pm = pipeline_manager.PipelineManager('test') stream = mock.MagicMock(name='stream') stream.name = 'test' pm.db = mock.MagicMock(spec=pm.db, name='db') pm.db.set_stream_state.side_effect = winch_db.LockError('locked!') trigger_def = mock.MagicMock(name='trigger_def') trigger_def.fire_pipeline = 'test_fire_pipeline' pm.trigger_manager.trigger_map = dict(test=trigger_def) pipeline_config = mock.MagicMock(name='pipeline_config') pm.pipeline_config = dict(test_fire_pipeline=pipeline_config) pm._error_stream = mock.MagicMock(name='_error_stream') pm._complete_stream = mock.MagicMock(name='_complete_stream') pm._run_pipeline = mock.MagicMock(name='_run_pipeline') pm._run_pipeline.return_value = True ret = pm.fire_stream(stream) pm.db.set_stream_state.assert_called_once_with(stream, StreamState.firing) self.assertFalse(pm._run_pipeline.called) self.assertFalse(pm._error_stream.called) self.assertFalse(pm._complete_stream.called) self.assertFalse(ret)