package config import ( "testing" "time" ) func TestLoadPrefersChatappKeys(t *testing.T) { t.Setenv("CHATAPP_STORE_MYSQL_DSN", "chatapp-mysql") t.Setenv("CRON_MYSQL_DSN", "legacy-mysql") t.Setenv("CHATAPP_STORE_REDIS_ADDR", "chatapp-redis") t.Setenv("CHATAPP_STORE_REDIS_PASSWORD", "chatapp-password") t.Setenv("CHATAPP_STORE_REDIS_DB", "5") t.Setenv("CHATAPP_JAVA_OTHER_BASE_URL", "http://chatapp-java") t.Setenv("CHATAPP_WEEK_STAR_DEFAULT_SYS_ORIGIN", "likei") t.Setenv("CHATAPP_WEEK_STAR_TIMEZONE", "Asia/Shanghai") t.Setenv("CHATAPP_WEEK_STAR_SETTLE_INTERVAL_SECONDS", "120") t.Setenv("CHATAPP_WEEK_STAR_RETRY_STREAM_KEY", "chatapp-stream") t.Setenv("CHATAPP_WEEK_STAR_RETRY_CONSUMER_GROUP", "chatapp-group") t.Setenv("CHATAPP_WEEK_STAR_RETRY_CONSUMER_NAME", "chatapp-consumer") t.Setenv("CHATAPP_WEEK_STAR_RETRY_BATCH_SIZE", "11") t.Setenv("CHATAPP_WEEK_STAR_RETRY_BLOCK_MILLIS", "2500") t.Setenv("CHATAPP_WEEK_STAR_RETRY_MIN_IDLE_MILLIS", "4500") t.Setenv("CHATAPP_HTTP_TIMEOUT_SECONDS", "9") t.Setenv("CHATAPP_HTTP_SHUTDOWN_TIMEOUT_SECONDS", "19") t.Setenv("CHATAPP_AUTO_MIGRATE", "true") cfg := Load() if cfg.MySQLDSN != "chatapp-mysql" { t.Fatalf("expected chatapp mysql dsn, got %q", cfg.MySQLDSN) } if cfg.RedisAddr != "chatapp-redis" || cfg.RedisPassword != "chatapp-password" || cfg.RedisDB != 5 { t.Fatalf("unexpected redis config: %+v", cfg) } if cfg.JavaOtherBaseURL != "http://chatapp-java" { t.Fatalf("expected chatapp java base url, got %q", cfg.JavaOtherBaseURL) } if cfg.WeekStarDefaultSysOrigin != "LIKEI" { t.Fatalf("expected normalized sys origin LIKEI, got %q", cfg.WeekStarDefaultSysOrigin) } if cfg.WeekStarTimezone != "Asia/Shanghai" { t.Fatalf("expected chatapp timezone, got %q", cfg.WeekStarTimezone) } if cfg.WeekStarSettleInterval != 120*time.Second { t.Fatalf("expected settle interval 120s, got %s", cfg.WeekStarSettleInterval) } if cfg.WeekStarRetryStreamKey != "chatapp-stream" || cfg.WeekStarRetryConsumerGroup != "chatapp-group" || cfg.WeekStarRetryConsumerName != "chatapp-consumer" { t.Fatalf("unexpected retry consumer config: %+v", cfg) } if cfg.WeekStarRetryBatchSize != 11 || cfg.WeekStarRetryBlock != 2500*time.Millisecond || cfg.WeekStarRetryMinIdle != 4500*time.Millisecond { t.Fatalf("unexpected retry timing config: %+v", cfg) } if cfg.Timeout != 9*time.Second || cfg.ShutdownTimeout != 19*time.Second { t.Fatalf("unexpected http timeout config: %+v", cfg) } if !cfg.AutoMigrate { t.Fatalf("expected auto migrate to be true") } } func TestLoadFallsBackToLegacyKeys(t *testing.T) { t.Setenv("CRON_MYSQL_DSN", "legacy-mysql") t.Setenv("CRON_REDIS_ADDR", "legacy-redis") t.Setenv("CRON_REDIS_PASSWORD", "legacy-password") t.Setenv("CRON_REDIS_DB", "3") t.Setenv("CRON_JAVA_OTHER_BASE_URL", "http://legacy-java") t.Setenv("WEEK_STAR_DEFAULT_SYS_ORIGIN", "tarab") t.Setenv("WEEK_STAR_TIMEZONE", "Asia/Riyadh") t.Setenv("WEEK_STAR_SETTLE_INTERVAL_SECONDS", "66") t.Setenv("WEEK_STAR_RETRY_STREAM_KEY", "legacy-stream") t.Setenv("WEEK_STAR_RETRY_CONSUMER_GROUP", "legacy-group") t.Setenv("WEEK_STAR_RETRY_CONSUMER_NAME", "legacy-consumer") t.Setenv("WEEK_STAR_RETRY_BATCH_SIZE", "7") t.Setenv("WEEK_STAR_RETRY_BLOCK_MILLIS", "1700") t.Setenv("WEEK_STAR_RETRY_MIN_IDLE_MILLIS", "2700") t.Setenv("CRON_HTTP_TIMEOUT_SECONDS", "4") t.Setenv("CRON_SHUTDOWN_TIMEOUT_SECONDS", "14") t.Setenv("CRON_AUTO_MIGRATE", "true") cfg := Load() if cfg.MySQLDSN != "legacy-mysql" { t.Fatalf("expected legacy mysql dsn, got %q", cfg.MySQLDSN) } if cfg.RedisAddr != "legacy-redis" || cfg.RedisPassword != "legacy-password" || cfg.RedisDB != 3 { t.Fatalf("unexpected redis config: %+v", cfg) } if cfg.JavaOtherBaseURL != "http://legacy-java" { t.Fatalf("expected legacy java base url, got %q", cfg.JavaOtherBaseURL) } if cfg.WeekStarDefaultSysOrigin != "TARAB" { t.Fatalf("expected normalized sys origin TARAB, got %q", cfg.WeekStarDefaultSysOrigin) } if cfg.WeekStarSettleInterval != 66*time.Second { t.Fatalf("expected settle interval 66s, got %s", cfg.WeekStarSettleInterval) } if cfg.WeekStarRetryStreamKey != "legacy-stream" || cfg.WeekStarRetryConsumerGroup != "legacy-group" || cfg.WeekStarRetryConsumerName != "legacy-consumer" { t.Fatalf("unexpected retry consumer config: %+v", cfg) } if cfg.WeekStarRetryBatchSize != 7 || cfg.WeekStarRetryBlock != 1700*time.Millisecond || cfg.WeekStarRetryMinIdle != 2700*time.Millisecond { t.Fatalf("unexpected retry timing config: %+v", cfg) } if cfg.Timeout != 4*time.Second || cfg.ShutdownTimeout != 14*time.Second { t.Fatalf("unexpected http timeout config: %+v", cfg) } if !cfg.AutoMigrate { t.Fatalf("expected auto migrate to be true") } }