| package util |
|
|
| import ( |
| "testing" |
| "time" |
| ) |
|
|
| func TestEnvSecondsFrom(t *testing.T) { |
| t.Parallel() |
|
|
| getenv := func(k string) string { |
| switch k { |
| case "OK": |
| return "12" |
| case "BAD": |
| return "x" |
| case "ZERO": |
| return "0" |
| case "NEG": |
| return "-1" |
| default: |
| return "" |
| } |
| } |
|
|
| if got := envSecondsFrom(getenv, "MISSING"); got != 0 { |
| t.Fatalf("missing: got %v, want 0", got) |
| } |
| if got := envSecondsFrom(getenv, "BAD"); got != 0 { |
| t.Fatalf("bad: got %v, want 0", got) |
| } |
| if got := envSecondsFrom(getenv, "ZERO"); got != 0 { |
| t.Fatalf("zero: got %v, want 0", got) |
| } |
| if got := envSecondsFrom(getenv, "NEG"); got != 0 { |
| t.Fatalf("neg: got %v, want 0", got) |
| } |
| if got := envSecondsFrom(getenv, "OK"); got != 12*time.Second { |
| t.Fatalf("ok: got %v, want %v", got, 12*time.Second) |
| } |
| } |
|
|
| func TestApplyCooldownEnvOverrides(t *testing.T) { |
| origAuth := AuthErrorInitialCooldown |
| origTimeout := TimeoutErrorCooldown |
| origServer := ServerErrorInitialCooldown |
| origRateLimit := RateLimitErrorCooldown |
| origMax := MaxCooldownDuration |
| origMin := MinCooldownDuration |
| t.Cleanup(func() { |
| AuthErrorInitialCooldown = origAuth |
| TimeoutErrorCooldown = origTimeout |
| ServerErrorInitialCooldown = origServer |
| RateLimitErrorCooldown = origRateLimit |
| MaxCooldownDuration = origMax |
| MinCooldownDuration = origMin |
| }) |
|
|
| |
| AuthErrorInitialCooldown = 5 * time.Minute |
| TimeoutErrorCooldown = 1 * time.Minute |
| ServerErrorInitialCooldown = 2 * time.Minute |
| RateLimitErrorCooldown = 1 * time.Minute |
| MaxCooldownDuration = 30 * time.Minute |
| MinCooldownDuration = 10 * time.Second |
|
|
| getenv := func(k string) string { |
| switch k { |
| case "CCLOAD_COOLDOWN_AUTH_SEC": |
| return "7" |
| case "CCLOAD_COOLDOWN_TIMEOUT_SEC": |
| return "" |
| case "CCLOAD_COOLDOWN_SERVER_SEC": |
| return "9" |
| case "CCLOAD_COOLDOWN_RATE_LIMIT_SEC": |
| return "x" |
| case "CCLOAD_COOLDOWN_MAX_SEC": |
| return "1800" |
| case "CCLOAD_COOLDOWN_MIN_SEC": |
| return "11" |
| default: |
| return "" |
| } |
| } |
|
|
| applyCooldownEnvOverrides(getenv) |
|
|
| if AuthErrorInitialCooldown != 7*time.Second { |
| t.Fatalf("AuthErrorInitialCooldown=%v, want %v", AuthErrorInitialCooldown, 7*time.Second) |
| } |
| if TimeoutErrorCooldown != 1*time.Minute { |
| t.Fatalf("TimeoutErrorCooldown=%v, want unchanged %v", TimeoutErrorCooldown, 1*time.Minute) |
| } |
| if ServerErrorInitialCooldown != 9*time.Second { |
| t.Fatalf("ServerErrorInitialCooldown=%v, want %v", ServerErrorInitialCooldown, 9*time.Second) |
| } |
| if RateLimitErrorCooldown != 1*time.Minute { |
| t.Fatalf("RateLimitErrorCooldown=%v, want unchanged %v", RateLimitErrorCooldown, 1*time.Minute) |
| } |
| if MaxCooldownDuration != 1800*time.Second { |
| t.Fatalf("MaxCooldownDuration=%v, want %v", MaxCooldownDuration, 1800*time.Second) |
| } |
| if MinCooldownDuration != 11*time.Second { |
| t.Fatalf("MinCooldownDuration=%v, want %v", MinCooldownDuration, 11*time.Second) |
| } |
| } |
|
|