SIENTIAPDE-1350: Implement file cleanup workflow and activities, including MinIO and local directory cleanup, configuration, and metrics.

This commit is contained in:
Bruno Domingues
2025-11-19 18:38:00 -03:00
parent cea3ef60cb
commit 53f49d7a97
11 changed files with 641 additions and 61 deletions

View File

@@ -234,7 +234,8 @@ 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()
mock_worker_class.assert_called_once()
# Agora sao criados dois Workers: um para train_model-queue e outro para cleanup-queue
assert mock_worker_class.call_count == 2
# Verify cleanup was performed
mock_notification_handler.shutdown.assert_called_once()
@@ -468,22 +469,31 @@ async def test_main_worker_configuration(
await main()
# Verify Worker was created with correct configuration
mock_worker_class.assert_called_once()
call_args = mock_worker_class.call_args
assert mock_worker_class.call_count == 2
assert call_args[0][0] == mock_client_instance # temporal_client
assert call_args[1]['task_queue'] == 'train_model-queue'
assert call_args[1]['max_concurrent_workflow_tasks'] == 50
assert call_args[1]['max_concurrent_activities'] == 50
assert call_args[1]['max_concurrent_local_activities'] == 50
assert call_args[1]['max_cached_workflows'] == 200
# Primeira chamada: worker de treinamento (train_model-queue)
train_call_args = mock_worker_class.call_args_list[0]
assert train_call_args[0][0] == mock_client_instance # temporal_client
assert train_call_args[1]['task_queue'] == 'train_model-queue'
assert train_call_args[1]['max_concurrent_workflow_tasks'] == 10
assert train_call_args[1]['max_concurrent_activities'] == 10
assert train_call_args[1]['max_concurrent_local_activities'] == 10
assert train_call_args[1]['max_cached_workflows'] == 100
# Verify activities are included
activities_list = call_args[1]['activities']
assert mock_activities.update_experiment_run in activities_list
assert mock_activities.validate_train_params in activities_list
assert mock_activities.train_model in activities_list
assert mock_activities.cleanup_resources in activities_list
train_activities_list = train_call_args[1]['activities']
assert mock_activities.update_experiment_run in train_activities_list
assert mock_activities.validate_train_params in train_activities_list
assert mock_activities.train_model in train_activities_list
assert mock_activities.cleanup_resources in train_activities_list
# Segunda chamada: worker de cleanup (cleanup-queue)
cleanup_call_args = mock_worker_class.call_args_list[1]
assert cleanup_call_args[0][0] == mock_client_instance # temporal_client
assert cleanup_call_args[1]['task_queue'] == 'cleanup-queue'
assert cleanup_call_args[1]['max_concurrent_workflow_tasks'] == 20
assert cleanup_call_args[1]['max_concurrent_activities'] == 20
assert cleanup_call_args[1]['max_concurrent_local_activities'] == 20
assert cleanup_call_args[1]['max_cached_workflows'] == 100
@patch('model_manager.worker.worker.asyncio.run')