[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.
|