[#321] engine/test: Execute tests in parallel

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2023-05-05 16:17:29 +03:00 committed by Evgenii Stratonikov
parent 4578d00619
commit 945454f60c
5 changed files with 25 additions and 1 deletions

View file

@ -18,6 +18,8 @@ import (
) )
func TestDeleteBigObject(t *testing.T) { func TestDeleteBigObject(t *testing.T) {
t.Parallel()
defer os.RemoveAll(t.Name()) defer os.RemoveAll(t.Name())
cnr := cidtest.ID() cnr := cidtest.ID()

View file

@ -77,6 +77,8 @@ func newEngineEvacuate(t *testing.T, shardNum int, objPerShard int) (*StorageEng
} }
func TestEvacuateShard(t *testing.T) { func TestEvacuateShard(t *testing.T) {
t.Parallel()
const objPerShard = 3 const objPerShard = 3
e, ids, objects := newEngineEvacuate(t, 3, objPerShard) e, ids, objects := newEngineEvacuate(t, 3, objPerShard)
@ -132,6 +134,8 @@ func TestEvacuateShard(t *testing.T) {
} }
func TestEvacuateNetwork(t *testing.T) { func TestEvacuateNetwork(t *testing.T) {
t.Parallel()
var errReplication = errors.New("handler error") var errReplication = errors.New("handler error")
acceptOneOf := func(objects []*objectSDK.Object, max int) func(context.Context, oid.Address, *objectSDK.Object) error { acceptOneOf := func(objects []*objectSDK.Object, max int) func(context.Context, oid.Address, *objectSDK.Object) error {
@ -154,6 +158,7 @@ func TestEvacuateNetwork(t *testing.T) {
} }
t.Run("single shard", func(t *testing.T) { t.Run("single shard", func(t *testing.T) {
t.Parallel()
e, ids, objects := newEngineEvacuate(t, 1, 3) e, ids, objects := newEngineEvacuate(t, 1, 3)
evacuateShardID := ids[0].String() evacuateShardID := ids[0].String()
@ -173,6 +178,7 @@ func TestEvacuateNetwork(t *testing.T) {
require.Equal(t, 2, res.Count()) require.Equal(t, 2, res.Count())
}) })
t.Run("multiple shards, evacuate one", func(t *testing.T) { t.Run("multiple shards, evacuate one", func(t *testing.T) {
t.Parallel()
e, ids, objects := newEngineEvacuate(t, 2, 3) e, ids, objects := newEngineEvacuate(t, 2, 3)
require.NoError(t, e.shards[ids[0].String()].SetMode(mode.ReadOnly)) require.NoError(t, e.shards[ids[0].String()].SetMode(mode.ReadOnly))
@ -195,6 +201,7 @@ func TestEvacuateNetwork(t *testing.T) {
}) })
}) })
t.Run("multiple shards, evacuate many", func(t *testing.T) { t.Run("multiple shards, evacuate many", func(t *testing.T) {
t.Parallel()
e, ids, objects := newEngineEvacuate(t, 4, 5) e, ids, objects := newEngineEvacuate(t, 4, 5)
evacuateIDs := ids[0:3] evacuateIDs := ids[0:3]
@ -229,6 +236,7 @@ func TestEvacuateNetwork(t *testing.T) {
} }
func TestEvacuateCancellation(t *testing.T) { func TestEvacuateCancellation(t *testing.T) {
t.Parallel()
e, ids, _ := newEngineEvacuate(t, 2, 3) e, ids, _ := newEngineEvacuate(t, 2, 3)
require.NoError(t, e.shards[ids[0].String()].SetMode(mode.ReadOnly)) require.NoError(t, e.shards[ids[0].String()].SetMode(mode.ReadOnly))

View file

@ -29,6 +29,8 @@ func sortAddresses(addrWithType []object.AddressWithType) []object.AddressWithTy
} }
func TestListWithCursor(t *testing.T) { func TestListWithCursor(t *testing.T) {
t.Parallel()
tests := []struct { tests := []struct {
name string name string
shardNum int shardNum int
@ -60,8 +62,10 @@ func TestListWithCursor(t *testing.T) {
batchSize: 100, batchSize: 100,
}, },
} }
for _, tt := range tests { for i := range tests {
tt := tests[i]
t.Run(tt.name, func(t *testing.T) { t.Run(tt.name, func(t *testing.T) {
t.Parallel()
e := testNewEngine(t).setShardsNumOpts(t, tt.shardNum, func(id int) []shard.Option { e := testNewEngine(t).setShardsNumOpts(t, tt.shardNum, func(id int) []shard.Option {
return []shard.Option{ return []shard.Option{
shard.WithLogger(&logger.Logger{Logger: zap.L()}), shard.WithLogger(&logger.Logger{Logger: zap.L()}),

View file

@ -31,6 +31,8 @@ func (t tss) IsTombstoneAvailable(ctx context.Context, _ oid.Address, epoch uint
} }
func TestLockUserScenario(t *testing.T) { func TestLockUserScenario(t *testing.T) {
t.Parallel()
// Tested user actions: // Tested user actions:
// 1. stores some object // 1. stores some object
// 2. locks the object // 2. locks the object
@ -146,6 +148,8 @@ func TestLockUserScenario(t *testing.T) {
} }
func TestLockExpiration(t *testing.T) { func TestLockExpiration(t *testing.T) {
t.Parallel()
// Tested scenario: // Tested scenario:
// 1. some object is stored // 1. some object is stored
// 2. lock object for it is stored, and the object is locked // 2. lock object for it is stored, and the object is locked
@ -222,6 +226,8 @@ func TestLockExpiration(t *testing.T) {
} }
func TestLockForceRemoval(t *testing.T) { func TestLockForceRemoval(t *testing.T) {
t.Parallel()
// Tested scenario: // Tested scenario:
// 1. some object is stored // 1. some object is stored
// 2. lock object for it is stored, and the object is locked // 2. lock object for it is stored, and the object is locked

View file

@ -17,6 +17,8 @@ import (
) )
func TestRebalance(t *testing.T) { func TestRebalance(t *testing.T) {
t.Parallel()
te := newEngineWithErrorThreshold(t, "", 0) te := newEngineWithErrorThreshold(t, "", 0)
const ( const (
@ -101,6 +103,8 @@ loop:
} }
func TestRebalanceSingleThread(t *testing.T) { func TestRebalanceSingleThread(t *testing.T) {
t.Parallel()
te := newEngineWithErrorThreshold(t, "", 0) te := newEngineWithErrorThreshold(t, "", 0)
obj := testutil.GenerateObjectWithCID(cidtest.ID()) obj := testutil.GenerateObjectWithCID(cidtest.ID())