mmeb/run_tests.py
2025-09-01 11:24:01 +00:00

153 lines
4.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
运行系统测试 - 验证多模态检索系统功能
"""
import os
import sys
import logging
import traceback
from pathlib import Path
# 设置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
def test_imports():
"""测试关键模块导入"""
logger.info("🔍 测试模块导入...")
try:
import torch
logger.info(f"✅ PyTorch {torch.__version__}")
import transformers
logger.info(f"✅ Transformers {transformers.__version__}")
import numpy as np
logger.info(f"✅ NumPy {np.__version__}")
from PIL import Image
logger.info("✅ Pillow")
import flask
logger.info(f"✅ Flask {flask.__version__}")
try:
import pymochow
logger.info("✅ PyMochow (百度VDB SDK)")
return True
except ImportError:
logger.warning("⚠️ PyMochow 未安装")
return False
except Exception as e:
logger.error(f"❌ 模块导入失败: {str(e)}")
return False
def test_baidu_vdb_connection():
"""测试百度VDB连接"""
logger.info("🔗 测试百度VDB连接...")
try:
import pymochow
from pymochow.configuration import Configuration
from pymochow.auth.bce_credentials import BceCredentials
# 连接配置
account = "root"
api_key = "vdb$yjr9ln3n0td"
endpoint = "http://180.76.96.191:5287"
config = Configuration(
credentials=BceCredentials(account, api_key),
endpoint=endpoint
)
client = pymochow.MochowClient(config)
# 测试连接
databases = client.list_databases()
logger.info(f"✅ VDB连接成功发现 {len(databases)} 个数据库")
client.close()
return True
except Exception as e:
logger.error(f"❌ VDB连接失败: {str(e)}")
return False
def test_system_modules():
"""测试系统模块"""
logger.info("🔧 测试系统模块...")
try:
from multimodal_retrieval_vdb_only import MultimodalRetrievalVDBOnly
logger.info("✅ 多模态检索系统")
from baidu_vdb_production import BaiduVDBProduction
logger.info("✅ 百度VDB后端")
return True
except Exception as e:
logger.error(f"❌ 系统模块测试失败: {str(e)}")
return False
def create_directories():
"""创建必要目录"""
logger.info("📁 创建必要目录...")
directories = ["uploads", "sample_images", "text_data"]
for dir_name in directories:
dir_path = Path(dir_name)
dir_path.mkdir(exist_ok=True)
logger.info(f"✅ 目录: {dir_name}")
def main():
"""主测试函数"""
logger.info("🚀 开始系统测试...")
logger.info("=" * 50)
# 创建目录
create_directories()
# 运行测试
results = {}
results["imports"] = test_imports()
if results["imports"]:
results["vdb"] = test_baidu_vdb_connection()
results["modules"] = test_system_modules()
else:
logger.error("❌ 基础模块导入失败,跳过其他测试")
return False
# 输出结果
logger.info("\n" + "=" * 50)
logger.info("📊 测试结果:")
logger.info("=" * 50)
for test_name, result in results.items():
status = "✅ 通过" if result else "❌ 失败"
logger.info(f"{test_name}: {status}")
success_count = sum(results.values())
total_count = len(results)
success_rate = (success_count / total_count) * 100
logger.info(f"\n成功率: {success_count}/{total_count} ({success_rate:.1f}%)")
if success_rate >= 75:
logger.info("🎉 系统测试通过!")
return True
else:
logger.warning("⚠️ 系统存在问题")
return False
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)