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:
@@ -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"]
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user