From 2fad392dcbf723e777a6cc0797508379289f7d90 Mon Sep 17 00:00:00 2001 From: vitor-aignosi Date: Fri, 17 Oct 2025 16:07:13 -0300 Subject: [PATCH] SIENTIAPDE-1318 Refactor async handling and enhance unit tests for ingestor manager - Updated `app.py` to improve async compatibility by adding a comment for clarity. - Added new unit tests to handle scenarios where the ingestor manager is None, ensuring robustness in `manage_leases` and `loop` methods. - Enhanced existing tests to cover edge cases related to the ingestor manager's state. --- ingestor/app.py | 2 +- tests/unit/test_ingestor.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ingestor/app.py b/ingestor/app.py index 8be22cc..4bc526c 100644 --- a/ingestor/app.py +++ b/ingestor/app.py @@ -55,7 +55,7 @@ async def main(): metrics.APP_LOOP_COUNT.labels(pod_id=POD_ID).inc() # Increment loop counter # Use asyncio.sleep instead of exit_signal.wait for better async compatibility - await asyncio.sleep(ingestor.poll_interval) + await asyncio.sleep(ingestor.poll_interval) # NOSONAR except KeyboardInterrupt: # Handle Ctrl+C gracefully print('KeyboardInterrupt received. Setting exit_signal flag.') diff --git a/tests/unit/test_ingestor.py b/tests/unit/test_ingestor.py index a988c04..cd8d7ed 100644 --- a/tests/unit/test_ingestor.py +++ b/tests/unit/test_ingestor.py @@ -186,6 +186,12 @@ def test_manage_slots_none_available_none_available(ingestor_manager_started): ingestor_manager_started.ingestor_manager.get_slot_leases.assert_called_once_with(1) +@mark.asyncio +async def test_manage_leases_no_ingestor_manager(ingestor_manager_started): + ingestor_manager_started.ingestor_manager = None + + assert await ingestor_manager_started.manage_leases(2, 2, 5) is None + @mark.asyncio async def test_manage_leases_no_available_slots_no_extra_slots(ingestor_manager_started): ingestor_manager_started.handle_acquired_tags = MagicMock() @@ -282,6 +288,12 @@ async def test_loop_no_managed(ingestor_manager_started): ingestor_manager_started.logger.info.assert_any_call('No slots acquired in this loop') +@mark.asyncio +async def test_loop_no_ingestor_manager(ingestor_manager_started): + ingestor_manager_started.ingestor_manager = None + + assert await ingestor_manager_started.loop() is None + @mark.asyncio async def test_update_ingestor_manager(ingestor_manager_started): ingestor_manager_started.ingestor_manager.managed_tags = { @@ -305,3 +317,9 @@ async def test_update_ingestor_manager(ingestor_manager_started): ingestor_manager_started.ingestor_manager.unsubscribe_slot.assert_has_calls( [call('slot_to_update'), call('slot_to_delete')] ) + +@mark.asyncio +async def test_update_ingestor_manager_no_ingestor_manager(ingestor_manager_started): + ingestor_manager_started.ingestor_manager = None + + await ingestor_manager_started.update_ingestor_manager({}) \ No newline at end of file