Refactor OpcManager initialization and unsubscribe method; enhance logging - Removed the `initialize_from_config` method from `OpcManager` class and adjusted the constructor to handle configuration directly. - Improved the `unsubscribe` method to include detailed logging for non-existent subscriptions. - Updated tests in `test_opc_manager.py` to reflect changes in the `OpcManager` class. - Commented out Docker-related fixtures in `conftest.py` for potential future use. - Enhanced test coverage in `test_single_node.py` and `test_data_manager.py` with additional scenarios and assertions. - Introduced new methods in `Ingestor` and `IngestorManager` classes to manage server subscriptions and leases more effectively. - Added new tests for `Ingestor` class to validate initialization and slot management logic. - Implemented logging improvements across various classes to ensure better traceability of actions and errors.
101 lines
3.2 KiB
Python
101 lines
3.2 KiB
Python
from unittest.mock import MagicMock, patch
|
|
from pytest import fixture
|
|
from ingestor.managers.resource_manager import ResourceManager
|
|
|
|
|
|
@fixture
|
|
@patch('ingestor.managers.resource_manager.Redis')
|
|
def resource_manager(redis):
|
|
|
|
return ResourceManager(
|
|
'localhost', 6379, 10, 10, 'pod_id'
|
|
)
|
|
|
|
|
|
def test_get_success(resource_manager):
|
|
resource_manager.redis.get.return_value = '{"key": "value"}'
|
|
result = resource_manager.get('key')
|
|
assert result == {"key": "value"}
|
|
resource_manager.redis.get.assert_called_once_with('key')
|
|
|
|
|
|
def test_get_failure(resource_manager):
|
|
resource_manager.redis.get.return_value = None
|
|
result = resource_manager.get('key')
|
|
assert result is None
|
|
resource_manager.redis.get.assert_called_once_with('key')
|
|
|
|
|
|
def test_get_tag_slot(resource_manager):
|
|
resource_manager.get = MagicMock(return_value={"tag": "slot"})
|
|
result = resource_manager.get_tag_slot('id')
|
|
assert result == {"tag": "slot"}
|
|
resource_manager.get.assert_called_once_with('slot:opc_tags:id')
|
|
|
|
|
|
def test_ingestor_heartbeat(resource_manager):
|
|
resource_manager.redis.set.return_value = True
|
|
resource_manager.ingestor_heartbeat()
|
|
resource_manager.redis.set.assert_called_once_with(
|
|
'heartbeat:ingestor:pod_id', 1, ex=10
|
|
)
|
|
|
|
|
|
def test_lease_tag(resource_manager):
|
|
resource_manager.redis.set.return_value = True
|
|
output = resource_manager.lease_tag('tag_id')
|
|
assert output is True
|
|
resource_manager.redis.set.assert_called_once_with(
|
|
'lease:opc_tags:tag_id', 'pod_id', nx=True, ex=10
|
|
)
|
|
|
|
|
|
def test_renew_tag_lease_success(resource_manager):
|
|
resource_manager.redis.get.return_value = 'pod_id'
|
|
resource_manager.redis.expire.return_value = True
|
|
result = resource_manager.renew_tag_lease('tag_id')
|
|
assert result is True
|
|
resource_manager.redis.get.assert_called_once_with(
|
|
'lease:opc_tags:tag_id'
|
|
)
|
|
resource_manager.redis.expire.assert_called_once_with(
|
|
'lease:opc_tags:tag_id', 10
|
|
)
|
|
|
|
|
|
def test_renew_tag_lease_failure(resource_manager):
|
|
resource_manager.redis.get.return_value = 'other_pod_id'
|
|
resource_manager.redis.expire.return_value = False
|
|
result = resource_manager.renew_tag_lease('tag_id')
|
|
assert result is False
|
|
resource_manager.redis.get.assert_called_once_with(
|
|
'lease:opc_tags:tag_id'
|
|
)
|
|
resource_manager.redis.expire.assert_not_called()
|
|
|
|
|
|
def test_drop_tag_lease(resource_manager):
|
|
resource_manager.redis.delete.return_value = True
|
|
resource_manager.drop_tag_lease('tag_id')
|
|
resource_manager.redis.delete.assert_called_once_with(
|
|
'lease:opc_tags:tag_id'
|
|
)
|
|
|
|
|
|
def test_get_all_ingestors(resource_manager):
|
|
resource_manager.redis.keys.return_value = ['ingestor1', 'ingestor2']
|
|
result = resource_manager.get_all_ingestors()
|
|
assert result == ['ingestor1', 'ingestor2']
|
|
resource_manager.redis.keys.assert_called_once_with(
|
|
'heartbeat:ingestor:*'
|
|
)
|
|
|
|
|
|
def test_get_all_slots(resource_manager):
|
|
resource_manager.redis.keys.return_value = ['slot1', 'slot2']
|
|
result = resource_manager.get_all_slots()
|
|
assert result == ['slot1', 'slot2']
|
|
resource_manager.redis.keys.assert_called_once_with(
|
|
'slot:opc_tags:*'
|
|
)
|