#!/usr/bin/env python3
"""
CTO调度系统测试脚本
"""

import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

from cto_scheduler import CTOApplication
import time

def test_scheduler():
    print("开始CTO调度系统测试...")
    
    # 创建应用程序实例
    app = CTOApplication()
    
    # 1. 测试系统状态
    print("\n1. 测试系统状态...")
    status = app.get_system_status()
    print(f"   应用程序运行状态: {status['application_running']}")
    print(f"   调度器运行状态: {status['scheduler']['running']}")
    print(f"   任务队列大小: {status['scheduler']['queue_size']}")
    print(f"   运行中任务数: {status['scheduler']['running_tasks_count']}")
    
    # 2. 测试数据库连接
    print("\n2. 测试数据库连接...")
    print(f"   项目记录数: {status['database']['projects']}")
    print(f"   任务记录数: {status['database']['agent_tasks']}")
    print(f"   Agent状态记录数: {status['database']['agent_status']}")
    
    # 3. 测试Agent状态
    print("\n3. 测试Agent状态...")
    agents = status['scheduler']['agents']
    for agent_name, agent_state in agents.items():
        if agent_state:
            print(f"   {agent_name}: {agent_state.get('status', 'unknown')}")
        else:
            print(f"   {agent_name}: 状态不可用")
    
    # 4. 创建测试项目
    print("\n4. 创建测试项目...")
    project_id = app.create_test_project("CTO调度系统测试")
    if project_id:
        print(f"   创建成功: {project_id}")
        
        # 5. 启动测试工作流
        print("\n5. 启动测试工作流...")
        if app.start_test_workflow(project_id):
            print("   工作流启动成功")
            
            # 等待任务执行
            print("   等待任务执行...")
            time.sleep(5)
            
            # 检查任务状态
            print("\n6. 检查任务状态...")
            status = app.get_system_status()
            print(f"   当前运行中任务数: {status['scheduler']['running_tasks_count']}")
            
        else:
            print("   工作流启动失败")
    else:
        print("   创建测试项目失败")
    
    print("\n测试完成!")
    return 0

if __name__ == "__main__":
    sys.exit(test_scheduler())
