test_speed.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "time"
  6. "clash-speed-test/internal/config"
  7. "clash-speed-test/internal/core"
  8. "clash-speed-test/internal/database"
  9. )
  10. func main() {
  11. fmt.Println("=== Clash 测速工具测试 ===")
  12. // 加载配置
  13. cfg, err := config.Load()
  14. if err != nil {
  15. log.Fatalf("加载配置失败: %v", err)
  16. }
  17. // 初始化测速器
  18. speedTester := core.NewSpeedTester(cfg)
  19. // 创建测试节点
  20. testNodes := []database.Node{
  21. {
  22. Name: "测试HTTP代理",
  23. Type: "http",
  24. Server: "127.0.0.1",
  25. Port: 7890,
  26. },
  27. {
  28. Name: "测试SOCKS5代理",
  29. Type: "socks5",
  30. Server: "127.0.0.1",
  31. Port: 7891,
  32. },
  33. }
  34. fmt.Printf("开始测试 %d 个节点...\n", len(testNodes))
  35. // 测试节点
  36. results := speedTester.TestNodes(testNodes)
  37. // 显示结果
  38. fmt.Println("\n=== 测试结果 ===")
  39. for i, result := range results {
  40. fmt.Printf("\n节点 %d: %s\n", i+1, testNodes[i].Name)
  41. fmt.Printf(" 类型: %s\n", testNodes[i].Type)
  42. fmt.Printf(" 地址: %s:%d\n", testNodes[i].Server, testNodes[i].Port)
  43. if result.IsSuccess {
  44. fmt.Printf(" 状态: ✅ 成功\n")
  45. if result.Latency != nil {
  46. fmt.Printf(" 延迟: %d ms\n", *result.Latency)
  47. }
  48. if result.DownloadSpeed != nil {
  49. fmt.Printf(" 下载速度: %.2f Mbps\n", float64(*result.DownloadSpeed))
  50. }
  51. if result.UploadSpeed != nil {
  52. fmt.Printf(" 上传速度: %.2f Mbps\n", float64(*result.UploadSpeed))
  53. }
  54. if result.IPAddress != "" {
  55. fmt.Printf(" IP地址: %s\n", result.IPAddress)
  56. }
  57. if result.Location != "" {
  58. fmt.Printf(" 位置: %s\n", result.Location)
  59. }
  60. } else {
  61. fmt.Printf(" 状态: ❌ 失败\n")
  62. if result.ErrorMessage != "" {
  63. fmt.Printf(" 错误: %s\n", result.ErrorMessage)
  64. }
  65. }
  66. if result.TestDuration != nil {
  67. fmt.Printf(" 测试耗时: %d ms\n", *result.TestDuration)
  68. }
  69. }
  70. fmt.Println("\n=== 测试完成 ===")
  71. fmt.Println("提示: 如果测试失败,请确保:")
  72. fmt.Println("1. Clash客户端正在运行")
  73. fmt.Println("2. 本地代理端口 (7890/7891) 可访问")
  74. fmt.Println("3. 网络连接正常")
  75. }