[PATCH 4/4] validation: Add comments to task tests
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Mar 1 09:27:10 UTC 2021
---
.../validation/tc-task-construct-errors.c | 123 ++++++++++++++++++
testsuites/validation/tc-task-create-errors.c | 108 +++++++++++++++
2 files changed, 231 insertions(+)
diff --git a/testsuites/validation/tc-task-construct-errors.c b/testsuites/validation/tc-task-construct-errors.c
index cb8106e270..72baefb5ff 100644
--- a/testsuites/validation/tc-task-construct-errors.c
+++ b/testsuites/validation/tc-task-construct-errors.c
@@ -337,11 +337,17 @@ static void RtemsTaskReqConstructErrors_Pre_Id_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Id_Valid: {
+ /*
+ * The id parameter shall reference an object identifier value.
+ */
ctx->id = &ctx->id_value;
break;
}
case RtemsTaskReqConstructErrors_Pre_Id_Null: {
+ /*
+ * The id parameter shall be NULL.
+ */
ctx->id = NULL;
break;
}
@@ -358,11 +364,17 @@ static void RtemsTaskReqConstructErrors_Pre_Name_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Name_Valid: {
+ /*
+ * The name of the task configuration shall be valid.
+ */
ctx->config.name = NAME;
break;
}
case RtemsTaskReqConstructErrors_Pre_Name_Inv: {
+ /*
+ * The name of the task configuration shall be invalid.
+ */
ctx->config.name = 0;
break;
}
@@ -379,11 +391,18 @@ static void RtemsTaskReqConstructErrors_Pre_SysTsk_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_SysTsk_Yes: {
+ /*
+ * The attributes of the task configuration shall specify a system task.
+ */
ctx->config.attributes |= RTEMS_SYSTEM_TASK;
break;
}
case RtemsTaskReqConstructErrors_Pre_SysTsk_No: {
+ /*
+ * The attributes of the task configuration shall specify an application
+ * task.
+ */
/* Nothing to do */
break;
}
@@ -400,16 +419,25 @@ static void RtemsTaskReqConstructErrors_Pre_Prio_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Prio_Valid: {
+ /*
+ * The initial priority of the task configuration shall be valid.
+ */
ctx->config.initial_priority = 254;
break;
}
case RtemsTaskReqConstructErrors_Pre_Prio_Zero: {
+ /*
+ * The initial priority of the task configuration shall be zero.
+ */
ctx->config.initial_priority = 0;
break;
}
case RtemsTaskReqConstructErrors_Pre_Prio_Inv: {
+ /*
+ * The initial priority of the task configuration shall be invalid.
+ */
ctx->config.initial_priority = 0xffffffff;
break;
}
@@ -426,11 +454,17 @@ static void RtemsTaskReqConstructErrors_Pre_Free_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Free_Yes: {
+ /*
+ * The system shall have at least one inactive task object available.
+ */
/* Nothing to do */
break;
}
case RtemsTaskReqConstructErrors_Pre_Free_No: {
+ /*
+ * The system shall have no inactive task object available.
+ */
ctx->seized_objects = T_seize_objects( Create, ctx );
break;
}
@@ -447,11 +481,19 @@ static void RtemsTaskReqConstructErrors_Pre_TLS_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_TLS_Enough: {
+ /*
+ * The maximum thread-local storage size of the task configuration shall be
+ * greater than or equal to the thread-local storage size.
+ */
ctx->config.maximum_thread_local_storage_size = MAX_TLS_SIZE;
break;
}
case RtemsTaskReqConstructErrors_Pre_TLS_Small: {
+ /*
+ * The maximum thread-local storage size of the task configuration shall be
+ * less than the thread-local storage size.
+ */
ctx->config.maximum_thread_local_storage_size = 0;
break;
}
@@ -468,11 +510,19 @@ static void RtemsTaskReqConstructErrors_Pre_Stack_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Stack_Enough: {
+ /*
+ * The task stack size of the task configuration shall be greater than or
+ * equal to the configured minimum size.
+ */
ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE;
break;
}
case RtemsTaskReqConstructErrors_Pre_Stack_Small: {
+ /*
+ * The task stack size of the task configuration shall be less than the
+ * configured minimum size.
+ */
ctx->stack_size = 0;
break;
}
@@ -489,11 +539,17 @@ static void RtemsTaskReqConstructErrors_Pre_Ext_Prepare(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Pre_Ext_Ok: {
+ /*
+ * None of the task create extensions shall fail.
+ */
ctx->create_extension_status = true;
break;
}
case RtemsTaskReqConstructErrors_Pre_Ext_Err: {
+ /*
+ * At least one of the task create extensions shall fail.
+ */
ctx->create_extension_status = false;
break;
}
@@ -510,36 +566,64 @@ static void RtemsTaskReqConstructErrors_Post_Status_Check(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_Status_Ok: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_SUCCESSFUL.
+ */
T_rsc_success( ctx->status );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_InvAddr: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_INVALID_ADDRESS.
+ */
T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_InvName: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_INVALID_NAME.
+ */
T_rsc( ctx->status, RTEMS_INVALID_NAME );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_InvPrio: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_INVALID_PRIORITY.
+ */
T_rsc( ctx->status, RTEMS_INVALID_PRIORITY );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_InvSize: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_INVALID_SIZE.
+ */
T_rsc( ctx->status, RTEMS_INVALID_SIZE );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_TooMany: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_TOO_MANY.
+ */
T_rsc( ctx->status, RTEMS_TOO_MANY );
break;
}
case RtemsTaskReqConstructErrors_Post_Status_Unsat: {
+ /*
+ * The return status of rtems_task_construct() shall be
+ * RTEMS_UNSATISFIED.
+ */
T_rsc( ctx->status, RTEMS_UNSATISFIED );
break;
}
@@ -559,6 +643,10 @@ static void RtemsTaskReqConstructErrors_Post_Name_Check(
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_Name_Valid: {
+ /*
+ * The unique object name shall identify the task constructed by
+ * the rtems_task_construct() call.
+ */
id = 0;
sc = rtems_task_ident( NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
T_rsc_success( sc );
@@ -567,6 +655,9 @@ static void RtemsTaskReqConstructErrors_Post_Name_Check(
}
case RtemsTaskReqConstructErrors_Post_Name_Invalid: {
+ /*
+ * The unique object name shall not identify a task.
+ */
sc = rtems_task_ident( NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
T_rsc( sc, RTEMS_INVALID_NAME );
break;
@@ -584,12 +675,20 @@ static void RtemsTaskReqConstructErrors_Post_IdValue_Check(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_IdValue_Assigned: {
+ /*
+ * The value of the object identifier variable shall be equal to the object
+ * identifier of the task constructed by the rtems_task_construct() call.
+ */
T_eq_ptr( ctx->id, &ctx->id_value );
T_ne_u32( ctx->id_value, INVALID_ID );
break;
}
case RtemsTaskReqConstructErrors_Post_IdValue_Unchanged: {
+ /*
+ * The value of the object identifier variable shall be unchanged by the
+ * rtems_task_construct() call.
+ */
T_eq_u32( ctx->id_value, INVALID_ID );
break;
}
@@ -606,11 +705,19 @@ static void RtemsTaskReqConstructErrors_Post_CreateExt_Check(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_CreateExt_Yes: {
+ /*
+ * The create user extensions shall be invoked during the
+ * rtems_task_construct() call.
+ */
T_eq_u32( ctx->create_extension_calls, 1 );
break;
}
case RtemsTaskReqConstructErrors_Post_CreateExt_No: {
+ /*
+ * The create user extensions shall not be invoked during the
+ * rtems_task_construct() call.
+ */
T_eq_u32( ctx->create_extension_calls, 0 );
break;
}
@@ -627,11 +734,19 @@ static void RtemsTaskReqConstructErrors_Post_DelExt_Check(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_DelExt_Yes: {
+ /*
+ * The delete user extensions shall be invoked during the
+ * rtems_task_construct() call.
+ */
T_eq_u32( ctx->delete_extension_calls, 1 );
break;
}
case RtemsTaskReqConstructErrors_Post_DelExt_No: {
+ /*
+ * The delete user extensions shall not be invoked during the
+ * rtems_task_construct() call.
+ */
T_eq_u32( ctx->delete_extension_calls, 0 );
break;
}
@@ -648,11 +763,19 @@ static void RtemsTaskReqConstructErrors_Post_StoFree_Check(
{
switch ( state ) {
case RtemsTaskReqConstructErrors_Post_StoFree_Yes: {
+ /*
+ * The storage free handler of the task configuration shall be invoked
+ * during the rtems_task_construct() call.
+ */
T_eq_u32( ctx->storage_free_calls, 1 );
break;
}
case RtemsTaskReqConstructErrors_Post_StoFree_No: {
+ /*
+ * The storage free handler of the task configuration shall not be invoked
+ * during the rtems_task_construct() call.
+ */
T_eq_u32( ctx->storage_free_calls, 0 );
break;
}
diff --git a/testsuites/validation/tc-task-create-errors.c b/testsuites/validation/tc-task-create-errors.c
index 39b9c0cc28..67e3fb7697 100644
--- a/testsuites/validation/tc-task-create-errors.c
+++ b/testsuites/validation/tc-task-create-errors.c
@@ -301,11 +301,17 @@ static void RtemsTaskReqCreateErrors_Pre_Id_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Id_Valid: {
+ /*
+ * The id parameter shall reference an object identifier value.
+ */
ctx->id = &ctx->id_value;
break;
}
case RtemsTaskReqCreateErrors_Pre_Id_Null: {
+ /*
+ * The id parameter shall be NULL.
+ */
ctx->id = NULL;
break;
}
@@ -322,11 +328,17 @@ static void RtemsTaskReqCreateErrors_Pre_Name_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Name_Valid: {
+ /*
+ * The ``name`` parameter shall be valid.
+ */
ctx->name = NAME;
break;
}
case RtemsTaskReqCreateErrors_Pre_Name_Inv: {
+ /*
+ * The ``name`` parameter shall be invalid.
+ */
ctx->name = 0;
break;
}
@@ -343,11 +355,19 @@ static void RtemsTaskReqCreateErrors_Pre_SysTsk_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_SysTsk_Yes: {
+ /*
+ * The ``attribute_set`` parameter shall specify a system
+ * task.
+ */
ctx->attributes = RTEMS_SYSTEM_TASK;
break;
}
case RtemsTaskReqCreateErrors_Pre_SysTsk_No: {
+ /*
+ * The ``attribute_set`` parameter shall specify an
+ * application task.
+ */
ctx->attributes = RTEMS_DEFAULT_ATTRIBUTES;
break;
}
@@ -364,16 +384,25 @@ static void RtemsTaskReqCreateErrors_Pre_Prio_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Prio_Valid: {
+ /*
+ * The ``initial_priority`` parameter shall be valid.
+ */
ctx->initial_priority = 254;
break;
}
case RtemsTaskReqCreateErrors_Pre_Prio_Zero: {
+ /*
+ * The ``initial_priority`` parameter shall be zero.
+ */
ctx->initial_priority = 0;
break;
}
case RtemsTaskReqCreateErrors_Pre_Prio_Inv: {
+ /*
+ * The ``initial_priority`` parameter shall be invalid.
+ */
ctx->initial_priority = 0xffffffff;
break;
}
@@ -390,11 +419,17 @@ static void RtemsTaskReqCreateErrors_Pre_Free_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Free_Yes: {
+ /*
+ * The system shall have at least one inactive task object available.
+ */
/* Nothing to do */
break;
}
case RtemsTaskReqCreateErrors_Pre_Free_No: {
+ /*
+ * The system shall have no inactive task object available.
+ */
ctx->seized_objects = T_seize_objects( Create, ctx );
break;
}
@@ -411,16 +446,28 @@ static void RtemsTaskReqCreateErrors_Pre_Stack_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Stack_Normal: {
+ /*
+ * The ``initial_priority`` parameter shall be greater than or
+ * equal to the configured minimum size.
+ */
ctx->stack_size = RTEMS_MINIMUM_STACK_SIZE;
break;
}
case RtemsTaskReqCreateErrors_Pre_Stack_Small: {
+ /*
+ * The ``initial_priority`` parameter shall be less than the
+ * configured minimum size.
+ */
ctx->stack_size = 0;
break;
}
case RtemsTaskReqCreateErrors_Pre_Stack_Huge: {
+ /*
+ * The ``initial_priority`` parameter shall be greater than the
+ * maximum stack size which can be allocated by the system.
+ */
ctx->stack_size = SIZE_MAX;
break;
}
@@ -437,11 +484,17 @@ static void RtemsTaskReqCreateErrors_Pre_Ext_Prepare(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Pre_Ext_Ok: {
+ /*
+ * None of the task create extensions shall fail.
+ */
ctx->create_extension_status = true;
break;
}
case RtemsTaskReqCreateErrors_Pre_Ext_Err: {
+ /*
+ * At least one of the task create extensions shall fail.
+ */
ctx->create_extension_status = false;
break;
}
@@ -458,31 +511,55 @@ static void RtemsTaskReqCreateErrors_Post_Status_Check(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Post_Status_Ok: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_SUCCESSFUL.
+ */
T_rsc_success( ctx->status );
break;
}
case RtemsTaskReqCreateErrors_Post_Status_InvAddr: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_INVALID_ADDRESS.
+ */
T_rsc( ctx->status, RTEMS_INVALID_ADDRESS );
break;
}
case RtemsTaskReqCreateErrors_Post_Status_InvName: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_INVALID_NAME.
+ */
T_rsc( ctx->status, RTEMS_INVALID_NAME );
break;
}
case RtemsTaskReqCreateErrors_Post_Status_InvPrio: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_INVALID_PRIORITY.
+ */
T_rsc( ctx->status, RTEMS_INVALID_PRIORITY );
break;
}
case RtemsTaskReqCreateErrors_Post_Status_TooMany: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_TOO_MANY.
+ */
T_rsc( ctx->status, RTEMS_TOO_MANY );
break;
}
case RtemsTaskReqCreateErrors_Post_Status_Unsat: {
+ /*
+ * The return status of rtems_task_create() shall be
+ * RTEMS_UNSATISFIED.
+ */
T_rsc( ctx->status, RTEMS_UNSATISFIED );
break;
}
@@ -502,6 +579,10 @@ static void RtemsTaskReqCreateErrors_Post_Name_Check(
switch ( state ) {
case RtemsTaskReqCreateErrors_Post_Name_Valid: {
+ /*
+ * The unique object name shall identify the task created by
+ * the rtems_task_create() call.
+ */
id = 0;
sc = rtems_task_ident( NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
T_rsc_success( sc );
@@ -510,6 +591,9 @@ static void RtemsTaskReqCreateErrors_Post_Name_Check(
}
case RtemsTaskReqCreateErrors_Post_Name_Invalid: {
+ /*
+ * The unique object name shall not identify a task.
+ */
sc = rtems_task_ident( NAME, RTEMS_SEARCH_LOCAL_NODE, &id );
T_rsc( sc, RTEMS_INVALID_NAME );
break;
@@ -527,12 +611,20 @@ static void RtemsTaskReqCreateErrors_Post_IdValue_Check(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Post_IdValue_Assigned: {
+ /*
+ * The value of the object identifier variable shall be equal to the object
+ * identifier of the task created by the rtems_task_create() call.
+ */
T_eq_ptr( ctx->id, &ctx->id_value );
T_ne_u32( ctx->id_value, INVALID_ID );
break;
}
case RtemsTaskReqCreateErrors_Post_IdValue_Unchanged: {
+ /*
+ * The value of the object identifier variable shall be unchanged by the
+ * rtems_task_create() call.
+ */
T_eq_u32( ctx->id_value, INVALID_ID );
break;
}
@@ -549,11 +641,19 @@ static void RtemsTaskReqCreateErrors_Post_CreateExt_Check(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Post_CreateExt_Yes: {
+ /*
+ * The create user extensions shall be invoked during the
+ * rtems_task_create() call.
+ */
T_eq_u32( ctx->create_extension_calls, 1 );
break;
}
case RtemsTaskReqCreateErrors_Post_CreateExt_No: {
+ /*
+ * The create user extensions shall not be invoked during the
+ * rtems_task_create() call.
+ */
T_eq_u32( ctx->create_extension_calls, 0 );
break;
}
@@ -570,11 +670,19 @@ static void RtemsTaskReqCreateErrors_Post_DelExt_Check(
{
switch ( state ) {
case RtemsTaskReqCreateErrors_Post_DelExt_Yes: {
+ /*
+ * The delete user extensions shall be invoked during the
+ * rtems_task_create() call.
+ */
T_eq_u32( ctx->delete_extension_calls, 1 );
break;
}
case RtemsTaskReqCreateErrors_Post_DelExt_No: {
+ /*
+ * The delete user extensions shall not be invoked during the
+ * rtems_task_create() call.
+ */
T_eq_u32( ctx->delete_extension_calls, 0 );
break;
}
--
2.26.2
More information about the devel
mailing list