MCPcopy
hub / github.com/etcd-io/etcd / TestCompactHashCheckDetectCorruption

Function TestCompactHashCheckDetectCorruption

tests/integration/corrupt_test.go:143–178  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

141}
142
143func TestCompactHashCheckDetectCorruption(t *testing.T) {
144 integration.BeforeTest(t)
145
146 clus := integration.NewCluster(t, &integration.ClusterConfig{Size: 3})
147 defer clus.Terminate(t)
148
149 cc, err := clus.ClusterClient(t)
150 require.NoError(t, err)
151
152 ctx := context.Background()
153
154 for i := 0; i < 10; i++ {
155 _, err = cc.Put(ctx, testutil.PickKey(int64(i)), fmt.Sprint(i))
156 require.NoErrorf(t, err, "error on put")
157 }
158
159 clus.Members[0].Server.CorruptionChecker().CompactHashCheck()
160 clus.Members[0].Stop(t)
161 clus.WaitLeader(t)
162
163 err = testutil.CorruptBBolt(clus.Members[0].BackendPath())
164 require.NoError(t, err)
165
166 err = clus.Members[0].Restart(t)
167 require.NoError(t, err)
168 _, err = cc.Compact(ctx, 5)
169 require.NoError(t, err)
170 time.Sleep(50 * time.Millisecond)
171 leader := clus.WaitLeader(t)
172
173 clus.Members[leader].Server.CorruptionChecker().CompactHashCheck()
174 time.Sleep(50 * time.Millisecond)
175 alarmResponse, err := cc.AlarmList(ctx)
176 require.NoErrorf(t, err, "error on alarm list")
177 assert.Equal(t, []*etcdserverpb.AlarmMember{{Alarm: etcdserverpb.AlarmType_CORRUPT, MemberID: uint64(clus.Members[0].ID())}}, alarmResponse.Alarms)
178}
179
180func TestCompactHashCheckDetectMultipleCorruption(t *testing.T) {
181 integration.BeforeTest(t)

Callers

nothing calls this directly

Calls 15

TerminateMethod · 0.95
ClusterClientMethod · 0.95
WaitLeaderMethod · 0.95
CorruptionCheckerMethod · 0.80
BackendPathMethod · 0.80
BeforeTestMethod · 0.65
NewClusterMethod · 0.65
PutMethod · 0.65
CompactHashCheckMethod · 0.65
StopMethod · 0.65
RestartMethod · 0.65
CompactMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…