"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "server/etcdserver/corrupt_test.go" between
etcd-3.5.6.tar.gz and etcd-3.5.7.tar.gz

About: etcd is a distributed reliable key-value store for the most critical data of a distributed system (written in "Go").

corrupt_test.go  (etcd-3.5.6):corrupt_test.go  (etcd-3.5.7)
skipping to change at line 151 skipping to change at line 151
expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"},
}, },
{ {
name: "Different local hash and compaction revis ion", name: "Different local hash and compaction revis ion",
hasher: fakeHasher{hashByRevResponses: []hashByRev {{hash: mvcc.KeyValueHash{Hash: 1, CompactRevision: 1}}, {hash: mvcc.KeyValueHas h{Hash: 2, CompactRevision: 2}}}}, hasher: fakeHasher{hashByRevResponses: []hashByRev {{hash: mvcc.KeyValueHash{Hash: 1, CompactRevision: 1}}, {hash: mvcc.KeyValueHas h{Hash: 2, CompactRevision: 2}}}},
expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"},
}, },
{ {
name: "Different local hash and same revisions", name: "Different local hash and same revisions",
hasher: fakeHasher{hashByRevResponses: []hashByRev {{hash: mvcc.KeyValueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvc c.KeyValueHash{Hash: 2, CompactRevision: 1}, revision: 1}}}, hasher: fakeHasher{hashByRevResponses: []hashByRev {{hash: mvcc.KeyValueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvc c.KeyValueHash{Hash: 2, CompactRevision: 1}, revision: 1}}},
expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "MemberId()", "Tr iggerCorruptAlarm(1)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "MemberId()", "Tr iggerCorruptAlarm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
{ {
name: "Peer with nil response", name: "Peer with nil response",
hasher: fakeHasher{ hasher: fakeHasher{
peerHashes: []*peerHashKVResp{{}}, peerHashes: []*peerHashKVResp{{}},
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"},
}, },
{ {
name: "Peer with newer revision", name: "Peer with newer revision",
hasher: fakeHasher{ hasher: fakeHasher{
peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 42}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}}}}, peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 42}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}}}},
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(42)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
{ {
name: "Peer with newer compact revision", name: "Peer with newer compact revision",
hasher: fakeHasher{ hasher: fakeHasher{
peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 88}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 10}, Com pactRevision: 2}}}, peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 88}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 10}, Com pactRevision: 2}}},
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(88)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
{ {
name: "Peer with same hash and compact revision", name: "Peer with same hash and compact revision",
hasher: fakeHasher{ hasher: fakeHasher{
hashByRevResponses: []hashByRev{{hash: mvcc.KeyVa lueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvcc.KeyValueHash{Has h: 2, CompactRevision: 2}, revision: 2}}, hashByRevResponses: []hashByRev{{hash: mvcc.KeyVa lueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvcc.KeyValueHash{Has h: 2, CompactRevision: 2}, revision: 2}},
peerHashes: []*peerHashKVResp{{resp: &pb. HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}, CompactRevision: 1, Hash : 1}}}, peerHashes: []*peerHashKVResp{{resp: &pb. HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}, CompactRevision: 1, Hash : 1}}},
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)"},
}, },
{ {
name: "Peer with different hash and same compact revision as first local", name: "Peer with different hash and same compact revision as first local",
hasher: fakeHasher{ hasher: fakeHasher{
hashByRevResponses: []hashByRev{{hash: mvcc.KeyVa lueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvcc.KeyValueHash{Has h: 2, CompactRevision: 2}, revision: 2}}, hashByRevResponses: []hashByRev{{hash: mvcc.KeyVa lueHash{Hash: 1, CompactRevision: 1}, revision: 1}, {hash: mvcc.KeyValueHash{Has h: 2, CompactRevision: 2}, revision: 2}},
peerHashes: []*peerHashKVResp{{peerInfo: peerInfo{id: 666}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}, CompactRevision: 1, Hash: 2}}}, peerHashes: []*peerHashKVResp{{peerInfo: peerInfo{id: 666}, resp: &pb.HashKVResponse{Header: &pb.ResponseHeader{Revision: 1}, CompactRevision: 1, Hash: 2}}},
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(666)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(1) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
{ {
name: "Multiple corrupted peers trigger one alarm", name: "Multiple corrupted peers trigger one alarm",
hasher: fakeHasher{ hasher: fakeHasher{
peerHashes: []*peerHashKVResp{ peerHashes: []*peerHashKVResp{
{peerInfo: peerInfo{id: 88}, resp: &pb.Ha shKVResponse{Header: &pb.ResponseHeader{Revision: 10}, CompactRevision: 2}}, {peerInfo: peerInfo{id: 88}, resp: &pb.Ha shKVResponse{Header: &pb.ResponseHeader{Revision: 10}, CompactRevision: 2}},
{peerInfo: peerInfo{id: 89}, resp: &pb.Ha shKVResponse{Header: &pb.ResponseHeader{Revision: 10}, CompactRevision: 2}}, {peerInfo: peerInfo{id: 89}, resp: &pb.Ha shKVResponse{Header: &pb.ResponseHeader{Revision: 10}, CompactRevision: 2}},
}, },
}, },
expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(88)"}, expectActions: []string{"HashByRev(0)", "PeerHashByRev(0) ", "ReqTimeout()", "LinearizableReadNotify()", "HashByRev(0)", "TriggerCorruptAl arm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
} }
for _, tc := range tcs { for _, tc := range tcs {
t.Run(tc.name, func(t *testing.T) { t.Run(tc.name, func(t *testing.T) {
monitor := corruptionChecker{ monitor := corruptionChecker{
lg: zaptest.NewLogger(t), lg: zaptest.NewLogger(t),
hasher: &tc.hasher, hasher: &tc.hasher,
} }
err := monitor.PeriodicCheck() err := monitor.PeriodicCheck()
skipping to change at line 270 skipping to change at line 270
peerHashes: []*peerHashKVResp{{resp: &pb.HashKVRe sponse{CompactRevision: 3}}}, peerHashes: []*peerHashKVResp{{resp: &pb.HashKVRe sponse{CompactRevision: 3}}},
}, },
expectActions: []string{"MemberId()", "ReqTimeout()", "Ha shes()", "PeerHashByRev(2)", "PeerHashByRev(1)"}, expectActions: []string{"MemberId()", "ReqTimeout()", "Ha shes()", "PeerHashByRev(2)", "PeerHashByRev(1)"},
}, },
{ {
name: "Peer returned same compaction revision but differe nt hash triggers alarm", name: "Peer returned same compaction revision but differe nt hash triggers alarm",
hasher: fakeHasher{ hasher: fakeHasher{
hashes: []mvcc.KeyValueHash{{Revision: 1, Com pactRevision: 1, Hash: 1}, {Revision: 2, CompactRevision: 1, Hash: 2}}, hashes: []mvcc.KeyValueHash{{Revision: 1, Com pactRevision: 1, Hash: 1}, {Revision: 2, CompactRevision: 1, Hash: 2}},
peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 42}, resp: &pb.HashKVResponse{CompactRevision: 1, Hash: 3}}}, peerHashes: []*peerHashKVResp{{peerInfo: peerInfo {id: 42}, resp: &pb.HashKVResponse{CompactRevision: 1, Hash: 3}}},
}, },
expectActions: []string{"MemberId()", "ReqTimeout()", "Ha shes()", "PeerHashByRev(2)", "TriggerCorruptAlarm(42)"}, expectActions: []string{"MemberId()", "ReqTimeout()", "Ha shes()", "PeerHashByRev(2)", "TriggerCorruptAlarm(0)"},
expectCorrupt: true, expectCorrupt: true,
}, },
{ {
name: "Peer returned same hash bumps last revision checke d", name: "Peer returned same hash bumps last revision checke d",
hasher: fakeHasher{ hasher: fakeHasher{
hashes: []mvcc.KeyValueHash{{Revision: 1, Com pactRevision: 1, Hash: 1}, {Revision: 2, CompactRevision: 1, Hash: 1}}, hashes: []mvcc.KeyValueHash{{Revision: 1, Com pactRevision: 1, Hash: 1}, {Revision: 2, CompactRevision: 1, Hash: 1}},
peerHashes: []*peerHashKVResp{{resp: &pb.HashKVRe sponse{Header: &pb.ResponseHeader{MemberId: 42}, CompactRevision: 1, Hash: 1}}}, peerHashes: []*peerHashKVResp{{resp: &pb.HashKVRe sponse{Header: &pb.ResponseHeader{MemberId: 42}, CompactRevision: 1, Hash: 1}}},
}, },
expectActions: []string{"MemberId()", "ReqTim eout()", "Hashes()", "PeerHashByRev(2)"}, expectActions: []string{"MemberId()", "ReqTim eout()", "Hashes()", "PeerHashByRev(2)"},
expectLastRevisionChecked: 2, expectLastRevisionChecked: 2,
 End of changes. 6 change blocks. 
6 lines changed or deleted 6 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)