111 lines
4.6 KiB
Go
111 lines
4.6 KiB
Go
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")
|
|
}
|
|
}
|