mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2025-01-07 02:02:18 +00:00
f40b8583f7
* Add Save blob and tests * Remove locks * Remove test cleanup * Fix go mod * Cleanup * Add checksum * Add file hashing to fileutil * Move test * Check data when exists * Add one more test * Rename * Gaz * Add packaged level comment * Fix block proposals in the REST validator client (#13116) * Fix block proposals in the REST validator client * fix graffiti test * return empty graffiti * fallback to old endpoints * logs * handle 404 * everything passes * review from James * log undecoded value * test fixes and additions --------- Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * fix head slot in log (#13139) * zig: Update zig to recent main branch commit (#13142) Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> * Fix Pending Queue Deadline Bug (#13145) * rearrange deadline * naming * Add pruning * Gaz * Gaz * Update pruning * Cleanup * Making a mess * Benchmarking * Forgot to add the file + fixes * Fixes * Pruning from DB fixed * Add prune by file data * Fix pruning * Prune fixes * Cleanup db blockRoot filter * Handle file close error * Fix deletion * Change read at + remove retentionEpich from bs * Gaz * Seperate logic + add detailed comments * Add tests * Add retention slot when creating blobStorage * Fix tests * Gaz * Fix testonly import * Fix linter errors * Fix retentionSlot calculation * Move + use MaxEpochsToPersistBlobs * Remove unused ctx * Prestons suggestion Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com> * Rename --------- Co-authored-by: Radosław Kapka <rkapka@wp.pl> Co-authored-by: prylabs-bulldozer[bot] <58059840+prylabs-bulldozer[bot]@users.noreply.github.com> Co-authored-by: Potuz <potuz@prysmaticlabs.com> Co-authored-by: Preston Van Loon <pvanloon@offchainlabs.com> Co-authored-by: Nishant Das <nishdas93@gmail.com>
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package filesystem
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/prysmaticlabs/prysm/v4/config/params"
|
|
"github.com/spf13/afero"
|
|
)
|
|
|
|
// NewEphemeralBlobStorage should only be used for tests.
|
|
// The instance of BlobStorage returned is backed by an in-memory virtual filesystem,
|
|
// improving test performance and simplifying cleanup.
|
|
func NewEphemeralBlobStorage(_ testing.TB) *BlobStorage {
|
|
return &BlobStorage{fs: afero.NewMemMapFs()}
|
|
}
|
|
|
|
// NewEphemeralBlobStorageWithFs can be used by tests that want access to the virtual filesystem
|
|
// in order to interact with it outside the parameters of the BlobStorage api.
|
|
func NewEphemeralBlobStorageWithFs(_ testing.TB) (afero.Fs, *BlobStorage, error) {
|
|
fs := afero.NewMemMapFs()
|
|
retentionEpoch := params.BeaconNetworkConfig().MinEpochsForBlobsSidecarsRequest
|
|
return fs, &BlobStorage{fs: fs, retentionEpochs: retentionEpoch}, nil
|
|
}
|
|
|
|
type BlobMocker struct {
|
|
fs afero.Fs
|
|
bs *BlobStorage
|
|
}
|
|
|
|
// CreateFakeIndices creates empty blob sidecar files at the expected path for the given
|
|
// root and indices to influence the result of Indices().
|
|
func (bm *BlobMocker) CreateFakeIndices(root [32]byte, indices []uint64) error {
|
|
for i := range indices {
|
|
n := blobNamer{root: root, index: indices[i]}
|
|
if err := bm.fs.MkdirAll(n.dir(), directoryPermissions); err != nil {
|
|
return err
|
|
}
|
|
f, err := bm.fs.Create(n.path())
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if err := f.Close(); err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// NewEphemeralBlobStorageWithMocker returns a *BlobMocker value in addition to the BlobStorage value.
|
|
// BlockMocker encapsulates things blob path construction to avoid leaking implementation details.
|
|
func NewEphemeralBlobStorageWithMocker(_ testing.TB) (*BlobMocker, *BlobStorage) {
|
|
fs := afero.NewMemMapFs()
|
|
bs := &BlobStorage{fs: fs}
|
|
return &BlobMocker{fs: fs, bs: bs}, bs
|
|
}
|