import sys import asyncio sys.path.append('app') from core.software_manager import software_manager async def test_software_manager(): print("=== 测试软件管理器 ===") # 测试获取软件列表 print("\n1. 测试获取软件列表:") try: software_list = await software_manager.get_software_list() print("✅ 软件列表获取成功:") for software in software_list: print(f" - {software['id']}: {software['name']} (运行: {software['is_running']})") except Exception as e: print(f"❌ 获取软件列表失败: {e}") # 测试软件状态检查 print("\n2. 测试软件状态检查:") try: creo_running = software_manager.is_software_running("creo") autocad_running = software_manager.is_software_running("autocad") print(f"✅ Creo 运行状态: {creo_running}") print(f"✅ AutoCAD 运行状态: {autocad_running}") except Exception as e: print(f"❌ 软件状态检查失败: {e}") # 测试启动软件(不会真正启动,因为路径可能不存在) print("\n3. 测试启动软件任务创建:") try: task = await software_manager.start_software("creo") print(f"✅ 启动任务创建成功:") print(f" - 任务ID: {task.id}") print(f" - 软件ID: {task.software_id}") print(f" - 任务类型: {task.task_type}") print(f" - 初始状态: {task.status}") # 等待一会儿看任务状态变化 await asyncio.sleep(2) updated_task = software_manager.get_task(task.id) print(f" - 2秒后状态: {updated_task.status}") print(f" - 进度: {updated_task.progress}%") if updated_task.error_message: print(f" - 错误信息: {updated_task.error_message}") except Exception as e: print(f"❌ 启动软件任务失败: {e}") # 测试错误处理 print("\n4. 测试错误处理:") try: # 尝试启动不存在的软件 await software_manager.start_software("nonexistent") except ValueError as e: print(f"✅ 正确捕获错误: {e}") except Exception as e: print(f"❌ 未预期的错误: {e}") print("\n=== 软件管理器测试完成 ===") if __name__ == "__main__": asyncio.run(test_software_manager())