SIENTIAPDE-1350: Configure separate task queues for train and cleanup workers, update sientia-dataops-library to 1.6.1 and refactor prometheus server startup to use logger.
This commit is contained in:
@@ -109,14 +109,18 @@ def test_sdk_metrics_port_from_env():
|
||||
@patch('model_manager.worker.worker.POD_ID', 'test-pod-123')
|
||||
@patch('model_manager.worker.worker.start_http_server')
|
||||
@patch('model_manager.worker.worker.metrics')
|
||||
def test_start_prometheus_server_success(mock_metrics, mock_start_http_server, mock_env_vars):
|
||||
def test_start_prometheus_server_success(
|
||||
mock_metrics, mock_start_http_server, mock_env_vars, mock_logger
|
||||
):
|
||||
"""Test successful Prometheus server startup."""
|
||||
from model_manager.worker.worker import start_prometheus_server
|
||||
|
||||
mock_app_up = Mock()
|
||||
mock_metrics.APP_UP.labels.return_value = mock_app_up
|
||||
|
||||
start_prometheus_server()
|
||||
metadata = {'pod_id': 'test-pod-123', 'workflow_name': 'train_model'}
|
||||
|
||||
start_prometheus_server(mock_logger, metadata)
|
||||
|
||||
# Verify HTTP server started
|
||||
mock_start_http_server.assert_called_once_with(9090)
|
||||
@@ -124,11 +128,12 @@ def test_start_prometheus_server_success(mock_metrics, mock_start_http_server, m
|
||||
# Verify APP_UP metric was set to 1
|
||||
mock_metrics.APP_UP.labels.assert_called_once_with(pod_id='test-pod-123')
|
||||
mock_app_up.set.assert_called_once_with(1)
|
||||
mock_logger.custom_info.assert_called_once()
|
||||
|
||||
|
||||
@patch('model_manager.worker.worker.start_http_server')
|
||||
@patch('model_manager.worker.worker.metrics')
|
||||
def test_start_prometheus_server_custom_port(mock_metrics, mock_start_http_server):
|
||||
def test_start_prometheus_server_custom_port(mock_metrics, mock_start_http_server, mock_logger):
|
||||
"""Test Prometheus server startup with custom port."""
|
||||
from model_manager.worker.worker import start_prometheus_server
|
||||
|
||||
@@ -136,7 +141,9 @@ def test_start_prometheus_server_custom_port(mock_metrics, mock_start_http_serve
|
||||
mock_app_up = Mock()
|
||||
mock_metrics.APP_UP.labels.return_value = mock_app_up
|
||||
|
||||
start_prometheus_server()
|
||||
metadata = {'pod_id': 'custom-pod', 'workflow_name': 'train_model'}
|
||||
|
||||
start_prometheus_server(mock_logger, metadata)
|
||||
|
||||
mock_start_http_server.assert_called_once_with(8080)
|
||||
|
||||
@@ -145,17 +152,20 @@ def test_start_prometheus_server_custom_port(mock_metrics, mock_start_http_serve
|
||||
@patch('model_manager.worker.worker.metrics')
|
||||
@patch('model_manager.worker.worker.os._exit')
|
||||
def test_start_prometheus_server_failure(
|
||||
mock_exit, mock_metrics, mock_start_http_server, mock_env_vars
|
||||
mock_exit, mock_metrics, mock_start_http_server, mock_env_vars, mock_logger
|
||||
):
|
||||
"""Test Prometheus server startup failure."""
|
||||
from model_manager.worker.worker import start_prometheus_server
|
||||
|
||||
mock_start_http_server.side_effect = OSError('Port already in use')
|
||||
|
||||
start_prometheus_server()
|
||||
metadata = {'pod_id': 'test-pod-123', 'workflow_name': 'train_model'}
|
||||
|
||||
# Verify exit was called with code 1
|
||||
start_prometheus_server(mock_logger, metadata)
|
||||
|
||||
# Verify exit was called with code 1 e log crítico emitido
|
||||
mock_exit.assert_called_once_with(1)
|
||||
mock_logger.custom_critical.assert_called_once()
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@@ -234,7 +244,7 @@ async def test_main_successful_startup(
|
||||
mock_notification_handler_class.assert_called_once()
|
||||
mock_activities_class.assert_called_once()
|
||||
mock_client_class.connect.assert_called_once()
|
||||
# Agora sao criados dois Workers: um para train_model-queue e outro para cleanup-queue
|
||||
# Agora são criados dois Workers: um para train_model-queue e outro para cleanup-queue
|
||||
assert mock_worker_class.call_count == 2
|
||||
|
||||
# Verify cleanup was performed
|
||||
@@ -523,7 +533,7 @@ def test_worker_module_docstring():
|
||||
@patch('model_manager.worker.worker.start_http_server')
|
||||
@patch('model_manager.worker.worker.metrics')
|
||||
def test_start_prometheus_server_prints_success(
|
||||
mock_metrics, mock_start_http_server, capsys, mock_env_vars
|
||||
mock_metrics, mock_start_http_server, capsys, mock_env_vars, mock_logger
|
||||
):
|
||||
"""Test that start_prometheus_server prints success message."""
|
||||
from model_manager.worker.worker import start_prometheus_server
|
||||
@@ -531,25 +541,29 @@ def test_start_prometheus_server_prints_success(
|
||||
mock_app_up = Mock()
|
||||
mock_metrics.APP_UP.labels.return_value = mock_app_up
|
||||
|
||||
start_prometheus_server()
|
||||
metadata = {'pod_id': 'test-pod-123', 'workflow_name': 'train_model'}
|
||||
|
||||
captured = capsys.readouterr()
|
||||
assert 'Prometheus server started on port 9090' in captured.out
|
||||
start_prometheus_server(mock_logger, metadata)
|
||||
|
||||
# Agora a mensagem é enviada via logger
|
||||
mock_logger.custom_info.assert_called_once()
|
||||
|
||||
|
||||
@patch('model_manager.worker.worker.start_http_server')
|
||||
@patch('model_manager.worker.worker.metrics')
|
||||
@patch('model_manager.worker.worker.os._exit')
|
||||
def test_start_prometheus_server_prints_failure(
|
||||
mock_exit, mock_metrics, mock_start_http_server, capsys, mock_env_vars
|
||||
mock_exit, mock_metrics, mock_start_http_server, capsys, mock_env_vars, mock_logger
|
||||
):
|
||||
"""Test that start_prometheus_server prints failure message."""
|
||||
from model_manager.worker.worker import start_prometheus_server
|
||||
|
||||
mock_start_http_server.side_effect = Exception('Test error')
|
||||
|
||||
start_prometheus_server()
|
||||
metadata = {'pod_id': 'test-pod-123', 'workflow_name': 'train_model'}
|
||||
|
||||
captured = capsys.readouterr()
|
||||
assert 'Failed to start Prometheus server' in captured.out
|
||||
assert 'Test error' in captured.out
|
||||
start_prometheus_server(mock_logger, metadata)
|
||||
|
||||
# Agora o erro é logado via logger crítico
|
||||
mock_logger.custom_critical.assert_called_once()
|
||||
mock_exit.assert_called_once_with(1)
|
||||
|
||||
Reference in New Issue
Block a user