bootstrap_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. package bootstrap
  2. import (
  3. "fmt"
  4. "os"
  5. "path/filepath"
  6. "testing"
  7. )
  8. func TestInitializeApp(t *testing.T) {
  9. // 创建临时配置文件
  10. tempDir := t.TempDir()
  11. configPath := filepath.Join(tempDir, "config.toml")
  12. logDir := filepath.Join(tempDir, "logs")
  13. sqlDir := filepath.Join(tempDir, "sql")
  14. auditDBPath := filepath.Join(tempDir, "audit.db")
  15. storageDBPath := filepath.Join(tempDir, "storage.db")
  16. logDirConfig := filepath.ToSlash(logDir)
  17. sqlDirConfig := filepath.ToSlash(sqlDir)
  18. auditDBPathConfig := filepath.ToSlash(auditDBPath)
  19. storageDBPathConfig := filepath.ToSlash(storageDBPath)
  20. if err := os.MkdirAll(logDir, 0o755); err != nil {
  21. t.Fatalf("Failed to create log dir: %v", err)
  22. }
  23. if err := os.MkdirAll(sqlDir, 0o755); err != nil {
  24. t.Fatalf("Failed to create sql dir: %v", err)
  25. }
  26. // 创建测试配置
  27. testConfig := fmt.Sprintf(`
  28. [server]
  29. ip = "127.0.0.1"
  30. port = 8080
  31. [log]
  32. level = "info"
  33. development = false
  34. encoding = "json"
  35. output_paths = ["stdout"]
  36. log_dir = "%s"
  37. [audit]
  38. enabled = false
  39. database_path = "%s"
  40. retention_days = 90
  41. buffer_size = 1000
  42. [storage]
  43. type = "db"
  44. config_path = "%s"
  45. sql_base_dir = "%s"
  46. database_path = "%s"
  47. `, logDirConfig, auditDBPathConfig, filepath.ToSlash(configPath), sqlDirConfig, storageDBPathConfig)
  48. err := os.WriteFile(configPath, []byte(testConfig), 0644)
  49. if err != nil {
  50. t.Fatalf("Failed to create test config: %v", err)
  51. }
  52. // 测试初始化
  53. app, err := InitializeApp(configPath)
  54. if err != nil {
  55. t.Fatalf("InitializeApp failed: %v", err)
  56. }
  57. // 验证初始化结果
  58. if app.Config == nil {
  59. t.Error("Config should not be nil")
  60. }
  61. if app.Logger == nil {
  62. t.Error("Logger should not be nil")
  63. }
  64. if app.AuditLogger == nil {
  65. t.Error("AuditLogger should not be nil")
  66. }
  67. if app.StorageManager == nil {
  68. t.Error("StorageManager should not be nil")
  69. }
  70. if app.TaskManager == nil {
  71. t.Error("TaskManager should not be nil")
  72. }
  73. if app.ConnectionPool == nil {
  74. t.Error("ConnectionPool should not be nil")
  75. }
  76. if app.Context == nil {
  77. t.Error("Context should not be nil")
  78. }
  79. if app.Cancel == nil {
  80. t.Error("Cancel should not be nil")
  81. }
  82. // 测试关闭
  83. err = app.Shutdown()
  84. if err != nil {
  85. t.Errorf("Shutdown failed: %v", err)
  86. }
  87. }
  88. func TestLoadConfig(t *testing.T) {
  89. // 创建临时配置文件
  90. tempDir := t.TempDir()
  91. configPath := filepath.Join(tempDir, "config.toml")
  92. testConfig := `
  93. [server]
  94. ip = "127.0.0.1"
  95. port = 8080
  96. [log]
  97. level = "debug"
  98. [storage]
  99. type = "db"
  100. `
  101. err := os.WriteFile(configPath, []byte(testConfig), 0644)
  102. if err != nil {
  103. t.Fatalf("Failed to create test config: %v", err)
  104. }
  105. cfg, err := loadConfig(configPath)
  106. if err != nil {
  107. t.Fatalf("loadConfig failed: %v", err)
  108. }
  109. if cfg.Server.Port != 8080 {
  110. t.Errorf("Expected port 8080, got %d", cfg.Server.Port)
  111. }
  112. if cfg.Log.Level != "debug" {
  113. t.Errorf("Expected log level 'debug', got '%s'", cfg.Log.Level)
  114. }
  115. if cfg.Storage.Type != "db" {
  116. t.Errorf("Expected storage type 'db', got '%s'", cfg.Storage.Type)
  117. }
  118. }