From bcc7575e04c946b2edd0344f592d19d76403aac9 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 14 Oct 2025 00:25:44 +0000 Subject: [PATCH] mmm: do random rescans in the fuzz test to ensure they don't break anything. --- eventstore/mmm/fuzz_test.go | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/eventstore/mmm/fuzz_test.go b/eventstore/mmm/fuzz_test.go index dbbc86c..1dcbd48 100644 --- a/eventstore/mmm/fuzz_test.go +++ b/eventstore/mmm/fuzz_test.go @@ -87,6 +87,11 @@ func FuzzTest(f *testing.F) { nTags[evt.ID] = len(evt.Tags) } + // perform random rescans -- shouldn't break the database + if rnd.UintN(3) == 1 { + mmmm.Rescan() + } + // verify each layer has the correct events for i, layer := range mmmm.layers { count := 0 @@ -120,6 +125,11 @@ func FuzzTest(f *testing.F) { } } + // perform random rescans -- shouldn't break the database + if rnd.UintN(3) == 1 { + mmmm.Rescan() + } + for id, deletedlayers := range deleted { evt, foundlayers := mmmm.GetByID(id) @@ -162,6 +172,11 @@ func FuzzTest(f *testing.F) { } } + // perform random rescans -- shouldn't break the database + if rnd.UintN(3) == 1 { + mmmm.Rescan() + } + // now delete a layer and events that only exist in that layer should vanish layer := mmmm.layers[rnd.Int()%len(mmmm.layers)] eventsThatShouldVanish := make([]nostr.ID, 0, nevents/2) @@ -171,9 +186,19 @@ func FuzzTest(f *testing.F) { } } + // perform random rescans -- shouldn't break the database + if rnd.UintN(3) == 1 { + mmmm.Rescan() + } + err = mmmm.DropLayer(layer.name) require.NoError(t, err) + // perform random rescans -- shouldn't break the database + if rnd.UintN(3) == 1 { + mmmm.Rescan() + } + for _, id := range eventsThatShouldVanish { v, ils := mmmm.GetByID(id) require.Nil(t, v)