mmm: do random rescans in the fuzz test to ensure they don't break anything.

This commit is contained in:
fiatjaf
2025-10-14 00:25:44 +00:00
parent 95c70e3225
commit bcc7575e04

View File

@@ -87,6 +87,11 @@ func FuzzTest(f *testing.F) {
nTags[evt.ID] = len(evt.Tags) 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 // verify each layer has the correct events
for i, layer := range mmmm.layers { for i, layer := range mmmm.layers {
count := 0 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 { for id, deletedlayers := range deleted {
evt, foundlayers := mmmm.GetByID(id) 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 // now delete a layer and events that only exist in that layer should vanish
layer := mmmm.layers[rnd.Int()%len(mmmm.layers)] layer := mmmm.layers[rnd.Int()%len(mmmm.layers)]
eventsThatShouldVanish := make([]nostr.ID, 0, nevents/2) 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) err = mmmm.DropLayer(layer.name)
require.NoError(t, err) require.NoError(t, err)
// perform random rescans -- shouldn't break the database
if rnd.UintN(3) == 1 {
mmmm.Rescan()
}
for _, id := range eventsThatShouldVanish { for _, id := range eventsThatShouldVanish {
v, ils := mmmm.GetByID(id) v, ils := mmmm.GetByID(id)
require.Nil(t, v) require.Nil(t, v)