import sys import asyncio sys.path.append('app') from core.process_monitor import process_monitor async def status_callback(event_type: str, software_id: str, data: dict): """状态变化回调函数""" print(f"📡 事件通知: {event_type} - {software_id}") print(f" 数据: {data}") async def test_process_monitor(): print("=== 测试进程监控器 ===") # 添加回调函数 process_monitor.add_callback(status_callback) # 测试系统信息获取 print("\n1. 测试系统信息获取:") try: system_info = await process_monitor.get_system_info() print(f"✅ 系统信息获取成功:") print(f" - CPU使用率: {system_info['cpu']['percent']}%") print(f" - 内存使用率: {system_info['memory']['percent']}%") print(f" - 磁盘使用率: {system_info['disk']['percent']:.1f}%") except Exception as e: print(f"❌ 系统信息获取失败: {e}") # 测试查找软件进程 print("\n2. 测试查找软件进程:") try: software_processes = await process_monitor.find_software_processes() print(f"✅ 软件进程查找完成:") for software_id, processes in software_processes.items(): print(f" - {software_id}: 找到 {len(processes)} 个进程") for proc in processes: print(f" PID: {proc['pid']}, 名称: {proc['name']}") except Exception as e: print(f"❌ 软件进程查找失败: {e}") # 如果找到了creo进程,添加到监控 if 'creo' in software_processes and software_processes['creo']: print("\n3. 测试添加进程监控:") try: creo_process = software_processes['creo'][0] process_monitor.add_process('creo', creo_process['pid']) print(f"✅ 已添加Creo进程到监控: PID {creo_process['pid']}") # 等待一段时间观察监控效果 print(" 监控中,等待10秒...") await asyncio.sleep(10) # 获取进程信息 process_info = process_monitor.get_process_info('creo') if process_info: print(f" - 进程状态: {process_info.status}") print(f" - CPU使用率: {process_info.cpu_percent}%") print(f" - 内存使用率: {process_info.memory_percent}%") print(f" - 运行时间: {(process_info.last_check - process_info.start_time).total_seconds():.1f}秒") except Exception as e: print(f"❌ 进程监控测试失败: {e}") else: print("\n3. 未找到Creo进程,跳过监控测试") # 停止监控 print("\n4. 停止监控:") try: await process_monitor.stop_monitoring() print("✅ 监控已停止") except Exception as e: print(f"❌ 停止监控失败: {e}") print("\n=== 进程监控器测试完成 ===") if __name__ == "__main__": asyncio.run(test_process_monitor())