1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
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:
- role: interface-function
uid: ../if/ident
- role: interface-function
uid: ../../object/if/who-am-i
post-conditions:
- name: Status
states:
- name: OkAndWhoAmI
test-code: |
T_rsc( ctx->status, RTEMS_SUCCESSFUL );
T_eq_ptr( ctx->id, &ctx->id_value );
T_eq_u32( ctx->id_value, rtems_task_self() );
text: |
The return status of ${../if/ident:/name} shall be
${../../status/if/successful:/name}. The value of the object identifier
referenced by the ${../if/ident:/params[0]/name} parameter shall be the
identifier of the executing thread.
- name: Skip
test-code: |
/* Checks performed by ${../../req/ident:/test-run}() */
text: |
There is no status to validate.
test-epilogue: null
test-prologue: null
pre-conditions:
- name: Name
states:
- name: WhoAmI
test-code: |
ctx->id_value = 0xffffffff;
ctx->id = &ctx->id_value;
text: |
While the ${../if/ident:/params[0]/name} parameter is equal to
${../../object/if/who-am-i:/name},
while ${../if/ident:/params[2]/name} parameter is not equal to
${/c/if/null:/name}.
- name: NotWhoAmI
test-code: |
ctx->id = NULL;
/* Preparation performed by ${../../req/ident:/test-run}() */
text: |
While the ${../if/ident:/params[0]/name} is not equal to
${../../object/if/who-am-i:/name} or ${../if/ident:/params[2]/name}
parameter is equal to ${/c/if/null:/name},
the behaviour of ${../if/ident:/name} shall be specified by
${../../req/ident:/spec}.
test-epilogue: null
test-prologue: null
rationale: null
references: []
requirement-type: functional
skip-reasons: {}
test-action: |
if ( ctx->id != NULL ) {
ctx->status = rtems_task_ident( RTEMS_SELF, 0xdeadbeef, ctx->id );
} else {
${../../req/ident:/test-run}(
ctx->id_local_object,
DefaultTaskConfig.name,
ClassicTaskIdentAction
);
}
test-brief: null
test-cleanup: null
test-context:
- brief: null
description: null
member: rtems_status_code status
- 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_local_object
test-context-support: null
test-description: null
test-header: null
test-includes: []
test-local-includes:
- tr-object-ident.h
- tx-support.h
test-prepare: null
test-setup:
brief: null
code: |
rtems_status_code sc;
sc = rtems_task_construct(
&DefaultTaskConfig,
&ctx->id_local_object
);
T_assert_rsc_success( sc );
description: null
test-stop: null
test-support: |
static rtems_status_code ClassicTaskIdentAction(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
return rtems_task_ident( name, node, id );
}
test-target: testsuites/validation/tc-task-ident.c
test-teardown:
brief: null
code: |
if ( ctx->id_local_object != 0 ) {
rtems_status_code sc;
sc = rtems_task_delete( ctx->id_local_object );
T_rsc_success( sc );
}
description: null
text: ${.:text-template}
transition-map:
- enabled-by: true
post-conditions:
Status: OkAndWhoAmI
pre-conditions:
Name:
- WhoAmI
- enabled-by: true
post-conditions:
Status: Skip
pre-conditions:
Name:
- NotWhoAmI
type: requirement
|