package engine import ( "context" "testing" "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 t.Cleanup(func() { 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) } }