Files
MeBox/internal/service/scheduler_segment_jobs_test.go
T
truewhile e273b5e87d 优化
2026-09-24 11:43:17 +08:00

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)
}
}