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:
vitor-aignosi
2025-07-17 14:27:13 -03:00
parent 1dba4f5604
commit 9309d7591e
7 changed files with 203 additions and 94 deletions

View File

@@ -4,20 +4,35 @@ from kafka.errors import NoBrokersAvailable
from sientia_do.notifications.models import NotificationLevel
from ingestor.managers.data_manager import DataManager
metadata = {
"metadata": {
"model_id": "test_model",
"model_name": "test_model",
"workflow_name": "test_workflow",
"schema_name": "test_schedule",
},
}
@fixture
@patch("ingestor.managers.data_manager.KafkaProducer")
@patch("ingestor.managers.data_manager.MongoClient")
def data_manager(mongo, kafka):
return DataManager(
data_manager = DataManager(
kafka_servers="localhost:9092",
mongo_connection_string="mongodb://localhost:27017",
mongo_database="sientia",
export_to_kafka=True,
logger=MagicMock(),
notification_handler=MagicMock()
notification_handler=MagicMock(),
metadata=metadata["metadata"],
)
data_manager.send_notification = MagicMock()
return data_manager
@patch("ingestor.managers.data_manager.KafkaProducer")
@patch("ingestor.managers.data_manager.MongoClient")
@@ -25,6 +40,7 @@ def test___init___success(mongo, kafka):
logger_mock = MagicMock()
data_manager = DataManager(
metadata=metadata["metadata"],
kafka_servers="localhost:9092",
mongo_connection_string="mongodb://localhost:27017",
mongo_database="sientia",
@@ -61,7 +77,8 @@ def test___init___second_attempt(mongo, kafka):
mongo_database="sientia",
export_to_kafka=True,
logger=logger_mock,
notification_handler=MagicMock()
notification_handler=MagicMock(),
metadata=metadata["metadata"],
)
kafka.assert_any_call(
@@ -99,7 +116,8 @@ def test___init___failure_max_attempts(mongo, kafka):
mongo_database="sientia",
export_to_kafka=True,
logger=logger_mock,
notification_handler=MagicMock()
notification_handler=MagicMock(),
metadata=metadata["metadata"],
)
except NoBrokersAvailable as e:
assert str(
@@ -255,12 +273,13 @@ def test_publish_error(traceback, data_manager):
)
# Check if the error was logged
data_manager.notification_handler.build_and_send_notification.assert_called_once_with(
data_manager.send_notification.assert_called_once_with(
notification_id=f"KAFKA_PRODUCER_ERROR_{topic}",
message=f"Error publishing message to topic {topic}: Test error",
block="kafka_producer",
level=NotificationLevel.ERROR,
attachment_content=traceback.format_exc.return_value
attachment_content=traceback.format_exc.return_value,
metadata=metadata["metadata"]
)
@@ -271,10 +290,11 @@ def test_publish_error_mongo(data_manager):
data_manager.publish("test_topic", {"key": "value"})
data_manager.notification_handler.build_and_send_notification.assert_called_once_with(
data_manager.send_notification.assert_called_once_with(
notification_id="MONGO_PRODUCER_ERROR_test_topic",
message="Error inserting message to MongoDB: Test error",
block="mongo_producer",
level=NotificationLevel.ERROR,
attachment_content=ANY
attachment_content=ANY,
metadata=metadata["metadata"]
)