Files
xiaozhi-esp32-server/main/xiaozhi-server/performance_tester.py
T

70 lines
2.1 KiB
Python
Raw Normal View History

2025-08-14 10:01:43 +08:00
import os
import importlib.util
import asyncio
2025-08-16 10:09:36 +08:00
print("使用前请根据doc/performance_testerer.md的说明准备配置。")
def list_performance_tester_modules():
performance_tester_dir = os.path.join(
os.path.dirname(__file__), "performance_tester"
)
2025-08-14 10:01:43 +08:00
modules = []
2025-08-16 10:09:36 +08:00
for file in os.listdir(performance_tester_dir):
2025-08-14 10:01:43 +08:00
if file.endswith(".py"):
modules.append(file[:-3])
return modules
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
async def load_and_execute_module(module_name):
2025-08-16 10:09:36 +08:00
module_path = os.path.join(
os.path.dirname(__file__), "performance_tester", f"{module_name}.py"
)
2025-08-14 10:01:43 +08:00
spec = importlib.util.spec_from_file_location(module_name, module_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
if hasattr(module, "main"):
main_func = module.main
if asyncio.iscoroutinefunction(main_func):
await main_func()
else:
main_func()
else:
print(f"模块 {module_name} 中没有找到 main 函数。")
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
def get_module_description(module_name):
2025-08-16 10:09:36 +08:00
module_path = os.path.join(
os.path.dirname(__file__), "performance_tester", f"{module_name}.py"
)
2025-08-14 10:01:43 +08:00
spec = importlib.util.spec_from_file_location(module_name, module_path)
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return getattr(module, "description", "暂无描述")
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
def main():
2025-08-16 10:09:36 +08:00
modules = list_performance_tester_modules()
2025-08-14 10:01:43 +08:00
if not modules:
2025-08-16 10:09:36 +08:00
print("performance_tester 目录中没有可用的性能测试工具。")
2025-08-14 10:01:43 +08:00
return
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
print("可用的性能测试工具:")
for idx, module in enumerate(modules, 1):
description = get_module_description(module)
print(f"{idx}. {module} - {description}")
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
try:
choice = int(input("请选择要调用的性能测试工具编号:")) - 1
if 0 <= choice < len(modules):
asyncio.run(load_and_execute_module(modules[choice]))
else:
print("无效的选择。")
except ValueError:
print("请输入有效的数字。")
2025-08-16 10:09:36 +08:00
2025-08-14 10:01:43 +08:00
if __name__ == "__main__":
main()