diff options
author | Glenn Humphrey <glenn.humphrey@oarcorp.com> | 2007-11-27 20:42:06 +0000 |
---|---|---|
committer | Glenn Humphrey <glenn.humphrey@oarcorp.com> | 2007-11-27 20:42:06 +0000 |
commit | 4d7ae312488d9acf67c8a93fd4367acb139bf2a1 (patch) | |
tree | d6137ece5e7cdaea15c73501b0dcbf303ed71278 /testsuites/sptests/sp33 | |
parent | 2007-11-29 Till Straumann <strauman@slac.stanford.edu> (diff) | |
download | rtems-4d7ae312488d9acf67c8a93fd4367acb139bf2a1.tar.bz2 |
2007-11-27 Glenn Humphrey <glenn.humphrey@OARcorp.com>
* sp33/init.c, sp33/sp33.scn: Added several test cases to improve test
coverage.
Diffstat (limited to 'testsuites/sptests/sp33')
-rw-r--r-- | testsuites/sptests/sp33/init.c | 96 | ||||
-rw-r--r-- | testsuites/sptests/sp33/sp33.scn | 48 |
2 files changed, 131 insertions, 13 deletions
diff --git a/testsuites/sptests/sp33/init.c b/testsuites/sptests/sp33/init.c index 71ba56f987..dbb2d5d881 100644 --- a/testsuites/sptests/sp33/init.c +++ b/testsuites/sptests/sp33/init.c @@ -66,12 +66,57 @@ rtems_task Init( puts("\n\n*** TEST 33 ***"); - /* create period */ - puts( "Create Barrier" ); + /* Check bad argument cases */ + puts( "Delete barrier with bad id" ); + status = rtems_barrier_delete( 100 ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_barrier_delete did not return RTEMS_INVALID_ID" + ); + + puts( "Release barrier with bad id" ); + status = rtems_barrier_release( 100, &released ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_barrier_release did not return RTEMS_INVALID_ID" + ); + + puts( "Wait on barrier with bad id" ); + status = rtems_barrier_wait( 100, 10 ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_barrier_wait did not return RTEMS_INVALID_ID" + ); + + /* Create barrier with automatic release and 0 maximum waiters */ + puts( "Create barrier with automatic release and 0 max waiters" ); + status = rtems_barrier_create( + name, RTEMS_BARRIER_AUTOMATIC_RELEASE, 0, &Barrier + ); + fatal_directive_status( + status, + RTEMS_INVALID_NUMBER, + "rtems_barrier_create did not return RTEMS_INVALID_NUMBER" + ); + + /* Create barrier */ + puts( "Create barrier" ); status = rtems_barrier_create( name, RTEMS_DEFAULT_ATTRIBUTES, 0, &Barrier ); directive_failed(status, "rtems_barrier_create"); - puts( "Check Barrier ident" ); + /* Check for creating too many */ + puts( "Create too many barriers" ); + status = rtems_barrier_create( name, RTEMS_DEFAULT_ATTRIBUTES, 0, &Barrier ); + fatal_directive_status( + status, + RTEMS_TOO_MANY, + "rtems_barrier_create did not return RTEMS_TOO_MANY" + ); + + puts( "Check barrier ident" ); status = rtems_barrier_ident( name, &testId ); directive_failed(status, "rtems_barrier_ident"); if ( testId != Barrier ) { @@ -79,7 +124,7 @@ rtems_task Init( exit( 0 ); } - puts( "Wait on Barrier w/timeout and TIMEOUT" ); + puts( "Wait on barrier w/timeout and TIMEOUT" ); status = rtems_barrier_wait( Barrier, 25 ); fatal_directive_status( status, @@ -95,12 +140,10 @@ rtems_task Init( exit(0); } - /* - * Create some tasks to wait for the barrier - */ + /* Create some tasks to wait for the barrier */ SuccessfulCase = TRUE; DeletedCase = FALSE; - puts( "\n*** Testing Regular Release of Barrier ***" ); + puts( "\n*** Testing manual release of barrier ***" ); for (i=0 ; i<(CONFIGURE_MAXIMUM_TASKS-1) ; i++) { status = rtems_task_create( rtems_build_name('W','A','I','T'), @@ -116,7 +159,6 @@ rtems_task Init( directive_failed( status, "rtems_task_start of Waiter" ); } - puts( "Delay to let Waiters block" ); status = rtems_task_wake_after( TICKS_PER_SECOND ); directive_failed(status, "rtems_task_wake_after"); @@ -135,12 +177,10 @@ rtems_task Init( status = rtems_task_wake_after( TICKS_PER_SECOND ); directive_failed(status, "rtems_task_wake_after"); - /* - * Create some tasks to wait for the barrier - */ + /* Create some tasks to wait for the barrier */ SuccessfulCase = FALSE; DeletedCase = TRUE; - puts( "\n*** Testing Deletion of Barrier ***" ); + puts( "\n*** Testing Deletion of barrier ***" ); for (i=0 ; i<(CONFIGURE_MAXIMUM_TASKS-1) ; i++) { status = rtems_task_create( rtems_build_name('W','A','I','T'), @@ -168,6 +208,36 @@ rtems_task Init( status = rtems_task_wake_after( TICKS_PER_SECOND ); directive_failed(status, "rtems_task_wake_after"); + /* Create barrier with automatic release */ + puts( "Create barrier" ); + status = rtems_barrier_create( + name, RTEMS_BARRIER_AUTOMATIC_RELEASE, CONFIGURE_MAXIMUM_TASKS-1, &Barrier + ); + directive_failed(status, "rtems_barrier_create"); + + /* Create some tasks to wait for the barrier */ + SuccessfulCase = TRUE; + DeletedCase = FALSE; + puts( "\n*** Testing automatic release of barrier ***" ); + for (i=0 ; i<(CONFIGURE_MAXIMUM_TASKS-1) ; i++) { + status = rtems_task_create( + rtems_build_name('W','A','I','T'), + 1, + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_MODES, + RTEMS_DEFAULT_ATTRIBUTES, + &Tasks[ i ] + ); + directive_failed( status, "rtems_task_create of Waiter" ); + + status = rtems_task_start( Tasks[ i ], Waiter, i ); + directive_failed( status, "rtems_task_start of Waiter" ); + } + + puts( "Delay to let task wait on barrier" ); + status = rtems_task_wake_after( TICKS_PER_SECOND ); + directive_failed(status, "rtems_task_wake_after"); + /* the end */ printf("*** END OF TEST SP33 ***\n"); exit(0); diff --git a/testsuites/sptests/sp33/sp33.scn b/testsuites/sptests/sp33/sp33.scn index e69de29bb2..aa09516e6b 100644 --- a/testsuites/sptests/sp33/sp33.scn +++ b/testsuites/sptests/sp33/sp33.scn @@ -0,0 +1,48 @@ +*** TEST 33 *** +Delete barrier with bad id +Release barrier with bad id +Wait on barrier with bad id +Create barrier with automatic release and 0 max waiters +Create barrier +Create too many barriers +Check barrier ident +Wait on barrier w/timeout and TIMEOUT + +*** Testing manual release of barrier *** +Delay to let Waiters block +Waiter 0 waiting on barrier +Waiter 1 waiting on barrier +Waiter 2 waiting on barrier +Waiter 3 waiting on barrier +Releasing tasks +Delay to let Waiters print a message +Waiter 0 back from barrier +Waiter 1 back from barrier +Waiter 2 back from barrier +Waiter 3 back from barrier + +*** Testing Deletion of barrier *** +Delay to let Waiters block +Waiter 0 waiting on barrier +Waiter 1 waiting on barrier +Waiter 2 waiting on barrier +Waiter 3 waiting on barrier +Delete barrier +Delay to let Waiters print a message +Waiter 0 back from barrier +Waiter 1 back from barrier +Waiter 2 back from barrier +Waiter 3 back from barrier +Create barrier + +*** Testing automatic release of barrier *** +Delay to let task wait on barrier +Waiter 0 waiting on barrier +Waiter 1 waiting on barrier +Waiter 2 waiting on barrier +Waiter 3 waiting on barrier +Waiter 3 back from barrier +Waiter 0 back from barrier +Waiter 1 back from barrier +Waiter 2 back from barrier +*** END OF TEST SP33 *** |