From f50ad8e90c3cca5b8f6ee339a486e3fa0367cd44 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Tue, 8 Aug 2017 19:47:15 -0700 Subject: [PATCH] test: check free page counts on close/reopen for freelist overflow Confirm that the number of freed pages exceeds the overflow count, then check that reopening gives the same number of free pages. --- bucket_test.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/bucket_test.go b/bucket_test.go index bcdd1dc..f044142 100644 --- a/bucket_test.go +++ b/bucket_test.go @@ -423,6 +423,22 @@ func TestBucket_Delete_FreelistOverflow(t *testing.T) { }); err != nil { t.Fatal(err) } + + // Check more than an overflow's worth of pages are freed. + stats := db.Stats() + freePages := stats.FreePageN + stats.PendingPageN + if freePages <= 0xFFFF { + t.Fatalf("expected more than 0xFFFF free pages, got %v", freePages) + } + + // Free page count should be preserved on reopen. + if err := db.DB.Close(); err != nil { + t.Fatal(err) + } + db.MustReopen() + if reopenFreePages := db.Stats().FreePageN; freePages != reopenFreePages { + t.Fatalf("expected %d free pages, got %+v", freePages, db.Stats()) + } } // Ensure that accessing and updating nested buckets is ok across transactions.