mmm: fix fuzz test.

This commit is contained in:
fiatjaf
2025-10-13 21:53:48 +00:00
parent 96fcff7908
commit 47b1608e6b
3 changed files with 20 additions and 9 deletions

View File

@@ -88,13 +88,13 @@ func FuzzTest(f *testing.F) {
}
// verify each layer has the correct events
for _, layer := range mmmm.layers {
for i, layer := range mmmm.layers {
count := 0
for evt := range layer.QueryEvents(nostr.Filter{}, 500) {
for evt := range layer.QueryEvents(nostr.Filter{}, 11000) {
require.True(t, evt.Tags.ContainsAny("t", []string{layer.name}))
count++
}
require.Equal(t, count, len(storedByLayer[layer.name]))
require.Equal(t, count, len(storedByLayer[layer.name]), "layer %d ('%s')", i, layer.name)
}
// randomly select n events to delete from random layers
@@ -147,13 +147,13 @@ func FuzzTest(f *testing.F) {
for _, layer := range mmmm.layers {
// verify event still accessible from other layers
if slices.Contains(foundlayers, layer) {
next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 500)) // hack
next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 11000)) // hack
_, fetched := next()
require.True(t, fetched)
stop()
} else {
// and not accessible from this layer we just deleted
next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 500)) // hack
next, stop := iter.Pull(layer.QueryEvents(nostr.Filter{Kinds: []nostr.Kind{evt.Kind}}, 11000)) // hack
_, fetched := next()
require.True(t, fetched)
stop()
@@ -165,7 +165,7 @@ func FuzzTest(f *testing.F) {
// 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)
for evt := range layer.QueryEvents(nostr.Filter{}, 500) {
for evt := range layer.QueryEvents(nostr.Filter{}, 11000) {
if len(evt.Tags) == 1+len(deleted[evt.ID]) {
eventsThatShouldVanish = append(eventsThatShouldVanish, evt.ID)
}

View File

@@ -42,8 +42,14 @@ func (il *IndexingLayer) SaveEvent(evt nostr.Event) error {
return err
}
mmmtxn.Commit()
iltxn.Commit()
if err := mmmtxn.Commit(); err != nil {
return err
}
if err := iltxn.Commit(); err != nil {
return err
}
return nil
}
@@ -152,7 +158,7 @@ func (b *MultiMmapManager) storeOn(
val = binary.BigEndian.AppendUint16(val, il.id)
}
// store the id index with the refcounts
// store the id index with the layer references
if err := mmmtxn.Put(b.indexId, evt.ID[0:8], val, 0); err != nil {
panic(fmt.Errorf("failed to store %x by id: %w", evt.ID[:], err))
}

View File

@@ -0,0 +1,5 @@
go test fuzz v1
int(-196)
uint(69)
uint(536)
uint(128)