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