core/rawdb: add test

This commit is contained in:
GarmashAlex 2026-02-17 16:21:38 +03:00 committed by GitHub
parent da5f3919ed
commit 4755c96312
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -19,6 +19,7 @@ package rawdb
import (
"bytes"
"os"
"sync"
"testing"
"github.com/ethereum/go-ethereum/ethdb"
@ -105,3 +106,50 @@ func TestFreezerCleanup(t *testing.T) {
t.Fatal("Failed to cleanup leftover directory")
}
}
func TestResettableFreezerWriteReadConcurrency(t *testing.T) {
f, _ := newResettableFreezer(t.TempDir(), "", false, 2048, freezerTestTableDef)
defer f.Close()
for i := uint64(0); i < 50; i++ {
f.ModifyAncients(func(op ethdb.AncientWriteOp) error {
return op.AppendRaw("test", i, bytes.Repeat([]byte{byte(i)}, 100))
})
}
var wg sync.WaitGroup
errCh := make(chan error, 2)
wg.Add(1)
go func() {
defer wg.Done()
for i := uint64(0); i < 100; i++ {
_, err := f.ModifyAncients(func(op ethdb.AncientWriteOp) error {
return op.AppendRaw("test", 50+i, bytes.Repeat([]byte{byte(i)}, 100))
})
if err != nil {
errCh <- err
return
}
}
}()
wg.Add(1)
go func() {
defer wg.Done()
for i := uint64(0); i < 1000; i++ {
f.Ancient("test", i%50)
f.Ancients()
f.Tail()
}
}()
wg.Wait()
close(errCh)
for err := range errCh {
if err != nil {
t.Fatalf("Concurrent write/read operation failed: %v", err)
}
}
}