From 98cbe66e16da9c3c03d4e256b67eefe37e53ab75 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Thu, 16 Oct 2025 01:43:51 +0000 Subject: [PATCH] mmm: test that free ranges are being used. --- eventstore/mmm/freeranges_test.go | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/eventstore/mmm/freeranges_test.go b/eventstore/mmm/freeranges_test.go index 9886dc0..7c856be 100644 --- a/eventstore/mmm/freeranges_test.go +++ b/eventstore/mmm/freeranges_test.go @@ -45,11 +45,19 @@ func FuzzFreeRanges(f *testing.F) { total := 0 for { - for range rnd.IntN(40) { + freeBefore := countUsableFreeRanges(mmmm) + + for i := range rnd.IntN(40) { + content := "1" // ensure at least one event is as small as it can be + if i > 0 { + strings.Repeat("z", rnd.IntN(1000)) + } + evt := nostr.Event{ CreatedAt: nostr.Timestamp(rnd.Uint32()), Kind: 1, - Content: strings.Repeat("z", rnd.IntN(1000)), + Content: content, + Tags: nostr.Tags{}, } evt.Sign(sk) err := il.SaveEvent(evt) @@ -58,6 +66,11 @@ func FuzzFreeRanges(f *testing.F) { total++ } + freeAfter := countUsableFreeRanges(mmmm) + if freeBefore > 0 { + require.Lessf(t, freeAfter, freeBefore, "must use some of the existing free ranges when inserting new events") + } + // delete some events if total > 0 { for range rnd.IntN(total) { @@ -75,11 +88,20 @@ func FuzzFreeRanges(f *testing.F) { require.Equalf(t, expectedFreeRanges, mmmm.freeRanges, "expected %s, got %s", expectedFreeRanges, mmmm.freeRanges) return nil }) - t.Logf("loop -- current %d", total) - if chance(30) { + if chance(20) { break } } }) } + +func countUsableFreeRanges(mmmm *MultiMmapManager) int { + count := 0 + for _, fr := range mmmm.freeRanges { + if fr.size > 150 { + count++ + } + } + return count +}