51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
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")
|
|
}
|
|
}
|