Skip to content

Commit 2f0f92e

Browse files
author
Dev Agent
committed
Add tests
1 parent 24db312 commit 2f0f92e

File tree

4 files changed

+368
-0
lines changed

4 files changed

+368
-0
lines changed

_mocks/opencsg.com/csghub-server/component/mock_LfsComponent.go

Lines changed: 175 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

builder/store/database/lfs_meta_object_test.go

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,3 +84,101 @@ func TestLfsMetaStore_CRUD(t *testing.T) {
8484
require.NotNil(t, err)
8585

8686
}
87+
88+
func TestLfsMetaStore_UpdateXnetUsed(t *testing.T) {
89+
db := tests.InitTestDB()
90+
defer db.Close()
91+
ctx := context.TODO()
92+
93+
store := database.NewLfsMetaObjectStoreWithDB(db)
94+
95+
// Create a test LFS object
96+
_, err := store.Create(ctx, database.LfsMetaObject{
97+
RepositoryID: 123,
98+
Oid: "test-oid-123",
99+
Size: 1024,
100+
XnetUsed: false,
101+
})
102+
require.Nil(t, err)
103+
104+
// Verify initial state
105+
obj, err := store.FindByOID(ctx, 123, "test-oid-123")
106+
require.Nil(t, err)
107+
require.Equal(t, "test-oid-123", obj.Oid)
108+
require.Equal(t, false, obj.XnetUsed)
109+
110+
// Update XnetUsed to true
111+
err = store.UpdateXnetUsed(ctx, 123, "test-oid-123", true)
112+
require.Nil(t, err)
113+
114+
// Verify update
115+
obj, err = store.FindByOID(ctx, 123, "test-oid-123")
116+
require.Nil(t, err)
117+
require.Equal(t, true, obj.XnetUsed)
118+
119+
// Update XnetUsed back to false
120+
err = store.UpdateXnetUsed(ctx, 123, "test-oid-123", false)
121+
require.Nil(t, err)
122+
123+
// Verify update
124+
obj, err = store.FindByOID(ctx, 123, "test-oid-123")
125+
require.Nil(t, err)
126+
require.Equal(t, false, obj.XnetUsed)
127+
128+
// Test updating non-existent object (should not error but affect 0 rows)
129+
err = store.UpdateXnetUsed(ctx, 999, "non-existent-oid", true)
130+
require.Nil(t, err)
131+
}
132+
133+
func TestLfsMetaStore_CheckIfAllMigratedToXnet(t *testing.T) {
134+
db := tests.InitTestDB()
135+
defer db.Close()
136+
ctx := context.TODO()
137+
138+
store := database.NewLfsMetaObjectStoreWithDB(db)
139+
140+
// Test with no objects
141+
allMigrated, err := store.CheckIfAllMigratedToXnet(ctx, 123)
142+
require.Nil(t, err)
143+
require.True(t, allMigrated, "No objects should return true")
144+
145+
// Create test objects
146+
testCases := []database.LfsMetaObject{
147+
{RepositoryID: 123, Oid: "oid-1", Size: 1024, XnetUsed: false},
148+
{RepositoryID: 123, Oid: "oid-2", Size: 2048, XnetUsed: false},
149+
{RepositoryID: 456, Oid: "oid-3", Size: 3072, XnetUsed: true}, // Different repo
150+
}
151+
152+
for _, tc := range testCases {
153+
_, err := store.Create(ctx, tc)
154+
require.Nil(t, err)
155+
}
156+
157+
// Test with some objects not migrated
158+
allMigrated, err = store.CheckIfAllMigratedToXnet(ctx, 123)
159+
require.Nil(t, err)
160+
require.False(t, allMigrated, "Should return false when some objects are not migrated")
161+
162+
// Test with all objects migrated in another repo
163+
allMigrated, err = store.CheckIfAllMigratedToXnet(ctx, 456)
164+
require.Nil(t, err)
165+
require.True(t, allMigrated, "Should return true when all objects are migrated")
166+
167+
// Update one object to migrated
168+
err = store.UpdateXnetUsed(ctx, 123, "oid-1", true)
169+
require.Nil(t, err)
170+
171+
// Test with one migrated, one not migrated
172+
allMigrated, err = store.CheckIfAllMigratedToXnet(ctx, 123)
173+
require.Nil(t, err)
174+
require.False(t, allMigrated, "Should return false when not all objects are migrated")
175+
176+
// Update all objects to migrated
177+
err = store.UpdateXnetUsed(ctx, 123, "oid-2", true)
178+
require.Nil(t, err)
179+
180+
// Test with all objects migrated
181+
allMigrated, err = store.CheckIfAllMigratedToXnet(ctx, 123)
182+
require.Nil(t, err)
183+
require.True(t, allMigrated, "Should return true when all objects are migrated")
184+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package database_test
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/stretchr/testify/require"
8+
"opencsg.com/csghub-server/builder/store/database"
9+
"opencsg.com/csghub-server/common/tests"
10+
"opencsg.com/csghub-server/common/types"
11+
)
12+
13+
func TestXnetMigrationTaskStore_CRUD(t *testing.T) {
14+
db := tests.InitTestDB()
15+
defer db.Close()
16+
ctx := context.TODO()
17+
18+
store := database.NewXnetMigrationTaskStoreWithDB(db)
19+
20+
// Test CreateXnetMigrationTask
21+
err := store.CreateXnetMigrationTask(ctx, 123, "Initial task")
22+
require.Nil(t, err)
23+
24+
// Test ListXnetMigrationTasksByRepoID
25+
tasks, err := store.ListXnetMigrationTasksByRepoID(ctx, 123)
26+
require.Nil(t, err)
27+
require.Len(t, tasks, 1)
28+
require.Equal(t, int64(123), tasks[0].RepositoryID)
29+
require.Equal(t, "Initial task", tasks[0].LastMessage)
30+
require.Equal(t, types.XnetMigrationTaskStatusPending, tasks[0].Status)
31+
32+
taskID := tasks[0].ID
33+
34+
// Test GetXnetMigrationTaskByID
35+
task, err := store.GetXnetMigrationTaskByID(ctx, taskID)
36+
require.Nil(t, err)
37+
require.Equal(t, taskID, task.ID)
38+
require.Equal(t, int64(123), task.RepositoryID)
39+
40+
// Test UpdateXnetMigrationTask
41+
err = store.UpdateXnetMigrationTask(ctx, taskID, "Updated message", types.XnetMigrationTaskStatusRunning)
42+
require.Nil(t, err)
43+
44+
// Verify update
45+
task, err = store.GetXnetMigrationTaskByID(ctx, taskID)
46+
require.Nil(t, err)
47+
require.Equal(t, "Updated message", task.LastMessage)
48+
require.Equal(t, types.XnetMigrationTaskStatusRunning, task.Status)
49+
50+
// Create more tasks with different statuses
51+
err = store.CreateXnetMigrationTask(ctx, 456, "Task 2")
52+
require.Nil(t, err)
53+
tasks, err = store.ListXnetMigrationTasksByRepoID(ctx, 456)
54+
require.Nil(t, err)
55+
require.Len(t, tasks, 1)
56+
err = store.UpdateXnetMigrationTask(ctx, tasks[0].ID, "Task 2 completed", types.XnetMigrationTaskStatusCompleted)
57+
require.Nil(t, err)
58+
59+
// Test ListXnetMigrationTasksByStatus
60+
runningTasks, err := store.ListXnetMigrationTasksByStatus(ctx, types.XnetMigrationTaskStatusRunning)
61+
require.Nil(t, err)
62+
require.Len(t, runningTasks, 1)
63+
require.Equal(t, "Updated message", runningTasks[0].LastMessage)
64+
65+
completedTasks, err := store.ListXnetMigrationTasksByStatus(ctx, types.XnetMigrationTaskStatusCompleted)
66+
require.Nil(t, err)
67+
require.Len(t, completedTasks, 1)
68+
require.Equal(t, "Task 2 completed", completedTasks[0].LastMessage)
69+
70+
pendingTasks, err := store.ListXnetMigrationTasksByStatus(ctx, types.XnetMigrationTaskStatusPending)
71+
require.Nil(t, err)
72+
require.Len(t, pendingTasks, 0)
73+
74+
// Test with non-existent repo ID
75+
noTasks, err := store.ListXnetMigrationTasksByRepoID(ctx, 999)
76+
require.Nil(t, err)
77+
require.Len(t, noTasks, 0)
78+
79+
// Test with non-existent task ID
80+
_, err = store.GetXnetMigrationTaskByID(ctx, 999)
81+
require.NotNil(t, err)
82+
}

component/lfs.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package component
2+
3+
import (
4+
"context"
5+
6+
"opencsg.com/csghub-server/builder/store/database"
7+
)
8+
9+
type LfsComponent interface {
10+
DispatchLfsXnetProgress() error
11+
DispatchLfsXnetResult() error
12+
PublishLfsMigrationMessage(ctx context.Context, repo *database.Repository, oid string) error
13+
}

0 commit comments

Comments
 (0)