diff options
Diffstat (limited to 'spec/rtems/req/ident.yml')
-rw-r--r-- | spec/rtems/req/ident.yml | 257 |
1 files changed, 257 insertions, 0 deletions
diff --git a/spec/rtems/req/ident.yml b/spec/rtems/req/ident.yml new file mode 100644 index 00000000..11dd1820 --- /dev/null +++ b/spec/rtems/req/ident.yml @@ -0,0 +1,257 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +functional-type: action +links: [] +post-conditions: +- name: Status + states: + - name: Ok + test-code: | + T_rsc(ctx->status, RTEMS_SUCCESSFUL); + text: | + The status shall be RTEMS_SUCCESSFUL. + - name: InvAddr + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_ADDRESS); + text: | + The status shall be RTEMS_INVALID_ADDRESS. + - name: InvName + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_NAME); + text: | + The status shall be RTEMS_INVALID_NAME. + - name: InvNode + test-code: | + T_rsc(ctx->status, RTEMS_INVALID_NODE); + text: | + The status shall be RTEMS_INVALID_NODE. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: Nop + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, 0xffffffff); + text: | + The value of the object identifier referenced by the id parameter shall + be the value before the action. + - name: NullPtr + test-code: | + T_null(ctx->id) + text: | + The id parameter shall be NULL. + - name: LocalObj + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, ctx->id_local_object); + text: | + The value of the object identifier referenced by the id parameter shall + be the identifier of a local object of the specified class with a name + equal to the name parameter. If more than one local object of the + specified class with such a name exists, then it shall be the identifier + of the object with the lowest object index. + - name: RemoteObj + test-code: | + T_eq_ptr(ctx->id, &ctx->id_value); + T_eq_u32(ctx->id_value, ctx->id_remote_object); + text: | + The value of the object identifier referenced by the id parameter shall + be the identifier of a remote object of the specified class on a eligible + node defined by the node parameter with a name equal to the name + parameter. If more than one local object of the specified class with + such a name exists, then it shall be the identifier of the object with + the lowest object index. Otherwise, if more than one object of the + specified class with such a name exists on remote eligible nodes, then it + shall be the identifier of the object with the lowest node index and the + lowest object index on this node. + test-epilogue: null + test-prologue: null +pre-conditions: +- name: Name + states: + - name: Invalid + test-code: | + ctx->name = 1; + text: | + The name parameter shall not equal to a name of an active Classic API + object of the specified class. + - name: Valid + test-code: | + ctx->name = ClassicObjectIdentName; + text: | + The name parameter shall equal to a name of an active Classic API object + of the specified class. + test-epilogue: null + test-prologue: null +- name: Node + states: + - name: Local + test-code: | + ctx->node = 1; + text: | + The node parameter shall be the local node number. + - name: Remote + test-code: | + ctx->node = 2; + text: | + The node parameter shall be a remote node number. + - name: Invalid + test-code: | + ctx->node = 256; + text: | + The node parameter shall be an invalid node number. + - name: SearchAll + test-code: | + ctx->node = RTEMS_SEARCH_ALL_NODES; + text: | + The node parameter shall be RTEMS_SEARCH_ALL_NODES. + - name: SearchOther + test-code: | + ctx->node = RTEMS_SEARCH_OTHER_NODES; + text: | + The node parameter shall be RTEMS_SEARCH_OTHER_NODES. + - name: SearchLocal + test-code: | + ctx->node = RTEMS_SEARCH_LOCAL_NODE; + text: | + The node parameter shall be RTEMS_SEARCH_LOCAL_NODE. + test-epilogue: null + test-prologue: null +- name: Id + states: + - name: NullPtr + test-code: | + ctx->id = NULL; + text: | + The id parameter shall be NULL. + - name: Valid + test-code: | + ctx->id_value = 0xffffffff; + ctx->id = &ctx->id_value; + text: | + The id parameter shall point to an object identifier. + test-epilogue: null + test-prologue: null +rationale: null +references: [] +requirement-type: functional +skip-reasons: {} +test-action: | + ctx->status = ( *ctx->action )( ctx->name, ctx->node, ctx->id ); +test-brief: null +test-cleanup: null +test-context: +- brief: null + description: null + member: | + rtems_status_code status +- brief: null + description: null + member: rtems_name name +- brief: null + description: null + member: uint32_t node +- brief: null + description: null + member: rtems_id *id +- brief: null + description: null + member: rtems_id id_value +- brief: null + description: null + member: rtems_id id_remote_object +test-context-support: null +test-description: null +test-header: + code: | + #define ClassicObjectIdentName \ + rtems_build_name( 'I', 'D', 'N', 'T' ) + includes: + - rtems.h + local-includes: [] + run-params: + - description: | + is the identifier of an active object of the class under test with the + name ClassicObjectIdentName. + dir: null + name: id_local_object + specifier: rtems_id ${.:name} + - description: | + is the action handler. + dir: null + name: action + specifier: | + rtems_status_code ( *${.:name} )( rtems_name, uint32_t, rtems_id * ) + target: testsuites/validation/tr-object-ident.h +test-includes: [] +test-local-includes: +- tr-object-ident.h +test-prepare: null +test-setup: null +test-stop: null +test-support: null +test-target: testsuites/validation/tr-object-ident.c +test-teardown: null +text: ${.:text-template} +transition-map: +- enabled-by: true + post-conditions: + Id: LocalObj + Status: Ok + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - SearchAll + - SearchLocal + - Local +- enabled-by: true + post-conditions: + Id: Nop + Status: InvName + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - Invalid + - SearchOther + - Remote +- enabled-by: true + post-conditions: + Id: Nop + Status: InvName + pre-conditions: + Id: + - Valid + Name: + - Invalid + Node: all +- enabled-by: true + post-conditions: + Id: NullPtr + Status: InvAddr + pre-conditions: + Id: + - NullPtr + Name: all + Node: all +- enabled-by: RTEMS_MULTIPROCESSING + post-conditions: + Id: RemoteObj + Status: Ok + pre-conditions: + Id: + - Valid + Name: + - Valid + Node: + - SearchOther + - Remote +type: requirement |