const logger = require('./src/utils/logger'); const sequelize = require('./src/config/database'); const TelegramNotifier = require('./src/core/notifier'); async function testDatabaseConnection() { console.log('🔍 测试数据库连接...'); try { console.log('正在连接数据库...'); await sequelize.authenticate(); console.log('✅ 数据库连接成功'); // 测试查询 console.log('正在执行测试查询...'); const result = await sequelize.query('SELECT 1 as test'); console.log('✅ 数据库查询测试成功:', result[0]); // 测试模型 console.log('正在测试数据模型...'); const { Node, TestResult } = require('./src/models'); // 测试Node模型 const nodeCount = await Node.count(); console.log('✅ Node模型测试成功,当前节点数:', nodeCount); // 测试TestResult模型 const resultCount = await TestResult.count(); console.log('✅ TestResult模型测试成功,当前测试结果数:', resultCount); } catch (error) { console.error('❌ 数据库连接失败:', error.message); console.error('详细错误信息:', error); return false; } return true; } async function testTelegramNotification() { console.log('🔍 测试Telegram通知...'); try { const notifier = new TelegramNotifier(); if (!notifier.enabled) { console.log('⚠️ Telegram通知已禁用(配置不完整)'); return false; } // 测试连接 const testResult = await notifier.testConnection(); console.log('✅ Telegram连接测试成功:', testResult); // 发送测试消息 await notifier.sendSystemNotification( '🧪 连接测试', '这是一条测试消息,用于验证Telegram通知功能是否正常工作。\n\n发送时间: ' + new Date().toLocaleString('zh-CN'), { test: true, timestamp: new Date().toISOString() } ); console.log('✅ Telegram通知发送成功'); return true; } catch (error) { console.error('❌ Telegram通知测试失败:', error.message); console.error('详细错误信息:', error); return false; } } async function testSpeedTester() { console.log('🔍 测试测速功能...'); try { const SpeedTester = require('./src/core/speedTester'); const speedTester = new SpeedTester(); // 测试一个简单的TCP连接 const testResult = await speedTester.testTcpConnectivity('8.8.8.8', 53, 5000); console.log('✅ TCP连通性测试成功:', testResult); return true; } catch (error) { console.error('❌ 测速功能测试失败:', error.message); console.error('详细错误信息:', error); return false; } } async function main() { console.log('🚀 开始系统连接测试...\n'); const results = { database: await testDatabaseConnection(), telegram: await testTelegramNotification(), speedTester: await testSpeedTester() }; console.log('\n📊 测试结果汇总:'); console.log('数据库连接:', results.database ? '✅ 成功' : '❌ 失败'); console.log('Telegram通知:', results.telegram ? '✅ 成功' : '❌ 失败'); console.log('测速功能:', results.speedTester ? '✅ 成功' : '❌ 失败'); const allPassed = Object.values(results).every(result => result); console.log('\n🎯 总体结果:', allPassed ? '✅ 所有测试通过' : '❌ 部分测试失败'); if (!allPassed) { console.log('\n💡 建议:'); if (!results.database) { console.log('- 检查数据库配置和网络连接'); } if (!results.telegram) { console.log('- 检查Telegram Bot Token和Chat ID配置'); console.log('- 确保网络可以访问Telegram API'); } if (!results.speedTester) { console.log('- 检查测速相关依赖包是否正确安装'); } } process.exit(allPassed ? 0 : 1); } main().catch(error => { console.error('❌ 测试过程中发生错误:', error); process.exit(1); });