diff --git a/pkg/local_object_storage/engine/inhume_test.go b/pkg/local_object_storage/engine/inhume_test.go index 8fff6280c..4bb128bd7 100644 --- a/pkg/local_object_storage/engine/inhume_test.go +++ b/pkg/local_object_storage/engine/inhume_test.go @@ -36,6 +36,7 @@ func TestStorageEngine_Inhume(t *testing.T) { link.SetSplitID(splitID) t.Run("delete small object", func(t *testing.T) { + t.Parallel() e := testNewEngine(t).setShardsNum(t, 1).engine defer e.Close(context.Background()) @@ -54,6 +55,7 @@ func TestStorageEngine_Inhume(t *testing.T) { }) t.Run("delete big object", func(t *testing.T) { + t.Parallel() s1 := testNewShard(t, 1) s2 := testNewShard(t, 2) diff --git a/pkg/local_object_storage/shard/delete_test.go b/pkg/local_object_storage/shard/delete_test.go index 910528f84..f7687e961 100644 --- a/pkg/local_object_storage/shard/delete_test.go +++ b/pkg/local_object_storage/shard/delete_test.go @@ -12,88 +12,65 @@ import ( "github.com/stretchr/testify/require" ) -func TestShard_Delete(t *testing.T) { - t.Parallel() - - t.Run("without write cache", func(t *testing.T) { +func TestShard_Delete_SmallObject(t *testing.T) { + t.Run("small object without write cache", func(t *testing.T) { t.Parallel() - testShardDelete(t, false) + testShard(t, false, 1<<5) }) - t.Run("with write cache", func(t *testing.T) { + t.Run("small object with write cache", func(t *testing.T) { t.Parallel() - testShardDelete(t, true) + testShard(t, true, 1<<5) }) } -func testShardDelete(t *testing.T, hasWriteCache bool) { +func TestShard_Delete_BigObject(t *testing.T) { + t.Run("big object without write cache", func(t *testing.T) { + t.Parallel() + testShard(t, false, 1<<20) + }) + + t.Run("big object with write cache", func(t *testing.T) { + t.Parallel() + testShard(t, true, 1<<20) + }) +} + +func testShard(t *testing.T, hasWriteCache bool, payloadSize int) { sh := newShard(t, hasWriteCache) cnr := cidtest.ID() obj := testutil.GenerateObjectWithCID(cnr) testutil.AddAttribute(obj, "foo", "bar") + testutil.AddPayload(obj, payloadSize) var putPrm PutPrm + putPrm.SetObject(obj) + var getPrm GetPrm + getPrm.SetAddress(object.AddressOf(obj)) - t.Run("big object", func(t *testing.T) { - testutil.AddPayload(obj, 1<<20) + var delPrm DeletePrm + delPrm.SetAddresses(object.AddressOf(obj)) - putPrm.SetObject(obj) - getPrm.SetAddress(object.AddressOf(obj)) + _, err := sh.Put(context.Background(), putPrm) + require.NoError(t, err) - var delPrm DeletePrm - delPrm.SetAddresses(object.AddressOf(obj)) + _, err = testGet(t, sh, getPrm, hasWriteCache) + require.NoError(t, err) - _, err := sh.Put(context.Background(), putPrm) - require.NoError(t, err) - - _, err = testGet(t, sh, getPrm, hasWriteCache) - require.NoError(t, err) - - if hasWriteCache { - require.Eventually(t, func() bool { - _, err = sh.Delete(context.Background(), delPrm) - return err == nil - }, 30*time.Second, 100*time.Millisecond) - } else { + if hasWriteCache { + sh.FlushWriteCache(context.Background(), FlushWriteCachePrm{ignoreErrors: false}) + require.Eventually(t, func() bool { _, err = sh.Delete(context.Background(), delPrm) - require.NoError(t, err) - } - - _, err = sh.Get(context.Background(), getPrm) - require.True(t, client.IsErrObjectNotFound(err)) - }) - - t.Run("small object", func(t *testing.T) { - obj := testutil.GenerateObjectWithCID(cnr) - testutil.AddAttribute(obj, "foo", "bar") - testutil.AddPayload(obj, 1<<5) - - putPrm.SetObject(obj) - getPrm.SetAddress(object.AddressOf(obj)) - - var delPrm DeletePrm - delPrm.SetAddresses(object.AddressOf(obj)) - - _, err := sh.Put(context.Background(), putPrm) + return err == nil + }, 30*time.Second, 10*time.Millisecond) + } else { + _, err = sh.Delete(context.Background(), delPrm) require.NoError(t, err) + } - _, err = sh.Get(context.Background(), getPrm) - require.NoError(t, err) - - if hasWriteCache { - require.Eventually(t, func() bool { - _, err = sh.Delete(context.Background(), delPrm) - return err == nil - }, 10*time.Second, 100*time.Millisecond) - } else { - _, err = sh.Delete(context.Background(), delPrm) - require.NoError(t, err) - } - - _, err = sh.Get(context.Background(), getPrm) - require.True(t, client.IsErrObjectNotFound(err)) - }) + _, err = sh.Get(context.Background(), getPrm) + require.True(t, client.IsErrObjectNotFound(err)) }