import unittest import os from os import path import sys from unittest.mock import patch, MagicMock pa = path.abspath(path.join(path.dirname(__file__), '../..')) sys.path.append(pa) # Check if grpc is available try: import grpc GRPC_AVAILABLE = True except ImportError: GRPC_AVAILABLE = False if GRPC_AVAILABLE: from datasdk.sources import meta else: meta = None class TestMeta(unittest.TestCase): @unittest.skipUnless(GRPC_AVAILABLE, "grpc package not available") @unittest.skipUnless(os.environ.get("TEST_GRPC_SERVER"), "GRPC server not configured for testing") def test_get_cluster_meta(self): """Test getting cluster metadata from GRPC server""" server = os.environ.get("TEST_GRPC_SERVER", "dbaas-core-svc-server-grpc:8888") cluster = meta.Meta(server).get_cluster_meta(3059031) self.assertEqual(cluster.id, 3059031) @unittest.skipUnless(GRPC_AVAILABLE, "grpc package not available") @unittest.skipUnless(os.environ.get("TEST_GRPC_SERVER"), "GRPC server not configured for testing") def test_list_cluster_meta_by_filter(self): """Test listing cluster metadata by filter""" server = os.environ.get("TEST_GRPC_SERVER", "dbaas-core-svc-server-grpc:8888") clusters = meta.Meta(server).list_cluster_meta_by_filter( filters=meta.core_pb.ClusterFilter( cluster_ids=[3059031], ) ) self.assertIsNotNone(clusters[3059031]) @unittest.skipUnless(GRPC_AVAILABLE, "grpc package not available") @patch('datasdk.sources.meta.Meta') def test_meta_initialization(self, mock_meta_class): """Test Meta class can be initialized""" mock_meta = MagicMock() mock_meta_class.return_value = mock_meta meta_instance = meta.Meta("test-server:8888") self.assertIsNotNone(meta_instance) @unittest.skipUnless(GRPC_AVAILABLE, "grpc package not available") def test_meta_class_exists(self): """Test that Meta class exists and is importable""" self.assertTrue(hasattr(meta, 'Meta')) self.assertTrue(callable(meta.Meta)) if __name__ == '__main__': unittest.main()