use text_video_agent_client::apis::configuration::Configuration; use text_video_agent_client::apis::{default_api, midjourney_api, llm_api, hedra20_api}; use std::time::Duration; #[tokio::main] async fn main() -> Result<(), Box> { // 创建支持 HTTPS 的客户端 let client = reqwest::Client::builder() .timeout(std::time::Duration::from_secs(30)) .build()?; // 创建配置 let config = Configuration { base_path: "https://bowongai-dev--text-video-agent-fastapi-app.modal.run".to_string(), user_agent: Some("text-video-agent-rust-client/1.0.6".to_string()), client, basic_auth: None, oauth_access_token: None, bearer_access_token: None, api_key: None, }; println!("🚀 文本视频智能体 API 综合测试"); println!("==============================="); println!("API 地址: {}", config.base_path); println!(); let mut test_results = Vec::new(); // 1. 基础连接测试 println!("🔗 1. 基础连接测试"); println!("------------------"); match default_api::root_get(&config).await { Ok(response) => { println!("✅ 根路径连接成功: {}", response); test_results.push(("根路径连接", true)); } Err(e) => { println!("❌ 根路径连接失败: {:?}", e); test_results.push(("根路径连接", false)); } } println!(); // 2. 健康检查测试 println!("🏥 2. 服务健康检查"); println!("------------------"); // Midjourney 健康检查 match midjourney_api::health_check_api_mj_health_get(&config).await { Ok(response) => { println!("✅ Midjourney 服务健康: {}", response); test_results.push(("Midjourney 健康检查", true)); } Err(e) => { println!("❌ Midjourney 服务异常: {:?}", e); test_results.push(("Midjourney 健康检查", false)); } } println!(); // 3. LLM 功能测试 println!("🧠 3. 大语言模型功能测试"); println!("------------------------"); // 获取支持的模型 match llm_api::llm_supported_models(&config).await { Ok(models) => { println!("✅ 获取模型列表成功: {}", models); test_results.push(("LLM 模型列表", true)); } Err(e) => { println!("❌ 获取模型列表失败: {:?}", e); test_results.push(("LLM 模型列表", false)); } } // 基础聊天测试 match llm_api::llm_chat( &config, "请用一句话介绍人工智能", None, Some(0.7), Some(100), Some(30.0), ).await { Ok(response) => { println!("✅ LLM 聊天成功: {}", response); test_results.push(("LLM 聊天", true)); } Err(e) => { println!("❌ LLM 聊天失败: {:?}", e); test_results.push(("LLM 聊天", false)); } } // Gemini 聊天测试 match llm_api::invoke_gemini_ai_api_llm_google_chat_post( &config, "Hello, how are you?", Some(30.0), ).await { Ok(response) => { println!("✅ Gemini 聊天成功: {}", response); test_results.push(("Gemini 聊天", true)); } Err(e) => { println!("❌ Gemini 聊天失败: {:?}", e); test_results.push(("Gemini 聊天", false)); } } println!(); // 4. 图像生成测试 println!("🎨 4. 图像生成功能测试"); println!("----------------------"); // 提示词检查 let test_prompt = "a beautiful landscape"; match midjourney_api::prompt_check_api_mj_prompt_check_get(&config, test_prompt).await { Ok(response) => { println!("✅ 提示词检查成功: {}", response); test_results.push(("提示词检查", true)); } Err(e) => { println!("❌ 提示词检查失败: {:?}", e); test_results.push(("提示词检查", false)); } } // 异步图像生成 match midjourney_api::async_gen_image_api_mj_async_generate_image_post( &config, "a simple test image, minimalist style", None, ).await { Ok(response) => { println!("✅ 异步图像生成任务提交成功: {}", response); test_results.push(("异步图像生成", true)); // 如果有任务ID,尝试查询状态 if let Some(task_id) = response.get("task_id").and_then(|v| v.as_str()) { tokio::time::sleep(Duration::from_secs(5)).await; match midjourney_api::async_query_status_api_mj_async_query_status_get( &config, task_id, ).await { Ok(status) => { println!("✅ 任务状态查询成功: {}", status); test_results.push(("任务状态查询", true)); } Err(e) => { println!("❌ 任务状态查询失败: {:?}", e); test_results.push(("任务状态查询", false)); } } } } Err(e) => { println!("❌ 异步图像生成失败: {:?}", e); test_results.push(("异步图像生成", false)); } } println!(); // 5. Hedra 功能测试 println!("💋 5. Hedra 唇形同步测试"); println!("------------------------"); // 注意:这里需要实际的图片和音频文件路径 // 由于是测试,我们只测试查询任务状态功能 match hedra20_api::query_task_status_api302_hedra_v2_task_status_get( &config, "test_task_id", // 测试任务ID ).await { Ok(response) => { println!("✅ Hedra 任务状态查询成功: {}", response); test_results.push(("Hedra 状态查询", true)); } Err(e) => { println!("❌ Hedra 任务状态查询失败: {:?}", e); test_results.push(("Hedra 状态查询", false)); } } println!(); // 6. 性能测试 println!("⚡ 6. 性能测试"); println!("-------------"); let start_time = std::time::Instant::now(); let mut successful_requests = 0; let total_requests = 5; for i in 1..=total_requests { match llm_api::llm_chat( &config, &format!("这是第{}个测试请求", i), None, Some(0.5), Some(50), Some(10.0), ).await { Ok(_) => { successful_requests += 1; print!("✅"); } Err(_) => { print!("❌"); } } std::io::Write::flush(&mut std::io::stdout()).unwrap(); tokio::time::sleep(Duration::from_millis(500)).await; } let elapsed = start_time.elapsed(); println!(); println!("📊 性能测试结果:"); println!(" - 总请求数: {}", total_requests); println!(" - 成功请求数: {}", successful_requests); println!(" - 成功率: {:.1}%", (successful_requests as f64 / total_requests as f64) * 100.0); println!(" - 总耗时: {:.2}秒", elapsed.as_secs_f64()); println!(" - 平均响应时间: {:.2}秒", elapsed.as_secs_f64() / total_requests as f64); test_results.push(("性能测试", successful_requests > total_requests / 2)); println!(); // 7. 测试结果汇总 println!("📋 7. 测试结果汇总"); println!("------------------"); let total_tests = test_results.len(); let passed_tests = test_results.iter().filter(|(_, passed)| *passed).count(); println!("测试项目详情:"); for (test_name, passed) in &test_results { let status = if *passed { "✅ 通过" } else { "❌ 失败" }; println!(" - {}: {}", test_name, status); } println!(); println!("总体结果:"); println!(" - 总测试数: {}", total_tests); println!(" - 通过测试数: {}", passed_tests); println!(" - 通过率: {:.1}%", (passed_tests as f64 / total_tests as f64) * 100.0); if passed_tests == total_tests { println!("🎉 所有测试通过!API 功能正常。"); } else if passed_tests > total_tests / 2 { println!("⚠️ 大部分测试通过,但有部分功能可能存在问题。"); } else { println!("🚨 多数测试失败,API 可能存在严重问题。"); } println!(); println!("🎯 综合测试完成!"); Ok(()) }