source: rtems/testsuites/sptests/spcbssched02/init.c @ 74416035

4.115
Last change on this file since 74416035 was 74416035, checked in by Joel Sherrill <joel.sherrill@…>, on 09/20/11 at 13:06:58

2011-09-20 Petr Benes <benesp16@…>

PR 1916/testing

  • spcbssched02/init.c, spcbssched02/spcbssched02.scn, spcbssched02/system.h, spcbssched02/task_periodic.c, spedfsched03/init.c, spedfsched03/system.h, spedfsched03/tasks_aperiodic.c: Improve coverage.
  • Property mode set to 100644
File size: 10.3 KB
Line 
1/*  Init
2 *
3 *  This routine is the initialization task for this test program.
4 *  It is a user initialization task and has the responsibility for creating
5 *  and starting the tasks that make up the test.  If the time of day
6 *  clock is required for the test, it should also be set to a known
7 *  value by this function.
8 *
9 *  Input parameters:
10 *    argument - task argument
11 *
12 *  Output parameters:  NONE
13 *
14 *  The license and distribution terms for this file may be
15 *  found in the file LICENSE in this distribution or at
16 *  http://www.rtems.com/license/LICENSE.
17 *
18 *  $Id$
19 */
20
21#define CONFIGURE_INIT
22#include "system.h"
23
24rtems_task Init(
25  rtems_task_argument argument
26)
27{
28  rtems_status_code status;
29  rtems_cbs_server_id server_id, server_id2;
30  time_t approved_budget, exec_time, abs_time, remaining_budget;
31  rtems_cbs_parameters params, params1, params2, params3, params4;
32
33  Priority = 30;
34  Period    = 30;
35  Execution = 10;
36  Phase = 0;
37
38  params.deadline = 1;
39  params.budget = 1;
40
41  params1 = params2 = params3 = params4 = params;
42  params1.budget = -1;
43  params2.budget = SCHEDULER_EDF_PRIO_MSB + 1;
44  params3.deadline = -1;
45  params4.deadline = SCHEDULER_EDF_PRIO_MSB + 1;
46
47  puts( "\n\n*** TEST CBS SCHEDULER 2 ***" );
48
49  Task_name = rtems_build_name( 'P', 'T', '1', ' ' );
50  Task_name2 = rtems_build_name( 'P', 'T', '2', ' ' );
51
52  status = rtems_task_create(
53    Task_name,
54    Priority,
55    RTEMS_MINIMUM_STACK_SIZE * 4,
56    RTEMS_DEFAULT_MODES,
57    RTEMS_DEFAULT_ATTRIBUTES,
58    &Task_id
59  );
60  directive_failed( status, "rtems_task_create loop" );
61
62  status = rtems_task_create(
63    Task_name2,
64    Priority,
65    RTEMS_MINIMUM_STACK_SIZE * 4,
66    RTEMS_NO_PREEMPT,
67    RTEMS_DEFAULT_ATTRIBUTES,
68    &Task_id2
69  );
70  directive_failed( status, "rtems_task_create loop" );
71
72  printf( "Init: Initializing the CBS\n" );
73  if ( rtems_cbs_initialize() )
74    printf( "ERROR: CBS INITIALIZATION FAILED\n" );
75
76  /* Error checks for Create server and Destroy server  */
77  printf( "Init: Create server and Destroy server\n" );
78  if ( rtems_cbs_destroy_server( -5 ) !=
79       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
80    printf( "ERROR: DESTROY SERVER PASSED UNEXPECTEDLY\n" );
81  if ( rtems_cbs_destroy_server( 5 ) !=
82       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
83    printf( "ERROR: DESTROY SERVER PASSED UNEXPECTEDLY\n" );
84  if ( rtems_cbs_destroy_server( 0 ) != SCHEDULER_CBS_ERROR_NOSERVER )
85    printf( "ERROR: DESTROY SERVER PASSED UNEXPECTEDLY\n" );
86  if ( rtems_cbs_create_server( &params1, NULL, &server_id ) !=
87       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
88    printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
89  if ( rtems_cbs_create_server( &params2, NULL, &server_id ) !=
90       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
91    printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
92  if ( rtems_cbs_create_server( &params3, NULL, &server_id ) !=
93       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
94    printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
95  if ( rtems_cbs_create_server( &params4, NULL, &server_id ) !=
96       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
97    printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
98  if ( rtems_cbs_create_server( &params, NULL, &server_id2 ) )
99    printf( "ERROR: CREATE SERVER FAILED\n" );
100  if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
101    printf( "ERROR: CREATE SERVER FAILED\n" );
102  if ( rtems_cbs_create_server( &params, NULL, &server_id ) )
103    printf( "ERROR: CREATE SERVER FAILED\n" );
104  if ( rtems_cbs_create_server( &params, NULL, &server_id ) !=
105       SCHEDULER_CBS_ERROR_FULL )
106    printf( "ERROR: CREATE SERVER PASSED UNEXPECTEDLY\n" );
107
108  /* Error checks for Attach thread and Detach thread */
109  printf( "Init: Attach thread\n" );
110  if ( rtems_cbs_attach_thread( -5, RTEMS_SELF ) !=
111       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
112    printf( "ERROR: ATTACH THREAD PASSED UNEXPECTEDLY\n" );
113  if ( rtems_cbs_attach_thread( 5, RTEMS_SELF ) !=
114       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
115    printf( "ERROR: ATTACH THREAD PASSED UNEXPECTEDLY\n" );
116  if ( rtems_cbs_attach_thread( server_id, 1234 ) !=
117       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
118    printf( "ERROR: ATTACH THREAD PASSED UNEXPECTEDLY\n" );
119  if ( rtems_cbs_attach_thread( server_id, RTEMS_SELF ) )
120    printf( "ERROR: ATTACH THREAD FAILED\n" );
121  if ( rtems_cbs_attach_thread( server_id, RTEMS_SELF ) !=
122       SCHEDULER_CBS_ERROR_FULL )
123    printf( "ERROR: ATTACH THREAD AGAIN PASSED UNEXPECTEDLY\n" );
124  if ( rtems_cbs_attach_thread( server_id, Task_id ) !=
125       SCHEDULER_CBS_ERROR_FULL )
126    printf( "ERROR: ATTACH THREAD TO FULL SERVER PASSED UNEXPECTEDLY \n" );
127  if ( rtems_cbs_destroy_server( server_id ) )
128    printf( "ERROR: DESTROY SERVER WITH THREAD ATTACHED FAILED\n" );
129  if ( rtems_cbs_attach_thread( server_id, RTEMS_SELF ) !=
130       SCHEDULER_CBS_ERROR_NOSERVER )
131    printf( "ERROR: ATTACH THREAD PASSED UNEXPECTEDLY\n" );
132
133  printf( "Init: Detach thread\n" );
134  if ( rtems_cbs_detach_thread( -5, RTEMS_SELF ) !=
135       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
136    printf( "ERROR: DETACH THREAD PASSED UNEXPECTEDLY\n" );
137  if ( rtems_cbs_detach_thread( 5, RTEMS_SELF ) !=
138       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
139    printf( "ERROR: DETACH THREAD PASSED UNEXPECTEDLY\n" );
140  if ( rtems_cbs_detach_thread( server_id2, 1234 ) !=
141       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
142    printf( "ERROR: DETACH THREAD PASSED UNEXPECTEDLY \n" );
143  if ( rtems_cbs_detach_thread( server_id, RTEMS_SELF ) !=
144       SCHEDULER_CBS_ERROR_NOSERVER )
145    printf( "ERROR: DETACH THREAD PASSED UNEXPECTEDLY4\n" );
146  rtems_cbs_destroy_server( server_id2 );
147
148  /* Error checks for Set parameters and Get parameters */
149  printf( "Init: Set parameters and Get parameters\n" );
150  if ( rtems_cbs_set_parameters( -5, &params ) !=
151       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
152    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
153  if ( rtems_cbs_set_parameters( 5, &params ) !=
154       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
155    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
156  if ( rtems_cbs_set_parameters( server_id, &params ) !=
157       SCHEDULER_CBS_ERROR_NOSERVER )
158    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
159
160  if ( rtems_cbs_get_parameters( -5, &params ) !=
161       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
162    printf( "ERROR: GET PARAMETERS PASSED UNEXPECTEDLY\n" );
163  if ( rtems_cbs_get_parameters( 5, &params ) !=
164       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
165    printf( "ERROR: GET PARAMETERS PASSED UNEXPECTEDLY\n" );
166  if ( rtems_cbs_get_parameters( server_id, &params ) !=
167       SCHEDULER_CBS_ERROR_NOSERVER )
168    printf( "ERROR: GET PARAMETERS PASSED UNEXPECTEDLY\n" );
169
170  if ( rtems_cbs_set_parameters( server_id, &params1 ) !=
171       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
172    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
173  if ( rtems_cbs_set_parameters( server_id, &params2 ) !=
174       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
175    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
176  if ( rtems_cbs_set_parameters( server_id, &params3 ) !=
177       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
178    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
179  if ( rtems_cbs_set_parameters( server_id, &params4 ) !=
180       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
181    printf( "ERROR: SET PARAMETERS PASSED UNEXPECTEDLY\n" );
182
183  /* Error checks for Get server id */
184  printf( "Init: Get server id\n" );
185  if ( rtems_cbs_get_server_id( RTEMS_SELF, &server_id ) !=
186       SCHEDULER_CBS_ERROR_NOSERVER )
187    printf( "ERROR: GET SERVER ID PASSED UNEXPECTEDLY\n" );
188
189  /* Error checks for Get approved budget */
190  printf( "Init: Get approved budget\n" );
191  if ( rtems_cbs_get_approved_budget( -5, &approved_budget ) !=
192       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
193    printf( "ERROR: GET APPROVED BUDGET PASSED UNEXPECTEDLY\n" );
194  if ( rtems_cbs_get_approved_budget( 5, &approved_budget ) !=
195       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
196    printf( "ERROR: GET APPROVED BUDGET PASSED UNEXPECTEDLY\n" );
197  if ( rtems_cbs_get_approved_budget( server_id, &approved_budget ) !=
198       SCHEDULER_CBS_ERROR_NOSERVER )
199    printf( "ERROR: GET APPROVED BUDGET PASSED UNEXPECTEDLY\n" );
200
201  /* Error checks for Get remaining budget */
202  printf( "Init: Get remaining budget\n" );
203  if ( rtems_cbs_get_remaining_budget( -5, &remaining_budget ) !=
204       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
205    printf( "ERROR: GET REMAINING BUDGET PASSED UNEXPECTEDLY\n" );
206  if ( rtems_cbs_get_remaining_budget( 5, &remaining_budget ) !=
207       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
208    printf( "ERROR: GET REMAINING BUDGET PASSED UNEXPECTEDLY\n" );
209  if ( rtems_cbs_get_remaining_budget( server_id, &remaining_budget ) !=
210       SCHEDULER_CBS_ERROR_NOSERVER )
211    printf( "ERROR: GET REMAINING BUDGET PASSED UNEXPECTEDLY\n" );
212
213  /* Error checks for Get execution time */
214  printf( "Init: Get execution time\n" );
215  if ( rtems_cbs_get_execution_time( -5, &exec_time, &abs_time ) !=
216       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
217    printf( "ERROR: GET EXECUTION TIME PASSED UNEXPECTEDLY\n" );
218  if ( rtems_cbs_get_execution_time( 5, &exec_time, &abs_time ) !=
219       SCHEDULER_CBS_ERROR_INVALID_PARAMETER )
220    printf( "ERROR: GET EXECUTION TIME PASSED UNEXPECTEDLY\n" );
221  if ( rtems_cbs_get_execution_time( server_id, &exec_time, &abs_time ) !=
222       SCHEDULER_CBS_ERROR_NOSERVER )
223    printf( "ERROR: GET EXECUTION TIME PASSED UNEXPECTEDLY\n" );
224
225  /* Restart CBS library */
226  printf( "Init: Cleaning up CBS\n" );
227  if ( rtems_cbs_cleanup() )
228    printf( "ERROR: CBS CLEANUP FAILED\n" );
229  printf( "Init: Initializing the CBS\n" );
230  if ( rtems_cbs_initialize() )
231    printf( "ERROR: CBS INITIALIZATION FAILED\n" );
232
233  /* Start periodic tasks */
234  printf( "Init: Starting periodic task\n" );
235  status = rtems_task_start( Task_id, Task_Periodic, 1 );
236  directive_failed( status, "rtems_task_start periodic" );
237  status = rtems_task_start( Task_id2, Task_Periodic, 2 );
238  directive_failed( status, "rtems_task_start periodic" );
239
240  rtems_task_wake_after( 130 );
241
242  printf( "Init: Checking server with a deleted task\n" );
243  if ( rtems_cbs_get_execution_time( 0, &exec_time, &abs_time ) )
244    printf( "ERROR: GET EXECUTION TIME FAILED\n" );
245  if ( rtems_cbs_get_remaining_budget( 0, &remaining_budget) )
246    printf( "ERROR: GET REMAINING BUDGET FAILED\n" );
247
248  if ( rtems_cbs_cleanup() )
249    printf( "ERROR: CBS CLEANUP\n" );
250
251  fflush(stdout);
252  puts( "*** END OF TEST CBS SCHEDULER 2 ***" );
253  rtems_test_exit( 0 );
254}
Note: See TracBrowser for help on using the repository browser.