mirror of
https://github.com/truewhile/MeBox.git
synced 2026-09-28 03:06:38 +08:00
61 lines
1.7 KiB
Go
61 lines
1.7 KiB
Go
package service
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"net/http/httptest"
|
|
"sync/atomic"
|
|
"testing"
|
|
|
|
"go.uber.org/zap"
|
|
|
|
"github.com/truewhile/MeBox/internal/model"
|
|
"github.com/truewhile/MeBox/internal/repository"
|
|
)
|
|
|
|
func TestSegmentPrewarmDefaultsOff(t *testing.T) {
|
|
repos := repository.New(newServiceTestDB(t, &model.Setting{}))
|
|
scheduler := NewSchedulerService(zap.NewNop(), repos, nil, nil, nil, nil, "")
|
|
if scheduler.segmentPrewarmEnabled(t.Context()) {
|
|
t.Fatal("prewarm must default to off")
|
|
}
|
|
}
|
|
|
|
func TestJobSegmentPrewarmSkippedWhenDisabled(t *testing.T) {
|
|
var calls int32
|
|
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, _ *http.Request) {
|
|
atomic.AddInt32(&calls, 1)
|
|
w.WriteHeader(http.StatusNotFound)
|
|
}))
|
|
t.Cleanup(server.Close)
|
|
|
|
repos := repository.New(newServiceTestDB(t))
|
|
if err := repos.DB.Create(&model.Media{
|
|
Base: model.Base{ID: "mv-1"}, Path: "/a.mkv", TMDbID: 1,
|
|
}).Error; err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
segments := NewMediaSegmentService(zap.NewNop(), repos).
|
|
SetIntroDB(NewIntroDBService(zap.NewNop()).SetBaseURL(server.URL)).
|
|
SetPrewarmGap(0)
|
|
scheduler := NewSchedulerService(zap.NewNop(), repos, nil, nil, nil, nil, "")
|
|
scheduler.SetSegments(segments)
|
|
|
|
if err := scheduler.jobSegmentPrewarm(t.Context()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := atomic.LoadInt32(&calls); got != 0 {
|
|
t.Fatalf("provider calls = %d, want 0 when prewarm is disabled", got)
|
|
}
|
|
|
|
if err := repos.Setting.Set(t.Context(), SegmentPrewarmEnabledKey, "true"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if err := scheduler.jobSegmentPrewarm(context.Background()); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if got := atomic.LoadInt32(&calls); got != 1 {
|
|
t.Fatalf("provider calls = %d, want 1 after enabling prewarm", got)
|
|
}
|
|
}
|