mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-09-06 04:16:36 +00:00
Slow tests were dominating CI feedback time and AI dev loop because they waited through real exponential backoffs and 1s ticker intervals. Test-only override pattern keeps production behavior 100% identical. Speed wins (no-race wall-clock per package): - internal/vault 16.3s -> 0.6s (-15.7s) - internal/cron 11.7s -> 1.5s (-10.2s) - internal/channels/facebook 6.3s -> 3.0s (-3.3s) - Full -race ./... suite 90s+ -> 51s Changes: - vault: new fastBackoffsForTest(t) helper overrides enrichRetryBackoffs + enrichRetryTimeouts to 1ms in 3 retry tests; drop 2 duplicate tests (FirstAttemptSuccess, MaxRetriesConstant) - cron: extract runLoopTickInterval as package var (default 1s); test-only setFastTick(t) helper shortens to 20ms so 6 scheduler tests no longer sleep 1.5s each waiting for a tick - facebook: extract graphBackoffBase as package var (default 1s); newFakeGraph helper shortens to 1ms so HTTP retry tests don't burn 6s of real waits Coverage ratchet removed: - Delete scripts/check_coverage.go + scripts/coverage_thresholds.json - Remove "Coverage ratchet gate" CI step - Keep coverage profile + go tool cover summary as informational only - Philosophy: signal over coverage %. Forced tests to bump % were the root cause of the slowness this commit unwinds. Production behavior unchanged. Coverage profile shows isolated package coverage matches prior thresholds (vault 27.4%, cron 73.7%, facebook 81.9%).
22 lines
661 B
Go
22 lines
661 B
Go
package cron
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// setFastTick overrides runLoopTickInterval to 20ms for the duration of the
|
|
// test, so scheduler tests don't wait 1.5s per assertion to observe a tick.
|
|
//
|
|
// Production behavior is 100% unchanged — only the test sees the fast value.
|
|
// Original value is restored via t.Cleanup.
|
|
//
|
|
// Call this BEFORE cs.Start() — runLoop captures the var when it constructs
|
|
// the ticker, so changing it after Start() has no effect on the running loop.
|
|
func setFastTick(t *testing.T) {
|
|
t.Helper()
|
|
saved := runLoopTickInterval
|
|
runLoopTickInterval = 20 * time.Millisecond
|
|
t.Cleanup(func() { runLoopTickInterval = saved })
|
|
}
|