refactor(*): 稳定期治理 - 收敛核心架构、错误语义并修复跨项目数据竞态

This commit is contained in:
ddCat
2026-09-09 22:02:10 +08:00
parent bacd502f5c
commit b5f3413ded
298 changed files with 12681 additions and 26428 deletions

View File

@@ -8,6 +8,8 @@ import (
"testing"
"time"
"errors"
"infinite-canvas/backend/internal/model"
)
@@ -141,3 +143,36 @@ func TestBackfillRejudgesLegacyNoneVideos(t *testing.T) {
t.Fatalf("fake mp4v 应转码失败落 failed,实际 %q", mp4v.PlaybackStatus)
}
}
type failingResourceSaver struct {
failTimes int
calls int
}
func (s *failingResourceSaver) SaveResource(*model.Resource) error {
s.calls++
if s.calls <= s.failTimes {
return errors.New("db busy")
}
return nil
}
func TestPersistPlaybackResourceRetriesThenSucceeds(t *testing.T) {
saver := &failingResourceSaver{failTimes: 2}
if err := persistPlaybackResource(saver, &model.Resource{ID: "r1"}, "test"); err != nil {
t.Fatal(err)
}
if saver.calls != playbackPersistAttempts {
t.Fatalf("calls = %d, want %d", saver.calls, playbackPersistAttempts)
}
}
func TestPersistPlaybackResourceReturnsAfterExhaustedRetries(t *testing.T) {
saver := &failingResourceSaver{failTimes: 10}
if err := persistPlaybackResource(saver, &model.Resource{ID: "r1"}, "test"); err == nil {
t.Fatal("expected persist error")
}
if saver.calls != playbackPersistAttempts {
t.Fatalf("calls = %d, want %d", saver.calls, playbackPersistAttempts)
}
}