[complement-svn] SF.net SVN: complement:[1974] trunk/complement/explore/lib/sockios/ut/ sockios2_te
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2008-10-13 10:37:03
|
Revision: 1974 http://complement.svn.sourceforge.net/complement/?rev=1974&view=rev Author: complement Date: 2008-10-13 10:36:55 +0000 (Mon, 13 Oct 2008) Log Message: ----------- close client's connection in test (sockios2_test::fork) Use *_ASYNC_F macros to report status of child process; Test sockios2_test::disconnect still has problems: - on server side sockbuf good even after shutdown (in both directions) on client side; - sockserver wait died client on close Modified Paths: -------------- trunk/complement/explore/lib/sockios/ut/sockios2_test.cc Modified: trunk/complement/explore/lib/sockios/ut/sockios2_test.cc =================================================================== --- trunk/complement/explore/lib/sockios/ut/sockios2_test.cc 2008-10-13 10:36:17 UTC (rev 1973) +++ trunk/complement/explore/lib/sockios/ut/sockios2_test.cc 2008-10-13 10:36:55 UTC (rev 1974) @@ -522,18 +522,20 @@ try { this_thread::fork(); - connect_processor<srv_reader> prss( 2008 ); + int res = 0; - EXAM_CHECK_ASYNC( prss.good() ); + { + connect_processor<srv_reader> prss( 2008 ); - b.wait(); + EXAM_CHECK_ASYNC_F( prss.good(), res ); - if ( srv_reader::cnd.timed_wait( milliseconds( 800 ) ) ) { - exit( 0 ); + b.wait(); + + EXAM_CHECK_ASYNC_F( srv_reader::cnd.timed_wait( milliseconds( 800 ) ), res ); + // srv_reader::cnd.wait(); } - // srv_reader::cnd.wait(); - exit( 1 ); + exit( res ); } catch ( std::tr2::fork_in_parent& child ) { b.wait(); @@ -546,7 +548,7 @@ s.rdbuf()->shutdown( sock_base::stop_in | sock_base::stop_out ); - // s.close(); + // s.close(); // should work with this line commened, but sorry int stat = -1; EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); @@ -592,19 +594,20 @@ this_thread::fork(); + int res = 0; { connect_processor<worker> prss( 2008 ); - EXAM_CHECK_ASYNC( worker::visits == 0 ); + EXAM_CHECK_ASYNC_F( worker::visits == 0, res ); b.wait(); // -- align here - EXAM_CHECK_ASYNC( prss.good() ); - EXAM_CHECK_ASYNC( prss.is_open() ); + EXAM_CHECK_ASYNC_F( prss.good(), res ); + EXAM_CHECK_ASYNC_F( prss.is_open(), res ); { unique_lock<mutex> lk( worker::lock ); - EXAM_CHECK_ASYNC( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter1 ) ); + EXAM_CHECK_ASYNC_F( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter1 ) , res ); } // for ( int i = 0; i < 64; ++i ) { // give chance for system @@ -613,11 +616,11 @@ { unique_lock<mutex> lksrv( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); + EXAM_CHECK_ASYNC_F( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ), res ); } } - exit( 0 ); + exit( res ); } catch ( std::tr2::fork_in_parent& child ) { b.wait(); // -- align here @@ -627,6 +630,8 @@ EXAM_CHECK( s.good() ); EXAM_CHECK( s.is_open() ); + s.close(); + int stat = -1; EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); if ( WIFEXITED(stat) ) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |