From 006c7020f46ba66eac434eb8a3ef5cc8f76fa49d Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Sun, 21 Feb 2021 17:48:04 +0100 Subject: validation: Simplify message queue construct tests --- .../validation/tc-message-construct-errors.c | 140 ++++++++------------- 1 file changed, 52 insertions(+), 88 deletions(-) diff --git a/testsuites/validation/tc-message-construct-errors.c b/testsuites/validation/tc-message-construct-errors.c index 5820855ac4..0792e29d48 100644 --- a/testsuites/validation/tc-message-construct-errors.c +++ b/testsuites/validation/tc-message-construct-errors.c @@ -95,10 +95,10 @@ typedef enum { } RtemsMessageReqConstructErrors_Pre_MaxSize; typedef enum { - RtemsMessageReqConstructErrors_Pre_Queues_Avail, - RtemsMessageReqConstructErrors_Pre_Queues_None, - RtemsMessageReqConstructErrors_Pre_Queues_NA -} RtemsMessageReqConstructErrors_Pre_Queues; + RtemsMessageReqConstructErrors_Pre_Free_Yes, + RtemsMessageReqConstructErrors_Pre_Free_No, + RtemsMessageReqConstructErrors_Pre_Free_NA +} RtemsMessageReqConstructErrors_Pre_Free; typedef enum { RtemsMessageReqConstructErrors_Pre_Area_Valid, @@ -135,7 +135,7 @@ typedef struct { rtems_id id_value; - Chain_Control message_queues; + void *seized_objects; /** * @brief This member defines the pre-condition states for the next action. @@ -178,9 +178,9 @@ static const char * const RtemsMessageReqConstructErrors_PreDesc_MaxSize[] = { "NA" }; -static const char * const RtemsMessageReqConstructErrors_PreDesc_Queues[] = { - "Avail", - "None", +static const char * const RtemsMessageReqConstructErrors_PreDesc_Free[] = { + "Yes", + "No", "NA" }; @@ -201,7 +201,7 @@ static const char * const * const RtemsMessageReqConstructErrors_PreDesc[] = { RtemsMessageReqConstructErrors_PreDesc_Name, RtemsMessageReqConstructErrors_PreDesc_MaxPending, RtemsMessageReqConstructErrors_PreDesc_MaxSize, - RtemsMessageReqConstructErrors_PreDesc_Queues, + RtemsMessageReqConstructErrors_PreDesc_Free, RtemsMessageReqConstructErrors_PreDesc_Area, RtemsMessageReqConstructErrors_PreDesc_AreaSize, NULL @@ -214,11 +214,32 @@ static const char * const * const RtemsMessageReqConstructErrors_PreDesc[] = { #define MAX_MESSAGE_SIZE 1 static RTEMS_MESSAGE_QUEUE_BUFFER( MAX_MESSAGE_SIZE ) - exhaust_buffers[ MAX_MESSAGE_QUEUES ][ MAX_PENDING_MESSAGES ]; + buffers_to_seize[ MAX_MESSAGE_QUEUES ][ MAX_PENDING_MESSAGES ]; static RTEMS_MESSAGE_QUEUE_BUFFER( MAX_MESSAGE_SIZE ) buffers[ MAX_PENDING_MESSAGES ]; +static rtems_status_code Create( void *arg, uint32_t *id ) +{ + rtems_message_queue_config config; + size_t *i; + + i = arg; + T_quiet_lt_sz( *i, MAX_MESSAGE_QUEUES ); + + memset( &config, 0, sizeof( config ) ); + config.name = rtems_build_name( 'S', 'I', 'Z', 'E' ); + config.maximum_pending_messages = MAX_PENDING_MESSAGES; + config.maximum_message_size = MAX_MESSAGE_SIZE; + config.storage_size = sizeof( buffers_to_seize[ *i ] ); + config.storage_area = buffers_to_seize[ *i ]; + config.attributes = RTEMS_DEFAULT_ATTRIBUTES; + + ++(*i); + + return rtems_message_queue_construct( &config, id ); +} + static void RtemsMessageReqConstructErrors_Pre_Id_Prepare( RtemsMessageReqConstructErrors_Context *ctx, RtemsMessageReqConstructErrors_Pre_Id state @@ -313,58 +334,26 @@ static void RtemsMessageReqConstructErrors_Pre_MaxSize_Prepare( } } -static void RtemsMessageReqConstructErrors_Pre_Queues_Prepare( - RtemsMessageReqConstructErrors_Context *ctx, - RtemsMessageReqConstructErrors_Pre_Queues state +static void RtemsMessageReqConstructErrors_Pre_Free_Prepare( + RtemsMessageReqConstructErrors_Context *ctx, + RtemsMessageReqConstructErrors_Pre_Free state ) { - rtems_message_queue_config config; - size_t i; + size_t i; switch ( state ) { - case RtemsMessageReqConstructErrors_Pre_Queues_Avail: { + case RtemsMessageReqConstructErrors_Pre_Free_Yes: { /* Nothing to do */ break; } - case RtemsMessageReqConstructErrors_Pre_Queues_None: { - memset( &config, 0, sizeof( config ) ); - config.name = rtems_build_name( 'M', 'S', 'G', 'Q' ); - config.maximum_pending_messages = MAX_PENDING_MESSAGES; - config.maximum_message_size = MAX_MESSAGE_SIZE; - config.storage_size = sizeof( exhaust_buffers[ 0 ] ); - config.attributes = RTEMS_DEFAULT_ATTRIBUTES; - + case RtemsMessageReqConstructErrors_Pre_Free_No: { i = 0; - - while ( i < MAX_MESSAGE_QUEUES ) { - rtems_status_code sc; - rtems_id id; - - config.storage_area = exhaust_buffers[ i ]; - - sc = rtems_message_queue_construct( &config, &id ); - - if ( sc == RTEMS_SUCCESSFUL ) { - Objects_Control *obj; - const Objects_Information *info; - - info = _Objects_Get_information_id( id ); - T_quiet_assert_not_null( info ); - obj = _Objects_Get_no_protection( id, info ); - T_quiet_assert_not_null( obj ); - _Chain_Append_unprotected( &ctx->message_queues, &obj->Node ); - } else { - T_quiet_rsc( sc, RTEMS_TOO_MANY ); - break; - } - - ++i; - } + ctx->seized_objects = T_seize_objects( Create, &i ); break; } - case RtemsMessageReqConstructErrors_Pre_Queues_NA: + case RtemsMessageReqConstructErrors_Pre_Free_NA: break; } } @@ -471,22 +460,6 @@ static void RtemsMessageReqConstructErrors_Post_Status_Check( } } -static void RtemsMessageReqConstructErrors_Setup( - RtemsMessageReqConstructErrors_Context *ctx -) -{ - _Chain_Initialize_empty( &ctx->message_queues ); -} - -static void RtemsMessageReqConstructErrors_Setup_Wrap( void *arg ) -{ - RtemsMessageReqConstructErrors_Context *ctx; - - ctx = arg; - ctx->in_action_loop = false; - RtemsMessageReqConstructErrors_Setup( ctx ); -} - static size_t RtemsMessageReqConstructErrors_Scope( void *arg, char *buf, @@ -510,7 +483,7 @@ static size_t RtemsMessageReqConstructErrors_Scope( } static T_fixture RtemsMessageReqConstructErrors_Fixture = { - .setup = RtemsMessageReqConstructErrors_Setup_Wrap, + .setup = NULL, .stop = NULL, .teardown = NULL, .scope = RtemsMessageReqConstructErrors_Scope, @@ -1103,7 +1076,7 @@ static const struct { uint8_t Pre_Name_NA : 1; uint8_t Pre_MaxPending_NA : 1; uint8_t Pre_MaxSize_NA : 1; - uint8_t Pre_Queues_NA : 1; + uint8_t Pre_Free_NA : 1; uint8_t Pre_Area_NA : 1; uint8_t Pre_AreaSize_NA : 1; } RtemsMessageReqConstructErrors_TransitionInfo[] = { @@ -1705,16 +1678,7 @@ static void RtemsMessageReqConstructErrors_Cleanup( RtemsMessageReqConstructErrors_Context *ctx ) { - Chain_Node *node; - - while ( ( node = _Chain_Get_unprotected( &ctx->message_queues ) ) ) { - Objects_Control *obj; - rtems_status_code sc; - - obj = (Objects_Control *) node; - sc = rtems_message_queue_delete( obj->id ); - T_quiet_rsc_success( sc ); - } + T_surrender_objects( &ctx->seized_objects, rtems_message_queue_delete ); } /** @@ -1743,7 +1707,7 @@ T_TEST_CASE_FIXTURE( * RtemsMessageReqConstructErrors_Pre_Name_NA * RtemsMessageReqConstructErrors_Pre_MaxPending_NA * RtemsMessageReqConstructErrors_Pre_MaxSize_NA - * RtemsMessageReqConstructErrors_Pre_Queues_NA + * RtemsMessageReqConstructErrors_Pre_Free_NA * RtemsMessageReqConstructErrors_Pre_Area_NA * RtemsMessageReqConstructErrors_Pre_AreaSize_NA; } @@ -1758,7 +1722,7 @@ T_TEST_CASE_FIXTURE( index += ( RtemsMessageReqConstructErrors_Pre_Name_NA - 1 ) * RtemsMessageReqConstructErrors_Pre_MaxPending_NA * RtemsMessageReqConstructErrors_Pre_MaxSize_NA - * RtemsMessageReqConstructErrors_Pre_Queues_NA + * RtemsMessageReqConstructErrors_Pre_Free_NA * RtemsMessageReqConstructErrors_Pre_Area_NA * RtemsMessageReqConstructErrors_Pre_AreaSize_NA; } @@ -1772,7 +1736,7 @@ T_TEST_CASE_FIXTURE( ctx->pcs[ 2 ] = RtemsMessageReqConstructErrors_Pre_MaxPending_NA; index += ( RtemsMessageReqConstructErrors_Pre_MaxPending_NA - 1 ) * RtemsMessageReqConstructErrors_Pre_MaxSize_NA - * RtemsMessageReqConstructErrors_Pre_Queues_NA + * RtemsMessageReqConstructErrors_Pre_Free_NA * RtemsMessageReqConstructErrors_Pre_Area_NA * RtemsMessageReqConstructErrors_Pre_AreaSize_NA; } @@ -1785,19 +1749,19 @@ T_TEST_CASE_FIXTURE( if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_MaxSize_NA ) { ctx->pcs[ 3 ] = RtemsMessageReqConstructErrors_Pre_MaxSize_NA; index += ( RtemsMessageReqConstructErrors_Pre_MaxSize_NA - 1 ) - * RtemsMessageReqConstructErrors_Pre_Queues_NA + * RtemsMessageReqConstructErrors_Pre_Free_NA * RtemsMessageReqConstructErrors_Pre_Area_NA * RtemsMessageReqConstructErrors_Pre_AreaSize_NA; } for ( - ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Queues_Avail; - ctx->pcs[ 4 ] < RtemsMessageReqConstructErrors_Pre_Queues_NA; + ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Free_Yes; + ctx->pcs[ 4 ] < RtemsMessageReqConstructErrors_Pre_Free_NA; ++ctx->pcs[ 4 ] ) { - if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_Queues_NA ) { - ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Queues_NA; - index += ( RtemsMessageReqConstructErrors_Pre_Queues_NA - 1 ) + if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_Free_NA ) { + ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Free_NA; + index += ( RtemsMessageReqConstructErrors_Pre_Free_NA - 1 ) * RtemsMessageReqConstructErrors_Pre_Area_NA * RtemsMessageReqConstructErrors_Pre_AreaSize_NA; } @@ -1845,7 +1809,7 @@ T_TEST_CASE_FIXTURE( ctx, ctx->pcs[ 3 ] ); - RtemsMessageReqConstructErrors_Pre_Queues_Prepare( + RtemsMessageReqConstructErrors_Pre_Free_Prepare( ctx, ctx->pcs[ 4 ] ); -- cgit v1.2.3