MCPcopy
hub / github.com/etcd-io/bbolt / compareDataAfterClearingElement

Function compareDataAfterClearingElement

cmd/bbolt/command/command_surgery_test.go:348–379  ·  view source on GitHub ↗
(t *testing.T, srcPath, dstPath string, pageId uint64, isBranchPage bool, startIdx, endIdx int)

Source from the content-addressed store, hash-verified

346}
347
348func compareDataAfterClearingElement(t *testing.T, srcPath, dstPath string, pageId uint64, isBranchPage bool, startIdx, endIdx int) {
349 srcPage, _, err := guts_cli.ReadPage(srcPath, pageId)
350 require.NoError(t, err)
351
352 dstPage, _, err := guts_cli.ReadPage(dstPath, pageId)
353 require.NoError(t, err)
354
355 var dstIdx uint16
356 for i := uint16(0); i < srcPage.Count(); i++ {
357 // skip the cleared elements
358 if dstIdx >= uint16(startIdx) && (dstIdx < uint16(endIdx) || endIdx == -1) {
359 continue
360 }
361
362 if isBranchPage {
363 srcElement := srcPage.BranchPageElement(i)
364 dstElement := dstPage.BranchPageElement(dstIdx)
365
366 require.Equal(t, srcElement.Key(), dstElement.Key())
367 require.Equal(t, srcElement.Pgid(), dstElement.Pgid())
368 } else {
369 srcElement := srcPage.LeafPageElement(i)
370 dstElement := dstPage.LeafPageElement(dstIdx)
371
372 require.Equal(t, srcElement.Flags(), dstElement.Flags())
373 require.Equal(t, srcElement.Key(), dstElement.Key())
374 require.Equal(t, srcElement.Value(), dstElement.Value())
375 }
376
377 dstIdx++
378 }
379}
380
381func TestSurgery_ClearPageElements_With_Overflow(t *testing.T) {
382 testCases := []struct {

Calls 8

ReadPageFunction · 0.92
BranchPageElementMethod · 0.80
LeafPageElementMethod · 0.80
CountMethod · 0.65
KeyMethod · 0.45
PgidMethod · 0.45
FlagsMethod · 0.45
ValueMethod · 0.45

Tested by

no test coverage detected