#!/usr/bin/env python3 """ 测试重构后的DeviceManager """ import asyncio import sys import os # 添加项目根目录到Python路径 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from app.core.device.manager import DeviceManager from app.schemas.device import DeviceCreate from app.core.config import ProtocolType async def test_device_manager(): """测试DeviceManager的基本功能""" print("开始测试重构后的DeviceManager...") # 创建设备管理器实例 device_manager = DeviceManager() try: # 测试设备注册 print("\n1. 测试设备注册...") device_create = DeviceCreate( device_id="test_device_001", name="测试设备1", protocol_type=ProtocolType.ADB, connection_info={"host": "192.168.1.100", "port": 5555} ) device = await device_manager.register_device(device_create) print(f"设备注册成功: {device.device_id} - {device.name}") # 测试获取设备 print("\n2. 测试获取设备...") retrieved_device = await device_manager.get_device("test_device_001") if retrieved_device: print(f"获取设备成功: {retrieved_device.device_id} - {retrieved_device.status}") # 测试更新设备状态 print("\n3. 测试更新设备状态...") success = await device_manager.update_device_status("test_device_001", "online") if success: print("设备状态更新成功") # 测试获取所有设备 print("\n4. 测试获取所有设备...") all_devices = await device_manager.get_all_devices() print(f"总设备数量: {len(all_devices)}") for device in all_devices: print(f" - {device.device_id}: {device.name} ({device.status})") # 测试自动发现设备事件 print("\n5. 测试自动发现设备事件...") success = await device_manager.handle_auto_discovered_device_event( "auto_device_001", "device", {"model": "AutoDevice", "version": "1.0"} ) if success: print("自动发现设备事件处理成功") # 测试获取统一设备列表 print("\n6. 测试获取统一设备列表...") unified_devices = await device_manager.get_all_devices_unified() print(f"统一设备列表数量: {len(unified_devices)}") for device_info in unified_devices: print(f" - {device_info['device_id']}: {device_info['name']} ({device_info['source']})") # 测试注销设备 print("\n7. 测试注销设备...") success = await device_manager.unregister_device("test_device_001") if success: print("设备注销成功") # 测试清理 print("\n8. 测试清理...") await device_manager.cleanup() print("设备管理器清理完成") print("\n✅ 所有测试通过!") except Exception as e: print(f"\n❌ 测试失败: {e}") import traceback traceback.print_exc() if __name__ == "__main__": asyncio.run(test_device_manager())