From cde84810fe30b626f76aabe50018a8b0170a00c1 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 11 Aug 2021 11:01:52 +0200 Subject: spec: Test default values of acfg options --- spec/acfg/val/default.yml | 216 ++++++++++++++++++++++++++++++++++ spec/testsuites/validation-acfg-0.yml | 95 +++++++++++++++ 2 files changed, 311 insertions(+) create mode 100644 spec/acfg/val/default.yml create mode 100644 spec/testsuites/validation-acfg-0.yml diff --git a/spec/acfg/val/default.yml b/spec/acfg/val/default.yml new file mode 100644 index 00000000..d60f99cf --- /dev/null +++ b/spec/acfg/val/default.yml @@ -0,0 +1,216 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: [] +test-actions: +- action-brief: | + Try to create a barrier. + action-code: | + rtems_status_code sc; + rtems_id id; + + sc = rtems_barrier_create( + NAME, + RTEMS_DEFAULT_ATTRIBUTES, + 1, + &id + ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-barriers + links: [] +- action-brief: | + Try to construct a message queue. + action-code: | + rtems_message_queue_config config; + RTEMS_MESSAGE_QUEUE_BUFFER( 1 ) buffers[ 1 ]; + rtems_status_code sc; + rtems_id id; + + memset( &config, 0, sizeof( config ) ); + config.name = NAME; + config.maximum_pending_messages = 1; + config.maximum_message_size = 1; + config.storage_size = sizeof( buffers ); + config.storage_area = buffers; + config.attributes = RTEMS_DEFAULT_ATTRIBUTES; + + sc = rtems_message_queue_construct( &config, &id ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-message-queues + links: [] +- action-brief: | + Try to create a partition. + action-code: | + RTEMS_ALIGNED( RTEMS_PARTITION_ALIGNMENT ) uint8_t buffers[ 1 ][ 32 ]; + rtems_status_code sc; + rtems_id id; + + sc = rtems_partition_create( + NAME, + buffers, + sizeof( buffers ), + sizeof( buffers[ 0 ] ), + RTEMS_DEFAULT_ATTRIBUTES, + &id + ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-partitions + links: [] +- action-brief: | + Try to create a period. + action-code: | + rtems_status_code sc; + rtems_id id; + + sc = rtems_rate_monotonic_create( NAME, &id ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-periods + links: [] +- action-brief: | + Check that the processor maximum is one. + action-code: | + T_step_eq_u32( ${step}, rtems_scheduler_get_processor_maximum(), 1 ); + checks: [] + links: + - role: validation + uid: ../if/max-processors +- action-brief: | + Try to create a semaphore. + action-code: | + rtems_status_code sc; + rtems_id id; + + sc = rtems_semaphore_create( + NAME, + 0, + RTEMS_DEFAULT_ATTRIBUTES, + 0, + &id + ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-semaphores + links: [] +- action-brief: | + Try to construct a task. + action-code: | + rtems_status_code sc; + rtems_id id; + + sc = rtems_task_construct( &task_config, &id ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-tasks + links: [] +- action-brief: | + Try to create a timer. + action-code: | + rtems_status_code sc; + rtems_id id; + + sc = rtems_timer_create( NAME, &id ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-timers + links: [] +- action-brief: | + Try to create a user extension set. + action-code: | + rtems_extensions_table table; + rtems_status_code sc; + rtems_id id; + + memset( &table, 0, sizeof( table ) ); + sc = rtems_extension_create( NAME, &table, &id ); + checks: + - brief: | + Check that the returned status code is + ${/rtems/status/if/too-many:/name}. + code: | + T_step_rsc( ${step}, sc, RTEMS_TOO_MANY ); + links: + - role: validation + uid: ../if/max-user-extensions + links: [] +test-brief: | + Tests the default values of application configuration options. +test-context: [] +test-context-support: null +test-description: null +test-header: null +test-includes: +- rtems.h +- string.h +test-local-includes: +- tx-support.h +test-setup: null +test-stop: null +test-support: | + #define NAME rtems_build_name( 'N', 'A', 'M', 'E' ) + + RTEMS_ALIGNED(RTEMS_TASK_STORAGE_ALIGNMENT) static char task_storage[ + RTEMS_TASK_STORAGE_SIZE( + RTEMS_MINIMUM_STACK_SIZE, + RTEMS_DEFAULT_ATTRIBUTES + ) + ]; + + static const rtems_task_config task_config = { + .name = NAME, + .initial_priority = 1, + .storage_area = task_storage, + .storage_size = sizeof( task_storage ), + .maximum_thread_local_storage_size = 0, + .initial_modes = RTEMS_DEFAULT_MODES, + .attributes = RTEMS_DEFAULT_ATTRIBUTES + }; +test-target: testsuites/validation/tc-acfg-default.c +test-teardown: null +type: test-case diff --git a/spec/testsuites/validation-acfg-0.yml b/spec/testsuites/validation-acfg-0.yml new file mode 100644 index 00000000..d0d0e5a7 --- /dev/null +++ b/spec/testsuites/validation-acfg-0.yml @@ -0,0 +1,95 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +enabled-by: true +links: +- role: requirement-refinement + uid: /req/test-suites +- role: validation + uid: /acfg/if/appl-does-not-need-clock-driver +- role: validation + uid: /acfg/if/max-file-descriptors +- role: validation + uid: /acfg/if/disable-newlib-reentrancy +- role: validation + uid: /acfg/if/appl-disable-filesystem +- role: validation + uid: /acfg/if/idle-task-init-appl +- role: validation + uid: /acfg/if/idle-task-body +- role: validation + uid: /acfg/if/idle-task-stack-size +test-brief: | + This validation test suite is used to validate the default value of application configuration options. +test-code: | + #include + #include + #include + #include + + #include + + #include "tx-support.h" + #include "ts-config.h" + + const char rtems_test_name[] = "${.:/test-suite-name}"; + + static char buffer[ 512 ]; + + static const T_action actions[] = { + T_report_hash_sha256 + }; + + static const T_config test_config = { + .name = rtems_test_name, + .buf = buffer, + .buf_size = sizeof( buffer ), + .putchar = rtems_put_char, + .verbosity = RTEMS_TEST_VERBOSITY, + .now = T_now_tick, + .allocate = T_memory_allocate, + .deallocate = T_memory_deallocate, + .action_count = T_ARRAY_SIZE( actions ), + .actions = actions + }; + + #define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + + #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0 + + #define CONFIGURE_DISABLE_NEWLIB_REENTRANCY + + #define CONFIGURE_APPLICATION_DISABLE_FILESYSTEM + + #define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION + + #define CONFIGURE_IDLE_TASK_STACK_SIZE TEST_MINIMUM_STACK_SIZE + + static void *IdleBody( uintptr_t ignored ) + { + int exit_code; + + (void) ignored; + + rtems_test_begin( rtems_test_name, TEST_STATE ); + T_register(); + exit_code = T_main( &test_config ); + + if ( exit_code == 0 ) { + rtems_test_end( rtems_test_name ); + } + + rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, (uint32_t) exit_code ); + } + + #define CONFIGURE_IDLE_TASK_BODY IdleBody + + #define CONFIGURE_INIT + + #include +test-description: null +test-includes: [] +test-local-includes: [] +test-suite-name: ValidationAcfg0 +test-target: testsuites/validation/ts-validation-acfg-0.c +type: test-suite -- cgit v1.2.3