1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
package walpb
import (
"testing"
"github.com/golang/protobuf/descriptor"
"go.etcd.io/etcd/raft/v3/raftpb"
)
func TestSnapshotMetadataCompatibility(t *testing.T) {
_, snapshotMetadataMd := descriptor.ForMessage(&raftpb.SnapshotMetadata{})
_, snapshotMd := descriptor.ForMessage(&Snapshot{})
if len(snapshotMetadataMd.GetField()) != len(snapshotMd.GetField()) {
t.Errorf("Different number of fields in raftpb.SnapshotMetadata vs. walpb.Snapshot. " +
"They are supposed to be in sync.")
}
}
func TestValidateSnapshot(t *testing.T) {
tests := []struct {
name string
snap *Snapshot
wantErr bool
}{
{name: "empty", snap: &Snapshot{}, wantErr: false},
{name: "invalid", snap: &Snapshot{Index: 5, Term: 3}, wantErr: true},
{name: "valid", snap: &Snapshot{Index: 5, Term: 3, ConfState: &raftpb.ConfState{Voters: []uint64{0x00cad1}}}, wantErr: false},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
if err := ValidateSnapshotForWrite(tt.snap); (err != nil) != tt.wantErr {
t.Errorf("ValidateSnapshotForWrite() error = %v, wantErr %v", err, tt.wantErr)
}
})
}
}
|