import sys
import os
import logging
# Ensure src is in path to simulate installed package behavior or direct run
sys.path.append(os.path.join(os.path.dirname(__file__), "src"))
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
logger = logging.getLogger("verifier")
def verify_imports():
logger.info("π Phase 1: Checking imports...")
try:
import sql_mcp
logger.info(" β
Package 'sql_mcp' found.")
except ImportError as e:
logger.error(f" β Failed to import package: {e}")
return False
try:
from sql_mcp.server import main
logger.info(" β
Server main module imported.")
except ImportError as e:
logger.error(f" β Failed to import server.main: {e}")
return False
try:
from sql_mcp.core.factory import AdapterFactory
logger.info(" β
Core Factory imported.")
except ImportError as e:
logger.error(f" β Failed to import AdapterFactory: {e}")
return False
return True
def verify_adapters():
logger.info("\nπ οΈ Phase 2: Verifying Adapters Instantiation...")
from sql_mcp.core.factory import AdapterFactory
from sql_mcp.interfaces.database_adapter import DatabaseAdapter
# Test MySQL Adapter
try:
mysql_adapter = AdapterFactory.create("mysql", {"host": "localhost"})
if isinstance(mysql_adapter, DatabaseAdapter):
logger.info(" β
MySQLAdapter created successfully.")
else:
logger.error(" β MySQLAdapter is not instance of DatabaseAdapter.")
except ImportError as e:
logger.error(f" β MySQL Dependency missing? {e}")
except Exception as e:
logger.error(f" β MySQLAdapter instantiation failed: {e}")
# Test MSSQL Adapter
try:
mssql_adapter = AdapterFactory.create("mssql", {"server": "localhost"})
if isinstance(mssql_adapter, DatabaseAdapter):
logger.info(" β
MSSQLAdapter created successfully.")
else:
logger.error(" β MSSQLAdapter is not instance of DatabaseAdapter.")
except ImportError as e:
logger.error(f" β MSSQL Dependency missing? {e}")
except Exception as e:
logger.error(f" β MSSQLAdapter instantiation failed: {e}")
# Test Sybase Adapter
try:
sybase_adapter = AdapterFactory.create("sybase", {"host": "localhost", "driver": "SQL Anywhere 17"})
if isinstance(sybase_adapter, DatabaseAdapter):
logger.info(" β
SybaseAdapter created successfully.")
else:
logger.error(" β SybaseAdapter is not instance of DatabaseAdapter.")
except ImportError as e:
logger.error(f" β Sybase Dependency missing? {e}")
except Exception as e:
logger.error(f" β SybaseAdapter instantiation failed: {e}")
# Test Oracle Adapter
try:
oracle_adapter = AdapterFactory.create("oracle", {"user": "system", "password": "password", "dsn": "localhost/XEPDB1"})
if isinstance(oracle_adapter, DatabaseAdapter):
logger.info(" β
OracleAdapter created successfully.")
else:
logger.error(" β OracleAdapter is not instance of DatabaseAdapter.")
except ImportError as e:
logger.error(f" β Oracle Dependency missing? {e}")
except Exception as e:
logger.error(f" β OracleAdapter instantiation failed: {e}")
# Test Invalid Adapter (Postgres not implemented yet)
try:
AdapterFactory.create("postgres", {})
logger.error(" β Factory failed to raise error for unsupported DB.")
except ValueError:
logger.info(" β
Factory correctly anticipated unsupported DB (Postgres).")
except Exception as e:
logger.error(f" β Unexpected error for invalid adapter: {e}")
if __name__ == "__main__":
if verify_imports():
verify_adapters()
else:
logger.error("Skipping Phase 2 due to import failures.")