forked from Imagelibrary/rtems
validation: Simplify message queue construct tests
This commit is contained in:
@@ -95,10 +95,10 @@ typedef enum {
|
|||||||
} RtemsMessageReqConstructErrors_Pre_MaxSize;
|
} RtemsMessageReqConstructErrors_Pre_MaxSize;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RtemsMessageReqConstructErrors_Pre_Queues_Avail,
|
RtemsMessageReqConstructErrors_Pre_Free_Yes,
|
||||||
RtemsMessageReqConstructErrors_Pre_Queues_None,
|
RtemsMessageReqConstructErrors_Pre_Free_No,
|
||||||
RtemsMessageReqConstructErrors_Pre_Queues_NA
|
RtemsMessageReqConstructErrors_Pre_Free_NA
|
||||||
} RtemsMessageReqConstructErrors_Pre_Queues;
|
} RtemsMessageReqConstructErrors_Pre_Free;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
RtemsMessageReqConstructErrors_Pre_Area_Valid,
|
RtemsMessageReqConstructErrors_Pre_Area_Valid,
|
||||||
@@ -135,7 +135,7 @@ typedef struct {
|
|||||||
|
|
||||||
rtems_id id_value;
|
rtems_id id_value;
|
||||||
|
|
||||||
Chain_Control message_queues;
|
void *seized_objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This member defines the pre-condition states for the next action.
|
* @brief This member defines the pre-condition states for the next action.
|
||||||
@@ -178,9 +178,9 @@ static const char * const RtemsMessageReqConstructErrors_PreDesc_MaxSize[] = {
|
|||||||
"NA"
|
"NA"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char * const RtemsMessageReqConstructErrors_PreDesc_Queues[] = {
|
static const char * const RtemsMessageReqConstructErrors_PreDesc_Free[] = {
|
||||||
"Avail",
|
"Yes",
|
||||||
"None",
|
"No",
|
||||||
"NA"
|
"NA"
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -201,7 +201,7 @@ static const char * const * const RtemsMessageReqConstructErrors_PreDesc[] = {
|
|||||||
RtemsMessageReqConstructErrors_PreDesc_Name,
|
RtemsMessageReqConstructErrors_PreDesc_Name,
|
||||||
RtemsMessageReqConstructErrors_PreDesc_MaxPending,
|
RtemsMessageReqConstructErrors_PreDesc_MaxPending,
|
||||||
RtemsMessageReqConstructErrors_PreDesc_MaxSize,
|
RtemsMessageReqConstructErrors_PreDesc_MaxSize,
|
||||||
RtemsMessageReqConstructErrors_PreDesc_Queues,
|
RtemsMessageReqConstructErrors_PreDesc_Free,
|
||||||
RtemsMessageReqConstructErrors_PreDesc_Area,
|
RtemsMessageReqConstructErrors_PreDesc_Area,
|
||||||
RtemsMessageReqConstructErrors_PreDesc_AreaSize,
|
RtemsMessageReqConstructErrors_PreDesc_AreaSize,
|
||||||
NULL
|
NULL
|
||||||
@@ -214,11 +214,32 @@ static const char * const * const RtemsMessageReqConstructErrors_PreDesc[] = {
|
|||||||
#define MAX_MESSAGE_SIZE 1
|
#define MAX_MESSAGE_SIZE 1
|
||||||
|
|
||||||
static RTEMS_MESSAGE_QUEUE_BUFFER( MAX_MESSAGE_SIZE )
|
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 )
|
static RTEMS_MESSAGE_QUEUE_BUFFER( MAX_MESSAGE_SIZE )
|
||||||
buffers[ MAX_PENDING_MESSAGES ];
|
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(
|
static void RtemsMessageReqConstructErrors_Pre_Id_Prepare(
|
||||||
RtemsMessageReqConstructErrors_Context *ctx,
|
RtemsMessageReqConstructErrors_Context *ctx,
|
||||||
RtemsMessageReqConstructErrors_Pre_Id state
|
RtemsMessageReqConstructErrors_Pre_Id state
|
||||||
@@ -313,58 +334,26 @@ static void RtemsMessageReqConstructErrors_Pre_MaxSize_Prepare(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void RtemsMessageReqConstructErrors_Pre_Queues_Prepare(
|
static void RtemsMessageReqConstructErrors_Pre_Free_Prepare(
|
||||||
RtemsMessageReqConstructErrors_Context *ctx,
|
RtemsMessageReqConstructErrors_Context *ctx,
|
||||||
RtemsMessageReqConstructErrors_Pre_Queues state
|
RtemsMessageReqConstructErrors_Pre_Free state
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
rtems_message_queue_config config;
|
size_t i;
|
||||||
size_t i;
|
|
||||||
|
|
||||||
switch ( state ) {
|
switch ( state ) {
|
||||||
case RtemsMessageReqConstructErrors_Pre_Queues_Avail: {
|
case RtemsMessageReqConstructErrors_Pre_Free_Yes: {
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RtemsMessageReqConstructErrors_Pre_Queues_None: {
|
case RtemsMessageReqConstructErrors_Pre_Free_No: {
|
||||||
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;
|
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
ctx->seized_objects = T_seize_objects( Create, &i );
|
||||||
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;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case RtemsMessageReqConstructErrors_Pre_Queues_NA:
|
case RtemsMessageReqConstructErrors_Pre_Free_NA:
|
||||||
break;
|
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(
|
static size_t RtemsMessageReqConstructErrors_Scope(
|
||||||
void *arg,
|
void *arg,
|
||||||
char *buf,
|
char *buf,
|
||||||
@@ -510,7 +483,7 @@ static size_t RtemsMessageReqConstructErrors_Scope(
|
|||||||
}
|
}
|
||||||
|
|
||||||
static T_fixture RtemsMessageReqConstructErrors_Fixture = {
|
static T_fixture RtemsMessageReqConstructErrors_Fixture = {
|
||||||
.setup = RtemsMessageReqConstructErrors_Setup_Wrap,
|
.setup = NULL,
|
||||||
.stop = NULL,
|
.stop = NULL,
|
||||||
.teardown = NULL,
|
.teardown = NULL,
|
||||||
.scope = RtemsMessageReqConstructErrors_Scope,
|
.scope = RtemsMessageReqConstructErrors_Scope,
|
||||||
@@ -1103,7 +1076,7 @@ static const struct {
|
|||||||
uint8_t Pre_Name_NA : 1;
|
uint8_t Pre_Name_NA : 1;
|
||||||
uint8_t Pre_MaxPending_NA : 1;
|
uint8_t Pre_MaxPending_NA : 1;
|
||||||
uint8_t Pre_MaxSize_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_Area_NA : 1;
|
||||||
uint8_t Pre_AreaSize_NA : 1;
|
uint8_t Pre_AreaSize_NA : 1;
|
||||||
} RtemsMessageReqConstructErrors_TransitionInfo[] = {
|
} RtemsMessageReqConstructErrors_TransitionInfo[] = {
|
||||||
@@ -1705,16 +1678,7 @@ static void RtemsMessageReqConstructErrors_Cleanup(
|
|||||||
RtemsMessageReqConstructErrors_Context *ctx
|
RtemsMessageReqConstructErrors_Context *ctx
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Chain_Node *node;
|
T_surrender_objects( &ctx->seized_objects, rtems_message_queue_delete );
|
||||||
|
|
||||||
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 );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1743,7 +1707,7 @@ T_TEST_CASE_FIXTURE(
|
|||||||
* RtemsMessageReqConstructErrors_Pre_Name_NA
|
* RtemsMessageReqConstructErrors_Pre_Name_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_MaxPending_NA
|
* RtemsMessageReqConstructErrors_Pre_MaxPending_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Queues_NA
|
* RtemsMessageReqConstructErrors_Pre_Free_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
||||||
}
|
}
|
||||||
@@ -1758,7 +1722,7 @@ T_TEST_CASE_FIXTURE(
|
|||||||
index += ( RtemsMessageReqConstructErrors_Pre_Name_NA - 1 )
|
index += ( RtemsMessageReqConstructErrors_Pre_Name_NA - 1 )
|
||||||
* RtemsMessageReqConstructErrors_Pre_MaxPending_NA
|
* RtemsMessageReqConstructErrors_Pre_MaxPending_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Queues_NA
|
* RtemsMessageReqConstructErrors_Pre_Free_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
||||||
}
|
}
|
||||||
@@ -1772,7 +1736,7 @@ T_TEST_CASE_FIXTURE(
|
|||||||
ctx->pcs[ 2 ] = RtemsMessageReqConstructErrors_Pre_MaxPending_NA;
|
ctx->pcs[ 2 ] = RtemsMessageReqConstructErrors_Pre_MaxPending_NA;
|
||||||
index += ( RtemsMessageReqConstructErrors_Pre_MaxPending_NA - 1 )
|
index += ( RtemsMessageReqConstructErrors_Pre_MaxPending_NA - 1 )
|
||||||
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
* RtemsMessageReqConstructErrors_Pre_MaxSize_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Queues_NA
|
* RtemsMessageReqConstructErrors_Pre_Free_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
||||||
}
|
}
|
||||||
@@ -1785,19 +1749,19 @@ T_TEST_CASE_FIXTURE(
|
|||||||
if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_MaxSize_NA ) {
|
if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_MaxSize_NA ) {
|
||||||
ctx->pcs[ 3 ] = RtemsMessageReqConstructErrors_Pre_MaxSize_NA;
|
ctx->pcs[ 3 ] = RtemsMessageReqConstructErrors_Pre_MaxSize_NA;
|
||||||
index += ( RtemsMessageReqConstructErrors_Pre_MaxSize_NA - 1 )
|
index += ( RtemsMessageReqConstructErrors_Pre_MaxSize_NA - 1 )
|
||||||
* RtemsMessageReqConstructErrors_Pre_Queues_NA
|
* RtemsMessageReqConstructErrors_Pre_Free_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (
|
for (
|
||||||
ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Queues_Avail;
|
ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Free_Yes;
|
||||||
ctx->pcs[ 4 ] < RtemsMessageReqConstructErrors_Pre_Queues_NA;
|
ctx->pcs[ 4 ] < RtemsMessageReqConstructErrors_Pre_Free_NA;
|
||||||
++ctx->pcs[ 4 ]
|
++ctx->pcs[ 4 ]
|
||||||
) {
|
) {
|
||||||
if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_Queues_NA ) {
|
if ( RtemsMessageReqConstructErrors_TransitionInfo[ index ].Pre_Free_NA ) {
|
||||||
ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Queues_NA;
|
ctx->pcs[ 4 ] = RtemsMessageReqConstructErrors_Pre_Free_NA;
|
||||||
index += ( RtemsMessageReqConstructErrors_Pre_Queues_NA - 1 )
|
index += ( RtemsMessageReqConstructErrors_Pre_Free_NA - 1 )
|
||||||
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
* RtemsMessageReqConstructErrors_Pre_Area_NA
|
||||||
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
* RtemsMessageReqConstructErrors_Pre_AreaSize_NA;
|
||||||
}
|
}
|
||||||
@@ -1845,7 +1809,7 @@ T_TEST_CASE_FIXTURE(
|
|||||||
ctx,
|
ctx,
|
||||||
ctx->pcs[ 3 ]
|
ctx->pcs[ 3 ]
|
||||||
);
|
);
|
||||||
RtemsMessageReqConstructErrors_Pre_Queues_Prepare(
|
RtemsMessageReqConstructErrors_Pre_Free_Prepare(
|
||||||
ctx,
|
ctx,
|
||||||
ctx->pcs[ 4 ]
|
ctx->pcs[ 4 ]
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user