test_connection.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. const logger = require('./src/utils/logger');
  2. const sequelize = require('./src/config/database');
  3. const TelegramNotifier = require('./src/core/notifier');
  4. async function testDatabaseConnection() {
  5. console.log('🔍 测试数据库连接...');
  6. try {
  7. console.log('正在连接数据库...');
  8. await sequelize.authenticate();
  9. console.log('✅ 数据库连接成功');
  10. // 测试查询
  11. console.log('正在执行测试查询...');
  12. const result = await sequelize.query('SELECT 1 as test');
  13. console.log('✅ 数据库查询测试成功:', result[0]);
  14. // 测试模型
  15. console.log('正在测试数据模型...');
  16. const { Node, TestResult } = require('./src/models');
  17. // 测试Node模型
  18. const nodeCount = await Node.count();
  19. console.log('✅ Node模型测试成功,当前节点数:', nodeCount);
  20. // 测试TestResult模型
  21. const resultCount = await TestResult.count();
  22. console.log('✅ TestResult模型测试成功,当前测试结果数:', resultCount);
  23. } catch (error) {
  24. console.error('❌ 数据库连接失败:', error.message);
  25. console.error('详细错误信息:', error);
  26. return false;
  27. }
  28. return true;
  29. }
  30. async function testTelegramNotification() {
  31. console.log('🔍 测试Telegram通知...');
  32. try {
  33. const notifier = new TelegramNotifier();
  34. if (!notifier.enabled) {
  35. console.log('⚠️ Telegram通知已禁用(配置不完整)');
  36. return false;
  37. }
  38. // 测试连接
  39. const testResult = await notifier.testConnection();
  40. console.log('✅ Telegram连接测试成功:', testResult);
  41. // 发送测试消息
  42. await notifier.sendSystemNotification(
  43. '🧪 连接测试',
  44. '这是一条测试消息,用于验证Telegram通知功能是否正常工作。\n\n发送时间: ' + new Date().toLocaleString('zh-CN'),
  45. { test: true, timestamp: new Date().toISOString() }
  46. );
  47. console.log('✅ Telegram通知发送成功');
  48. return true;
  49. } catch (error) {
  50. console.error('❌ Telegram通知测试失败:', error.message);
  51. console.error('详细错误信息:', error);
  52. return false;
  53. }
  54. }
  55. async function testSpeedTester() {
  56. console.log('🔍 测试测速功能...');
  57. try {
  58. const SpeedTester = require('./src/core/speedTester');
  59. const speedTester = new SpeedTester();
  60. // 测试一个简单的TCP连接
  61. const testResult = await speedTester.testTcpConnectivity('8.8.8.8', 53, 5000);
  62. console.log('✅ TCP连通性测试成功:', testResult);
  63. return true;
  64. } catch (error) {
  65. console.error('❌ 测速功能测试失败:', error.message);
  66. console.error('详细错误信息:', error);
  67. return false;
  68. }
  69. }
  70. async function main() {
  71. console.log('🚀 开始系统连接测试...\n');
  72. const results = {
  73. database: await testDatabaseConnection(),
  74. telegram: await testTelegramNotification(),
  75. speedTester: await testSpeedTester()
  76. };
  77. console.log('\n📊 测试结果汇总:');
  78. console.log('数据库连接:', results.database ? '✅ 成功' : '❌ 失败');
  79. console.log('Telegram通知:', results.telegram ? '✅ 成功' : '❌ 失败');
  80. console.log('测速功能:', results.speedTester ? '✅ 成功' : '❌ 失败');
  81. const allPassed = Object.values(results).every(result => result);
  82. console.log('\n🎯 总体结果:', allPassed ? '✅ 所有测试通过' : '❌ 部分测试失败');
  83. if (!allPassed) {
  84. console.log('\n💡 建议:');
  85. if (!results.database) {
  86. console.log('- 检查数据库配置和网络连接');
  87. }
  88. if (!results.telegram) {
  89. console.log('- 检查Telegram Bot Token和Chat ID配置');
  90. console.log('- 确保网络可以访问Telegram API');
  91. }
  92. if (!results.speedTester) {
  93. console.log('- 检查测速相关依赖包是否正确安装');
  94. }
  95. }
  96. process.exit(allPassed ? 0 : 1);
  97. }
  98. main().catch(error => {
  99. console.error('❌ 测试过程中发生错误:', error);
  100. process.exit(1);
  101. });