[complement-svn] SF.net SVN: complement:[1971] trunk/complement/explore/lib/sockios/ut
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2008-10-13 10:34:58
|
Revision: 1971 http://complement.svn.sourceforge.net/complement/?rev=1971&view=rev Author: complement Date: 2008-10-13 10:34:44 +0000 (Mon, 13 Oct 2008) Log Message: ----------- fix test: 'all data available after sockstream was closed' processor_core test split into four tests; in the test of 'all data available after sockstream was closed' the key string checked _after_ check that all worker's dtor's pass. This allow to avoid check ambiguty. Modified Paths: -------------- trunk/complement/explore/lib/sockios/ut/sockios2_test.cc trunk/complement/explore/lib/sockios/ut/sockios2_test.h trunk/complement/explore/lib/sockios/ut/sockios_test_suite.cc Modified: trunk/complement/explore/lib/sockios/ut/sockios2_test.cc =================================================================== --- trunk/complement/explore/lib/sockios/ut/sockios2_test.cc 2008-10-13 10:33:59 UTC (rev 1970) +++ trunk/complement/explore/lib/sockios/ut/sockios2_test.cc 2008-10-13 10:34:44 UTC (rev 1971) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <08/07/01 15:28:50 yeti> +// -*- C++ -*- Time-stamp: <08/10/06 13:33:08 ptr> /* * @@ -318,149 +318,159 @@ // prss->close(); // } -int EXAM_IMPL(sockios2_test::processor_core) +int EXAM_IMPL(sockios2_test::processor_core_one_local) { - { - connect_processor<worker> prss( 2008 ); + connect_processor<worker> prss( 2008 ); - EXAM_CHECK( prss.good() ); - EXAM_CHECK( prss.is_open() ); + EXAM_CHECK( prss.good() ); + EXAM_CHECK( prss.is_open() ); - { - sockstream s( "localhost", 2008 ); + { + sockstream s( "localhost", 2008 ); - EXAM_CHECK( s.good() ); - EXAM_CHECK( s.is_open() ); + EXAM_CHECK( s.good() ); + EXAM_CHECK( s.is_open() ); // for ( int i = 0; i < 64; ++i ) { // give chance to process it // std::tr2::this_thread::yield(); // } - unique_lock<mutex> lk( worker::lock ); + unique_lock<mutex> lk( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter1 ) ); - worker::visits = 0; - } + // worker's ctor visited once: + EXAM_CHECK( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter1 ) ); + worker::visits = 0; + } - // for ( int i = 0; i < 64; ++i ) { // give chance for system - // std::tr2::this_thread::yield(); - // } + // for ( int i = 0; i < 64; ++i ) { // give chance for system + // std::tr2::this_thread::yield(); + // } - unique_lock<mutex> lksrv( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); - } + unique_lock<mutex> lksrv( worker::lock ); + // worker's dtor pass, no worker's objects left + EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); + + return EXAM_RESULT; +} + +int EXAM_IMPL(sockios2_test::processor_core_two_local) +{ { + // check precondition lock_guard<mutex> lk( worker::lock ); EXAM_CHECK( worker::cnt == 0 ); } - { - connect_processor<worker> prss( 2008 ); + connect_processor<worker> prss( 2008 ); - EXAM_CHECK( prss.good() ); - EXAM_CHECK( prss.is_open() ); + EXAM_CHECK( prss.good() ); + EXAM_CHECK( prss.is_open() ); - { - sockstream s1( "localhost", 2008 ); + { + sockstream s1( "localhost", 2008 ); - EXAM_CHECK( s1.good() ); - EXAM_CHECK( s1.is_open() ); + EXAM_CHECK( s1.good() ); + EXAM_CHECK( s1.is_open() ); - sockstream s2( "localhost", 2008 ); + sockstream s2( "localhost", 2008 ); - EXAM_CHECK( s2.good() ); - EXAM_CHECK( s2.is_open() ); + EXAM_CHECK( s2.good() ); + EXAM_CHECK( s2.is_open() ); // for ( int i = 0; i < 1024; ++i ) { // give chance to process it // std::tr2::this_thread::yield(); // } - unique_lock<mutex> lk( worker::lock ); + unique_lock<mutex> lk( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter2 ) ); - worker::visits = 0; - } + // two worker's ctors visited (two connects) + EXAM_CHECK( worker::cnd.timed_wait( lk, milliseconds( 500 ), worker::visits_counter2 ) ); + worker::visits = 0; + } - // for ( int i = 0; i < 64; ++i ) { // give chance for system - // std::tr2::this_thread::yield(); - // } - unique_lock<mutex> lksrv( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); - } + // for ( int i = 0; i < 64; ++i ) { // give chance for system + // std::tr2::this_thread::yield(); + // } + unique_lock<mutex> lksrv( worker::lock ); + // both worker's dtors pass, no worker's objects left + EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); + + return EXAM_RESULT; +} + +int EXAM_IMPL(sockios2_test::processor_core_getline) +{ { + // check precondition lock_guard<mutex> lk( worker::lock ); EXAM_CHECK( worker::cnt == 0 ); } + // check income data before sockstream was closed + connect_processor<worker> prss( 2008 ); - // check income data before sockstream was closed + EXAM_CHECK( prss.good() ); + EXAM_CHECK( prss.is_open() ); + { - connect_processor<worker> prss( 2008 ); + sockstream s1( "localhost", 2008 ); - EXAM_CHECK( prss.good() ); - EXAM_CHECK( prss.is_open() ); + EXAM_CHECK( s1.good() ); + EXAM_CHECK( s1.is_open() ); - { - sockstream s1( "localhost", 2008 ); + s1 << "Hello, world!" << endl; - EXAM_CHECK( s1.good() ); - EXAM_CHECK( s1.is_open() ); + unique_lock<mutex> lk( worker::lock ); + EXAM_CHECK( worker::line_cnd.timed_wait( lk, milliseconds( 500 ), worker::rd_counter1 ) ); - s1 << "Hello, world!" << endl; + // cerr << worker::line << endl; + EXAM_CHECK( worker::line == "Hello, world!" ); + worker::line = ""; + worker::rd = 0; + } - unique_lock<mutex> lk( worker::lock ); - EXAM_CHECK( worker::line_cnd.timed_wait( lk, milliseconds( 500 ), worker::rd_counter1 ) ); + // for ( int i = 0; i < 64; ++i ) { // give chance for system + // std::tr2::this_thread::yield(); + // } - // cerr << worker::line << endl; - EXAM_CHECK( worker::line == "Hello, world!" ); - worker::line = ""; - worker::rd = 0; - } + unique_lock<mutex> lksrv( worker::lock ); + // worker's dtor pass, no worker's objects left + EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); - // for ( int i = 0; i < 64; ++i ) { // give chance for system - // std::tr2::this_thread::yield(); - // } + return EXAM_RESULT; +} - unique_lock<mutex> lksrv( worker::lock ); - EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); - } - +int EXAM_IMPL(sockios2_test::processor_core_income_data) +{ // check after sockstream was closed, i.e. ensure, that all data available - // was read before stream was closed - { - connect_processor<worker> prss( 2008 ); + connect_processor<worker> prss( 2008 ); - EXAM_CHECK( prss.good() ); - EXAM_CHECK( prss.is_open() ); + EXAM_CHECK( prss.good() ); + EXAM_CHECK( prss.is_open() ); - { - sockstream s1( "localhost", 2008 ); + { + sockstream s1( "localhost", 2008 ); - EXAM_CHECK( s1.good() ); - EXAM_CHECK( s1.is_open() ); + EXAM_CHECK( s1.good() ); + EXAM_CHECK( s1.is_open() ); - s1 << "Hello, world!" << endl; - } + s1 << "Hello, world!" << endl; + } - { - unique_lock<mutex> lk( worker::lock ); - EXAM_CHECK( worker::line_cnd.timed_wait( lk, milliseconds( 500 ), worker::rd_counter1 ) ); - } + { + unique_lock<mutex> lk( worker::lock ); + EXAM_CHECK( worker::line_cnd.timed_wait( lk, milliseconds( 500 ), worker::rd_counter1 ) ); + } - // cerr << worker::line << endl; - EXAM_CHECK( worker::line == "Hello, world!" ); - worker::line = ""; - worker::rd = 0; - - for ( int i = 0; i < 64; ++i ) { // give chance for system - std::tr2::this_thread::yield(); - } - // { - // unique_lock<mutex> lksrv( worker::lock ); - // EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); - // } + { + unique_lock<mutex> lksrv( worker::lock ); + EXAM_CHECK( worker::cnd.timed_wait( lksrv, milliseconds( 500 ), worker::counter0 ) ); } + EXAM_CHECK( worker::line == "Hello, world!" ); + worker::line = ""; + worker::rd = 0; + return EXAM_RESULT; } Modified: trunk/complement/explore/lib/sockios/ut/sockios2_test.h =================================================================== --- trunk/complement/explore/lib/sockios/ut/sockios2_test.h 2008-10-13 10:33:59 UTC (rev 1970) +++ trunk/complement/explore/lib/sockios/ut/sockios2_test.h 2008-10-13 10:34:44 UTC (rev 1971) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <08/07/01 12:21:46 yeti> +// -*- C++ -*- Time-stamp: <08/10/06 13:28:39 ptr> /* * @@ -23,7 +23,10 @@ int EXAM_DECL(srv_core); int EXAM_DECL(connect_disconnect); int EXAM_DECL(disconnect); - int EXAM_DECL(processor_core); + int EXAM_DECL(processor_core_one_local); + int EXAM_DECL(processor_core_two_local); + int EXAM_DECL(processor_core_getline); + int EXAM_DECL(processor_core_income_data); int EXAM_DECL(fork); int EXAM_DECL(srv_sigpipe); int EXAM_DECL(read0); Modified: trunk/complement/explore/lib/sockios/ut/sockios_test_suite.cc =================================================================== --- trunk/complement/explore/lib/sockios/ut/sockios_test_suite.cc 2008-10-13 10:33:59 UTC (rev 1970) +++ trunk/complement/explore/lib/sockios/ut/sockios_test_suite.cc 2008-10-13 10:34:44 UTC (rev 1971) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <08/07/01 12:57:40 yeti> +// -*- C++ -*- Time-stamp: <08/10/06 13:30:03 ptr> /* * @@ -80,9 +80,12 @@ t.add( &sockios2_test::read0, test2, "sockios2_test::read0", t.add( &sockios2_test::srv_sigpipe, test2, "sockios2_test::srv_sigpipe", t.add( &sockios2_test::fork, test2, "sockios2_test::fork", - tc[3] = t.add( &sockios2_test::processor_core, test2, "sockios2_test::processor_core", - t.add( &sockios2_test::connect_disconnect, test2, "sockios2_test::connect_disconnect", - t.add( &sockios2_test::srv_core, test2, "sockios2_test::srv_core" ) ) ) ) ) ); + tc[3] = t.add( &sockios2_test::processor_core_income_data, test2, "all data available after sockstream was closed", + t.add( &sockios2_test::processor_core_getline, test2, "check income data before sockstream was closed", + t.add( &sockios2_test::processor_core_two_local, test2, "two local connects to connection processor", + t.add( &sockios2_test::processor_core_one_local, test2, "one local connect to connection processor", + t.add( &sockios2_test::connect_disconnect, test2, "sockios2_test::connect_disconnect", + t.add( &sockios2_test::srv_core, test2, "sockios2_test::srv_core" ) ) ) ) ) ) ) ) ); t.add( &sockios2_test::disconnect, test2, "sockios2_test::disconnect", tc[3] ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |