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

Function TestFreelist_read

internal/freelist/freelist_test.go:301–321  ·  view source on GitHub ↗

Ensure that a freelist can deserialize from a freelist page.

(t *testing.T)

Source from the content-addressed store, hash-verified

299
300// Ensure that a freelist can deserialize from a freelist page.
301func TestFreelist_read(t *testing.T) {
302 // Create a page.
303 var buf [4096]byte
304 page := (*common.Page)(unsafe.Pointer(&buf[0]))
305 page.SetFlags(common.FreelistPageFlag)
306 page.SetCount(2)
307
308 // Insert 2 page ids.
309 ids := (*[3]common.Pgid)(unsafe.Pointer(uintptr(unsafe.Pointer(page)) + unsafe.Sizeof(*page)))
310 ids[0] = 23
311 ids[1] = 50
312
313 // Deserialize page into a freelist.
314 f := newTestFreelist()
315 f.Read(page)
316
317 // Ensure that there are two page ids in the freelist.
318 if exp := common.Pgids([]common.Pgid{23, 50}); !reflect.DeepEqual(exp, f.freePageIds()) {
319 t.Fatalf("exp=%v; got=%v", exp, f.freePageIds())
320 }
321}
322
323// Ensure that we never read a non-freelist page
324func TestFreelist_read_panics(t *testing.T) {

Callers

nothing calls this directly

Calls 7

PgidsTypeAlias · 0.92
newTestFreelistFunction · 0.85
SetCountMethod · 0.80
ReadMethod · 0.65
freePageIdsMethod · 0.65
FatalfMethod · 0.65
SetFlagsMethod · 0.45

Tested by

no test coverage detected