From 8c464e2c25730fb9e1c45225342708b38eddca06 Mon Sep 17 00:00:00 2001 From: Glenn Humphrey Date: Tue, 27 Nov 2007 20:12:12 +0000 Subject: 2007-11-27 Glenn Humphrey * psxbarrier01/psxbarrier01.scn, psxbarrier01/test.c, psxrwlock01/psxrwlock01.scn, psxrwlock01/test.c: Added several test cases to improve test coverage. --- testsuites/psxtests/psxbarrier01/psxbarrier01.scn | 41 +++++++++++ testsuites/psxtests/psxbarrier01/test.c | 83 ++++++++++++++++++++--- 2 files changed, 113 insertions(+), 11 deletions(-) (limited to 'testsuites/psxtests/psxbarrier01') diff --git a/testsuites/psxtests/psxbarrier01/psxbarrier01.scn b/testsuites/psxtests/psxbarrier01/psxbarrier01.scn index e69de29bb2..6b714115ae 100644 --- a/testsuites/psxtests/psxbarrier01/psxbarrier01.scn +++ b/testsuites/psxtests/psxbarrier01/psxbarrier01.scn @@ -0,0 +1,41 @@ +*** POSIX BARRIER TEST 01 *** +pthread_barrierattr_init( NULL ) -- EINVAL +pthread_barrierattr_setpshared( NULL, private ) -- EINVAL +pthread_barrierattr_setpshared( NULL, shared ) -- EINVAL +pthread_barrierattr_getpshared( NULL, &p ) -- EINVAL +pthread_barrierattr_destroy( NULL ) -- EINVAL +pthread_barrierattr_setpshared( &attr, shared ) -- EINVAL +pthread_barrierattr_getpshared( &attr, NULL ) -- EINVAL +pthread_barrierattr_destroy( &attr ) -- EINVAL +pthread_barrierattr_init( &attr ) -- OK +pthread_barrierattr_setpshared( &attr, private ) -- OK +pthread_barrierattr_getpshared( &attr, &p ) -- OK +pthread_barrierattr_setpshared( &attr, shared ) -- OK +pthread_barrierattr_getpshared( &attr, &p ) -- OK +pthread_barrierattr_setpshared( &attr, private ) -- EINVAL +pthread_barrierattr_destroy( &attr ) -- OK +pthread_barrierattr_getpshared( &attr, &p ) destroyed -- EINVAL +pthread_barrier_init( NULL, NULL, 2 ) -- EINVAL +pthread_barrier_init( &barrier, &attr, 2 ) -- EINVAL +pthread_barrierattr_init( &attr ) -- OK +pthread_barrier_init( &barrier, &attr, 0 ) -- EINVAL +pthread_barrier_init( &barrier, NULL, 1 ) -- OK +pthread_barrier_init( &barrier, NULL, 1 ) -- EAGAIN +pthread_barrier_destroy( &barrier ) -- OK +pthread_barrierattr_destroy( &attr ) -- OK +pthread_barrier_destroy( NULL ) -- EINVAL +pthread_barrier_destroy( &bad_barrier ) -- EINVAL +pthread_barrier_wait( NULL ) -- EINVAL +pthread_barrier_wait( &bad_barrier ) -- EINVAL +pthread_barrierattr_init( &attr ) -- OK +pthread_barrier_init( &barrier, &attr, 2 ) -- OK +pthread_barrier_destroy( &barrier ) -- OK +pthread_barrier_init( &Barrier, &attr, NUMBER_THREADS ) -- OK +Init: pthread_create - thread 1 OK +pthread_barrier_wait( &Barrier ) for thread 0x0b010001 +pthread_barrier_destroy( &Barrier ) -- EBUSY +Init: pthread_create - thread 2 OK +pthread_barrier_wait( &Barrier ) for thread 0x0b010002 +pthread_barrier_wait - 0x0b010002 released +pthread_barrier_wait - 0x0b010001 released +*** END OF POSIX BARRIER TEST 01 *** diff --git a/testsuites/psxtests/psxbarrier01/test.c b/testsuites/psxtests/psxbarrier01/test.c index 9685c0c8e1..0500f8a1c5 100644 --- a/testsuites/psxtests/psxbarrier01/test.c +++ b/testsuites/psxtests/psxbarrier01/test.c @@ -30,13 +30,8 @@ void *BarrierThread(void *arg) printf( "pthread_barrier_wait( &Barrier ) for thread 0x%08x\n", id ); status = pthread_barrier_wait( &Barrier ); - if ( id == ThreadIds[NUMBER_THREADS - 1] ) { - printf( "pthread_barrier_wait - 0x%08x auto released\n", id ); - assert( status == PTHREAD_BARRIER_SERIAL_THREAD ); - } else { - printf( "pthread_barrier_wait - 0x%08x released\n", id ); - assert( status == 0 ); - } + printf( "pthread_barrier_wait - 0x%08x released\n", id ); + assert( (status == 0) || (status == PTHREAD_BARRIER_SERIAL_THREAD) ); return NULL; } @@ -54,6 +49,8 @@ int main( ) #endif { + pthread_barrier_t another_barrier; + pthread_barrier_t bad_barrier = 100; pthread_barrier_t barrier; pthread_barrierattr_t attr; int status; @@ -138,8 +135,63 @@ int main( status = pthread_barrierattr_getpshared( &attr, &p ); assert( status == EINVAL ); + /*************** pthread_barrier_init ERROR CHECKs *********/ + /* NULL barrier argument */ + puts( "pthread_barrier_init( NULL, NULL, 2 ) -- EINVAL" ); + status = pthread_barrier_init( NULL, NULL, 2 ); + assert( status == EINVAL ); + + /* uninitialized attr argument */ + puts( "pthread_barrier_init( &barrier, &attr, 2 ) -- EINVAL" ); + status = pthread_barrier_init( &barrier, &attr, 2 ); + assert( status == EINVAL ); + + /* zero count argument */ + puts( "pthread_barrierattr_init( &attr ) -- OK" ); + status = pthread_barrierattr_init( &attr ); + assert( status == 0 ); + + puts( "pthread_barrier_init( &barrier, &attr, 0 ) -- EINVAL" ); + status = pthread_barrier_init( &barrier, &attr, 0 ); + assert( status == EINVAL ); + + /* allocating too many */ + puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- OK" ); + status = pthread_barrier_init( &barrier, NULL, 1 ); + assert( status == 0 ); - /* XXX _init error checks */ + puts( "pthread_barrier_init( &barrier, NULL, 1 ) -- EAGAIN" ); + status = pthread_barrier_init( &barrier, NULL, 1 ); + assert( status == EAGAIN ); + + /* clean up */ + puts( "pthread_barrier_destroy( &barrier ) -- OK" ); + status = pthread_barrier_destroy( &barrier ); + assert( status == 0 ); + + puts( "pthread_barrierattr_destroy( &attr ) -- OK" ); + status = pthread_barrierattr_destroy( &attr ); + assert( status == 0 ); + + /*************** pthread_barrier_destroy ERROR CHECKs *********/ + /* NULL barrier argument */ + puts( "pthread_barrier_destroy( NULL ) -- EINVAL" ); + status = pthread_barrier_destroy( NULL ); + assert( status == EINVAL ); + + puts( "pthread_barrier_destroy( &bad_barrier ) -- EINVAL" ); + status = pthread_barrier_destroy( &bad_barrier ); + assert( status == EINVAL ); + + /*************** pthread_barrier_wait ERROR CHECKs *********/ + /* NULL barrier argument */ + puts( "pthread_barrier_wait( NULL ) -- EINVAL" ); + status = pthread_barrier_wait( NULL ); + assert( status == EINVAL ); + + puts( "pthread_barrier_wait( &bad_barrier ) -- EINVAL" ); + status = pthread_barrier_wait( &bad_barrier ); + assert( status == EINVAL ); /*************** ACTUALLY CREATE ONE CHECK *****************/ puts( "pthread_barrierattr_init( &attr ) -- OK" ); @@ -155,13 +207,22 @@ int main( status = pthread_barrier_destroy( &barrier ); assert( status == 0 ); - /*************** CREATE TESTS AND LET THEM RELEASE *****************/ - puts( "pthread_barrier_init( &Barrier, &attr, 2 ) -- OK" ); - status = pthread_barrier_init( &Barrier, &attr, 2 ); + /*************** CREATE THREADS AND LET THEM RELEASE *****************/ + puts( "pthread_barrier_init( &Barrier, &attr, NUMBER_THREADS ) -- OK" ); + status = pthread_barrier_init( &Barrier, &attr, NUMBER_THREADS ); assert( status == 0 ); assert( barrier != 0 ); for (i=0 ; i