engine: Speedup tests #827
2 changed files with 40 additions and 61 deletions
|
@ -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)
|
||||
|
||||
|
|
|
@ -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))
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue
What is the point of this (
TestShard_Delete()
) refactoring?It seems, same tests are executed in the same order.
fixed
The diff still seems too big if no changes besides
Flush
were done.The
small object
andbig object
tests had the same code, so they were combined and put into a auxiliary function.It seems like an unrelated change, can we do this refactoring in a separate commit?
fixed