package main import ( "testing" "time" ) func clearHLSRefreshForTest(user string) { cbHlsRefreshMu.Lock() delete(cbHlsRefreshAt, user) cbHlsRefreshMu.Unlock() } func TestFailedHLSRefreshCanRetryImmediately(t *testing.T) { const user = "failed-refresh-test" clearHLSRefreshForTest(user) t.Cleanup(func() { clearHLSRefreshForTest(user) }) startedAt, ok := beginHLSRefresh(user, 10*time.Second) if !ok { t.Fatal("expected first refresh reservation") } finishHLSRefresh(user, startedAt, false) if _, ok := beginHLSRefresh(user, 10*time.Second); !ok { t.Fatal("failed refresh must not throttle the next attempt") } } func TestSuccessfulHLSRefreshRemainsThrottled(t *testing.T) { const user = "successful-refresh-test" clearHLSRefreshForTest(user) t.Cleanup(func() { clearHLSRefreshForTest(user) }) startedAt, ok := beginHLSRefresh(user, 10*time.Second) if !ok { t.Fatal("expected first refresh reservation") } finishHLSRefresh(user, startedAt, true) if _, ok := beginHLSRefresh(user, 10*time.Second); ok { t.Fatal("successful refresh should throttle duplicate attempts") } }