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.")