test(app): 测试库 - 改用 WAL 文件库,消除共享缓存内存库的表级锁 flake (#562)
Original-Commit: 25931635266ca01843691e87d631b6f2db178e52 test(app): 测试库 - 改用 WAL 文件库,消除共享缓存内存库的表级锁 flake 两处用例夹具用 sqlite 的 `file:…?mode=memory&cache=shared`(表级锁,且不受 _busy_timeout 约束),而它们都会触发后台删除 outbox(go s.drainResourceDeletionJobs),并发时偶发 `database table is locked`(本地并发读写 400 次撞到 70+ 次)。 新增 newSQLiteTestDB(t):文件库 + WAL + busy_timeout=5000,WAL 允许"一写多读"、写冲突退化成 SQLITE_BUSY 并由 busy_timeout 重试;库文件放 os.MkdirTemp(不用 t.TempDir,避免 outbox 仍在写 时清理报 directory not empty)。两处夹具改用它,并新增一条属性用例守住这个选型。
This commit is contained in:
1 parent
c4172295c3
commit
6c55ba0991
3 files changed
+102
-10
No files matched your search
@@ -10,7 +10,6 @@ import (
|
||||
"infinite-canvas/backend/internal/model"
|
||||
"infinite-canvas/backend/internal/repository"
|
||||
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@@ -162,10 +161,7 @@ func TestDeleteAdminResourcesRejectsNonAdminAndOversizedBatch(t *testing.T) {
|
||||
|
||||
func newAdminStorageDeleteTestService(t *testing.T) (*Service, *gorm.DB, string, *model.User) {
|
||||
t.Helper()
|
||||
db, err := gorm.Open(sqlite.Open("file:"+newID()+"?mode=memory&cache=shared"), &gorm.Config{})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
db := newSQLiteTestDB(t)
|
||||
if err := database.MigrateSchema(db); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user