Refactor OPC server integrity checks to be asynchronous
Updated the Ingestor and IngestorManager classes to use async methods for checking OPC server integrity and shutting down OPC managers. Adjusted related tests to ensure proper mocking of asynchronous behavior.
This commit is contained in:
@@ -184,7 +184,7 @@ async def test_update_opc_servers(metrics, opc_manager, ingestor_manager):
|
||||
'slot2': {'server3': {'config': 'config3'}, 'server1': {'config': 'config1'}},
|
||||
}
|
||||
|
||||
mock = MagicMock(config={'config': 'old_config2'})
|
||||
mock = AsyncMock(config={'config': 'old_config2'})
|
||||
ingestor_manager.opc_managers['server3'] = AsyncMock(config={'config': 'config3'})
|
||||
ingestor_manager.opc_managers['server2'] = mock
|
||||
ingestor_manager.opc_managers['server4'] = AsyncMock()
|
||||
@@ -472,8 +472,9 @@ async def test_subscribe_to_tags(ingestor_manager):
|
||||
ingestor_manager.managed_tags['slot1'].pop.assert_called_once_with('server3', None)
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
@patch('ingestor.managers.ingestor_manager.metrics')
|
||||
def test_check_opc_servers_integrity_all_healthy(metrics, ingestor_manager):
|
||||
async def test_check_opc_servers_integrity_all_healthy(metrics, ingestor_manager):
|
||||
# Setup mock OPC managers
|
||||
opc_manager1 = MagicMock()
|
||||
opc_manager1.check_cycles.return_value = None
|
||||
@@ -491,7 +492,7 @@ def test_check_opc_servers_integrity_all_healthy(metrics, ingestor_manager):
|
||||
ingestor_manager.initialize_opc_from_config = MagicMock()
|
||||
|
||||
# Call the method
|
||||
ingestor_manager.check_opc_servers_integrity()
|
||||
await ingestor_manager.check_opc_servers_integrity()
|
||||
|
||||
# Verify that check_cycles and check_opc_listenning were called for each server
|
||||
opc_manager1.check_cycles.assert_called_once()
|
||||
|
||||
@@ -238,6 +238,7 @@ async def test_loop(ingestor_manager_started):
|
||||
ingestor_manager_started.manage_no_slots = MagicMock()
|
||||
ingestor_manager_started.manage_leases = AsyncMock()
|
||||
ingestor_manager_started.update_ingestor_manager = AsyncMock()
|
||||
ingestor_manager_started.ingestor_manager.check_opc_servers_integrity = AsyncMock()
|
||||
ingestor_manager_started.ingestor_manager.managed_tags = {
|
||||
'slot1': 'server1',
|
||||
'slot2': 'server2',
|
||||
@@ -262,12 +263,16 @@ async def test_loop(ingestor_manager_started):
|
||||
ingestor_manager_started.manage_leases.assert_called_once_with(4, 3, 2)
|
||||
ingestor_manager_started.ingestor_manager.update_slot_config.assert_called_once()
|
||||
|
||||
ingestor_manager_started.ingestor_manager.check_opc_servers_integrity.assert_called_once()
|
||||
ingestor_manager_started.update_ingestor_manager.assert_called_once()
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_loop_no_managed(ingestor_manager_started):
|
||||
ingestor_manager_started.manage_no_slots = MagicMock()
|
||||
ingestor_manager_started.manage_leases = AsyncMock()
|
||||
ingestor_manager_started.update_ingestor_manager = AsyncMock()
|
||||
ingestor_manager_started.ingestor_manager.check_opc_servers_integrity = AsyncMock()
|
||||
ingestor_manager_started.ingestor_manager.managed_tags = {}
|
||||
ingestor_manager_started.ingestor_manager.get_active_ingestors = MagicMock(
|
||||
return_value=['ingestor1', 'ingestor2']
|
||||
@@ -288,6 +293,9 @@ async def test_loop_no_managed(ingestor_manager_started):
|
||||
ingestor_manager_started.ingestor_manager.update_slot_config.assert_called_once()
|
||||
ingestor_manager_started.logger.info.assert_any_call('No slots acquired in this loop')
|
||||
|
||||
ingestor_manager_started.ingestor_manager.check_opc_servers_integrity.assert_called_once()
|
||||
ingestor_manager_started.update_ingestor_manager.assert_called_once()
|
||||
|
||||
|
||||
@mark.asyncio
|
||||
async def test_loop_no_ingestor_manager(ingestor_manager_started):
|
||||
|
||||
Reference in New Issue
Block a user