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.
99 lines
4.5 KiB
99 lines
4.5 KiB
#!/usr/bin/env python3
|
|
"""
|
|
测试设备信息获取和事件推送修复
|
|
验证 device_info 字段是否正确填充
|
|
"""
|
|
import asyncio
|
|
import json
|
|
from app.core.device.manager import device_manager
|
|
from app.utils.structured_log import get_structured_logger, LogLevel
|
|
|
|
logger = get_structured_logger(__name__, LogLevel.INFO)
|
|
|
|
async def test_device_info_fix():
|
|
"""测试设备信息获取和事件推送修复"""
|
|
logger.info("开始测试设备信息获取和事件推送修复")
|
|
|
|
try:
|
|
# 1. 启动设备事件推送服务
|
|
logger.info("步骤1: 启动设备事件推送服务")
|
|
await device_manager.start_event_pusher()
|
|
logger.info("设备事件推送服务启动成功")
|
|
|
|
# 2. 模拟设备连接事件
|
|
logger.info("步骤2: 模拟设备连接事件")
|
|
test_device_id = "AMFU6R1813008221"
|
|
|
|
# 模拟设备连接事件
|
|
success = await device_manager.handle_auto_discovered_device_event(
|
|
device_id=test_device_id,
|
|
status="device",
|
|
device_info={} # 传递空的设备信息,让设备管理器自己获取详细属性
|
|
)
|
|
|
|
if success:
|
|
logger.info(f"设备连接事件处理成功: {test_device_id}")
|
|
else:
|
|
logger.error(f"设备连接事件处理失败: {test_device_id}")
|
|
return
|
|
|
|
# 3. 检查自动发现设备列表
|
|
logger.info("步骤3: 检查自动发现设备列表")
|
|
auto_discovered_devices = await device_manager.get_auto_discovered_devices()
|
|
|
|
for device in auto_discovered_devices:
|
|
if device["device_id"] == test_device_id:
|
|
device_info = device.get("device_info", {})
|
|
logger.info(f"找到设备 {test_device_id} 的设备信息:")
|
|
logger.info(f" 设备信息属性数量: {len(device_info)}")
|
|
logger.info(f" 品牌: {device_info.get('ro.product.brand', 'Unknown')}")
|
|
logger.info(f" 型号: {device_info.get('ro.product.model', 'Unknown')}")
|
|
logger.info(f" 设备名称: {device_info.get('ro.product.device', 'Unknown')}")
|
|
logger.info(f" 系统版本: {device_info.get('ro.build.version.release', 'Unknown')}")
|
|
logger.info(f" SDK版本: {device_info.get('ro.build.version.sdk', 'Unknown')}")
|
|
break
|
|
else:
|
|
logger.warning(f"未找到设备 {test_device_id} 在自动发现设备列表中")
|
|
|
|
# 4. 检查事件缓冲
|
|
logger.info("步骤4: 检查事件缓冲")
|
|
# 注册一个测试客户端来获取缓冲的事件
|
|
await device_manager.register_websocket_client("test_client")
|
|
|
|
# 获取缓冲的事件
|
|
buffered_events = await device_manager._event_manager.get_buffered_events("test_client")
|
|
|
|
logger.info(f"缓冲事件数量: {len(buffered_events)}")
|
|
|
|
for event in buffered_events:
|
|
if event.get("device_id") == test_device_id:
|
|
logger.info(f"找到设备 {test_device_id} 的事件:")
|
|
logger.info(f" 事件类型: {event.get('type')}")
|
|
logger.info(f" 设备状态: {event.get('status')}")
|
|
logger.info(f" 设备信息属性数量: {len(event.get('device_info', {}))}")
|
|
|
|
device_info = event.get("device_info", {})
|
|
if device_info:
|
|
logger.info(f" 品牌: {device_info.get('ro.product.brand', 'Unknown')}")
|
|
logger.info(f" 型号: {device_info.get('ro.product.model', 'Unknown')}")
|
|
logger.info(f" 设备名称: {device_info.get('ro.product.device', 'Unknown')}")
|
|
logger.info(f" 系统版本: {device_info.get('ro.build.version.release', 'Unknown')}")
|
|
logger.info(f" SDK版本: {device_info.get('ro.build.version.sdk', 'Unknown')}")
|
|
else:
|
|
logger.warning("设备信息为空!")
|
|
break
|
|
else:
|
|
logger.warning(f"未找到设备 {test_device_id} 的事件在缓冲中")
|
|
|
|
# 5. 注销测试客户端
|
|
await device_manager.unregister_websocket_client("test_client")
|
|
|
|
logger.info("设备信息获取和事件推送修复测试完成")
|
|
|
|
except Exception as e:
|
|
logger.error(f"测试过程中发生错误: {e}")
|
|
import traceback
|
|
logger.error(f"异常堆栈: {traceback.format_exc()}")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_device_info_fix())
|
|
|