Files
backrest/internal/protoutil/conversion_test.go
2023-12-09 19:41:56 -08:00

119 lines
3.0 KiB
Go

package protoutil
import (
"testing"
v1 "github.com/garethgeorge/restora/gen/go/v1"
"github.com/garethgeorge/restora/pkg/restic"
"google.golang.org/protobuf/proto"
)
func TestSnapshotToProto(t *testing.T) {
snapshot := &restic.Snapshot{
Id: "db155169d788e6e432e320aedbdff5a54cc439653093bb56944a67682528aa52",
Time: "2023-11-10T19:14:17.053824063-08:00",
Tree: "3e2918b261948e69602ee9504b8f475bcc7cdc4dcec0b3f34ecdb014287d07b2",
Paths: []string{"/restora"},
Hostname: "pop-os",
Username: "dontpanic",
Tags: []string{},
Parent: "",
}
want := &v1.ResticSnapshot{
Id: "db155169d788e6e432e320aedbdff5a54cc439653093bb56944a67682528aa52",
UnixTimeMs: 1699672457053,
Tree: "3e2918b261948e69602ee9504b8f475bcc7cdc4dcec0b3f34ecdb014287d07b2",
Paths: []string{"/restora"},
Hostname: "pop-os",
Username: "dontpanic",
Tags: []string{},
Parent: "",
}
got := SnapshotToProto(snapshot)
if !proto.Equal(want, got) {
t.Errorf("wanted %+v, got: %+v", want, got)
}
}
func TestBackupProgressEntryToProto(t *testing.T) {
cases := []struct {
name string
entry *restic.BackupProgressEntry
want *v1.BackupProgressEntry
}{
{
name: "summary",
entry: &restic.BackupProgressEntry{
MessageType: "summary",
FilesNew: 1,
FilesChanged: 2,
FilesUnmodified: 3,
DirsNew: 4,
DirsChanged: 5,
DirsUnmodified: 6,
DataBlobs: 7,
TreeBlobs: 8,
DataAdded: 9,
TotalFilesProcessed: 10,
TotalBytesProcessed: 11,
TotalDuration: 12.0,
SnapshotId: "db155169d788e6e432e320aedbdff5a54cc439653093bb56944a67682528aa52",
PercentDone: 13.0, // should be ignored.
},
want: &v1.BackupProgressEntry{
Entry: &v1.BackupProgressEntry_Summary{
Summary: &v1.BackupProgressSummary{
FilesNew: 1,
FilesChanged: 2,
FilesUnmodified: 3,
DirsNew: 4,
DirsChanged: 5,
DirsUnmodified: 6,
DataBlobs: 7,
TreeBlobs: 8,
DataAdded: 9,
TotalFilesProcessed: 10,
TotalBytesProcessed: 11,
TotalDuration: 12.0,
SnapshotId: "db155169d788e6e432e320aedbdff5a54cc439653093bb56944a67682528aa52",
},
},
},
},
{
name: "status",
entry: &restic.BackupProgressEntry{
MessageType: "status",
PercentDone: 13.0,
TotalFiles: 14,
FilesDone: 15,
TotalBytes: 16,
BytesDone: 17,
},
want: &v1.BackupProgressEntry{
Entry: &v1.BackupProgressEntry_Status{
Status: &v1.BackupProgressStatusEntry{
PercentDone: 13.0,
TotalFiles: 14,
FilesDone: 15,
TotalBytes: 16,
BytesDone: 17,
},
},
},
},
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
got := BackupProgressEntryToProto(c.entry)
if !proto.Equal(got, c.want) {
t.Errorf("wanted: %+v, got: %+v", c.want, got)
}
})
}
}