SIENTIAPDE-1163
SIENTIAPDE-1163 Refactor Ingestor and DataManager classes to enhance metadata handling - Updated Ingestor class to include additional metadata fields: 'workflow_name' and 'schema_name'. - Modified DataManager to accept metadata during initialization. - Adjusted unit tests to validate the new metadata structure and ensure proper functionality across various managers. - Removed unused logger initialization in tests for cleaner code.
This commit is contained in:
@@ -3,12 +3,21 @@ from pytest import fixture
|
||||
from sientia_do.notifications.models import NotificationLevel
|
||||
from ingestor.managers.ingestor_manager import IngestorManager
|
||||
|
||||
metadata = {
|
||||
"metadata": {
|
||||
"model_id": "test_model",
|
||||
"model_name": "test_model",
|
||||
"workflow_name": "test_workflow",
|
||||
"schema_name": "test_schedule",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@fixture
|
||||
@patch('ingestor.managers.ingestor_manager.DataManager')
|
||||
@patch('ingestor.managers.ingestor_manager.ResourceManager')
|
||||
def ingestor_manager(data_manager_mock, resource_manager_mock):
|
||||
return IngestorManager(
|
||||
ingestor = IngestorManager(
|
||||
kafka_servers="localhost:9092",
|
||||
redis_data={
|
||||
"host": "localhost",
|
||||
@@ -22,9 +31,14 @@ def ingestor_manager(data_manager_mock, resource_manager_mock):
|
||||
mongo_database="sientia",
|
||||
export_to_kafka=False,
|
||||
logger=MagicMock(),
|
||||
notification_handler=MagicMock()
|
||||
notification_handler=MagicMock(),
|
||||
metadata=metadata["metadata"],
|
||||
)
|
||||
|
||||
ingestor.send_notification = MagicMock()
|
||||
|
||||
return ingestor
|
||||
|
||||
|
||||
@patch('ingestor.managers.ingestor_manager.OpcManager')
|
||||
@patch('ingestor.managers.ingestor_manager.DataManager')
|
||||
@@ -46,15 +60,32 @@ def test___init__(notification_handler_mock, resource_manager_mock, data_manager
|
||||
mongo_database="sientia",
|
||||
export_to_kafka=False,
|
||||
logger=MagicMock(),
|
||||
notification_handler=MagicMock()
|
||||
notification_handler=MagicMock(),
|
||||
metadata=metadata["metadata"],
|
||||
)
|
||||
|
||||
opc_manager_mock.assert_not_called()
|
||||
data_manager_mock.assert_called_once_with(
|
||||
"localhost:9092", "mongodb://localhost:27017", "sientia", False,
|
||||
ingestor.logger, ingestor.notification_handler)
|
||||
kafka_servers="localhost:9092",
|
||||
mongo_connection_string="mongodb://localhost:27017",
|
||||
mongo_database="sientia",
|
||||
export_to_kafka=False,
|
||||
metadata=metadata["metadata"],
|
||||
logger=ingestor.logger,
|
||||
notification_handler=ingestor.notification_handler,
|
||||
)
|
||||
resource_manager_mock.assert_called_once_with(
|
||||
"localhost", 6379, 60, 60, "test_pod", None, None)
|
||||
host="localhost",
|
||||
port=6379,
|
||||
lease_ttl=60,
|
||||
heartbeat_ttl=60,
|
||||
pod_id="test_pod",
|
||||
metadata=metadata["metadata"],
|
||||
logger=ingestor.logger,
|
||||
notification_handler=ingestor.notification_handler,
|
||||
username=None,
|
||||
password=None,
|
||||
)
|
||||
assert ingestor.poll_interval == 5
|
||||
assert ingestor.managed_tags == {}
|
||||
assert ingestor.opc_servers == {}
|
||||
@@ -77,14 +108,20 @@ def test_initialize_opc_from_config(opc_manager, ingestor_manager):
|
||||
|
||||
opc_manager.return_value = MagicMock()
|
||||
result = ingestor_manager.initialize_opc_from_config(
|
||||
server_config, ingestor_manager.data_manager, ingestor_manager.logger)
|
||||
server_config)
|
||||
|
||||
opc_manager.assert_called_once_with(
|
||||
server_config['name'], server_config['url'], ingestor_manager.data_manager, ingestor_manager.logger,
|
||||
server_config['server_uri'], ingestor_manager.notification_handler,
|
||||
server_config['pod_id'],
|
||||
server_config['cert_path'], server_config['private_key_path'],
|
||||
server_config['server_cert_path']
|
||||
name=server_config['name'],
|
||||
url=server_config['url'],
|
||||
data_manager=ingestor_manager.data_manager,
|
||||
logger=ingestor_manager.logger,
|
||||
server_uri=server_config['server_uri'],
|
||||
notification_handler=ingestor_manager.notification_handler,
|
||||
pod_id=server_config['pod_id'],
|
||||
cert_path=server_config['cert_path'],
|
||||
private_key_path=server_config['private_key_path'],
|
||||
server_cert_path=server_config['server_cert_path'],
|
||||
metadata=metadata["metadata"],
|
||||
)
|
||||
|
||||
assert result == opc_manager.return_value
|
||||
@@ -107,12 +144,13 @@ def test_initialize_opc_from_config_exception(traceback_mock, opc_manager, inges
|
||||
opc_manager.side_effect = Exception("Initialization error")
|
||||
|
||||
result = ingestor_manager.initialize_opc_from_config(
|
||||
server_config, ingestor_manager.data_manager, ingestor_manager.logger)
|
||||
server_config)
|
||||
|
||||
assert result is None
|
||||
|
||||
traceback_mock.format_exc.assert_called_once()
|
||||
ingestor_manager.notification_handler.build_and_send_notification.assert_called_once_with(
|
||||
ingestor_manager.send_notification.assert_called_once_with(
|
||||
metadata=metadata["metadata"],
|
||||
notification_id=f'OPC_CONNECTION_ERROR_{server_config["name"]}',
|
||||
message='Error initializing OPC manager: Initialization error',
|
||||
block="opc_manager",
|
||||
@@ -131,7 +169,7 @@ def test_update_opc_servers(metrics, opc_manager, ingestor_manager):
|
||||
manager3 = MagicMock(
|
||||
config={"config": "config3"})
|
||||
|
||||
def mock_initialize_from_config(config, data_manager, logger):
|
||||
def mock_initialize_from_config(config):
|
||||
if config == {"config": "config1"}:
|
||||
return manager1
|
||||
elif config == {"config": "config2"}:
|
||||
@@ -169,11 +207,11 @@ def test_update_opc_servers(metrics, opc_manager, ingestor_manager):
|
||||
assert len(ingestor_manager.opc_managers) == 3
|
||||
|
||||
ingestor_manager.initialize_opc_from_config.assert_any_call(
|
||||
{"config": "config1"}, ingestor_manager.data_manager, ingestor_manager.logger)
|
||||
{"config": "config1"})
|
||||
ingestor_manager.initialize_opc_from_config.assert_any_call(
|
||||
{"config": "config2"}, ingestor_manager.data_manager, ingestor_manager.logger)
|
||||
{"config": "config2"})
|
||||
ingestor_manager.initialize_opc_from_config.assert_any_call(
|
||||
{"config": "config5"}, ingestor_manager.data_manager, ingestor_manager.logger)
|
||||
{"config": "config5"})
|
||||
assert ingestor_manager.initialize_opc_from_config.call_count == 3
|
||||
|
||||
assert ingestor_manager.opc_managers['server1'].config == {
|
||||
@@ -470,7 +508,8 @@ def test_manage_server_subscribe_failure(traceback_mock, ingestor_manager):
|
||||
|
||||
traceback_mock.format_exc.assert_called_once()
|
||||
|
||||
ingestor_manager.notification_handler.build_and_send_notification.assert_called_once_with(
|
||||
ingestor_manager.send_notification.assert_called_once_with(
|
||||
metadata=metadata["metadata"],
|
||||
notification_id='OPC_SUBSCRIPTION_ERROR_slot1:server1',
|
||||
message='Failed to subscribe to tags from slot1:server1\n{\'tags\': \'config1\'}: Subscription error',
|
||||
block="opc_manager",
|
||||
|
||||
Reference in New Issue
Block a user