You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
6.3 KiB

#!/usr/bin/env python3
"""
DeviceManager重构兼容性测试
验证重构后的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 device_manager, DeviceManager, DeviceSource
from app.core.websocket.manager import websocket_manager
from app.schemas.device import DeviceCreate
from app.core.config import ProtocolType
async def test_compatibility():
"""测试DeviceManager重构后的兼容性"""
print("开始DeviceManager重构兼容性测试...")
try:
# 1. 测试全局实例导入
print("\n1. 测试全局实例导入...")
from app.core.device.manager import device_manager
print("✅ 全局device_manager实例导入成功")
# 2. 测试类导入
print("\n2. 测试类导入...")
from app.core.device.manager import DeviceManager, DeviceSource
print("✅ DeviceManager类和DeviceSource枚举导入成功")
# 3. 测试WebSocket管理器集成
print("\n3. 测试WebSocket管理器集成...")
from app.core.websocket.manager import websocket_manager
print("✅ WebSocket管理器导入成功")
# 4. 测试设备服务集成
print("\n4. 测试设备服务集成...")
from app.services.device_service import DeviceService
device_service = DeviceService()
print("✅ 设备服务导入和实例化成功")
# 5. 测试ADB服务集成
print("\n5. 测试ADB服务集成...")
from app.services.adb_service import AdbService
adb_service = AdbService()
print("✅ ADB服务导入和实例化成功")
# 6. 测试AT服务集成
print("\n6. 测试AT服务集成...")
from app.services.at_service import AtService
at_service = AtService()
print("✅ AT服务导入和实例化成功")
# 7. 测试SSH服务集成
print("\n7. 测试SSH服务集成...")
from app.services.ssh_service import SshService
ssh_service = SshService()
print("✅ SSH服务导入和实例化成功")
# 8. 测试PLNK服务集成
print("\n8. 测试PLNK服务集成...")
from app.services.plnk_service import PlnkService
plnk_service = PlnkService()
print("✅ PLNK服务导入和实例化成功")
# 9. 测试ATX服务集成
print("\n9. 测试ATX服务集成...")
from app.services.atx_service import AtxService
atx_service = AtxService()
print("✅ ATX服务导入和实例化成功")
# 10. 测试自动发现ADB服务集成
print("\n10. 测试自动发现ADB服务集成...")
from app.services.auto_discovery_adb_service import AutoDiscoveryAdbService
auto_discovery_service = AutoDiscoveryAdbService()
print("✅ 自动发现ADB服务导入和实例化成功")
# 11. 测试API端点集成
print("\n11. 测试API端点集成...")
from app.api.v1.endpoints import at, ssh, plnk, devices
print("✅ API端点模块导入成功")
# 12. 测试应用工厂集成
print("\n12. 测试应用工厂集成...")
from app.core.app.factory import create_app
print("✅ 应用工厂导入成功")
# 13. 测试基本功能
print("\n13. 测试基本功能...")
# 测试设备注册
device_create = DeviceCreate(
device_id="compat_test_001",
name="兼容性测试设备",
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}")
# 测试设备查询
retrieved_device = await device_manager.get_device("compat_test_001")
if retrieved_device:
print(f"✅ 设备查询成功: {retrieved_device.device_id}")
# 测试设备状态更新
success = await device_manager.update_device_status("compat_test_001", "online")
if success:
print("✅ 设备状态更新成功")
# 测试获取所有设备
all_devices = await device_manager.get_all_devices()
print(f"✅ 获取所有设备成功: {len(all_devices)} 个设备")
# 测试自动发现设备事件
success = await device_manager.handle_auto_discovered_device_event(
"auto_compat_001", "device", {"model": "Auto Compat Device"}
)
if success:
print("✅ 自动发现设备事件处理成功")
# 测试获取统一设备列表
unified_devices = await device_manager.get_all_devices_unified()
print(f"✅ 获取统一设备列表成功: {len(unified_devices)} 个设备")
# 测试设备注销
success = await device_manager.unregister_device("compat_test_001")
if success:
print("✅ 设备注销成功")
# 14. 测试WebSocket集成
print("\n14. 测试WebSocket集成...")
# 测试WebSocket推送回调设置
device_manager.set_websocket_push_callback(None) # 设置为None进行测试
print("✅ WebSocket推送回调设置成功")
# 测试事件推送任务启动
await device_manager.start_event_pusher()
print("✅ 事件推送任务启动成功")
# 测试事件推送任务停止
await device_manager.stop_event_pusher()
print("✅ 事件推送任务停止成功")
# 15. 测试资源清理
print("\n15. 测试资源清理...")
await device_manager.cleanup()
print("✅ 资源清理成功")
print("\n🎉 所有兼容性测试通过!")
print("✅ DeviceManager重构后与现有代码完全兼容")
except Exception as e:
print(f"\n❌ 兼容性测试失败: {e}")
import traceback
traceback.print_exc()
return False
return True
if __name__ == "__main__":
asyncio.run(test_compatibility())