package engine import ( "context" "testing" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/shard" "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/util/logicerr" "github.com/stretchr/testify/require" ) func TestRemoveShard(t *testing.T) { const numOfShards = 6 te := testNewEngine(t).setShardsNum(t, numOfShards) e, ids := te.engine, te.shardIDs defer func() { require.NoError(t, e.Close(context.Background())) }() require.Equal(t, numOfShards, len(e.shardPools)) require.Equal(t, numOfShards, len(e.shards)) removedNum := numOfShards / 2 mSh := make(map[string]bool, numOfShards) for i, id := range ids { if i == removedNum { break } mSh[id.String()] = true } for id, remove := range mSh { if remove { e.removeShards(id) } } require.Equal(t, numOfShards-removedNum, len(e.shardPools)) require.Equal(t, numOfShards-removedNum, len(e.shards)) for id, removed := range mSh { _, ok := e.shards[id] require.True(t, ok != removed) } } func TestDisableShards(t *testing.T) { t.Parallel() const numOfShards = 2 te := testNewEngine(t).setShardsNum(t, numOfShards) e, ids := te.engine, te.shardIDs defer func() { require.NoError(t, e.Close(context.Background())) }() require.ErrorAs(t, e.DetachShards(ids), new(logicerr.Logical)) require.ErrorAs(t, e.DetachShards(nil), new(logicerr.Logical)) require.ErrorAs(t, e.DetachShards([]*shard.ID{}), new(logicerr.Logical)) require.NoError(t, e.DetachShards([]*shard.ID{ids[0]})) require.Equal(t, 1, len(e.shards)) }