add shared, non-shared test case
refine NIOClient