summaryrefslogblamecommitdiffstats
path: root/spec/req/rtems/ident.yml
blob: 11dd182071622deb39c03f3550f99f961d902c69 (plain) (tree)








































































































































                                                                               

               
                            
                


                                                                  
                  



















                                   
                          


















                                                                            

                                                                          
                                                 

                    
                   
                  


                  
                                                    
                   
                        

























































                                   
                 
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