test-subscription.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/usr/bin/env node
  2. require('dotenv').config();
  3. const SubscriptionManager = require('./src/core/subscriptionManager');
  4. const logger = require('./src/utils/logger');
  5. async function testSubscription() {
  6. console.log('🧪 测试订阅功能...\n');
  7. try {
  8. const subscriptionManager = new SubscriptionManager();
  9. console.log('📋 订阅配置信息:');
  10. console.log(` 订阅地址: ${subscriptionManager.subscriptionUrl}`);
  11. console.log(` 更新间隔: ${subscriptionManager.updateInterval / 1000}秒\n`);
  12. console.log('🔄 开始获取订阅配置...');
  13. const config = await subscriptionManager.fetchSubscription();
  14. console.log('✅ 订阅配置获取成功!');
  15. console.log(` 节点数量: ${config.proxies.length}`);
  16. console.log('\n📊 节点类型统计:');
  17. const typeStats = {};
  18. config.proxies.forEach(proxy => {
  19. typeStats[proxy.type] = (typeStats[proxy.type] || 0) + 1;
  20. });
  21. Object.entries(typeStats).forEach(([type, count]) => {
  22. console.log(` ${type}: ${count}个`);
  23. });
  24. console.log('\n🔍 前5个节点信息:');
  25. config.proxies.slice(0, 5).forEach((proxy, index) => {
  26. console.log(` ${index + 1}. ${proxy.name} (${proxy.type}) - ${proxy.server}:${proxy.port}`);
  27. });
  28. console.log('\n🔄 开始更新节点列表...');
  29. const result = await subscriptionManager.updateNodes();
  30. console.log('✅ 节点列表更新完成!');
  31. console.log(` 总节点数: ${result.updated}`);
  32. console.log(` 新增节点: ${result.added}`);
  33. console.log(` 更新节点: ${result.updated - result.added}`);
  34. console.log(` 移除节点: ${result.removed}`);
  35. console.log('\n🎉 订阅功能测试完成!');
  36. } catch (error) {
  37. console.error('❌ 订阅测试失败:', error.message);
  38. console.error(' 详细错误:', error);
  39. process.exit(1);
  40. }
  41. }
  42. // 如果直接运行此文件
  43. if (require.main === module) {
  44. testSubscription();
  45. }
  46. module.exports = { testSubscription };