From 403c5077be7841a39d6f196cf118264d5edf0a94 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Thu, 31 Jan 2008 16:08:52 +0000 Subject: 2008-01-31 Joel Sherrill * sp09/screen01.c, sp09/sp09.scn: Add more bad thread Id cases. * sp40/init.c, sp40/sp40.scn: Add message to say test is TBD. * sp41/sp41.scn: Now has content. * sp43/init.c, sp43/sp43.scn: Enhanced to increase coverage of Object Services recently added to API. --- testsuites/sptests/ChangeLog | 8 +++ testsuites/sptests/sp09/screen01.c | 33 +++++++++- testsuites/sptests/sp09/sp09.scn | 2 +- testsuites/sptests/sp40/init.c | 2 + testsuites/sptests/sp40/sp40.scn | 3 + testsuites/sptests/sp41/sp41.scn | 4 ++ testsuites/sptests/sp43/init.c | 120 +++++++++++++++++++++++++++---------- testsuites/sptests/sp43/sp43.scn | Bin 2611 -> 3429 bytes 8 files changed, 137 insertions(+), 35 deletions(-) (limited to 'testsuites') diff --git a/testsuites/sptests/ChangeLog b/testsuites/sptests/ChangeLog index 31b4c48473..38816aab22 100644 --- a/testsuites/sptests/ChangeLog +++ b/testsuites/sptests/ChangeLog @@ -1,3 +1,11 @@ +2008-01-31 Joel Sherrill + + * sp09/screen01.c, sp09/sp09.scn: Add more bad thread Id cases. + * sp40/init.c, sp40/sp40.scn: Add message to say test is TBD. + * sp41/sp41.scn: Now has content. + * sp43/init.c, sp43/sp43.scn: Enhanced to increase coverage of + Object Services recently added to API. + 2008-01-29 Joel Sherrill * Makefile.am, configure.ac, sp02/task1.c, sp24/resume.c, diff --git a/testsuites/sptests/sp09/screen01.c b/testsuites/sptests/sp09/screen01.c index 306110e26e..6fcafe5569 100644 --- a/testsuites/sptests/sp09/screen01.c +++ b/testsuites/sptests/sp09/screen01.c @@ -6,7 +6,7 @@ * * Output parameters: NONE * - * COPYRIGHT (c) 1989-1999. + * COPYRIGHT (c) 1989-2008. * On-Line Applications Research Corporation (OAR). * * The license and distribution terms for this file may be @@ -49,7 +49,11 @@ void Screen1() ); puts( "TA1 - rtems_task_get_note - RTEMS_INVALID_ID" ); - status = rtems_task_get_note( _RTEMS_tasks_Information.maximum_id, RTEMS_NOTEPAD_LAST, ¬epad_value ); + status = rtems_task_get_note( + _RTEMS_tasks_Information.maximum_id, + RTEMS_NOTEPAD_LAST, + ¬epad_value + ); fatal_directive_status( status, RTEMS_INVALID_ID, @@ -67,8 +71,31 @@ void Screen1() RTEMS_INVALID_ID, "rtems_task_get_note with illegal id" ); - puts( "TA1 - rtems_task_get_note - RTEMS_INVALID_ID" ); + status = rtems_task_get_note( + rtems_build_id( OBJECTS_CLASSIC_API, 2, 1, 1 ), + RTEMS_NOTEPAD_LAST, + ¬epad_value + ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_task_get_note with non-task ID" + ); + + puts( "TA1 - rtems_task_get_note - RTEMS_INVALID_ID (no tasks in API)" ); + status = rtems_task_get_note( + rtems_build_id( OBJECTS_ITRON_API, OBJECTS_ITRON_TASKS, 1, 1 ), + RTEMS_NOTEPAD_LAST, + ¬epad_value + ); + #ifdef RTEMS_ITRON_API + directive_failed( status, + #else + fatal_directive_status( status, RTEMS_INVALID_ID, + #endif + "rtems_task_get_note with no tasks in API" + ); status = rtems_task_ident( RTEMS_SELF, RTEMS_SEARCH_ALL_NODES, &self_id ); directive_failed( status, "rtems_task_ident of self" ); diff --git a/testsuites/sptests/sp09/sp09.scn b/testsuites/sptests/sp09/sp09.scn index 2262218734..fa92e4889c 100644 --- a/testsuites/sptests/sp09/sp09.scn +++ b/testsuites/sptests/sp09/sp09.scn @@ -5,7 +5,7 @@ TA1 - rtems_task_delete - RTEMS_INVALID_ID TA1 - rtems_task_get_note - RTEMS_INVALID_NUMBER TA1 - rtems_task_get_note - RTEMS_INVALID_ID TA1 - rtems_task_get_note - RTEMS_INVALID_ID -TA1 - rtems_task_get_note - RTEMS_INVALID_ID +TA1 - rtems_task_get_note - RTEMS_INVALID_ID (no tasks in API) TA1 - rtems_task_ident - current task RTEMS_SUCCESSFUL TA1 - rtems_task_ident - global RTEMS_INVALID_NAME TA1 - rtems_task_ident - local RTEMS_INVALID_NAME diff --git a/testsuites/sptests/sp40/init.c b/testsuites/sptests/sp40/init.c index 3c5dd7bd4d..bb6f705d5d 100644 --- a/testsuites/sptests/sp40/init.c +++ b/testsuites/sptests/sp40/init.c @@ -20,6 +20,8 @@ rtems_task Init( { puts( "\n\n*** TEST 40 ***" ); + puts( "TBD - Write test case matching this description" ); + /* * Register two drivers to fill up the table */ diff --git a/testsuites/sptests/sp40/sp40.scn b/testsuites/sptests/sp40/sp40.scn index e69de29bb2..1057065b8f 100644 --- a/testsuites/sptests/sp40/sp40.scn +++ b/testsuites/sptests/sp40/sp40.scn @@ -0,0 +1,3 @@ +*** TEST 40 *** +TBD - Write test case matching this description +*** END OF TEST 40 *** diff --git a/testsuites/sptests/sp41/sp41.scn b/testsuites/sptests/sp41/sp41.scn index e69de29bb2..fb661e3f35 100644 --- a/testsuites/sptests/sp41/sp41.scn +++ b/testsuites/sptests/sp41/sp41.scn @@ -0,0 +1,4 @@ +*** TEST 41 *** +Release from ISR hitting synchronization point has occurred +Release from ISR (with timeout) hitting synchronization point has occurred +Run multiple times in attempt to hit threadq timeout synchronization point diff --git a/testsuites/sptests/sp43/init.c b/testsuites/sptests/sp43/init.c index 6ce8d05a92..56950945ae 100644 --- a/testsuites/sptests/sp43/init.c +++ b/testsuites/sptests/sp43/init.c @@ -23,6 +23,9 @@ #undef rtems_object_id_get_index #undef rtems_object_id_get_node +rtems_id main_task; +rtems_name main_name; + void print_class_info( uint32_t api, uint32_t class, @@ -44,13 +47,33 @@ void print_class_info( ); } +void change_name( + const char *newName +) +{ + rtems_status_code status; + char name[ 5 ]; + char *ptr; + + puts( "rtems_object_set_name - change name of init task" ); + status = rtems_object_set_name( main_task, newName ); + directive_failed( status, "rtems_object_set_name" ); + + status = rtems_object_get_classic_name( main_task, &main_name ); + directive_failed( status, "rtems_object_get_classic_name" ); + put_name( main_name, FALSE ); + puts( " - name returned by rtems_object_get_classic_name" ); + + ptr = rtems_object_get_name( main_task, 5, name ); + rtems_test_assert(ptr != NULL); + printf( "rtems_object_get_name returned (%s) for init task\n", ptr ); +} + rtems_task Init( rtems_task_argument argument ) { rtems_status_code status; - rtems_id main_task; - rtems_name main_name; rtems_id tmpId; rtems_name tmpName; char name[5]; @@ -59,7 +82,6 @@ rtems_task Init( uint32_t part; rtems_object_api_class_information info; - puts( "\n\n*** TEST 43 ***" ); main_task = rtems_task_self(); @@ -69,15 +91,32 @@ rtems_task Init( fatal_directive_status( status, RTEMS_INVALID_ADDRESS, - "rtems_object_get_classic_name" + "rtems_object_get_classic_name #1" + ); + + puts( "rtems_object_get_classic_name - INVALID_ID (bad index)" ); + status = rtems_object_get_classic_name( main_task + 5, &main_name ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_object_get_classic_name #2" + ); + + puts( "rtems_object_get_classic_name - INVALID_ID (unallocated index)" ); + status = rtems_object_get_classic_name( main_task + 1, &main_name ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_object_get_classic_name #4" ); - puts( "rtems_object_get_classic_name - INVALID_ID" ); - status = rtems_object_get_classic_name( main_task + 5, &tmpId ); + puts( "rtems_object_get_classic_name - INVALID_ID (bad API)" ); + tmpId = rtems_build_id( 0xff, OBJECTS_RTEMS_TASKS, 1, 1 ), + status = rtems_object_get_classic_name( tmpId, &main_name ); fatal_directive_status( status, RTEMS_INVALID_ID, - "rtems_object_get_classic_name" + "rtems_object_get_classic_name #5" ); status = rtems_object_get_classic_name( main_task, &main_name ); @@ -118,21 +157,37 @@ rtems_task Init( printf( "rtems_object_get_name returned (%s) for init task\n", ptr ); /* - * rtems_object_set_name - change name of init task + * rtems_object_set_name - errors */ - puts( "rtems_object_set_name - change name of init task" ); - status = rtems_object_set_name( main_task, newName ); - directive_failed( status, "rtems_object_set_name" ); + puts( "rtems_object_set_name - INVALID_ID (bad API)" ); + tmpId = rtems_build_id( 0xff, OBJECTS_RTEMS_TASKS, 1, 1 ), + status = rtems_object_set_name( tmpId, newName ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_object_set_name #1" + ); - status = rtems_object_get_classic_name( main_task, &main_name ); - directive_failed( status, "rtems_object_get_classic_name" ); - put_name( main_name, FALSE ); - puts( " - name returned by rtems_object_get_classic_name" ); + puts( "rtems_object_set_name - INVALID_ID (bad index)" ); + status = rtems_object_set_name( main_task + 10, newName ); + fatal_directive_status( + status, + RTEMS_INVALID_ID, + "rtems_object_set_name #2" + ); - ptr = rtems_object_get_name( main_task, 5, name ); - rtems_test_assert(ptr != NULL); - printf( "rtems_object_get_name returned (%s) for init task\n", ptr ); + /* + * rtems_object_set_name - change name of init task in various ways. + * + * This is strange but pushes the SuperCore code to do different things. + */ + + change_name( "New1" ); + change_name( "Ne1" ); + change_name( "N1" ); + change_name( "N" ); + change_name( "" ); /* * Exercise id build and extraction routines @@ -177,6 +232,10 @@ rtems_task Init( rtems_object_api_minimum_class(0) ); printf( "rtems_object_api_maximum_class(0) returned %d\n", rtems_object_api_maximum_class(0) ); + printf( "rtems_object_api_minimum_class(255) returned %d\n", + rtems_object_api_minimum_class(255) ); + printf( "rtems_object_api_maximum_class(255) returned %d\n", + rtems_object_api_maximum_class(255) ); printf( "rtems_object_api_minimum_class(OBJECTS_INTERNAL_API) returned %d\n", rtems_object_api_minimum_class(OBJECTS_INTERNAL_API) ); @@ -188,31 +247,24 @@ rtems_task Init( printf( "rtems_object_api_maximum_class(OBJECTS_CLASSIC_API) returned %d\n", rtems_object_api_maximum_class(OBJECTS_CLASSIC_API) ); - printf( "rtems_object_api_minimum_class(OBJECTS_POSIX_API) returned %d\n", - rtems_object_api_minimum_class(OBJECTS_POSIX_API) ); - printf( "rtems_object_api_maximum_class(OBJECTS_POSIX_API) returned %d\n", - rtems_object_api_maximum_class(OBJECTS_POSIX_API) ); - printf( "rtems_object_api_minimum_class(OBJECTS_ITRON_API) returned %d\n", rtems_object_api_minimum_class(OBJECTS_ITRON_API) ); printf( "rtems_object_api_maximum_class(OBJECTS_ITRON_API) returned %d\n", rtems_object_api_maximum_class(OBJECTS_ITRON_API) ); - /* * Another screen break for the API and class name tests */ rtems_test_pause(); printf( "rtems_object_get_api_name(0) = %s\n", rtems_object_get_api_name(0) ); - printf( "rtems_object_get_api_name(255) = %s\n", rtems_object_get_api_name(255)); + printf( "rtems_object_get_api_name(255) = %s\n", + rtems_object_get_api_name(255)); printf( "rtems_object_get_api_name(INTERNAL_API) = %s\n", rtems_object_get_api_name(OBJECTS_INTERNAL_API) ); printf( "rtems_object_get_api_name(CLASSIC_API) = %s\n", rtems_object_get_api_name(OBJECTS_CLASSIC_API) ); - printf( "rtems_object_get_api_name(POSIX_API) = %s\n", - rtems_object_get_api_name(OBJECTS_POSIX_API) ); printf( "rtems_object_get_api_name(ITRON_API) = %s\n", rtems_object_get_api_name(OBJECTS_ITRON_API) ); @@ -220,8 +272,12 @@ rtems_task Init( rtems_object_get_api_class_name( 0, OBJECTS_RTEMS_TASKS ) ); printf( "rtems_object_get_api_class_name(CLASSIC_API, 0) = %s\n", rtems_object_get_api_class_name( OBJECTS_CLASSIC_API, 0 ) ); - printf( "rtems_object_get_api_class_name(CLASSIC_API, RTEMS_BARRIERS) = %s\n", - rtems_object_get_api_class_name(OBJECTS_CLASSIC_API, OBJECTS_RTEMS_BARRIERS)); + printf("rtems_object_get_api_class_name(INTERNAL_API, MUTEXES) = %s\n", + rtems_object_get_api_class_name( + OBJECTS_INTERNAL_API, OBJECTS_INTERNAL_MUTEXES)); + printf("rtems_object_get_api_class_name(CLASSIC_API, RTEMS_BARRIERS) = %s\n", + rtems_object_get_api_class_name( + OBJECTS_CLASSIC_API, OBJECTS_RTEMS_BARRIERS)); /* * Another screen break for the information @@ -239,7 +295,8 @@ rtems_task Init( ); puts( "rtems_object_get_class_information - INVALID_NUMBER (bad API)" ); - status = rtems_object_get_class_information(0, OBJECTS_INTERNAL_THREADS, &info); + status = + rtems_object_get_class_information(0, OBJECTS_INTERNAL_THREADS, &info); fatal_directive_status( status, RTEMS_INVALID_NUMBER, @@ -247,7 +304,8 @@ rtems_task Init( ); puts( "rtems_object_get_class_information - INVALID_NUMBER (bad class)" ); - status = rtems_object_get_class_information( OBJECTS_INTERNAL_API, 0, &info ); + status = + rtems_object_get_class_information( OBJECTS_INTERNAL_API, 0, &info ); fatal_directive_status( status, RTEMS_INVALID_NUMBER, diff --git a/testsuites/sptests/sp43/sp43.scn b/testsuites/sptests/sp43/sp43.scn index 8b954a4c38..96de196d4a 100644 Binary files a/testsuites/sptests/sp43/sp43.scn and b/testsuites/sptests/sp43/sp43.scn differ -- cgit v1.2.3