import unittest import os import tempfile import shutil from unittest.mock import patch, MagicMock from o11ydiagnosis.subtasks.slowlogconverter.task import Task class TestSlowlogConverterTask(unittest.TestCase): def setUp(self): """Set up test fixtures""" self.temp_dir = tempfile.mkdtemp() self.mock_s3 = MagicMock() def tearDown(self): """Clean up test fixtures""" if os.path.exists(self.temp_dir): shutil.rmtree(self.temp_dir) @patch('o11ydiagnosis.subtasks.slowlogconverter.objstore.S3') def test_task_initialization(self, mock_s3_class): """Test that Task can be initialized""" mock_s3_class.return_value = self.mock_s3 task = Task( self.mock_s3, tenant="test-tenant", cluster="test-cluster", o11y_cluster="test-o11y-cluster", vendor="local", region="us-east-1", o11y_bucket="test-o11y-bucket", o11y_prefix="test/o11y/prefix/", drhouse_bucket="test-drhouse-bucket", drhouse_prefix="test/drhouse/prefix/", drhouse_local_path=self.temp_dir, ) self.assertEqual(task.tenant, "test-tenant") self.assertEqual(task.cluster, "test-cluster") self.assertEqual(task.o11y_cluster, "test-o11y-cluster") self.assertEqual(task.vendor, "local") self.assertEqual(task.region, "us-east-1") @patch('o11ydiagnosis.subtasks.slowlogconverter.objstore.S3') @patch('o11ydiagnosis.subtasks.slowlogconverter.task.log_metrics_periodically') def test_task_has_required_attributes(self, mock_metrics, mock_s3_class): """Test task has all required attributes""" mock_s3_class.return_value = self.mock_s3 task = Task( self.mock_s3, tenant="test-tenant", cluster="test-cluster", o11y_cluster="test-o11y-cluster", vendor="local", region="us-east-1", o11y_bucket="test-o11y-bucket", o11y_prefix="test/o11y/prefix/", drhouse_bucket="test-drhouse-bucket", drhouse_prefix="test/drhouse/prefix/", drhouse_local_path=self.temp_dir, ) # Verify required attributes exist required_attrs = [ 'tenant', 'cluster', 'o11y_cluster', 'vendor', 'region', 'o11y_bucket', 'o11y_prefix', 'drhouse_bucket', 'drhouse_prefix', 'drhouse_local_path', 's3' ] for attr in required_attrs: self.assertTrue(hasattr(task, attr), f"Task missing attribute: {attr}") if __name__ == "__main__": unittest.main()