Thread: [complement-svn] SF.net SVN: complement: [1453] trunk/complement/explore/test/mt
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2006-12-14 08:26:46
|
Revision: 1453 http://svn.sourceforge.net/complement/?rev=1453&view=rev Author: complement Date: 2006-12-14 00:26:44 -0800 (Thu, 14 Dec 2006) Log Message: ----------- established better test order; test for fork added Modified Paths: -------------- trunk/complement/explore/test/mt/Makefile.inc trunk/complement/explore/test/mt/unit_test.cc Added Paths: ----------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc trunk/complement/explore/test/mt/mt_test_suite.h Modified: trunk/complement/explore/test/mt/Makefile.inc =================================================================== --- trunk/complement/explore/test/mt/Makefile.inc 2006-12-14 07:27:44 UTC (rev 1452) +++ trunk/complement/explore/test/mt/Makefile.inc 2006-12-14 08:26:44 UTC (rev 1453) @@ -1,6 +1,6 @@ -# -*- makefile -*- Time-stamp: <04/05/06 18:40:56 ptr> -# $Id$ +# -*- makefile -*- Time-stamp: <06/12/14 11:11:10 ptr> PRGNAME = mt_ut SRC_CC = unit_test.cc timespec.cc mutex_test.cc spinlock_test.cc \ - recursive_mutex.cc join.cc signal-1.cc signal-2.cc flck.cc lfs.cc + recursive_mutex.cc join.cc signal-1.cc signal-2.cc flck.cc lfs.cc \ + mt_test.cc mt_test_suite.cc Added: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc (rev 0) +++ trunk/complement/explore/test/mt/mt_test.cc 2006-12-14 08:26:44 UTC (rev 1453) @@ -0,0 +1,77 @@ +// -*- C++ -*- Time-stamp: <06/12/14 11:10:26 ptr> + +/* + * Copyright (c) 2006 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + * + */ + +#include <boost/test/unit_test.hpp> + +#include "mt_test.h" + +#include <mt/xmt.h> + +#include <sys/shm.h> +#include <sys/wait.h> + +#include <signal.h> + +using namespace boost::unit_test_framework; + +void mt_test::fork() +{ + shmid_ds ds; + int id = shmget( 5000, 1024, IPC_CREAT | IPC_EXCL | 0600 ); + BOOST_REQUIRE( id != -1 ); + // if ( id == -1 ) { + // cerr << "Error on shmget" << endl; + // } + BOOST_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); + // if ( shmctl( id, IPC_STAT, &ds ) == -1 ) { + // cerr << "Error on shmctl" << endl; + // } + void *buf = shmat( id, 0, 0 ); + BOOST_REQUIRE( buf != reinterpret_cast<void *>(-1) ); + // if ( buf == reinterpret_cast<void *>(-1) ) { + // cerr << "Error on shmat" << endl; + // } + + xmt::__Condition<true>& fcnd = *new( buf ) xmt::__Condition<true>(); + fcnd.set( false ); + + try { + xmt::Thread::fork(); + + try { + + // Child code + + } + catch ( ... ) { + } + + exit( 0 ); + } + catch ( xmt::fork_in_parent& child ) { + try { + BOOST_CHECK( child.pid() > 0 ); + + fcnd.set( true ); + + int stat; + BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + } + catch ( ... ) { + } + } + catch ( ... ) { + } + + (&fcnd)->~__Condition<true>(); + + shmdt( buf ); + shmctl( id, IPC_RMID, &ds ); +} Added: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h (rev 0) +++ trunk/complement/explore/test/mt/mt_test.h 2006-12-14 08:26:44 UTC (rev 1453) @@ -0,0 +1,19 @@ +// -*- C++ -*- Time-stamp: <06/12/14 10:45:35 ptr> + +/* + * Copyright (c) 2006 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + * + */ + +#ifndef __MT_TEST_H +#define __MT_TEST_H + +struct mt_test +{ + void fork(); +}; + +#endif // __MT_TEST_H Added: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc (rev 0) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2006-12-14 08:26:44 UTC (rev 1453) @@ -0,0 +1,26 @@ +// -*- C++ -*- Time-stamp: <06/12/14 11:12:02 ptr> + +/* + * Copyright (c) 2006 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + * + */ + +#include "mt_test_suite.h" +#include "mt_test.h" + +using namespace boost::unit_test_framework; + +mt_test_suite::mt_test_suite() : + test_suite( "mt test suite" ) +{ + boost::shared_ptr<mt_test> instance( new mt_test() ); + + test_case *fork_tc = BOOST_CLASS_TEST_CASE( &mt_test::fork, instance ); + + // basic2_tc->depends_on( basic1_tc ); + + add( fork_tc ); +}; Added: trunk/complement/explore/test/mt/mt_test_suite.h =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.h (rev 0) +++ trunk/complement/explore/test/mt/mt_test_suite.h 2006-12-14 08:26:44 UTC (rev 1453) @@ -0,0 +1,22 @@ +// -*- C++ -*- Time-stamp: <06/12/14 10:42:18 ptr> + +/* + * Copyright (c) 2006 + * Petr Ovtchenkov + * + * Licensed under the Academic Free License Version 3.0 + * + */ + +#ifndef __MT_TEST_SUITE_H +#define __MT_TEST_SUITE_H + +#include <boost/test/unit_test.hpp> + +struct mt_test_suite : + public boost::unit_test_framework::test_suite +{ + mt_test_suite(); +}; + +#endif // __MT_TEST_SUITE_H Modified: trunk/complement/explore/test/mt/unit_test.cc =================================================================== --- trunk/complement/explore/test/mt/unit_test.cc 2006-12-14 07:27:44 UTC (rev 1452) +++ trunk/complement/explore/test/mt/unit_test.cc 2006-12-14 08:26:44 UTC (rev 1453) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <06/12/14 10:01:14 ptr> +// -*- C++ -*- Time-stamp: <06/12/14 10:47:39 ptr> /* * Copyright (c) 2002, 2003, 2004, 2006 @@ -11,6 +11,8 @@ #include <boost/test/unit_test.hpp> #include <config/feature.h> +#include "mt_test_suite.h" + using namespace boost::unit_test_framework; void timespec_diff(); @@ -25,6 +27,7 @@ void flock_test(); void lfs_test(); + #ifdef WIN32 test_suite *__cdecl init_unit_test_suite( int argc, char * * const argv ) #else @@ -50,5 +53,7 @@ // ts->add( BOOST_TEST_CASE( &flock_test ) ); // ts->add( BOOST_TEST_CASE( &lfs_test ) ); + ts->add( new mt_test_suite() ); + return ts; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2006-12-18 17:27:37
|
Revision: 1460 http://svn.sourceforge.net/complement/?rev=1460&view=rev Author: complement Date: 2006-12-18 09:27:35 -0800 (Mon, 18 Dec 2006) Log Message: ----------- check getpid and getppid Modified Paths: -------------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2006-12-18 13:04:02 UTC (rev 1459) +++ trunk/complement/explore/test/mt/mt_test.cc 2006-12-18 17:27:35 UTC (rev 1460) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <06/12/14 11:10:26 ptr> +// -*- C++ -*- Time-stamp: <06/12/18 20:00:15 ptr> /* * Copyright (c) 2006 @@ -75,3 +75,65 @@ shmdt( buf ); shmctl( id, IPC_RMID, &ds ); } + +void mt_test::pid() +{ + shmid_ds ds; + int id = shmget( 5000, 1024, IPC_CREAT | IPC_EXCL | 0600 ); + BOOST_REQUIRE( id != -1 ); + // if ( id == -1 ) { + // cerr << "Error on shmget" << endl; + // } + BOOST_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); + // if ( shmctl( id, IPC_STAT, &ds ) == -1 ) { + // cerr << "Error on shmctl" << endl; + // } + void *buf = shmat( id, 0, 0 ); + BOOST_REQUIRE( buf != reinterpret_cast<void *>(-1) ); + // if ( buf == reinterpret_cast<void *>(-1) ) { + // cerr << "Error on shmat" << endl; + // } + + xmt::__Condition<true>& fcnd = *new( buf ) xmt::__Condition<true>(); + fcnd.set( false ); + pid_t my_pid = xmt::getpid(); + + try { + xmt::fork(); + + try { + + // Child code + BOOST_CHECK( my_pid == xmt::getppid() ); + *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__Condition<true>)) = xmt::getpid(); + + fcnd.set( true ); + + } + catch ( ... ) { + } + + exit( 0 ); + } + catch ( xmt::fork_in_parent& child ) { + try { + BOOST_CHECK( child.pid() > 0 ); + + fcnd.try_wait(); + + BOOST_CHECK( *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__Condition<true>)) == child.pid() ); + + int stat; + BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + } + catch ( ... ) { + } + } + catch ( ... ) { + } + + (&fcnd)->~__Condition<true>(); + + shmdt( buf ); + shmctl( id, IPC_RMID, &ds ); +} Modified: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h 2006-12-18 13:04:02 UTC (rev 1459) +++ trunk/complement/explore/test/mt/mt_test.h 2006-12-18 17:27:35 UTC (rev 1460) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <06/12/14 10:45:35 ptr> +// -*- C++ -*- Time-stamp: <06/12/18 19:49:04 ptr> /* * Copyright (c) 2006 @@ -14,6 +14,7 @@ struct mt_test { void fork(); + void pid(); }; #endif // __MT_TEST_H Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2006-12-18 13:04:02 UTC (rev 1459) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2006-12-18 17:27:35 UTC (rev 1460) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <06/12/14 11:12:02 ptr> +// -*- C++ -*- Time-stamp: <06/12/18 19:58:56 ptr> /* * Copyright (c) 2006 @@ -19,8 +19,10 @@ boost::shared_ptr<mt_test> instance( new mt_test() ); test_case *fork_tc = BOOST_CLASS_TEST_CASE( &mt_test::fork, instance ); + test_case *pid_tc = BOOST_CLASS_TEST_CASE( &mt_test::pid, instance ); - // basic2_tc->depends_on( basic1_tc ); + pid_tc->depends_on( fork_tc ); add( fork_tc ); + add( pid_tc ); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-02-09 13:57:53
|
Revision: 1523 http://svn.sourceforge.net/complement/?rev=1523&view=rev Author: complement Date: 2007-02-09 05:57:52 -0800 (Fri, 09 Feb 2007) Log Message: ----------- add shm_init/finit, for future use Modified Paths: -------------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2007-02-09 10:34:41 UTC (rev 1522) +++ trunk/complement/explore/test/mt/mt_test.cc 2007-02-09 13:57:52 UTC (rev 1523) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/07 08:29:41 ptr> +// -*- C++ -*- Time-stamp: <07/02/09 15:55:31 ptr> /* * Copyright (c) 2006, 2007 @@ -764,8 +764,25 @@ } } +/* ****************************************************** + */ +static const char fname1[] = "/tmp/mt_test.shm.1"; +xmt::shm_alloc<1> seg1; +void mt_test::shm_init() +{ + seg.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); +} + /* ****************************************************** + */ +void mt_test::shm_finit() +{ + seg1.deallocate(); + fs::remove( fname1 ); +} + +/* ****************************************************** * Thread pool (aka ThreadMgr) test. * * Start 200 threads under ThreadMgr; check that all threads Modified: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h 2007-02-09 10:34:41 UTC (rev 1522) +++ trunk/complement/explore/test/mt/mt_test.h 2007-02-09 13:57:52 UTC (rev 1523) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/06 09:48:27 ptr> +// -*- C++ -*- Time-stamp: <07/02/09 15:56:27 ptr> /* * Copyright (c) 2006, 2007 @@ -30,6 +30,9 @@ void shm_named_obj(); void thr_mgr(); + void shm_init(); + void shm_finit(); + private: // static xmt::Thread::ret_code thread_entry_call( void * ); // static int x; Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-09 10:34:41 UTC (rev 1522) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-09 13:57:52 UTC (rev 1523) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/06 10:06:37 ptr> +// -*- C++ -*- Time-stamp: <07/02/09 16:00:57 ptr> /* * Copyright (c) 2006, 2007 @@ -38,6 +38,9 @@ test_case *thr_mgr_tc = BOOST_CLASS_TEST_CASE( &mt_test::thr_mgr, instance ); + test_case *shm_init_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_init_mgr, instance ); + test_case *shm_finit_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_finit_mgr, instance ); + barrier2_tc->depends_on( barrier_tc ); barrier2_tc->depends_on( join_tc ); yield_tc->depends_on( barrier2_tc ); @@ -52,6 +55,9 @@ fork_shm_tc->depends_on( shm_alloc_tc ); shm_nm_obj_tc->depends_on( fork_shm_tc ); + shm_init_tc->depends_on( shm_alloc_tc ); + shm_finit_tc->depends_on( shm_init_tc ); + add( barrier_tc, 0, 2 ); add( join_tc ); add( barrier2_tc, 0, 3 ); @@ -70,4 +76,7 @@ add( shm_nm_obj_tc, 0, 5 ); add( thr_mgr_tc ); + + add( shm_init_tc ); + add( shm_finit_tc ); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-02-12 11:22:05
|
Revision: 1524 http://svn.sourceforge.net/complement/?rev=1524&view=rev Author: complement Date: 2007-02-12 03:22:03 -0800 (Mon, 12 Feb 2007) Log Message: ----------- fix typo Modified Paths: -------------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test_suite.cc Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2007-02-09 13:57:52 UTC (rev 1523) +++ trunk/complement/explore/test/mt/mt_test.cc 2007-02-12 11:22:03 UTC (rev 1524) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/09 15:55:31 ptr> +// -*- C++ -*- Time-stamp: <07/02/12 11:01:56 ptr> /* * Copyright (c) 2006, 2007 @@ -771,7 +771,7 @@ void mt_test::shm_init() { - seg.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); + seg1.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); } /* ****************************************************** Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-09 13:57:52 UTC (rev 1523) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-12 11:22:03 UTC (rev 1524) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/09 16:00:57 ptr> +// -*- C++ -*- Time-stamp: <07/02/12 11:24:11 ptr> /* * Copyright (c) 2006, 2007 @@ -38,8 +38,8 @@ test_case *thr_mgr_tc = BOOST_CLASS_TEST_CASE( &mt_test::thr_mgr, instance ); - test_case *shm_init_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_init_mgr, instance ); - test_case *shm_finit_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_finit_mgr, instance ); + test_case *shm_init_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_init, instance ); + test_case *shm_finit_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_finit, instance ); barrier2_tc->depends_on( barrier_tc ); barrier2_tc->depends_on( join_tc ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-02-19 11:41:44
|
Revision: 1530 http://svn.sourceforge.net/complement/?rev=1530&view=rev Author: complement Date: 2007-02-19 03:41:40 -0800 (Mon, 19 Feb 2007) Log Message: ----------- test for reuse of name of named object in shared memory segment Modified Paths: -------------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2007-02-19 09:52:36 UTC (rev 1529) +++ trunk/complement/explore/test/mt/mt_test.cc 2007-02-19 11:41:40 UTC (rev 1530) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/12 11:01:56 ptr> +// -*- C++ -*- Time-stamp: <07/02/19 14:36:01 ptr> /* * Copyright (c) 2006, 2007 @@ -783,6 +783,92 @@ } /* ****************************************************** + */ + +void mt_test::shm_named_obj_more() +{ + enum { + ObjName = 1 + }; + + try { + xmt::shm_name_mgr<1>& nm = seg1.name_mgr(); + + xmt::allocator_shm<xmt::__Condition<true>,1> shm; + + xmt::__Condition<true>& fcnd = *new ( shm.allocate( 1 ) ) xmt::__Condition<true>(); + nm.named( fcnd, ObjName ); + fcnd.set( false ); + + try { + xmt::fork(); + + xmt::shm_name_mgr<1>& nm_ch = seg1.name_mgr(); + xmt::allocator_shm<xmt::__Condition<true>,1> shm_ch; + xmt::__Condition<true>& fcnd_ch = nm_ch.named<xmt::__Condition<true> >( ObjName ); + fcnd_ch.set( true ); + nm_ch.release<xmt::__Condition<true> >( ObjName ); + + exit( 0 ); + } + catch ( xmt::fork_in_parent& child ) { + fcnd.try_wait(); + int stat; + BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + } + nm.release<xmt::__Condition<true> >( ObjName ); // fcnd should be destroyed here + + xmt::__Condition<true>& fcnd1 = *new ( shm.allocate( 1 ) ) xmt::__Condition<true>(); + nm.named( fcnd1, ObjName ); // ObjName should be free here + fcnd1.set( false ); + + try { + xmt::fork(); + + xmt::shm_name_mgr<1>& nm_ch = seg1.name_mgr(); + xmt::allocator_shm<xmt::__Condition<true>,1> shm_ch; + xmt::__Condition<true>& fcnd_ch = nm_ch.named<xmt::__Condition<true> >( ObjName ); + fcnd_ch.set( true ); + nm_ch.release<xmt::__Condition<true> >( ObjName ); + + exit( 0 ); + } + catch ( xmt::fork_in_parent& child ) { + fcnd1.try_wait(); + int stat; + BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + } + nm.release<xmt::__Condition<true> >( ObjName ); // fcnd should be destroyed here + + xmt::allocator_shm<xmt::__Barrier<true>,1> shm_b; + xmt::__Barrier<true>& b = *new ( shm_b.allocate( 1 ) ) xmt::__Barrier<true>(); + + nm.named( b, ObjName ); // ObjName should be free here + + try { + xmt::fork(); + + xmt::shm_name_mgr<1>& nm_ch = seg1.name_mgr(); + xmt::allocator_shm<xmt::__Barrier<true>,1> shm_ch; + xmt::__Barrier<true>& b_ch = nm_ch.named<xmt::__Barrier<true> >( ObjName ); + b_ch.wait(); + nm_ch.release<xmt::__Barrier<true> >( ObjName ); + + exit( 0 ); + } + catch ( xmt::fork_in_parent& child ) { + b.wait(); + int stat; + BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + } + nm.release<xmt::__Barrier<true> >( ObjName ); // barrier should be destroyed here + } + catch ( xmt::shm_bad_alloc& err ) { + BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + } +} + +/* ****************************************************** * Thread pool (aka ThreadMgr) test. * * Start 200 threads under ThreadMgr; check that all threads Modified: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h 2007-02-19 09:52:36 UTC (rev 1529) +++ trunk/complement/explore/test/mt/mt_test.h 2007-02-19 11:41:40 UTC (rev 1530) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/09 15:56:27 ptr> +// -*- C++ -*- Time-stamp: <07/02/19 13:21:37 ptr> /* * Copyright (c) 2006, 2007 @@ -33,6 +33,8 @@ void shm_init(); void shm_finit(); + void shm_named_obj_more(); + private: // static xmt::Thread::ret_code thread_entry_call( void * ); // static int x; Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-19 09:52:36 UTC (rev 1529) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2007-02-19 11:41:40 UTC (rev 1530) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/12 11:24:11 ptr> +// -*- C++ -*- Time-stamp: <07/02/19 13:43:38 ptr> /* * Copyright (c) 2006, 2007 @@ -35,6 +35,7 @@ test_case *shm_alloc_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_alloc, instance ); test_case *fork_shm_tc = BOOST_CLASS_TEST_CASE( &mt_test::fork_shm, instance ); test_case *shm_nm_obj_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_named_obj, instance ); + test_case *shm_nm_obj_more_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_named_obj_more, instance ); test_case *thr_mgr_tc = BOOST_CLASS_TEST_CASE( &mt_test::thr_mgr, instance ); @@ -56,6 +57,7 @@ shm_nm_obj_tc->depends_on( fork_shm_tc ); shm_init_tc->depends_on( shm_alloc_tc ); + shm_nm_obj_more_tc->depends_on( shm_init_tc ); shm_finit_tc->depends_on( shm_init_tc ); add( barrier_tc, 0, 2 ); @@ -78,5 +80,6 @@ add( thr_mgr_tc ); add( shm_init_tc ); + add( shm_nm_obj_more_tc ); add( shm_finit_tc ); }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-07-17 06:33:19
|
Revision: 1618 http://svn.sourceforge.net/complement/?rev=1618&view=rev Author: complement Date: 2007-07-16 23:33:12 -0700 (Mon, 16 Jul 2007) Log Message: ----------- boost unit test framework was replaced by exam Modified Paths: -------------- trunk/complement/explore/test/mt/Makefile trunk/complement/explore/test/mt/Makefile.inc trunk/complement/explore/test/mt/flck.cc trunk/complement/explore/test/mt/lfs.cc trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc trunk/complement/explore/test/mt/mt_test_suite.h trunk/complement/explore/test/mt/signal-1.cc trunk/complement/explore/test/mt/signal-2.cc trunk/complement/explore/test/mt/signal-3.cc trunk/complement/explore/test/mt/timespec.cc trunk/complement/explore/test/mt/unit_test.cc Modified: trunk/complement/explore/test/mt/Makefile =================================================================== --- trunk/complement/explore/test/mt/Makefile 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/Makefile 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,4 +1,4 @@ -# -*- Makefile -*- Time-stamp: <06/08/04 10:54:19 ptr> +# -*- Makefile -*- Time-stamp: <07/07/17 10:01:41 ptr> SRCROOT := ../.. COMPILER_NAME := gcc @@ -18,13 +18,14 @@ # endif LIBMT_DIR = ${CoMT_DIR}/lib/mt -LIBUTF_DIR = ${CoMT_DIR}/../extern/custom/boost/libs/test/unit_test_framework +# LIBUTF_DIR = ${CoMT_DIR}/../extern/custom/boost/libs/test/unit_test_framework +LIBEXAM_DIR = ${CoMT_DIR}/lib/exam LIBFS_DIR = ${CoMT_DIR}/../extern/custom/boost/libs/filesystem ifeq ($(OSNAME),linux) -release-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR} -L${LIBUTF_DIR}/${OUTPUT_DIR} -L${LIBFS_DIR}/${OUTPUT_DIR} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR}:${LIBUTF_DIR}/${OUTPUT_DIR}:${LIBFS_DIR}/${OUTPUT_DIR}:${STLPORT_LIB_DIR} -stldbg-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR_STLDBG} -L${LIBUTF_DIR}/${OUTPUT_DIR_STLDBG} -L${LIBFS_DIR}/${OUTPUT_DIR_STLDBG} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_STLDBG}:${LIBUTF_DIR}/${OUTPUT_DIR_STLDBG}:${LIBFS_DIR}/${OUTPUT_DIR_STLDBG}:${STLPORT_LIB_DIR} -dbg-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR_DBG} -L${LIBUTF_DIR}/${OUTPUT_DIR_DBG} -L${LIBFS_DIR}/${OUTPUT_DIR_DBG} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_DBG}:${LIBUTF_DIR}/${OUTPUT_DIR_DBG}:${LIBFS_DIR}/${OUTPUT_DIR_DBG}:${STLPORT_LIB_DIR} +release-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR} -L${LIBEXAM_DIR}/${OUTPUT_DIR} -L${LIBFS_DIR}/${OUTPUT_DIR} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR}:${LIBEXAM_DIR}/${OUTPUT_DIR}:${LIBFS_DIR}/${OUTPUT_DIR}:${STLPORT_LIB_DIR} +stldbg-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR_STLDBG} -L${LIBEXAM_DIR}/${OUTPUT_DIR_STLDBG} -L${LIBFS_DIR}/${OUTPUT_DIR_STLDBG} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_STLDBG}:${LIBEXAM_DIR}/${OUTPUT_DIR_STLDBG}:${LIBFS_DIR}/${OUTPUT_DIR_STLDBG}:${STLPORT_LIB_DIR} +dbg-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR_DBG} -L${LIBEXAM_DIR}/${OUTPUT_DIR_DBG} -L${LIBFS_DIR}/${OUTPUT_DIR_DBG} -Wl,--rpath=${LIBMT_DIR}/${OUTPUT_DIR_DBG}:${LIBEXAM_DIR}/${OUTPUT_DIR_DBG}:${LIBFS_DIR}/${OUTPUT_DIR_DBG}:${STLPORT_LIB_DIR} endif ifeq ($(OSNAME),openbsd) @@ -33,9 +34,9 @@ dbg-shared: LDSEARCH += -L${LIBMT_DIR}/${OUTPUT_DIR_DBG} -Wl,-R${LIBMT_DIR}/${OUTPUT_DIR_DBG}:${STLPORT_LIB_DIR} endif -release-shared : LDLIBS = -lxmt -lboost_test_utf -lboost_fs -stldbg-shared : LDLIBS = -lxmtstlg -lboost_test_utfstlg -lboost_fsstlg -dbg-shared : LDLIBS = -lxmtg -lboost_test_utfg -lboost_fsg +release-shared : LDLIBS = -lxmt -lexam -lboost_fs +stldbg-shared : LDLIBS = -lxmtstlg -lexamstlg -lboost_fsstlg +dbg-shared : LDLIBS = -lxmtg -lexamg -lboost_fsg ifeq ($(OSNAME),freebsd) release-shared : LDLIBS += -lthr Modified: trunk/complement/explore/test/mt/Makefile.inc =================================================================== --- trunk/complement/explore/test/mt/Makefile.inc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/Makefile.inc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,6 +1,6 @@ -# -*- makefile -*- Time-stamp: <07/02/06 10:04:25 ptr> +# -*- makefile -*- Time-stamp: <07/07/16 22:12:31 ptr> PRGNAME = mt_ut SRC_CC = unit_test.cc timespec.cc \ - signal-1.cc signal-2.cc signal-3.cc flck.cc lfs.cc \ + signal-1.cc signal-3.cc \ mt_test.cc mt_test_suite.cc Modified: trunk/complement/explore/test/mt/flck.cc =================================================================== --- trunk/complement/explore/test/mt/flck.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/flck.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,7 +1,7 @@ -// -*- C++ -*- Time-stamp: <06/12/15 10:43:07 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 21:34:09 ptr> /* - * Copyright (c) 2004, 2006 + * Copyright (c) 2004, 2006, 2007 * Petr Ovtchenkov * * Copyright (c) 2004 @@ -11,7 +11,8 @@ * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> + #include "mt/flck.h" #include <mt/xmt.h> @@ -21,8 +22,6 @@ #include <iostream> -using namespace boost::unit_test_framework; - using namespace xmt; using namespace std; @@ -207,7 +206,7 @@ return rt; } -void flock_test() +int EXAM_IMPL(flock_test) { unlink( fname ); Thread t1( thread_func ); @@ -220,4 +219,6 @@ t3.join(); t4.join(); unlink( fname ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/lfs.cc =================================================================== --- trunk/complement/explore/test/mt/lfs.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/lfs.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,7 +1,7 @@ -// -*- C++ -*- Time-stamp: <07/07/11 21:22:41 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 21:33:58 ptr> /* - * Copyright (c) 2004, 2006 + * Copyright (c) 2004, 2006, 2007 * Petr Ovtchenkov * * Copyright (c) 2004 @@ -11,7 +11,8 @@ * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> + #include "mt/lfstream.h" #include <mt/xmt.h> @@ -21,8 +22,6 @@ #include <iostream> -using namespace boost::unit_test_framework; - using namespace xmt; using namespace std; @@ -236,7 +235,7 @@ return rt; } -void lfs_test() +int EXAM_IMPL(lfs_test) { unlink( fname ); cnd.set( false ); @@ -268,4 +267,6 @@ unlink( fname ); #endif + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/mt_test.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/07/11 22:08:56 ptr> +// -*- C++ -*- Time-stamp: <07/07/17 09:58:22 ptr> /* * Copyright (c) 2006, 2007 @@ -8,8 +8,6 @@ * */ -#include <boost/test/unit_test.hpp> - #include "mt_test.h" #include <mt/xmt.h> @@ -27,15 +25,13 @@ #include <iostream> using namespace std; - -using namespace boost::unit_test_framework; namespace fs = boost::filesystem; /* ****************************************************** * Degenerate case: check that one thread pass throw * own barrier. */ -void mt_test::barrier() +int EXAM_IMPL(mt_test::barrier) { xmt::barrier b( 1 ); @@ -58,15 +54,17 @@ return rt; } -void mt_test::join_test() +int EXAM_IMPL(mt_test::join_test) { - BOOST_CHECK( x == 0 ); + EXAM_CHECK( x == 0 ); xmt::Thread t( thread_entry_call ); t.join(); - BOOST_CHECK( x == 1 ); + EXAM_CHECK( x == 1 ); + + return EXAM_RESULT; } /* ****************************************************** @@ -84,7 +82,7 @@ return rt; } -void mt_test::barrier2() +int EXAM_IMPL(mt_test::barrier2) { xmt::barrier b; @@ -107,12 +105,12 @@ xmt::barrier& b = *reinterpret_cast<xmt::barrier *>(p); b.wait(); - BOOST_CHECK( xmt::Thread::yield() == 0 ); + EXAM_CHECK_ASYNC( xmt::Thread::yield() == 0 ); return rt; } -void mt_test::yield() +int EXAM_IMPL(mt_test::yield) { xmt::barrier b; @@ -139,11 +137,11 @@ b.wait(); m1.lock(); - BOOST_CHECK( x == 0 ); + EXAM_CHECK_ASYNC( x == 0 ); xmt::Thread::yield(); - BOOST_CHECK( x == 0 ); + EXAM_CHECK_ASYNC( x == 0 ); x = 1; m1.unlock(); @@ -163,7 +161,7 @@ } m1.lock(); - BOOST_CHECK( x == 1 ); + EXAM_CHECK_ASYNC( x == 1 ); x = 2; m1.unlock(); @@ -173,7 +171,7 @@ return rt; } -void mt_test::mutex_test() +int EXAM_IMPL(mt_test::mutex_test) { x = 0; xmt::barrier b; @@ -184,7 +182,9 @@ t1.join(); t2.join(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK( x == 2 ); + + return EXAM_RESULT; } /* ****************************************************** @@ -206,11 +206,11 @@ b.wait(); sl1.lock(); - BOOST_CHECK( x == 0 ); + EXAM_CHECK_ASYNC( x == 0 ); xmt::Thread::yield(); - BOOST_CHECK( x == 0 ); + EXAM_CHECK_ASYNC( x == 0 ); x = 1; sl1.unlock(); @@ -230,7 +230,7 @@ } sl1.lock(); - BOOST_CHECK( x == 1 ); + EXAM_CHECK_ASYNC( x == 1 ); x = 2; sl1.unlock(); @@ -242,7 +242,7 @@ #endif -void mt_test::spinlock_test() +int EXAM_IMPL(mt_test::spinlock_test) { #ifdef __FIT_PTHREAD_SPINLOCK x = 0; @@ -254,8 +254,9 @@ t1.join(); t2.join(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK( x == 2 ); #endif + return EXAM_RESULT; } /* ****************************************************** */ @@ -295,7 +296,7 @@ x = 2; xmt::Thread::yield(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK_ASYNC( x == 2 ); m2.unlock(); } @@ -307,12 +308,12 @@ m2.lock(); - BOOST_CHECK( x == 0 ); + EXAM_CHECK_ASYNC( x == 0 ); x = 1; xmt::Thread::yield(); - BOOST_CHECK( x == 1 ); + EXAM_CHECK_ASYNC( x == 1 ); recursive(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK_ASYNC( x == 2 ); x = 3; m2.unlock(); @@ -335,10 +336,10 @@ m2.lock(); - BOOST_CHECK( x == 3 ); + EXAM_CHECK_ASYNC( x == 3 ); xmt::Thread::yield(); recursive(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK_ASYNC( x == 2 ); m2.unlock(); @@ -349,7 +350,7 @@ return rt; } -void mt_test::recursive_mutex_test() +int EXAM_IMPL(mt_test::recursive_mutex_test) { x = 0; xmt::barrier b; @@ -360,25 +361,27 @@ t1.join(); t2.join(); - BOOST_CHECK( x == 2 ); + EXAM_CHECK( x == 2 ); + + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::fork() +int EXAM_IMPL(mt_test::fork) { shmid_ds ds; int id = shmget( 5000, 1024, IPC_CREAT | IPC_EXCL | 0600 ); - BOOST_REQUIRE( id != -1 ); + EXAM_REQUIRE( id != -1 ); // if ( id == -1 ) { // cerr << "Error on shmget" << endl; // } - BOOST_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); + EXAM_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); // if ( shmctl( id, IPC_STAT, &ds ) == -1 ) { // cerr << "Error on shmctl" << endl; // } void *buf = shmat( id, 0, 0 ); - BOOST_REQUIRE( buf != reinterpret_cast<void *>(-1) ); + EXAM_REQUIRE( buf != reinterpret_cast<void *>(-1) ); // if ( buf == reinterpret_cast<void *>(-1) ) { // cerr << "Error on shmat" << endl; // } @@ -401,12 +404,12 @@ } catch ( xmt::fork_in_parent& child ) { try { - BOOST_CHECK( child.pid() > 0 ); + EXAM_CHECK( child.pid() > 0 ); fcnd.set( true ); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } catch ( ... ) { } @@ -418,24 +421,26 @@ shmdt( buf ); shmctl( id, IPC_RMID, &ds ); + + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::pid() +int EXAM_IMPL(mt_test::pid) { shmid_ds ds; int id = shmget( 5000, 1024, IPC_CREAT | IPC_EXCL | 0600 ); - BOOST_REQUIRE( id != -1 ); + EXAM_REQUIRE( id != -1 ); // if ( id == -1 ) { // cerr << "Error on shmget" << endl; // } - BOOST_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); + EXAM_REQUIRE( shmctl( id, IPC_STAT, &ds ) != -1 ); // if ( shmctl( id, IPC_STAT, &ds ) == -1 ) { // cerr << "Error on shmctl" << endl; // } void *buf = shmat( id, 0, 0 ); - BOOST_REQUIRE( buf != reinterpret_cast<void *>(-1) ); + EXAM_REQUIRE( buf != reinterpret_cast<void *>(-1) ); // if ( buf == reinterpret_cast<void *>(-1) ) { // cerr << "Error on shmat" << endl; // } @@ -450,7 +455,7 @@ try { // Child code - BOOST_CHECK( my_pid == xmt::getppid() ); + EXAM_CHECK( my_pid == xmt::getppid() ); *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__condition<true>)) = xmt::getpid(); fcnd.set( true ); @@ -463,14 +468,14 @@ } catch ( xmt::fork_in_parent& child ) { try { - BOOST_CHECK( child.pid() > 0 ); + EXAM_CHECK( child.pid() > 0 ); fcnd.try_wait(); - BOOST_CHECK( *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__condition<true>)) == child.pid() ); + EXAM_CHECK( *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__condition<true>)) == child.pid() ); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } catch ( ... ) { } @@ -482,38 +487,40 @@ shmdt( buf ); shmctl( id, IPC_RMID, &ds ); + + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::shm_segment() +int EXAM_IMPL(mt_test::shm_segment) { const char fname[] = "/tmp/mt_test.shm"; try { xmt::detail::__shm_alloc<0> seg( 5000, 1024, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); - BOOST_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); + EXAM_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); seg.deallocate(); - BOOST_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); + EXAM_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); - BOOST_REQUIRE( !fs::exists( fname ) ); + EXAM_REQUIRE( !fs::exists( fname ) ); seg.allocate( fname, 1024, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); - BOOST_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); + EXAM_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); seg.deallocate(); - BOOST_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); - BOOST_CHECK( fs::exists( fname ) ); // well, now I don't remove ref file, because shm segment may be created with another way + EXAM_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); + EXAM_CHECK( fs::exists( fname ) ); // well, now I don't remove ref file, because shm segment may be created with another way // not exclusive, should pass seg.allocate( fname, 1024, xmt::shm_base::create, 0660 ); - BOOST_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); + EXAM_CHECK( seg.address() != reinterpret_cast<void *>(-1) ); try { // This instance has segment in usage, should throw seg.allocate( fname, 1024, 0, 0660 ); - BOOST_CHECK( false ); + EXAM_CHECK( false ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK( true ); // Ok + EXAM_CHECK( true ); // Ok } /* @@ -533,30 +540,32 @@ */ seg.deallocate(); - BOOST_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); + EXAM_CHECK( seg.address() == reinterpret_cast<void *>(-1) ); // ---- try { // exclusive, should throw seg.allocate( fname, 1024, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); - BOOST_CHECK( false ); // Fail, should throw + EXAM_CHECK( false ); // Fail, should throw } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK( true ); // Ok + EXAM_CHECK( true ); // Ok } - BOOST_CHECK( fs::exists( fname ) ); + EXAM_CHECK( fs::exists( fname ) ); // ---- fs::remove( fname ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } + + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::shm_alloc() +int EXAM_IMPL(mt_test::shm_alloc) { const char fname[] = "/tmp/mt_test.shm"; try { @@ -569,64 +578,66 @@ size_t sz = shmall.max_size(); // two blocks char *ch1 = shmall.allocate( 3500 ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); char *ch2 = shmall.allocate( 3500 ); - BOOST_CHECK( ch2 != 0 ); + EXAM_CHECK( ch2 != 0 ); try { // try to allocate third block, not enough room char *ch3 = shmall.allocate( 8 * 1024 - 7000 ); - BOOST_CHECK( false ); + EXAM_CHECK( false ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK( true ); + EXAM_CHECK( true ); } // free first blocks shmall.deallocate( ch1, 3500 ); ch1 = shmall.allocate( 3500 ); // allocate [first] block again - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); // free second block shmall.deallocate( ch2, 3500 ); // allocate [second] block again ch2 = shmall.allocate( 3500 ); - BOOST_CHECK( ch2 != 0 ); + EXAM_CHECK( ch2 != 0 ); // free both blocks shmall.deallocate( ch1, 3500 ); shmall.deallocate( ch2, 3500 ); // allocate big block, enough for initial memory chunk ch1 = shmall.allocate( 7000 ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); // free it shmall.deallocate( ch1, 7000 ); // allocate block of maximum size ch1 = shmall.allocate( sz ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); // free it shmall.deallocate( ch1, sz ); // allocate block, enough for initial memory chunk ch1 = shmall.allocate( 7000 ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); // free it shmall.deallocate( ch1, 7000 ); ch1 = shmall.allocate( 3000 ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); ch2 = shmall.allocate( 400 ); - BOOST_CHECK( ch2 != 0 ); + EXAM_CHECK( ch2 != 0 ); char *ch3 = shmall.allocate( 3500 ); - BOOST_CHECK( ch3 != 0 ); + EXAM_CHECK( ch3 != 0 ); shmall.deallocate( ch1, 3000 ); shmall.deallocate( ch2, 400 ); shmall.deallocate( ch3, 3500 ); ch1 = shmall.allocate( sz ); - BOOST_CHECK( ch1 != 0 ); + EXAM_CHECK( ch1 != 0 ); shmall.deallocate( ch1, sz ); } seg.deallocate(); fs::remove( fname ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } + + return EXAM_RESULT; } @@ -634,7 +645,7 @@ * This test is similar mt_test::fork() above, but instead plain shm_* * functions it use allocator based on shared memory segment */ -void mt_test::fork_shm() +int EXAM_IMPL(mt_test::fork_shm) { const char fname[] = "/tmp/mt_test.shm"; try { @@ -661,12 +672,12 @@ } catch ( xmt::fork_in_parent& child ) { try { - BOOST_CHECK( child.pid() > 0 ); + EXAM_CHECK( child.pid() > 0 ); fcnd.set( true ); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } catch ( ... ) { } @@ -680,14 +691,14 @@ fs::remove( fname ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } } /* ****************************************************** * Test: how to take named object in shared memory segment */ -void mt_test::shm_named_obj() +int EXAM_IMPL(mt_test::shm_named_obj) { const char fname[] = "/tmp/mt_test.shm"; enum { @@ -726,32 +737,32 @@ fcnd_ch.set( true ); } catch ( const xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "Fail in child: " << err.what() ); + EXAM_ERROR( err.what() ); } catch ( const std::invalid_argument& err ) { - BOOST_CHECK_MESSAGE( false, "Fail in child: " << err.what() ); + EXAM_ERROR( err.what() ); } catch ( ... ) { - BOOST_CHECK_MESSAGE( false, "Fail in child" ); + EXAM_ERROR( "Fail in child" ); } exit( 0 ); } catch ( xmt::fork_in_parent& child ) { try { - BOOST_CHECK( child.pid() > 0 ); + EXAM_CHECK( child.pid() > 0 ); fcnd.try_wait(); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } catch ( ... ) { - BOOST_CHECK_MESSAGE( false, "Fail in parent" ); + EXAM_ERROR( "Fail in parent" ); } } catch ( ... ) { - BOOST_CHECK_MESSAGE( false, "Fail in fork" ); + EXAM_ERROR( "Fail in fork" ); } (&fcnd)->~__condition<true>(); @@ -760,8 +771,10 @@ fs::remove( fname ); } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } + + return EXAM_RESULT; } /* ****************************************************** @@ -769,23 +782,26 @@ static const char fname1[] = "/tmp/mt_test.shm.1"; xmt::shm_alloc<1> seg1; -void mt_test::shm_init() +int EXAM_IMPL(mt_test::shm_init) { seg1.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::shm_finit() +int EXAM_IMPL(mt_test::shm_finit) { seg1.deallocate(); fs::remove( fname1 ); + + return EXAM_RESULT; } /* ****************************************************** */ -void mt_test::shm_named_obj_more() +int EXAM_IMPL(mt_test::shm_named_obj_more) { enum { ObjName = 1 @@ -811,14 +827,14 @@ nm_ch.release<xmt::__condition<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } exit( 0 ); } catch ( xmt::fork_in_parent& child ) { fcnd.try_wait(); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } nm.release<xmt::__condition<true> >( ObjName ); // fcnd should be destroyed here @@ -837,7 +853,7 @@ nm_ch.release<xmt::__condition<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } exit( 0 ); @@ -845,7 +861,7 @@ catch ( xmt::fork_in_parent& child ) { fcnd1.try_wait(); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } nm.release<xmt::__condition<true> >( ObjName ); // fcnd should be destroyed here @@ -865,7 +881,7 @@ nm_ch.release<xmt::__barrier<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } exit( 0 ); @@ -873,16 +889,18 @@ catch ( xmt::fork_in_parent& child ) { b.wait(); int stat; - BOOST_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); + EXAM_CHECK( waitpid( child.pid(), &stat, 0 ) == child.pid() ); } nm.release<xmt::__barrier<true> >( ObjName ); // barrier should be destroyed here } catch ( xmt::shm_bad_alloc& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } catch ( const std::invalid_argument& err ) { - BOOST_CHECK_MESSAGE( false, "error report: " << err.what() ); + EXAM_ERROR( err.what() ); } + + return EXAM_RESULT; } /* ****************************************************** @@ -914,7 +932,7 @@ return rt; } -void mt_test::thr_mgr() +int EXAM_IMPL(mt_test::thr_mgr) { xmt::ThreadMgr mgr; @@ -925,7 +943,9 @@ // cerr << "Join!\n"; mgr.join(); - BOOST_CHECK( my_thr_scnt == 200 ); - BOOST_CHECK( my_thr_cnt == 0 ); - BOOST_CHECK( mgr.size() == 0 ); + EXAM_CHECK( my_thr_scnt == 200 ); + EXAM_CHECK( my_thr_cnt == 0 ); + EXAM_CHECK( mgr.size() == 0 ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/mt_test.h 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/19 13:21:37 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 21:01:43 ptr> /* * Copyright (c) 2006, 2007 @@ -11,29 +11,33 @@ #ifndef __MT_TEST_H #define __MT_TEST_H +#define FIT_EXAM + +#include <exam/suite.h> + class mt_test { public: - void barrier(); - void join_test(); - void barrier2(); - void yield(); - void mutex_test(); - void spinlock_test(); - void recursive_mutex_test(); + int EXAM_DECL(barrier); + int EXAM_DECL(join_test); + int EXAM_DECL(barrier2); + int EXAM_DECL(yield); + int EXAM_DECL(mutex_test); + int EXAM_DECL(spinlock_test); + int EXAM_DECL(recursive_mutex_test); - void fork(); - void pid(); - void shm_segment(); - void shm_alloc(); - void fork_shm(); - void shm_named_obj(); - void thr_mgr(); + int EXAM_DECL(fork); + int EXAM_DECL(pid); + int EXAM_DECL(shm_segment); + int EXAM_DECL(shm_alloc); + int EXAM_DECL(fork_shm); + int EXAM_DECL(shm_named_obj); + int EXAM_DECL(thr_mgr); - void shm_init(); - void shm_finit(); + int EXAM_DECL(shm_init); + int EXAM_DECL(shm_finit); - void shm_named_obj_more(); + int EXAM_DECL(shm_named_obj_more); private: // static xmt::Thread::ret_code thread_entry_call( void * ); Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,4 +1,4 @@ -// -*- C++ -*- Time-stamp: <07/02/19 13:43:38 ptr> +// -*- C++ -*- Time-stamp: <07/07/17 10:20:08 ptr> /* * Copyright (c) 2006, 2007 @@ -13,73 +13,76 @@ #include <config/feature.h> -using namespace boost::unit_test_framework; +int EXAM_DECL(timespec_diff); +int EXAM_DECL(signal_1_test); +// int EXAM_DECL(signal_2_test); +int EXAM_DECL(signal_3_test); -mt_test_suite::mt_test_suite() : - test_suite( "mt test suite" ) +// flock requre revision, commented now. +// int EXAM_DECL( flock_test ); +// int EXAM_DECL( lfs_test ); + +int EXAM_IMPL(mt_test_suite) { - boost::shared_ptr<mt_test> instance( new mt_test() ); + exam::test_suite t( "libxmt test" ); + mt_test test; - test_case *barrier_tc = BOOST_CLASS_TEST_CASE( &mt_test::barrier, instance ); - test_case *join_tc = BOOST_CLASS_TEST_CASE( &mt_test::join_test, instance ); - test_case *barrier2_tc = BOOST_CLASS_TEST_CASE( &mt_test::barrier2, instance ); - test_case *yield_tc = BOOST_CLASS_TEST_CASE( &mt_test::yield, instance ); - test_case *mutex_test_tc = BOOST_CLASS_TEST_CASE( &mt_test::mutex_test, instance ); -#ifdef __FIT_PTHREAD_SPINLOCK - test_case *spinlock_test_tc = BOOST_CLASS_TEST_CASE( &mt_test::spinlock_test, instance ); -#endif - test_case *recursive_mutex_test_tc = BOOST_CLASS_TEST_CASE( &mt_test::recursive_mutex_test, instance ); - test_case *fork_tc = BOOST_CLASS_TEST_CASE( &mt_test::fork, instance ); - test_case *pid_tc = BOOST_CLASS_TEST_CASE( &mt_test::pid, instance ); - test_case *shm_segment_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_segment, instance ); - test_case *shm_alloc_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_alloc, instance ); - test_case *fork_shm_tc = BOOST_CLASS_TEST_CASE( &mt_test::fork_shm, instance ); - test_case *shm_nm_obj_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_named_obj, instance ); - test_case *shm_nm_obj_more_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_named_obj_more, instance ); + t.add( timespec_diff, "timespec_diff" ); + t.add( signal_1_test, "signal_1_test" ); + // You can't throw exception from signal handler + // (stack saved/restored, that confuse stack unwind); + // by this reason next test is commented: + // t.add( signal_2_test, "signal_2_test" ); + t.add( signal_3_test, "signal_3_test" ); - test_case *thr_mgr_tc = BOOST_CLASS_TEST_CASE( &mt_test::thr_mgr, instance ); + exam::test_suite::test_case_type tc[5]; - test_case *shm_init_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_init, instance ); - test_case *shm_finit_tc = BOOST_CLASS_TEST_CASE( &mt_test::shm_finit, instance ); + tc[0] = t.add( &mt_test::barrier, test, "mt_test::barrier" ); + tc[1] = t.add( &mt_test::join_test, test, "mt_test::join_test" ); + tc[2] = t.add( &mt_test::yield, test, "mt_test::yield", + t.add( &mt_test::barrier2, test, "mt_test::barrier2", + tc, tc+2 ) ); + tc[3] = t.add( &mt_test::mutex_test, test, "mt_test::mutex_test", tc[2] ); - barrier2_tc->depends_on( barrier_tc ); - barrier2_tc->depends_on( join_tc ); - yield_tc->depends_on( barrier2_tc ); - mutex_test_tc->depends_on( yield_tc ); #ifdef __FIT_PTHREAD_SPINLOCK - spinlock_test_tc->depends_on( yield_tc ); + t.add( &mt_test::spinlock_test, test, "mt_test::spinlock_test", tc[2] ); #endif - recursive_mutex_test_tc->depends_on( mutex_test_tc ); + t.add( &mt_test::recursive_mutex_test, test, "mt_test::recursive_mutex_test", tc[3] ); + t.add( &mt_test::pid, test, "mt_test::pid", + t.add( &mt_test::fork, test, "mt_test::fork" ) ); + tc[4] = t.add( &mt_test::shm_alloc, test, "mt_test::shm_alloc", + t.add( &mt_test::shm_segment, test, "mt_test::shm_segment" ) ); + t.add( &mt_test::shm_named_obj, test, "mt_test::shm_named_obj", + t.add( &mt_test::fork_shm, test, "mt_test::fork_shm", tc[4] ) ); + t.add( &mt_test::shm_named_obj_more, test, "mt_test::shm_named_obj_more" ); - pid_tc->depends_on( fork_tc ); - shm_alloc_tc->depends_on( shm_segment_tc ); - fork_shm_tc->depends_on( shm_alloc_tc ); - shm_nm_obj_tc->depends_on( fork_shm_tc ); + t.add( &mt_test::thr_mgr, test, "mt_test::thr_mgr" ); - shm_init_tc->depends_on( shm_alloc_tc ); - shm_nm_obj_more_tc->depends_on( shm_init_tc ); - shm_finit_tc->depends_on( shm_init_tc ); + t.add( &mt_test::shm_finit, test, "mt_test::shm_finit", + t.add( &mt_test::shm_init, test, "mt_test::shm_init", tc[4] ) ); - add( barrier_tc, 0, 2 ); - add( join_tc ); - add( barrier2_tc, 0, 3 ); - add( yield_tc, 0, 3 ); - add( mutex_test_tc, 0, 3 ); + // add( barrier_tc, 0, 2 ); + // add( join_tc ); + // add( barrier2_tc, 0, 3 ); + // add( yield_tc, 0, 3 ); + // add( mutex_test_tc, 0, 3 ); #ifdef __FIT_PTHREAD_SPINLOCK - add( spinlock_test_tc, 0, 3 ); + // add( spinlock_test_tc, 0, 3 ); #endif - add( recursive_mutex_test_tc, 0, 3 ); + // add( recursive_mutex_test_tc, 0, 3 ); - add( fork_tc ); - add( pid_tc ); - add( shm_segment_tc ); - add( shm_alloc_tc ); - add( fork_shm_tc, 0, 5 ); - add( shm_nm_obj_tc, 0, 5 ); + // add( fork_tc ); + // add( pid_tc ); + // add( shm_segment_tc ); + // add( shm_alloc_tc ); + // add( fork_shm_tc, 0, 5 ); + // add( shm_nm_obj_tc, 0, 5 ); - add( thr_mgr_tc ); + // add( thr_mgr_tc ); - add( shm_init_tc ); - add( shm_nm_obj_more_tc ); - add( shm_finit_tc ); + // add( shm_init_tc ); + // add( shm_nm_obj_more_tc ); + // add( shm_finit_tc ); + + return t.girdle(); }; Modified: trunk/complement/explore/test/mt/mt_test_suite.h =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.h 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/mt_test_suite.h 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,7 +1,7 @@ -// -*- C++ -*- Time-stamp: <06/12/14 10:42:18 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 22:08:39 ptr> /* - * Copyright (c) 2006 + * Copyright (c) 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License Version 3.0 @@ -11,12 +11,8 @@ #ifndef __MT_TEST_SUITE_H #define __MT_TEST_SUITE_H -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> -struct mt_test_suite : - public boost::unit_test_framework::test_suite -{ - mt_test_suite(); -}; +int EXAM_DECL(mt_test_suite); #endif // __MT_TEST_SUITE_H Modified: trunk/complement/explore/test/mt/signal-1.cc =================================================================== --- trunk/complement/explore/test/mt/signal-1.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/signal-1.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,17 +1,15 @@ -// -*- C++ -*- Time-stamp: <07/07/11 21:21:38 ptr> +// -*- C++ -*- Time-stamp: <07/07/17 09:49:18 ptr> /* - * Copyright (c) 2003, 2006 + * Copyright (c) 2003, 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License Version 3.0 * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> -using namespace boost::unit_test_framework; - #include <mt/xmt.h> using namespace xmt; @@ -40,7 +38,7 @@ void handler( int ) { - BOOST_CHECK( v == 1 ); + EXAM_CHECK_ASYNC( v == 1 ); v = 4; /* Note: you have very restricted list of system calls that you can use here @@ -64,7 +62,7 @@ // That's why I set own handler: xmt::signal_handler( SIGINT, handler ); - BOOST_CHECK( v == 1 ); + EXAM_CHECK_ASYNC( v == 1 ); cnd.try_wait(); @@ -89,7 +87,7 @@ t.join(); - BOOST_CHECK( v == 4 ); + EXAM_CHECK_ASYNC( v == 4 ); Thread::ret_code rt; rt.iword = 0; @@ -97,11 +95,13 @@ return rt; } -void signal_1_test() +int EXAM_IMPL(signal_1_test) { Thread t( thread_two ); t.join(); - BOOST_CHECK( v == 4 ); + EXAM_CHECK( v == 4 ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/signal-2.cc =================================================================== --- trunk/complement/explore/test/mt/signal-2.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/signal-2.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,17 +1,15 @@ -// -*- C++ -*- Time-stamp: <06/12/15 10:41:46 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 21:34:49 ptr> /* - * Copyright (c) 2003, 2006 + * Copyright (c) 2003, 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License Version 3.0 * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> -using namespace boost::unit_test_framework; - #include <mt/xmt.h> #include <iostream> @@ -116,11 +114,13 @@ return rt; } -void signal_2_test() +int EXAM_IMPL(signal_2_test) { Thread t( thread_two ); t.join(); - BOOST_CHECK( v == 5 ); + EXAM_CHECK( v == 5 ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/signal-3.cc =================================================================== --- trunk/complement/explore/test/mt/signal-3.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/signal-3.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,17 +1,15 @@ -// -*- C++ -*- Time-stamp: <07/07/11 21:22:05 ptr> +// -*- C++ -*- Time-stamp: <07/07/17 09:50:35 ptr> /* - * Copyright (c) 2003, 2006 + * Copyright (c) 2003, 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License Version 3.0 * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> -using namespace boost::unit_test_framework; - #include <mt/xmt.h> using namespace xmt; @@ -45,7 +43,7 @@ void handler( int ) { - BOOST_CHECK( v == 1 ); + EXAM_CHECK_ASYNC( v == 1 ); v = 4; /* Note: you have very restricted list of system calls that you can use here @@ -63,7 +61,7 @@ Thread::ret_code thread_one( void * ) { - BOOST_CHECK( v == 1 ); + EXAM_CHECK_ASYNC( v == 1 ); cnd.try_wait(); @@ -86,11 +84,11 @@ t.join(); - BOOST_CHECK( v == 1 ); // signal was blocked! + EXAM_CHECK_ASYNC( v == 1 ); // signal was blocked! xmt::unblock_signal( SIGINT ); // unblock signal - BOOST_CHECK( v == 4 ); + EXAM_CHECK_ASYNC( v == 4 ); Thread::ret_code rt; rt.iword = 0; @@ -98,7 +96,7 @@ return rt; } -void signal_3_test() +int EXAM_IMPL(signal_3_test) { cnd.set( false ); @@ -110,5 +108,7 @@ t.join(); - BOOST_CHECK( v == 4 ); + EXAM_CHECK( v == 4 ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/timespec.cc =================================================================== --- trunk/complement/explore/test/mt/timespec.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/timespec.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,36 +1,18 @@ -// -*- C++ -*- Time-stamp: <04/05/06 18:38:06 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 21:38:13 ptr> /* - * Copyright (c) 2004 + * Copyright (c) 2004, 2007 * Petr Ovtchenkov * - * Licensed under the Academic Free License Version 2.0 + * Licensed under the Academic Free License Version 3.0 * - * This material is provided "as is", with absolutely no warranty expressed - * or implied. Any use is at your own risk. - * - * Permission to use, copy, modify, distribute and sell this software - * and its documentation for any purpose is hereby granted without fee, - * provided that the above copyright notice appear in all copies and - * that both that copyright notice and this permission notice appear - * in supporting documentation. */ -#ifdef __unix -# ifdef __HP_aCC -#pragma VERSIONID "@(#)$Id$" -# else -#ident "@(#)$Id$" -# endif -#endif - #include <mt/xmt.h> -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> -using namespace boost::unit_test_framework; - -void timespec_diff() +int EXAM_IMPL(timespec_diff) { timespec t1; t1.tv_sec = 1083852875; @@ -42,14 +24,14 @@ timespec t3 = t1 - t2; - BOOST_CHECK( t3.tv_sec == 3 ); - BOOST_CHECK( t3.tv_nsec == 651251000 ); + EXAM_CHECK( t3.tv_sec == 3 ); + EXAM_CHECK( t3.tv_nsec == 651251000 ); t3 = t1; t3 -= t2; - BOOST_CHECK( t3.tv_sec == 3 ); - BOOST_CHECK( t3.tv_nsec == 651251000 ); + EXAM_CHECK( t3.tv_sec == 3 ); + EXAM_CHECK( t3.tv_nsec == 651251000 ); t1.tv_sec = 1; t1.tv_nsec = 1; @@ -59,12 +41,14 @@ t3 = t1 - t2; - BOOST_CHECK( t3.tv_sec == 1 ); - BOOST_CHECK( t3.tv_nsec == 0 ); + EXAM_CHECK( t3.tv_sec == 1 ); + EXAM_CHECK( t3.tv_nsec == 0 ); t3 = t1; t3 -= t2; - BOOST_CHECK( t3.tv_sec == 1 ); - BOOST_CHECK( t3.tv_nsec == 0 ); + EXAM_CHECK( t3.tv_sec == 1 ); + EXAM_CHECK( t3.tv_nsec == 0 ); + + return EXAM_RESULT; } Modified: trunk/complement/explore/test/mt/unit_test.cc =================================================================== --- trunk/complement/explore/test/mt/unit_test.cc 2007-07-17 06:29:46 UTC (rev 1617) +++ trunk/complement/explore/test/mt/unit_test.cc 2007-07-17 06:33:12 UTC (rev 1618) @@ -1,49 +1,19 @@ -// -*- C++ -*- Time-stamp: <07/02/06 10:08:47 ptr> +// -*- C++ -*- Time-stamp: <07/07/16 22:12:10 ptr> /* - * Copyright (c) 2002, 2003, 2004, 2006 + * Copyright (c) 2002, 2003, 2004, 2006, 2007 * Petr Ovtchenkov * * Licensed under the Academic Free License Version 3.0 * */ -#include <boost/test/unit_test.hpp> +#include <exam/suite.h> #include <config/feature.h> #include "mt_test_suite.h" -using namespace boost::unit_test_framework; - -void timespec_diff(); -void signal_1_test(); -void signal_2_test(); -void signal_3_test(); -void flock_test(); -void lfs_test(); - - -#ifdef WIN32 -test_suite *__cdecl init_unit_test_suite( int argc, char * * const argv ) -#else -test_suite *init_unit_test_suite( int argc, char * * const argv ) -#endif /* !WIN32 */ +int main( int, char ** ) { - test_suite *ts = BOOST_TEST_SUITE( "libxmt test" ); - - ts->add( BOOST_TEST_CASE( ×pec_diff ) ); - ts->add( BOOST_TEST_CASE( &signal_1_test ) ); - // You can't throw exception from signal handler - // (stack saved/restored, that confuse stack unwind); - // by this reason next test is commented: - // ts->add( BOOST_TEST_CASE( &signal_2_test ) ); - ts->add( BOOST_TEST_CASE( &signal_3_test ) ); - - // flock requre revision, commented now. - // ts->add( BOOST_TEST_CASE( &flock_test ) ); - // ts->add( BOOST_TEST_CASE( &lfs_test ) ); - - ts->add( new mt_test_suite() ); - - return ts; + return mt_test_suite(0); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-07-17 12:05:18
|
Revision: 1619 http://svn.sourceforge.net/complement/?rev=1619&view=rev Author: complement Date: 2007-07-17 05:05:15 -0700 (Tue, 17 Jul 2007) Log Message: ----------- fix tests dependecies, add missed returns, refine tests structure Modified Paths: -------------- trunk/complement/explore/test/mt/mt_test.cc trunk/complement/explore/test/mt/mt_test.h trunk/complement/explore/test/mt/mt_test_suite.cc Modified: trunk/complement/explore/test/mt/mt_test.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test.cc 2007-07-17 06:33:12 UTC (rev 1618) +++ trunk/complement/explore/test/mt/mt_test.cc 2007-07-17 12:05:15 UTC (rev 1619) @@ -39,7 +39,7 @@ } /* ****************************************************** - * Start thread, join it. + * Start thread, join it. Check return value. */ static int x = 0; @@ -49,7 +49,7 @@ x = 1; xmt::Thread::ret_code rt; - rt.iword = 0; + rt.iword = 2; return rt; } @@ -60,7 +60,7 @@ xmt::Thread t( thread_entry_call ); - t.join(); + EXAM_CHECK( t.join().iword == 2 ); EXAM_CHECK( x == 1 ); @@ -74,7 +74,7 @@ xmt::Thread::ret_code thread2_entry_call( void *p ) { xmt::Thread::ret_code rt; - rt.iword = 0; + rt.iword = 1; xmt::barrier& b = *reinterpret_cast<xmt::barrier *>(p); b.wait(); @@ -89,8 +89,9 @@ xmt::Thread t1( thread2_entry_call, &b ); xmt::Thread t2( thread2_entry_call, &b ); - t2.join(); - t1.join(); + EXAM_CHECK( (t2.join().iword + t1.join().iword) == 2 ); + + return EXAM_RESULT; } /* ****************************************************** @@ -112,11 +113,15 @@ int EXAM_IMPL(mt_test::yield) { - xmt::barrier b; + { + xmt::barrier b; - xmt::Thread t1( thread2_entry_call, &b ); - xmt::Thread t2( thread3_entry_call, &b ); - // .join()'s are in Thread's destructors + xmt::Thread t1( thread2_entry_call, &b ); + xmt::Thread t2( thread3_entry_call, &b ); + // .join()'s are in Thread's destructors + } + + return EXAM_RESULT; } /* ****************************************************** @@ -455,7 +460,7 @@ try { // Child code - EXAM_CHECK( my_pid == xmt::getppid() ); + EXAM_CHECK_ASYNC( my_pid == xmt::getppid() ); *reinterpret_cast<pid_t *>(static_cast<char *>(buf) + sizeof(xmt::__condition<true>)) = xmt::getpid(); fcnd.set( true ); @@ -493,7 +498,7 @@ /* ****************************************************** */ -int EXAM_IMPL(mt_test::shm_segment) +int EXAM_IMPL(shm_test::shm_segment) { const char fname[] = "/tmp/mt_test.shm"; try { @@ -565,7 +570,7 @@ /* ****************************************************** */ -int EXAM_IMPL(mt_test::shm_alloc) +int EXAM_IMPL(shm_test::shm_alloc) { const char fname[] = "/tmp/mt_test.shm"; try { @@ -645,7 +650,7 @@ * This test is similar mt_test::fork() above, but instead plain shm_* * functions it use allocator based on shared memory segment */ -int EXAM_IMPL(mt_test::fork_shm) +int EXAM_IMPL(shm_test::fork_shm) { const char fname[] = "/tmp/mt_test.shm"; try { @@ -693,12 +698,14 @@ catch ( xmt::shm_bad_alloc& err ) { EXAM_ERROR( err.what() ); } + + return EXAM_RESULT; } /* ****************************************************** * Test: how to take named object in shared memory segment */ -int EXAM_IMPL(mt_test::shm_named_obj) +int EXAM_IMPL(shm_test::shm_named_obj) { const char fname[] = "/tmp/mt_test.shm"; enum { @@ -737,13 +744,13 @@ fcnd_ch.set( true ); } catch ( const xmt::shm_bad_alloc& err ) { - EXAM_ERROR( err.what() ); + EXAM_ERROR_ASYNC( err.what() ); } catch ( const std::invalid_argument& err ) { - EXAM_ERROR( err.what() ); + EXAM_ERROR_ASYNC( err.what() ); } catch ( ... ) { - EXAM_ERROR( "Fail in child" ); + EXAM_ERROR_ASYNC( "Fail in child" ); } exit( 0 ); @@ -779,29 +786,30 @@ /* ****************************************************** */ -static const char fname1[] = "/tmp/mt_test.shm.1"; -xmt::shm_alloc<1> seg1; +const char shm_test::fname1[] = "/tmp/mt_test.shm.1"; -int EXAM_IMPL(mt_test::shm_init) +shm_test::shm_test() { - seg1.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); - return EXAM_RESULT; + try { + seg1.allocate( fname1, 4*4096, xmt::shm_base::create | xmt::shm_base::exclusive, 0660 ); + } + catch ( xmt::shm_bad_alloc& err ) { + EXAM_ERROR_ASYNC( err.what() ); + } } /* ****************************************************** */ -int EXAM_IMPL(mt_test::shm_finit) +shm_test::~shm_test() { seg1.deallocate(); fs::remove( fname1 ); - - return EXAM_RESULT; } /* ****************************************************** */ -int EXAM_IMPL(mt_test::shm_named_obj_more) +int EXAM_IMPL(shm_test::shm_named_obj_more) { enum { ObjName = 1 @@ -827,7 +835,7 @@ nm_ch.release<xmt::__condition<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - EXAM_ERROR( err.what() ); + EXAM_ERROR_ASYNC( err.what() ); } exit( 0 ); } @@ -853,7 +861,7 @@ nm_ch.release<xmt::__condition<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - EXAM_ERROR( err.what() ); + EXAM_ERROR_ASYNC( err.what() ); } exit( 0 ); @@ -881,7 +889,7 @@ nm_ch.release<xmt::__barrier<true> >( ObjName ); } catch ( const std::invalid_argument& err ) { - EXAM_ERROR( err.what() ); + EXAM_ERROR_ASYNC( err.what() ); } exit( 0 ); Modified: trunk/complement/explore/test/mt/mt_test.h =================================================================== --- trunk/complement/explore/test/mt/mt_test.h 2007-07-17 06:33:12 UTC (rev 1618) +++ trunk/complement/explore/test/mt/mt_test.h 2007-07-17 12:05:15 UTC (rev 1619) @@ -14,6 +14,7 @@ #define FIT_EXAM #include <exam/suite.h> +#include <mt/shm.h> class mt_test { @@ -28,20 +29,29 @@ int EXAM_DECL(fork); int EXAM_DECL(pid); + int EXAM_DECL(thr_mgr); + + private: + // static xmt::Thread::ret_code thread_entry_call( void * ); + // static int x; +}; + +class shm_test +{ + public: + shm_test(); + ~shm_test(); + int EXAM_DECL(shm_segment); int EXAM_DECL(shm_alloc); int EXAM_DECL(fork_shm); int EXAM_DECL(shm_named_obj); - int EXAM_DECL(thr_mgr); - int EXAM_DECL(shm_init); - int EXAM_DECL(shm_finit); - int EXAM_DECL(shm_named_obj_more); private: - // static xmt::Thread::ret_code thread_entry_call( void * ); - // static int x; + xmt::shm_alloc<1> seg1; + static const char fname1[]; }; #endif // __MT_TEST_H Modified: trunk/complement/explore/test/mt/mt_test_suite.cc =================================================================== --- trunk/complement/explore/test/mt/mt_test_suite.cc 2007-07-17 06:33:12 UTC (rev 1618) +++ trunk/complement/explore/test/mt/mt_test_suite.cc 2007-07-17 12:05:15 UTC (rev 1619) @@ -35,32 +35,33 @@ // t.add( signal_2_test, "signal_2_test" ); t.add( signal_3_test, "signal_3_test" ); - exam::test_suite::test_case_type tc[5]; + exam::test_suite::test_case_type tc[3]; tc[0] = t.add( &mt_test::barrier, test, "mt_test::barrier" ); tc[1] = t.add( &mt_test::join_test, test, "mt_test::join_test" ); tc[2] = t.add( &mt_test::yield, test, "mt_test::yield", t.add( &mt_test::barrier2, test, "mt_test::barrier2", - tc, tc+2 ) ); - tc[3] = t.add( &mt_test::mutex_test, test, "mt_test::mutex_test", tc[2] ); + tc, tc + 2 ) ); + t.add( &mt_test::recursive_mutex_test, test, "mt_test::recursive_mutex_test", + t.add( &mt_test::mutex_test, test, "mt_test::mutex_test", tc[2] ) ); #ifdef __FIT_PTHREAD_SPINLOCK t.add( &mt_test::spinlock_test, test, "mt_test::spinlock_test", tc[2] ); #endif - t.add( &mt_test::recursive_mutex_test, test, "mt_test::recursive_mutex_test", tc[3] ); t.add( &mt_test::pid, test, "mt_test::pid", t.add( &mt_test::fork, test, "mt_test::fork" ) ); - tc[4] = t.add( &mt_test::shm_alloc, test, "mt_test::shm_alloc", - t.add( &mt_test::shm_segment, test, "mt_test::shm_segment" ) ); - t.add( &mt_test::shm_named_obj, test, "mt_test::shm_named_obj", - t.add( &mt_test::fork_shm, test, "mt_test::fork_shm", tc[4] ) ); - t.add( &mt_test::shm_named_obj_more, test, "mt_test::shm_named_obj_more" ); - t.add( &mt_test::thr_mgr, test, "mt_test::thr_mgr" ); + t.add( &mt_test::thr_mgr, test, "mt_test::thr_mgr", tc[1] ); - t.add( &mt_test::shm_finit, test, "mt_test::shm_finit", - t.add( &mt_test::shm_init, test, "mt_test::shm_init", tc[4] ) ); + shm_test shmtest; + t.add( &shm_test::shm_named_obj_more, shmtest, "mt_test::shm_named_obj_more", + t.add( &shm_test::shm_named_obj, shmtest, "mt_test::shm_named_obj", + t.add( &shm_test::fork_shm, shmtest, "mt_test::fork_shm", + t.add( &shm_test::shm_alloc, shmtest, "mt_test::shm_alloc", + t.add( &shm_test::shm_segment, shmtest, "mt_test::shm_segment" ) ) ) ) + ); + // add( barrier_tc, 0, 2 ); // add( join_tc ); // add( barrier2_tc, 0, 3 ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |