corrupt_test.go (etcd-3.5.6) | : | corrupt_test.go (etcd-3.5.7) | ||
---|---|---|---|---|
skipping to change at line 140 | skipping to change at line 140 | |||
assert.NotZero(t, memberID, "member not found") | assert.NotZero(t, memberID, "member not found") | |||
epc.procs[0].Stop() | epc.procs[0].Stop() | |||
err = testutil.CorruptBBolt(datadir.ToBackendFileName(epc.procs[0].Config ().dataDirPath)) | err = testutil.CorruptBBolt(datadir.ToBackendFileName(epc.procs[0].Config ().dataDirPath)) | |||
assert.NoError(t, err) | assert.NoError(t, err) | |||
err = epc.procs[0].Restart() | err = epc.procs[0].Restart() | |||
assert.NoError(t, err) | assert.NoError(t, err) | |||
time.Sleep(checkTime * 11 / 10) | time.Sleep(checkTime * 11 / 10) | |||
alarmResponse, err := cc.AlarmList() | alarmResponse, err := cc.AlarmList() | |||
assert.NoError(t, err, "error on alarm list") | assert.NoError(t, err, "error on alarm list") | |||
assert.Equal(t, []*etcdserverpb.AlarmMember{{Alarm: etcdserverpb.AlarmTyp e_CORRUPT, MemberID: memberID}}, alarmResponse.Alarms) | assert.Equal(t, []*etcdserverpb.AlarmMember{{Alarm: etcdserverpb.AlarmTyp e_CORRUPT, MemberID: 0}}, alarmResponse.Alarms) | |||
} | } | |||
func TestCompactHashCheckDetectCorruption(t *testing.T) { | func TestCompactHashCheckDetectCorruption(t *testing.T) { | |||
checkTime := time.Second | checkTime := time.Second | |||
BeforeTest(t) | BeforeTest(t) | |||
epc, err := newEtcdProcessCluster(t, &etcdProcessClusterConfig{ | epc, err := newEtcdProcessCluster(t, &etcdProcessClusterConfig{ | |||
clusterSize: 3, | clusterSize: 3, | |||
keepDataDir: true, | keepDataDir: true, | |||
CompactHashCheckEnabled: true, | CompactHashCheckEnabled: true, | |||
CompactHashCheckTime: checkTime, | CompactHashCheckTime: checkTime, | |||
skipping to change at line 167 | skipping to change at line 167 | |||
t.Fatalf("error closing etcd processes (%v)", errC) | t.Fatalf("error closing etcd processes (%v)", errC) | |||
} | } | |||
}) | }) | |||
cc := NewEtcdctl(epc.EndpointsV3()) | cc := NewEtcdctl(epc.EndpointsV3()) | |||
for i := 0; i < 10; i++ { | for i := 0; i < 10; i++ { | |||
err := cc.Put(testutil.PickKey(int64(i)), fmt.Sprint(i)) | err := cc.Put(testutil.PickKey(int64(i)), fmt.Sprint(i)) | |||
assert.NoError(t, err, "error on put") | assert.NoError(t, err, "error on put") | |||
} | } | |||
members, err := cc.MemberList() | _, err = cc.MemberList() | |||
assert.NoError(t, err, "error on member list") | assert.NoError(t, err, "error on member list") | |||
var memberID uint64 | ||||
for _, m := range members.Members { | ||||
if m.Name == epc.procs[0].Config().name { | ||||
memberID = m.ID | ||||
} | ||||
} | ||||
epc.procs[0].Stop() | epc.procs[0].Stop() | |||
err = testutil.CorruptBBolt(datadir.ToBackendFileName(epc.procs[0].Config ().dataDirPath)) | err = testutil.CorruptBBolt(datadir.ToBackendFileName(epc.procs[0].Config ().dataDirPath)) | |||
assert.NoError(t, err) | assert.NoError(t, err) | |||
err = epc.procs[0].Restart() | err = epc.procs[0].Restart() | |||
assert.NoError(t, err) | assert.NoError(t, err) | |||
_, err = cc.Compact(5) | _, err = cc.Compact(5) | |||
assert.NoError(t, err) | assert.NoError(t, err) | |||
time.Sleep(checkTime * 11 / 10) | time.Sleep(checkTime * 11 / 10) | |||
alarmResponse, err := cc.AlarmList() | alarmResponse, err := cc.AlarmList() | |||
assert.NoError(t, err, "error on alarm list") | assert.NoError(t, err, "error on alarm list") | |||
assert.Equal(t, []*etcdserverpb.AlarmMember{{Alarm: etcdserverpb.AlarmTyp e_CORRUPT, MemberID: memberID}}, alarmResponse.Alarms) | assert.Equal(t, []*etcdserverpb.AlarmMember{{Alarm: etcdserverpb.AlarmTyp e_CORRUPT, MemberID: 0}}, alarmResponse.Alarms) | |||
} | } | |||
End of changes. 4 change blocks. | ||||
9 lines changed or deleted | 3 lines changed or added |