
UFO³ Galaxy 跨平台日志采集与 Excel 报告生成AgentProfile Mock 测试实战指南【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO本篇技术指南以 UFO³ Galaxy 项目中的test_linux_log_collection_excel_generation.py测试模块为核心讲解如何用 AgentProfile Mock 对象在星座Constellation框架下搭建两台 Linux 服务器采集日志 一台 Windows 工作站生成 Excel 报告的跨平台自动化测试场景。读者将掌握 AgentProfile 数据结构的完整字段语义、DeviceStatus 状态机用法、能力capabilities声明与元数据metadata组织方式以及如何复用该测试作为模板编写自己的多设备编排验证用例。一、场景概览为什么需要跨平台 Mock 测试在 UFO³ Galaxy项目中文说明的架构里真实的多设备协作依赖 WebSocket 连接、心跳保活、任务调度等一整套分布式机制。若每次开发都启动真实设备成本高且难以复现故障。因此项目在 tests/ 目录下准备了独立的测试模块通过构造内存中的AgentProfile对象来模拟设备池从而在不依赖真实网络与 LLM 的情况下验证编排逻辑。本文涉及的测试模块描述了一个典型的跨平台自动化场景英文Collect logs from two Linux servers and generate an Excel report on Windows中文从两个 Linux 服务器采集日志并在 Windows 上生成 Excel 报告该场景覆盖了设备发现、能力匹配、日志采集、数据聚合、Excel 生成、故障降级、LLM Prompt 格式化等环节是验证星座框架多设备任务协调能力的完整样例。二、核心数据结构AgentProfile 与 DeviceStatusMock 设备的本质是AgentProfile数据类的实例该数据类定义在 galaxy/client/components/types.pydataclass class AgentProfile: device_id: str # 设备唯一标识必须与 --client-id 一致 server_url: str # UFO WebSocket 服务器地址 os: Optional[str] None # 操作系统类型如 linux / windows capabilities: List[str] field(default_factorylist) # 能力列表 metadata: Dict[str, Any] field(default_factorydict) # 自由格式元数据 status: DeviceStatus DeviceStatus.DISCONNECTED # 连接状态 last_heartbeat: Optional[datetime] None # 最近心跳时间 connection_attempts: int 0 # 连接尝试次数 max_retries: int 5 # 最大重试次数 current_task_id: Optional[str] None # 当前执行中的任务 ID字段语义要点字段用途Mock 测试中的取值示例device_id全局唯一设备标识参与任务路由linux_server_001server_url设备连接的服务端 WebSocket 地址ws://192.168.1.101:5000/wsos平台类型测试中用于按系统筛选设备linux/windowscapabilities能力声明列表决定设备能否承接某类任务log_collection、excel_processingmetadata主机名、服务、日志路径、软件清单等自由元数据见下文各设备表status连接状态DeviceStatus枚举DeviceStatus.CONNECTEDmax_retries连接失败后的重试上限与connection_attempts配合5DeviceStatus是同文件types.py中定义的枚举共 7 个状态DISCONNECTED, CONNECTING, CONNECTED, FAILED, REGISTERING, BUSY, IDLE其中BUSY表示设备正在执行任务配合current_task_id追踪IDLE表示已连接且可接新任务。DeviceRegistrygalaxy/client/components/device_registry.py内部以Dict[str, AgentProfile]维护设备池并提供register_device、get_device、get_all_devices(connectedTrue)、set_device_busy、set_device_idle、update_heartbeat等管理方法——Mock 测试中的device_constellation字典正是对这一注册表形态的简化模拟。三、Mock 设备清单与参数详解测试通过三个pytest.fixture构造设备对象test_linux_log_collection_excel_generation.py再由device_constellationfixture 聚合成设备池L137-L149。3.1 Linux Server 1linux_server_001Hostnameweb-server-01OSUbuntu 22.04 LTSCapabilitieslog_collection、file_operations、system_monitoring、bash_scripting、ssh_accessLog Pathsmetadata[log_paths]/var/log/nginx/access.log/var/log/nginx/error.log/var/log/postgresql/postgresql.log/var/log/syslog其他元数据locationdatacenter_rack_aservices[nginx, postgresql, redis]cpu_cores16memory_gb64disk_space_gb10003.2 Linux Server 2linux_server_002Hostnameapi-server-01OSCentOS 8Capabilitieslog_collection、file_operations、system_monitoring、bash_scripting、database_operationsLog Paths/var/log/httpd/access_log/var/log/httpd/error_log/var/log/mysql/mysql.log/var/log/mongodb/mongod.log/var/log/messages其他元数据locationdatacenter_rack_bservices[apache, mysql, mongodb]cpu_cores12memory_gb32disk_space_gb5003.3 Windows Workstationwindows_workstation_001Hostnameanalyst-pc-01OSWindows 11 ProCapabilitiesoffice_applications、excel_processing、file_management、data_analysis、report_generation、email_operationsPython Packagesmetadata[python_packages]pandas、openpyxl、xlsxwriter已安装软件Microsoft Office 365、Python 3.11、Excel、Power BI、Visual Studio Codeexcel_version16.0与真实设备配置的对应关系Mock 中的字段结构与 config/galaxy/devices.yaml 的设备声明一一对应——真实设备同样通过device_id、server_url、os、capabilities、metadata、max_retries等字段描述配置细节可参考 galaxy/README_ZH.md 的设备池配置章节。测试中以字典形式组织设备池正是对星座控制平面全局设备注册表的轻量模拟。四、九个测试用例逐一解析README 记录了9 个测试全部通过对应测试类TestLinuxLogCollectionExcelGeneration中的 9 个方法可分为核心测试与进阶测试两组。4.1 核心测试①test_mock_device_creationL151-L177验证三个 Mock 设备创建正确断言device_id、os与预期一致确认 Linux 服务器具备log_collection/database_operations能力、Windows 工作站具备excel_processing能力且三台设备状态均为CONNECTED。②test_device_capabilities_for_log_collection_scenarioL179-L207按os字段从设备池中筛选设备确认 Linux 设备恰为 2 台、Windows 设备恰为 1 台逐一校验 Linux 服务器拥有log_collection、file_operations、system_monitoring能力且metadata[log_paths]为非空列表校验 Windows 工作站拥有excel_processing、office_applications、report_generation能力。该测试体现了星座框架按能力匹配设备的基本思路。③test_mock_log_collection_from_linux_serversL209-L257异步模拟日志采集遍历每台 Linux 服务器的log_paths为每个日志文件构造包含log_path、lines_collected、size_bytes、last_modified、sample_entries的记录汇总到collected_logs字典。断言采集结果覆盖两台服务器且每个采集结果都包含device_id、hostname、collection_time与日志条目列表。④test_mock_excel_generation_on_windowsL259-L333模拟 Excel 报告生成基于预置的采集统计每台服务器的total_log_files、total_lines、total_size_mb、error/warning/info 计数构造excel_report对象含Summary、Server Details、Error Analysis三个 Sheet 与三张图表。断言报告由 Windows 工作站生成、文件名以.xlsx结尾、Sheet 与图表数量正确。⑤test_complete_log_collection_and_excel_workflowL335-L404端到端流程验证分四步①识别可用设备②模拟采集阶段每台服务器记录采集时长、数据量③数据聚合统计总服务器数、总日志文件数、总数据量、总耗时、成功采集数④在 Windows 上生成 Excel记录处理耗时、Sheet 数、图表数、处理行数、输出文件大小。最终断言聚合统计与报告生成结果均符合预期。4.2 进阶测试⑥test_device_metadata_validationL406-L429对设备池中每台设备校验基础元数据hostname、location、performance、状态为CONNECTED并按系统类型做差异化校验Linux 设备必须声明log_paths与servicesWindows 设备必须声明installed_software含 Microsoft Office 365与python_packages。⑦test_error_handling_scenariosL431-L480模拟部分失败让第一台 Linux 服务器采集成功、第二台因Connection timeout during log collection失败。验证系统能区分成功与失败结果各 1 台并支持带警告完成的降级报告completed_with_warnings报告中注明成功/失败服务器数量与说明。这正是星座编排中部分成功即降级输出容错语义的测试化表达。⑧test_device_formatting_for_promptL482-L524模拟设备信息如何格式化为 LLM Prompt将每台设备整理为Device ID / OS / Capabilities / Metadata(hostname、location、os_version、performance)结构拼装成 Available Devices 文本。断言格式化输出包含三台设备 ID 与关键能力词。该测试对应星座智能体把设备池注入 Prompt 供 LLM 决策的真实环节。⑨test_request_english_translationL526-L554记录需求翻译与实现一致性原始中文需求为mock 三个 AgentProfile 做测试两个 linux一个 windows然后在 tests 文件夹建立测试英文 request 是关于从两个 linux 服务器采集 log、在 windows 上生成 excel英文等价描述为 collecting logs from two Linux servers and generating an Excel report on Windows。测试通过断言 3 台 Mock 设备、2 台 Linux、1 台 Windows、场景为log_collection_and_excel_generation、测试位于 tests 文件夹来验证实现与需求一致。五、运行测试在仓库根目录执行README_log_collection_test.md 提供的命令# 运行文件内全部测试 python -m pytest tests/test_linux_log_collection_excel_generation.py -v # 运行单个测试用例 python -m pytest tests/test_linux_log_collection_excel_generation.py::TestLinuxLogCollectionExcelGeneration::test_mock_device_creation -v # 带详细输出的运行模式-s 显示 print python -m pytest tests/test_linux_log_collection_excel_generation.py -v -s前提条件仓库根目录的 requirements.txt 中已包含pytest与pytest-asyncio异步用例通过pytest.mark.asyncio标记测试本身不依赖真实 LLM、网络或设备可离线运行。六、测试结果与覆盖范围测试总数9 个执行结果全部通过 ✅参考执行耗时约 11 秒覆盖维度Mock 设备创建、能力校验、日志采集流程模拟、Excel 报告生成、端到端工作流、元数据校验、错误处理、LLM Prompt 格式化、需求翻译一致性七、作为模板的复用价值README 明确指出该测试可作模板用于以下场景结合源码可进一步归纳为四类复用模式跨平台自动化场景任意多系统协作流程如 Linux 采集 Windows 报表都可按设备池 → 分阶段模拟 → 断言的结构落地日志采集与分析工作流通过metadata[log_paths]声明日志源按文件粒度构造采集记录沉淀为通用的采集数据模型AgentProfile Mock 创建fixture 化设备对象L25-L149在无需真实注册流程的情况下复用AgentProfile全部字段与DeviceStatus状态星座设备管理与多设备任务协调验证用os、capabilities字段做设备筛选与能力匹配用聚合数据验证多设备协作的正确性并借助test_error_handling_scenarios验证故障降级路径。八、文件位置tests/ ├── test_linux_log_collection_excel_generation.py # 主测试文件9 个用例 └── README_log_collection_test.md # 本文档相关支撑代码galaxy/client/components/types.pyAgentProfile数据类与DeviceStatus枚举galaxy/client/components/device_registry.py设备注册表Mock 设备池的现实对应实现config/galaxy/devices.yaml真实设备池配置样例含 Linux 设备的logs_file_path、warning_log_pattern、error_log_pattern等日志相关元数据galaxy/README_ZH.md设备池配置与跨平台部署说明实战提示若要将该场景从 Mock 落地为真实运行需在 config/galaxy/devices.yaml 中注册设备device_id必须与客户端--client-id一致、server_url必须与服务器 WebSocket 地址一致并分别以--platform linux/--platform windows启动设备客户端Mock 测试则可在开发阶段替代这一整套环境快速验证编排与容错逻辑。【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考