Playlist-level retry configuration
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"mxl-player/internal/playback"
|
||||
)
|
||||
|
||||
func TestAppArgsPlaybackConfig(t *testing.T) {
|
||||
tests := []struct {
|
||||
@@ -139,3 +144,42 @@ func TestAppArgsPlaybackConfig(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveRetryPolicy(t *testing.T) {
|
||||
cli := playback.RetryPolicy{
|
||||
MaxAttempts: 0, InitialDelay: time.Second, MaxDelay: 5 * time.Second,
|
||||
}
|
||||
fileRetry := playback.RetryPolicy{
|
||||
MaxAttempts: 4, InitialDelay: 250 * time.Millisecond, MaxDelay: 2 * time.Second,
|
||||
}
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
playlist playback.Playlist
|
||||
cliMaxAttemptsSet bool
|
||||
want playback.RetryPolicy
|
||||
}{
|
||||
{name: "no playlist retry uses CLI", want: cli},
|
||||
{
|
||||
name: "playlist retry is used by default",
|
||||
playlist: playback.Playlist{Retry: &fileRetry},
|
||||
want: fileRetry,
|
||||
},
|
||||
{
|
||||
name: "explicit CLI infinite overrides playlist attempts",
|
||||
playlist: playback.Playlist{Retry: &fileRetry},
|
||||
cliMaxAttemptsSet: true,
|
||||
want: playback.RetryPolicy{
|
||||
MaxAttempts: 0, InitialDelay: fileRetry.InitialDelay, MaxDelay: fileRetry.MaxDelay,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
if got := resolveRetryPolicy(cli, test.cliMaxAttemptsSet, test.playlist); got != test.want {
|
||||
t.Fatalf("resolveRetryPolicy() = %#v, want %#v", got, test.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user