#!/usr/bin/env python3
"""
Test script for CodeBase Optimizer MCP functions
"""
import sys
import os
import asyncio
# Add current directory to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
from codebase_optimizer_engine import CodebaseAnalyzer
async def test_all_functions():
"""Test all analysis functions"""
project_path = "/Users/liadgez/Documents/technologia/merged-implementations"
print("🧪 Testing CodeBase Optimizer Functions")
print("=" * 50)
print(f"Project: {project_path}")
print()
analyzer = CodebaseAnalyzer(project_path)
# Test 1: Project Structure Analysis
print("1️⃣ Testing project structure analysis...")
structure_result = analyzer.analyze_project_structure()
print(f" Result: {'✅ Success' if structure_result.success else '❌ Failed'}")
print(f" Recommendations: {len(structure_result.recommendations)}")
print(f" Architecture: {structure_result.data.get('architecture_type', 'Unknown')}")
print()
# Test 2: Duplicate Detection
print("2️⃣ Testing duplicate detection...")
duplicates_result = analyzer.detect_code_duplicates()
print(f" Result: {'✅ Success' if duplicates_result.success else '❌ Failed'}")
print(f" Duplication: {duplicates_result.data.get('duplication_percentage', 0):.1f}%")
print(f" Function duplicates: {len(duplicates_result.data.get('function_duplicates', []))}")
print()
# Test 3: Microservices Validation
print("3️⃣ Testing microservices validation...")
microservices_result = analyzer.validate_microservices_architecture()
print(f" Result: {'✅ Success' if microservices_result.success else '❌ Failed'}")
print(f" Is microservices: {microservices_result.data.get('is_microservices', False)}")
print(f" Services detected: {len(microservices_result.data.get('services_detected', []))}")
print()
# Test 4: Configuration Optimization
print("4️⃣ Testing configuration optimization...")
config_result = analyzer.optimize_configurations()
print(f" Result: {'✅ Success' if config_result.success else '❌ Failed'}")
print(f" Config files: {len(config_result.data.get('config_files', []))}")
print(f" Security issues: {len(config_result.data.get('security_issues', []))}")
print()
# Test 5: Comprehensive Report
print("5️⃣ Testing comprehensive report generation...")
results = {
'structure': structure_result,
'duplicates': duplicates_result,
'microservices': microservices_result,
'configuration': config_result
}
report = analyzer.generate_improvement_report(results)
print(f" Health Score: {report.get('health_score', 0)}/100")
print(f" Total Recommendations: {len(report.get('prioritized_recommendations', []))}")
print(f" Action Plan Phases: {len(report.get('action_plan', []))}")
print()
# Summary
print("🎯 Test Summary")
print("=" * 50)
# Show top 3 recommendations
print("Top 3 Recommendations:")
for i, rec in enumerate(report.get('prioritized_recommendations', [])[:3], 1):
priority = rec.get('priority', 'medium').upper()
recommendation = rec.get('recommendation', '')
print(f" {i}. [{priority}] {recommendation}")
print()
print("✅ All functions tested successfully!")
print(f"📊 Project Health: {report.get('health_score', 0)}/100")
return report
if __name__ == "__main__":
asyncio.run(test_all_functions())