Created by: gongweibao
things to be update: 1. add test for real sparse collect case 2. fix collect call wait issue 3. use a client singlton instead of context singleton