Three bugs fixed:
1. Test suite timeout: add Client.RetryBaseDelayMs/RetryMaxDelayMs config
fields (env CLIENT_RETRY_BASE_DELAY_MS/CLIENT_RETRY_MAX_DELAY_MS,
defaults 500ms/10s). Tests override to 10ms so retry exhaustion
completes in ms instead of ~25s per request. Suite runs in ~35s.
2. effectiveCircuitBackoff float overflow: on amd64, float64(+Inf) cast
to int64 gives MinInt64 not MaxInt64, so the < base guard fired and
returned base instead of the 24h sanity ceiling. Fix: check
math.IsInf/math.IsNaN before the cast.
3. TestStartHTTPProxy_ErrorHandlerConfigured bypassed the TestSuite
retry-delay override; now sets/restores the fields explicitly.
Co-authored-by: lukaszraczylo <[email protected]>
Three bugs fixed:
1. **Test suite timeout** — The main-package test suite timed out at 120s
because each failing request triggered 7 retries with exponential
backoff (500ms base → 10s max ≈ 25.5s per request). Tests that trip
the circuit breaker (3 requests × 25.5s = 76.5s) plus
TestStartHTTPProxy_ErrorHandlerConfigured (another 25.5s) pushed
cumulative time past the limit.
Fix: add `Client.RetryBaseDelayMs` / `Client.RetryMaxDelayMs` config
fields (env: CLIENT_RETRY_BASE_DELAY_MS / CLIENT_RETRY_MAX_DELAY_MS,
defaults 500ms / 10000ms). Tests override these to 10ms so retry
exhaustion completes in milliseconds. Full suite now runs in ~35s.
2. **effectiveCircuitBackoff float overflow** — On amd64, converting
`+Inf` (float64) to `time.Duration` (int64) saturates to MinInt64,
not MaxInt64. The existing "< base" guard then returned `base` instead
of `maxSaneCircuitBackoff`, breaking the sanity ceiling for an uncapped
config with a high trip count. Fix: detect `math.IsInf / math.IsNaN`
before the cast and return the ceiling directly.
3. **TestStartHTTPProxy_ErrorHandlerConfigured** — standalone top-level
test calling parseConfig() directly, bypassing the TestSuite override.
Now sets and restores RetryBaseDelayMs/RetryMaxDelayMs explicitly.
Co-authored-by: lukaszraczylo <[email protected]>