mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
tests: fix TestV2DeprecationSnapshotMatches, maybe ignore the first snapshot file of etcd v3.6
Signed-off-by: Clement <gh.2lgqz@aleeas.com>
This commit is contained in:
parent
6b2b77736d
commit
7efb9b9fe4
@ -139,33 +139,7 @@ func TestV2DeprecationSnapshotMatches(t *testing.T) {
|
|||||||
members2 := addAndRemoveKeysAndMembers(ctx, t, cc2, snapshotCount)
|
members2 := addAndRemoveKeysAndMembers(ctx, t, cc2, snapshotCount)
|
||||||
assert.NoError(t, epc.Close())
|
assert.NoError(t, epc.Close())
|
||||||
|
|
||||||
lastVer, err := e2e.GetVersionFromBinary(e2e.BinPath.EtcdLastRelease)
|
assertSnapshotsMatch(t, oldMemberDataDir, newMemberDataDir, func(data []byte) []byte {
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
currVer, err := e2e.GetVersionFromBinary(e2e.BinPath.Etcd)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
firstFiles, err := fileutil.ListFiles(oldMemberDataDir, filterSnapshotFiles)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
secondFiles, err := fileutil.ListFiles(newMemberDataDir, filterSnapshotFiles)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
assert.NotEmpty(t, firstFiles)
|
|
||||||
assert.NotEmpty(t, secondFiles)
|
|
||||||
|
|
||||||
// v3.6 creates a raft log snapshot on server startup, but v3.5 doesn't
|
|
||||||
if lastVer.LessThan(version.V3_6) && (version.V3_6.Equal(*currVer) || version.V3_6.LessThan(*currVer)) {
|
|
||||||
assert.Equal(t, len(firstFiles)+1, len(secondFiles), "etcd v3.6 should create a snapshot of raft log on startup")
|
|
||||||
t.Skipf("raft log snapshots of %v are supposed to differ from of %v", currVer, lastVer)
|
|
||||||
}
|
|
||||||
|
|
||||||
assertSnapshotsMatch(t, firstFiles, secondFiles, func(data []byte) []byte {
|
|
||||||
// Patch members ids
|
// Patch members ids
|
||||||
for i, mid := range members1 {
|
for i, mid := range members1 {
|
||||||
data = bytes.Replace(data, []byte(fmt.Sprintf("%x", mid)), []byte(fmt.Sprintf("%d", i+1)), -1)
|
data = bytes.Replace(data, []byte(fmt.Sprintf("%x", mid)), []byte(fmt.Sprintf("%d", i+1)), -1)
|
||||||
@ -264,17 +238,39 @@ func filterSnapshotFiles(path string) bool {
|
|||||||
return strings.HasSuffix(path, ".snap")
|
return strings.HasSuffix(path, ".snap")
|
||||||
}
|
}
|
||||||
|
|
||||||
func assertSnapshotsMatch(t testing.TB, firstFiles, secondFiles []string, patch func([]byte) []byte) {
|
func assertSnapshotsMatch(t testing.TB, oldMemberDataDir, newMemberDataDir string, patch func([]byte) []byte) {
|
||||||
lg := zaptest.NewLogger(t)
|
lg := zaptest.NewLogger(t)
|
||||||
assert.Equal(t, len(firstFiles), len(secondFiles))
|
oldMemberSnapshots, err := fileutil.ListFiles(oldMemberDataDir, filterSnapshotFiles)
|
||||||
sort.Strings(firstFiles)
|
|
||||||
sort.Strings(secondFiles)
|
|
||||||
for i := 0; i < len(firstFiles); i++ {
|
|
||||||
firstSnapshot, err := snap.Read(lg, firstFiles[i])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
secondSnapshot, err := snap.Read(lg, secondFiles[i])
|
newMemberSnapshots, err := fileutil.ListFiles(newMemberDataDir, filterSnapshotFiles)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
assert.NotEmpty(t, oldMemberSnapshots)
|
||||||
|
assert.NotEmpty(t, newMemberSnapshots)
|
||||||
|
|
||||||
|
currVer, err := e2e.GetVersionFromBinary(e2e.BinPath.Etcd)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Starting from v3.6, etcd might create an extra snapshot file (appliedIndex == 1) on server startup.
|
||||||
|
// Except for this, other snapshot files should be the same as in old versions.
|
||||||
|
if (version.V3_6.Equal(*currVer) || version.V3_6.LessThan(*currVer)) && len(oldMemberSnapshots) < len(newMemberSnapshots) {
|
||||||
|
newMemberSnapshots = newMemberSnapshots[1:]
|
||||||
|
}
|
||||||
|
|
||||||
|
assert.Equal(t, len(oldMemberSnapshots), len(newMemberSnapshots))
|
||||||
|
sort.Strings(oldMemberSnapshots)
|
||||||
|
sort.Strings(newMemberSnapshots)
|
||||||
|
for i := 0; i < len(oldMemberSnapshots); i++ {
|
||||||
|
firstSnapshot, err := snap.Read(lg, oldMemberSnapshots[i])
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
secondSnapshot, err := snap.Read(lg, newMemberSnapshots[i])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user