diff --git a/pkg/local_object_storage/shard/gc_test.go b/pkg/local_object_storage/shard/gc_test.go index 24038f10..a7daadac 100644 --- a/pkg/local_object_storage/shard/gc_test.go +++ b/pkg/local_object_storage/shard/gc_test.go @@ -29,7 +29,7 @@ func Test_GCDropsLockedExpiredSimpleObject(t *testing.T) { wcOpts := writecacheconfig.Options{ Type: writecacheconfig.TypeBBolt, } - sh := newCustomShard(t, t.TempDir(), false, wcOpts, nil, []meta.Option{meta.WithEpochState(epoch)}) + sh := newCustomShard(t, false, shardOptions{rootPath: t.TempDir(), wcOpts: wcOpts, metaOptions: []meta.Option{meta.WithEpochState(epoch)}}) t.Cleanup(func() { releaseShard(sh, t) @@ -129,7 +129,7 @@ func Test_GCDropsLockedExpiredComplexObject(t *testing.T) { wcOpts := writecacheconfig.Options{ Type: writecacheconfig.TypeBBolt, } - sh := newCustomShard(t, t.TempDir(), false, wcOpts, nil, []meta.Option{meta.WithEpochState(epoch)}) + sh := newCustomShard(t, false, shardOptions{rootPath: t.TempDir(), wcOpts: wcOpts, metaOptions: []meta.Option{meta.WithEpochState(epoch)}}) t.Cleanup(func() { releaseShard(sh, t) diff --git a/pkg/local_object_storage/shard/range_test.go b/pkg/local_object_storage/shard/range_test.go index 4741e516..8c2f400d 100644 --- a/pkg/local_object_storage/shard/range_test.go +++ b/pkg/local_object_storage/shard/range_test.go @@ -76,24 +76,28 @@ func testShardGetRange(t *testing.T, hasWriteCache bool) { }, } - sh := newCustomShard(t, t.TempDir(), hasWriteCache, wcOpts, - []blobstor.Option{blobstor.WithStorages([]blobstor.SubStorage{ - { - Storage: blobovniczatree.NewBlobovniczaTree( - blobovniczatree.WithLogger(test.NewLogger(t, true)), - blobovniczatree.WithRootPath(filepath.Join(t.TempDir(), "blob", "blobovnicza")), - blobovniczatree.WithBlobovniczaShallowDepth(1), - blobovniczatree.WithBlobovniczaShallowWidth(1)), - Policy: func(_ *objectSDK.Object, data []byte) bool { - return len(data) <= smallObjectSize + sh := newCustomShard(t, hasWriteCache, shardOptions{ + rootPath: t.TempDir(), + wcOpts: wcOpts, + bsOpts: []blobstor.Option{ + blobstor.WithStorages([]blobstor.SubStorage{ + { + Storage: blobovniczatree.NewBlobovniczaTree( + blobovniczatree.WithLogger(test.NewLogger(t, true)), + blobovniczatree.WithRootPath(filepath.Join(t.TempDir(), "blob", "blobovnicza")), + blobovniczatree.WithBlobovniczaShallowDepth(1), + blobovniczatree.WithBlobovniczaShallowWidth(1)), + Policy: func(_ *objectSDK.Object, data []byte) bool { + return len(data) <= smallObjectSize + }, }, - }, - { - Storage: fstree.New( - fstree.WithPath(filepath.Join(t.TempDir(), "blob"))), - }, - })}, - nil) + { + Storage: fstree.New( + fstree.WithPath(filepath.Join(t.TempDir(), "blob"))), + }, + }), + }, + }) defer releaseShard(sh, t) for _, tc := range testCases { diff --git a/pkg/local_object_storage/shard/shard_test.go b/pkg/local_object_storage/shard/shard_test.go index 1550af5c..1318bd28 100644 --- a/pkg/local_object_storage/shard/shard_test.go +++ b/pkg/local_object_storage/shard/shard_test.go @@ -30,41 +30,48 @@ func (s epochState) CurrentEpoch() uint64 { return s.Value } +type shardOptions struct { + rootPath string + wcOpts writecacheconfig.Options + bsOpts []blobstor.Option + metaOptions []meta.Option +} + func newShard(t testing.TB, enableWriteCache bool) *Shard { - sh := newCustomShard(t, t.TempDir(), enableWriteCache, - writecacheconfig.Options{Type: writecacheconfig.TypeBBolt}, - nil, - nil) + sh := newCustomShard(t, enableWriteCache, shardOptions{ + rootPath: t.TempDir(), + wcOpts: writecacheconfig.Options{Type: writecacheconfig.TypeBBolt}, + }) t.Cleanup(func() { releaseShard(sh, t) }) return sh } -func newCustomShard(t testing.TB, rootPath string, enableWriteCache bool, wcOpts writecacheconfig.Options, bsOpts []blobstor.Option, metaOptions []meta.Option) *Shard { +func newCustomShard(t testing.TB, enableWriteCache bool, o shardOptions) *Shard { var sh *Shard if enableWriteCache { - rootPath = filepath.Join(rootPath, "wc") - switch wcOpts.Type { + o.rootPath = filepath.Join(o.rootPath, "wc") + switch o.wcOpts.Type { case writecacheconfig.TypeBBolt: - wcOpts.BBoltOptions = append( - []writecachebbolt.Option{writecachebbolt.WithPath(filepath.Join(rootPath, "wcache"))}, - wcOpts.BBoltOptions...) + o.wcOpts.BBoltOptions = append( + []writecachebbolt.Option{writecachebbolt.WithPath(filepath.Join(o.rootPath, "wcache"))}, + o.wcOpts.BBoltOptions...) case writecacheconfig.TypeBadger: - wcOpts.BadgerOptions = append( - []writecachebadger.Option{writecachebadger.WithPath(filepath.Join(rootPath, "wcache"))}, - wcOpts.BadgerOptions...) + o.wcOpts.BadgerOptions = append( + []writecachebadger.Option{writecachebadger.WithPath(filepath.Join(o.rootPath, "wcache"))}, + o.wcOpts.BadgerOptions...) } } else { - rootPath = filepath.Join(rootPath, "nowc") + o.rootPath = filepath.Join(o.rootPath, "nowc") } - if bsOpts == nil { - bsOpts = []blobstor.Option{ + if o.bsOpts == nil { + o.bsOpts = []blobstor.Option{ blobstor.WithLogger(test.NewLogger(t, true)), blobstor.WithStorages([]blobstor.SubStorage{ { Storage: blobovniczatree.NewBlobovniczaTree( blobovniczatree.WithLogger(test.NewLogger(t, true)), - blobovniczatree.WithRootPath(filepath.Join(rootPath, "blob", "blobovnicza")), + blobovniczatree.WithRootPath(filepath.Join(o.rootPath, "blob", "blobovnicza")), blobovniczatree.WithBlobovniczaShallowDepth(1), blobovniczatree.WithBlobovniczaShallowWidth(1)), Policy: func(_ *objectSDK.Object, data []byte) bool { @@ -73,7 +80,7 @@ func newCustomShard(t testing.TB, rootPath string, enableWriteCache bool, wcOpts }, { Storage: fstree.New( - fstree.WithPath(filepath.Join(rootPath, "blob"))), + fstree.WithPath(filepath.Join(o.rootPath, "blob"))), }, }), } @@ -82,15 +89,15 @@ func newCustomShard(t testing.TB, rootPath string, enableWriteCache bool, wcOpts opts := []Option{ WithID(NewIDFromBytes([]byte{})), WithLogger(test.NewLogger(t, true)), - WithBlobStorOptions(bsOpts...), + WithBlobStorOptions(o.bsOpts...), WithMetaBaseOptions( append([]meta.Option{ - meta.WithPath(filepath.Join(rootPath, "meta")), meta.WithEpochState(epochState{})}, - metaOptions...)..., + meta.WithPath(filepath.Join(o.rootPath, "meta")), meta.WithEpochState(epochState{})}, + o.metaOptions...)..., ), - WithPiloramaOptions(pilorama.WithPath(filepath.Join(rootPath, "pilorama"))), + WithPiloramaOptions(pilorama.WithPath(filepath.Join(o.rootPath, "pilorama"))), WithWriteCache(enableWriteCache), - WithWriteCacheOptions(wcOpts), + WithWriteCacheOptions(o.wcOpts), WithDeletedLockCallback(func(_ context.Context, addresses []oid.Address) { sh.HandleDeletedLocks(addresses) }), diff --git a/pkg/local_object_storage/shard/shutdown_test.go b/pkg/local_object_storage/shard/shutdown_test.go index 304448b1..6cfa5fb6 100644 --- a/pkg/local_object_storage/shard/shutdown_test.go +++ b/pkg/local_object_storage/shard/shutdown_test.go @@ -43,7 +43,7 @@ func TestWriteCacheObjectLoss(t *testing.T) { }, } - sh := newCustomShard(t, dir, true, wcOpts, nil, nil) + sh := newCustomShard(t, true, shardOptions{rootPath: dir, wcOpts: wcOpts}) var errG errgroup.Group for i := range objects { @@ -58,7 +58,7 @@ func TestWriteCacheObjectLoss(t *testing.T) { require.NoError(t, errG.Wait()) require.NoError(t, sh.Close()) - sh = newCustomShard(t, dir, true, wcOpts, nil, nil) + sh = newCustomShard(t, true, shardOptions{rootPath: dir, wcOpts: wcOpts}) defer releaseShard(sh, t) var getPrm GetPrm