package config import ( "testing" "time" "github.com/spf13/viper" ) func TestNormalizeRunMode(t *testing.T) { tests := []struct { input string expected string }{ {"simple", "simple"}, {"SIMPLE", "simple"}, {"standard", "standard"}, {"invalid", "standard"}, {"", "standard"}, } for _, tt := range tests { result := NormalizeRunMode(tt.input) if result != tt.expected { t.Errorf("NormalizeRunMode(%q) = %q, want %q", tt.input, result, tt.expected) } } } func TestLoadDefaultSchedulingConfig(t *testing.T) { viper.Reset() cfg, err := Load() if err != nil { t.Fatalf("Load() error: %v", err) } if cfg.Gateway.Scheduling.StickySessionMaxWaiting != 3 { t.Fatalf("StickySessionMaxWaiting = %d, want 3", cfg.Gateway.Scheduling.StickySessionMaxWaiting) } if cfg.Gateway.Scheduling.StickySessionWaitTimeout != 45*time.Second { t.Fatalf("StickySessionWaitTimeout = %v, want 45s", cfg.Gateway.Scheduling.StickySessionWaitTimeout) } if cfg.Gateway.Scheduling.FallbackWaitTimeout != 30*time.Second { t.Fatalf("FallbackWaitTimeout = %v, want 30s", cfg.Gateway.Scheduling.FallbackWaitTimeout) } if cfg.Gateway.Scheduling.FallbackMaxWaiting != 100 { t.Fatalf("FallbackMaxWaiting = %d, want 100", cfg.Gateway.Scheduling.FallbackMaxWaiting) } if !cfg.Gateway.Scheduling.LoadBatchEnabled { t.Fatalf("LoadBatchEnabled = false, want true") } if cfg.Gateway.Scheduling.SlotCleanupInterval != 30*time.Second { t.Fatalf("SlotCleanupInterval = %v, want 30s", cfg.Gateway.Scheduling.SlotCleanupInterval) } } func TestLoadSchedulingConfigFromEnv(t *testing.T) { viper.Reset() t.Setenv("GATEWAY_SCHEDULING_STICKY_SESSION_MAX_WAITING", "5") cfg, err := Load() if err != nil { t.Fatalf("Load() error: %v", err) } if cfg.Gateway.Scheduling.StickySessionMaxWaiting != 5 { t.Fatalf("StickySessionMaxWaiting = %d, want 5", cfg.Gateway.Scheduling.StickySessionMaxWaiting) } }