Remove obsolete gRPC client/server implementations and migrate to remote package
This commit is contained in:
@ -554,3 +554,60 @@ func TestUpdateSnapshotMetadata(t *testing.T) {
|
||||
t.Fatalf("Expected error when updating non-existent snapshot, got nil")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStreamSnapshotDiff_EdgeCases(t *testing.T) {
|
||||
tempDir, metadataStore, blobStore, cleanup := setupTestEnvironment(t)
|
||||
defer cleanup()
|
||||
|
||||
sourceDir := filepath.Join(tempDir, "source")
|
||||
os.MkdirAll(sourceDir, 0755)
|
||||
createTestFiles(t, sourceDir)
|
||||
|
||||
manager, err := CreateSnapshotManager(metadataStore, blobStore, nil)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create snapshot manager: %v", err)
|
||||
}
|
||||
ctx := context.Background()
|
||||
|
||||
// Create two identical snapshots
|
||||
snap1, _ := manager.CreateSnapshot(ctx, sourceDir, "Snap1", "")
|
||||
snap2, _ := manager.CreateSnapshot(ctx, sourceDir, "Snap2", snap1.ID)
|
||||
|
||||
// Test 1: Diff between identical snapshots should be empty
|
||||
reader, err := manager.StreamSnapshotDiff(ctx, snap2.ID, snap1.ID, 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for identical snapshots, got %v", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
data, _ := io.ReadAll(reader)
|
||||
if len(data) != 0 {
|
||||
t.Errorf("Expected empty diff for identical snapshots, got %d bytes", len(data))
|
||||
}
|
||||
|
||||
// Test 2: Diff with a non-existent parent should be a full archive
|
||||
reader, err = manager.StreamSnapshotDiff(ctx, snap1.ID, "non-existent-parent", 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for non-existent parent, got %v", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
data, _ = io.ReadAll(reader)
|
||||
if len(data) == 0 {
|
||||
t.Error("Expected full archive for non-existent parent, got empty diff")
|
||||
}
|
||||
|
||||
// Create an empty source dir
|
||||
emptyDir := filepath.Join(tempDir, "empty_source")
|
||||
os.MkdirAll(emptyDir, 0755)
|
||||
emptySnap, _ := manager.CreateSnapshot(ctx, emptyDir, "EmptySnap", "")
|
||||
|
||||
// Test 3: Diff of an empty snapshot should be empty
|
||||
reader, err = manager.StreamSnapshotDiff(ctx, emptySnap.ID, "", 0)
|
||||
if err != nil {
|
||||
t.Fatalf("Expected no error for empty snapshot, got %v", err)
|
||||
}
|
||||
defer reader.Close()
|
||||
data, _ = io.ReadAll(reader)
|
||||
if len(data) != 0 {
|
||||
t.Errorf("Expected empty diff for empty snapshot, got %d bytes", len(data))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user