summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-21 17:48:04 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2021-02-24 09:22:36 +0100
commit006c7020f46ba66eac434eb8a3ef5cc8f76fa49d (patch)
tree70a36deb01c60a53c42ae82c4656e32bec44d943
parentvalidation: Add missing barrier create test case (diff)
downloadrtems-006c7020f46ba66eac434eb8a3ef5cc8f76fa49d.tar.bz2
validation: Simplify message queue construct tests
Diffstat (limited to '')
-rw-r--r--testsuites/validation/tc-message-construct-errors.c140
1 files 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 ]
);