From 212b0ca440d6bb2f3e5d2638508227c2a7106a57 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 9 Dec 2021 15:58:14 +0100 Subject: validation: Add test suites The test source code is generated from specification items by the "./spec2modules.py" script contained in the git://git.rtems.org/rtems-central.git Git repository. Please read the "How-To" section in the "Software Requirements Engineering" chapter of the RTEMS Software Engineering manual to get more information about the process. Update #3716. --- spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml | 1 + spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml | 1 + spec/build/bsps/i386/pc386/grp.yml | 2 + spec/build/bsps/i386/pc386/tst-xfail-val.yml | 20 +++ spec/build/bsps/powerpc/psim/bsppsim.yml | 2 + spec/build/bsps/sh/gensh1/tstgensh1.yml | 1 + spec/build/bsps/sh/gensh2/tstgensh2.yml | 6 +- spec/build/bsps/sh/shsim/tstsimsh1.yml | 1 + spec/build/bsps/sh/shsim/tstsimsh2.yml | 1 + spec/build/bsps/sh/shsim/tstsimsh2e.yml | 1 + spec/build/bsps/sh/shsim/tstsimsh4.yml | 1 + spec/build/bsps/tst-xfail-intr.yml | 13 ++ spec/build/bsps/tstsmallmem.yml | 13 +- spec/build/testsuites/validation/grp.yml | 12 +- spec/build/testsuites/validation/performance-0.yml | 20 --- .../validation/performance-no-clock-0.yml | 19 +++ spec/build/testsuites/validation/validation-1.yml | 3 +- .../testsuites/validation/validation-non-smp.yml | 20 +++ .../testsuites/validation/validation-one-cpu-0.yml | 19 +++ .../validation/validation-smp-only-0.yml | 19 +++ .../validation/validation-smp-only-1.yml | 19 +++ testsuites/validation/ts-acfg.h | 81 ++++++++++ testsuites/validation/ts-default.h | 167 +++++++++++++++++---- testsuites/validation/ts-idle.h | 98 ++++++++++++ testsuites/validation/ts-performance-0.c | 78 ---------- testsuites/validation/ts-performance-no-clock-0.c | 82 ++++++++++ testsuites/validation/ts-validation-1.c | 10 +- testsuites/validation/ts-validation-no-clock-0.c | 81 ++++++++++ testsuites/validation/ts-validation-non-smp.c | 75 +++++++++ testsuites/validation/ts-validation-one-cpu-0.c | 80 ++++++++++ testsuites/validation/ts-validation-smp-only-0.c | 78 ++++++++++ testsuites/validation/ts-validation-smp-only-1.c | 94 ++++++++++++ 32 files changed, 981 insertions(+), 137 deletions(-) create mode 100644 spec/build/bsps/i386/pc386/tst-xfail-val.yml create mode 100644 spec/build/bsps/tst-xfail-intr.yml delete mode 100644 spec/build/testsuites/validation/performance-0.yml create mode 100644 spec/build/testsuites/validation/performance-no-clock-0.yml create mode 100644 spec/build/testsuites/validation/validation-non-smp.yml create mode 100644 spec/build/testsuites/validation/validation-one-cpu-0.yml create mode 100644 spec/build/testsuites/validation/validation-smp-only-0.yml create mode 100644 spec/build/testsuites/validation/validation-smp-only-1.yml create mode 100644 testsuites/validation/ts-acfg.h create mode 100644 testsuites/validation/ts-idle.h delete mode 100644 testsuites/validation/ts-performance-0.c create mode 100644 testsuites/validation/ts-performance-no-clock-0.c create mode 100644 testsuites/validation/ts-validation-no-clock-0.c create mode 100644 testsuites/validation/ts-validation-non-smp.c create mode 100644 testsuites/validation/ts-validation-one-cpu-0.c create mode 100644 testsuites/validation/ts-validation-smp-only-0.c create mode 100644 testsuites/validation/ts-validation-smp-only-1.c diff --git a/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml b/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml index b271e644ce..6742359ed0 100644 --- a/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml +++ b/spec/build/bsps/arm/rtl22xx/tstrtl22xx.yml @@ -9,6 +9,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml b/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml index 26700fa79e..43c82c7063 100644 --- a/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml +++ b/spec/build/bsps/arm/rtl22xx/tstrtl22xxt.yml @@ -6,6 +6,7 @@ actions: linpack: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/i386/pc386/grp.yml b/spec/build/bsps/i386/pc386/grp.yml index 1f162e8a32..9c3709906f 100644 --- a/spec/build/bsps/i386/pc386/grp.yml +++ b/spec/build/bsps/i386/pc386/grp.yml @@ -59,6 +59,8 @@ links: uid: optgdtdesc - role: build-dependency uid: start +- role: build-dependency + uid: tst-xfail-val - role: build-dependency uid: ../../obj - role: build-dependency diff --git a/spec/build/bsps/i386/pc386/tst-xfail-val.yml b/spec/build/bsps/i386/pc386/tst-xfail-val.yml new file mode 100644 index 0000000000..59ee226ebf --- /dev/null +++ b/spec/build/bsps/i386/pc386/tst-xfail-val.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +actions: +- set-test-state: + fatal-init-task-construct-failed: expected-fail + fatal-too-large-tls-size: expected-fail + performance-no-clock-0: expected-fail + validation-intr: expected-fail + validation-io-kernel: expected-fail + validation-no-clock-0: expected-fail + validation-one-cpu-0: expected-fail + validation-timecounter-1: expected-fail +build-type: option +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +default: null +default-by-variant: [] +description: '' +enabled-by: true +links: [] +type: build diff --git a/spec/build/bsps/powerpc/psim/bsppsim.yml b/spec/build/bsps/powerpc/psim/bsppsim.yml index c42590f0a1..0a7762c599 100644 --- a/spec/build/bsps/powerpc/psim/bsppsim.yml +++ b/spec/build/bsps/powerpc/psim/bsppsim.yml @@ -29,6 +29,8 @@ links: uid: ../../objirq - role: build-dependency uid: ../../opto2 +- role: build-dependency + uid: ../../tst-xfail-intr - role: build-dependency uid: ../crti - role: build-dependency diff --git a/spec/build/bsps/sh/gensh1/tstgensh1.yml b/spec/build/bsps/sh/gensh1/tstgensh1.yml index 61fd3cd9a6..24ae4936a6 100644 --- a/spec/build/bsps/sh/gensh1/tstgensh1.yml +++ b/spec/build/bsps/sh/gensh1/tstgensh1.yml @@ -8,6 +8,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/sh/gensh2/tstgensh2.yml b/spec/build/bsps/sh/gensh2/tstgensh2.yml index 61fd3cd9a6..43be5a19c0 100644 --- a/spec/build/bsps/sh/gensh2/tstgensh2.yml +++ b/spec/build/bsps/sh/gensh2/tstgensh2.yml @@ -2,12 +2,10 @@ SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause actions: - set-test-state: fileio: exclude - fsdosfsname01: exclude iostream: exclude - linpack: exclude rcxx01: exclude - record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) @@ -18,4 +16,6 @@ enabled-by: true links: - role: build-dependency uid: ../../tstnoiconv +- role: build-dependency + uid: ../../tstsmallmem type: build diff --git a/spec/build/bsps/sh/shsim/tstsimsh1.yml b/spec/build/bsps/sh/shsim/tstsimsh1.yml index 695ede7831..4cad77e4c5 100644 --- a/spec/build/bsps/sh/shsim/tstsimsh1.yml +++ b/spec/build/bsps/sh/shsim/tstsimsh1.yml @@ -8,6 +8,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/sh/shsim/tstsimsh2.yml b/spec/build/bsps/sh/shsim/tstsimsh2.yml index 695ede7831..4cad77e4c5 100644 --- a/spec/build/bsps/sh/shsim/tstsimsh2.yml +++ b/spec/build/bsps/sh/shsim/tstsimsh2.yml @@ -8,6 +8,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/sh/shsim/tstsimsh2e.yml b/spec/build/bsps/sh/shsim/tstsimsh2e.yml index 695ede7831..4cad77e4c5 100644 --- a/spec/build/bsps/sh/shsim/tstsimsh2e.yml +++ b/spec/build/bsps/sh/shsim/tstsimsh2e.yml @@ -8,6 +8,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/sh/shsim/tstsimsh4.yml b/spec/build/bsps/sh/shsim/tstsimsh4.yml index 695ede7831..4cad77e4c5 100644 --- a/spec/build/bsps/sh/shsim/tstsimsh4.yml +++ b/spec/build/bsps/sh/shsim/tstsimsh4.yml @@ -8,6 +8,7 @@ actions: rcxx01: exclude record02: exclude utf8proc01: exclude + validation-no-clock-0: exclude build-type: option copyrights: - Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) diff --git a/spec/build/bsps/tst-xfail-intr.yml b/spec/build/bsps/tst-xfail-intr.yml new file mode 100644 index 0000000000..7c43194996 --- /dev/null +++ b/spec/build/bsps/tst-xfail-intr.yml @@ -0,0 +1,13 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +actions: +- set-test-state: + validation-intr: expected-fail +build-type: option +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +default: null +default-by-variant: [] +description: '' +enabled-by: true +links: [] +type: build diff --git a/spec/build/bsps/tstsmallmem.yml b/spec/build/bsps/tstsmallmem.yml index 3d1ffa6b57..2bdbd5f106 100644 --- a/spec/build/bsps/tstsmallmem.yml +++ b/spec/build/bsps/tstsmallmem.yml @@ -4,14 +4,25 @@ actions: flashdisk01: exclude fsdosfsname01: exclude linpack: exclude - performance-0: exclude + performance-no-clock-0: exclude psxconfig01: exclude psxusleep: exclude record02: exclude sp47: exclude spstkalloc02: exclude + terminate: exclude + userext: exclude validation-0: exclude validation-1: exclude + validation-cache: exclude + validation-intr: exclude + validation-no-clock-0: exclude + validation-non-smp: exclude + validation-one-cpu-0: exclude + validation-one-cpu-1: exclude + validation-timecounter-0: exclude + validation-timecounter-1: exclude + validation-tls-0: exclude - set-value: -DPER_ALLOCATION=10 - append-test-cppflags: sp71 - set-value: -DMAXIMUM_DISTRIBUTION=10 diff --git a/spec/build/testsuites/validation/grp.yml b/spec/build/testsuites/validation/grp.yml index b2f3606944..48e3978e94 100644 --- a/spec/build/testsuites/validation/grp.yml +++ b/spec/build/testsuites/validation/grp.yml @@ -13,11 +13,21 @@ links: - role: build-dependency uid: libvalidation - role: build-dependency - uid: performance-0 + uid: performance-no-clock-0 - role: build-dependency uid: validation-0 - role: build-dependency uid: validation-1 +- role: build-dependency + uid: validation-no-clock-0 +- role: build-dependency + uid: validation-non-smp +- role: build-dependency + uid: validation-one-cpu-0 +- role: build-dependency + uid: validation-smp-only-0 +- role: build-dependency + uid: validation-smp-only-1 type: build use-after: - validation diff --git a/spec/build/testsuites/validation/performance-0.yml b/spec/build/testsuites/validation/performance-0.yml deleted file mode 100644 index 711edb0c75..0000000000 --- a/spec/build/testsuites/validation/performance-0.yml +++ /dev/null @@ -1,20 +0,0 @@ -SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause -build-type: test-program -cflags: [] -copyrights: -- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) -cppflags: [] -cxxflags: [] -enabled-by: true -features: c cprogram -includes: [] -ldflags: [] -links: [] -source: -- testsuites/validation/tc-part-performance.c -- testsuites/validation/ts-performance-0.c -stlib: [] -target: testsuites/validation/ts-performance-0.exe -type: build -use-after: [] -use-before: [] diff --git a/spec/build/testsuites/validation/performance-no-clock-0.yml b/spec/build/testsuites/validation/performance-no-clock-0.yml new file mode 100644 index 0000000000..bc76f665ea --- /dev/null +++ b/spec/build/testsuites/validation/performance-no-clock-0.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: true +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/ts-performance-no-clock-0.c +stlib: [] +target: testsuites/validation/ts-performance-no-clock-0.exe +type: build +use-after: [] +use-before: [] diff --git a/spec/build/testsuites/validation/validation-1.yml b/spec/build/testsuites/validation/validation-1.yml index ad6a7f32e8..8a98f8b382 100644 --- a/spec/build/testsuites/validation/validation-1.yml +++ b/spec/build/testsuites/validation/validation-1.yml @@ -19,6 +19,5 @@ source: stlib: [] target: testsuites/validation/ts-validation-1.exe type: build -use-after: -- validation +use-after: [] use-before: [] diff --git a/spec/build/testsuites/validation/validation-non-smp.yml b/spec/build/testsuites/validation/validation-non-smp.yml new file mode 100644 index 0000000000..656a8a1c5e --- /dev/null +++ b/spec/build/testsuites/validation/validation-non-smp.yml @@ -0,0 +1,20 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: + not: RTEMS_SMP +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/ts-validation-non-smp.c +stlib: [] +target: testsuites/validation/ts-validation-non-smp.exe +type: build +use-after: [] +use-before: [] diff --git a/spec/build/testsuites/validation/validation-one-cpu-0.yml b/spec/build/testsuites/validation/validation-one-cpu-0.yml new file mode 100644 index 0000000000..1dc342656e --- /dev/null +++ b/spec/build/testsuites/validation/validation-one-cpu-0.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: true +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/ts-validation-one-cpu-0.c +stlib: [] +target: testsuites/validation/ts-validation-one-cpu-0.exe +type: build +use-after: [] +use-before: [] diff --git a/spec/build/testsuites/validation/validation-smp-only-0.yml b/spec/build/testsuites/validation/validation-smp-only-0.yml new file mode 100644 index 0000000000..bd3949c650 --- /dev/null +++ b/spec/build/testsuites/validation/validation-smp-only-0.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: RTEMS_SMP +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/ts-validation-smp-only-0.c +stlib: [] +target: testsuites/validation/ts-validation-smp-only-0.exe +type: build +use-after: [] +use-before: [] diff --git a/spec/build/testsuites/validation/validation-smp-only-1.yml b/spec/build/testsuites/validation/validation-smp-only-1.yml new file mode 100644 index 0000000000..9425907b72 --- /dev/null +++ b/spec/build/testsuites/validation/validation-smp-only-1.yml @@ -0,0 +1,19 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +build-type: test-program +cflags: [] +copyrights: +- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) +cppflags: [] +cxxflags: [] +enabled-by: RTEMS_SMP +features: c cprogram +includes: [] +ldflags: [] +links: [] +source: +- testsuites/validation/ts-validation-smp-only-1.c +stlib: [] +target: testsuites/validation/ts-validation-smp-only-1.exe +type: build +use-after: [] +use-before: [] diff --git a/testsuites/validation/ts-acfg.h b/testsuites/validation/ts-acfg.h new file mode 100644 index 0000000000..3ee9951ebd --- /dev/null +++ b/testsuites/validation/ts-acfg.h @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @brief This header file provides a validation test suite runner for + * validation test cases specific to the application configuration. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include +#include + +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 + +RTEMS_NO_RETURN static void RunTestSuite( void ) +{ + int exit_code; + + 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 ); +} diff --git a/testsuites/validation/ts-default.h b/testsuites/validation/ts-default.h index addf1866f5..9f317abf80 100644 --- a/testsuites/validation/ts-default.h +++ b/testsuites/validation/ts-default.h @@ -32,23 +32,29 @@ * POSSIBILITY OF SUCH DAMAGE. */ -#include +#include #include #include #include #include #include +#include -#define MAX_TLS_SIZE RTEMS_ALIGN_UP( 64, RTEMS_TASK_STORAGE_ALIGNMENT ) +#include "ts-config.h" +#include "tx-support.h" -#define MAX_TASKS 32 +#if !defined( MAX_TLS_SIZE ) +#define MAX_TLS_SIZE TEST_MAXIMUM_TLS_SIZE +#endif + +#define MAX_TASKS ( TEST_MAXIMUM_TASKS - 1 ) #define TASK_ATTRIBUTES RTEMS_FLOATING_POINT #define TASK_STORAGE_SIZE \ RTEMS_TASK_STORAGE_SIZE( \ - MAX_TLS_SIZE + RTEMS_MINIMUM_STACK_SIZE + \ + MAX_TLS_SIZE + TEST_MINIMUM_STACK_SIZE + \ CPU_STACK_ALIGNMENT - CPU_HEAP_ALIGNMENT, \ TASK_ATTRIBUTES \ ) @@ -75,7 +81,11 @@ static const T_config test_config = { .buf_size = sizeof( buffer ), .putchar = rtems_put_char, .verbosity = RTEMS_TEST_VERBOSITY, +#if defined(CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER) .now = T_now_clock, +#else + .now = T_now_tick, +#endif .allocate = T_memory_allocate, .deallocate = T_memory_deallocate, .action_count = T_ARRAY_SIZE( actions ), @@ -91,11 +101,29 @@ static union { rtems_chain_node node; } task_storage[ MAX_TASKS ]; -static void Init( rtems_task_argument arg ) +rtems_task_argument test_runner_argument; + +rtems_task_priority test_runner_initial_priority; + +rtems_mode test_runner_initial_modes; + +static void Runner( rtems_task_argument arg ) { int exit_code; - (void) arg; + test_runner_argument = arg; + + (void) rtems_task_mode( + RTEMS_ASR, + RTEMS_ASR_MASK, + &test_runner_initial_modes + ); + + (void) rtems_task_set_priority( + RTEMS_SELF, + PRIO_DEFAULT, + &test_runner_initial_priority + ); rtems_chain_initialize( &free_task_storage, @@ -115,16 +143,18 @@ static void Init( rtems_task_argument arg ) rtems_fatal( RTEMS_FATAL_SOURCE_EXIT, (uint32_t) exit_code ); } -static void *task_stack_allocate( size_t size ) +void *test_task_stack_allocate( size_t size ) { if ( size > sizeof( task_storage[ 0 ] ) ) { return NULL; } + T_quiet_ge_sz( size, TEST_MINIMUM_STACK_SIZE ); + return rtems_chain_get_unprotected( &free_task_storage ); } -static void task_stack_deallocate( void *stack ) +void test_task_stack_deallocate( void *stack ) { rtems_chain_append_unprotected( &free_task_storage, @@ -132,28 +162,36 @@ static void task_stack_deallocate( void *stack ) ); } +#if !defined( CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER ) #define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER +#endif + +#define CONFIGURE_MINIMUM_TASK_STACK_SIZE TEST_MINIMUM_STACK_SIZE + +#define CONFIGURE_INTERRUPT_STACK_SIZE TEST_INTERRUPT_STACK_SIZE -#define CONFIGURE_MAXIMUM_BARRIERS 3 +#define CONFIGURE_MAXIMUM_BARRIERS TEST_MAXIMUM_BARRIERS -#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES 3 +#define CONFIGURE_MAXIMUM_MESSAGE_QUEUES TEST_MAXIMUM_MESSAGE_QUEUES -#define CONFIGURE_MAXIMUM_PARTITIONS 3 +#define CONFIGURE_MAXIMUM_PARTITIONS TEST_MAXIMUM_PARTITIONS -#define CONFIGURE_MAXIMUM_PERIODS 3 +#define CONFIGURE_MAXIMUM_PERIODS TEST_MAXIMUM_PERIODS -#define CONFIGURE_MAXIMUM_SEMAPHORES 3 +#define CONFIGURE_MAXIMUM_SEMAPHORES TEST_MAXIMUM_SEMAPHORES -#define CONFIGURE_MAXIMUM_TASKS ( 1 + MAX_TASKS ) +#define CONFIGURE_MAXIMUM_TASKS TEST_MAXIMUM_TASKS #define CONFIGURE_MINIMUM_TASKS_WITH_USER_PROVIDED_STORAGE \ CONFIGURE_MAXIMUM_TASKS -#define CONFIGURE_MAXIMUM_TIMERS 3 +#define CONFIGURE_MAXIMUM_TIMERS TEST_MAXIMUM_TIMERS -#define CONFIGURE_MAXIMUM_USER_EXTENSIONS 3 +#define CONFIGURE_MAXIMUM_USER_EXTENSIONS TEST_MAXIMUM_USER_EXTENSIONS -#define CONFIGURE_MICROSECONDS_PER_TICK 1000 +#define CONFIGURE_MICROSECONDS_PER_TICK TEST_MICROSECONDS_PER_TICK + +#define CONFIGURE_TICKS_PER_TIMESLICE TEST_TICKS_PER_TIMESLICE #define CONFIGURE_MAXIMUM_FILE_DESCRIPTORS 0 @@ -165,35 +203,67 @@ static void task_stack_deallocate( void *stack ) #define CONFIGURE_TASK_STACK_ALLOCATOR_AVOIDS_WORK_SPACE -#define CONFIGURE_TASK_STACK_ALLOCATOR task_stack_allocate +#define CONFIGURE_TASK_STACK_ALLOCATOR test_task_stack_allocate -#define CONFIGURE_TASK_STACK_DEALLOCATOR task_stack_deallocate +#define CONFIGURE_TASK_STACK_DEALLOCATOR test_task_stack_deallocate #define CONFIGURE_RTEMS_INIT_TASKS_TABLE -#define CONFIGURE_INIT_TASK_ATTRIBUTES TASK_ATTRIBUTES +#define CONFIGURE_INIT_TASK_ARGUMENTS TEST_RUNNER_ARGUMENT -#define CONFIGURE_INIT_TASK_INITIAL_MODES RTEMS_DEFAULT_MODES +#define CONFIGURE_INIT_TASK_ATTRIBUTES ( RTEMS_SYSTEM_TASK | TASK_ATTRIBUTES ) #define CONFIGURE_INIT_TASK_CONSTRUCT_STORAGE_SIZE TASK_STORAGE_SIZE +#define CONFIGURE_INIT_TASK_ENTRY_POINT Runner + +#define CONFIGURE_INIT_TASK_INITIAL_MODES TEST_RUNNER_INITIAL_MODES + +#define CONFIGURE_INIT_TASK_NAME TEST_RUNNER_NAME + +#define CONFIGURE_INIT_TASK_PRIORITY 0 + +#if !defined( CONFIGURE_INITIAL_EXTENSIONS ) +#define CONFIGURE_INITIAL_EXTENSIONS { .fatal = FatalInitialExtension } +#endif + #if defined( RTEMS_SMP ) && \ ( CONFIGURE_MAXIMUM_PROCESSORS == 4 || CONFIGURE_MAXIMUM_PROCESSORS == 5 ) +#include + +const Scheduler_Operations +T_scheduler_operations[ CONFIGURE_MAXIMUM_PROCESSORS ] = { + SCHEDULER_EDF_SMP_ENTRY_POINTS, + SCHEDULER_EDF_SMP_ENTRY_POINTS, + SCHEDULER_EDF_SMP_ENTRY_POINTS, +#if CONFIGURE_MAXIMUM_PROCESSORS >= 5 + SCHEDULER_EDF_SMP_ENTRY_POINTS, +#endif + SCHEDULER_EDF_SMP_ENTRY_POINTS +}; + +#undef SCHEDULER_EDF_SMP_ENTRY_POINTS + +#define SCHEDULER_EDF_SMP_ENTRY_POINTS T_SCHEDULER_ENTRY_POINTS + #define CONFIGURE_SCHEDULER_EDF_SMP #include -RTEMS_SCHEDULER_EDF_SMP(a); +RTEMS_SCHEDULER_EDF_SMP( a ); + +RTEMS_SCHEDULER_EDF_SMP( b ); -RTEMS_SCHEDULER_EDF_SMP(b); +RTEMS_SCHEDULER_EDF_SMP( c ); -RTEMS_SCHEDULER_EDF_SMP(c); +RTEMS_SCHEDULER_EDF_SMP( d ); #define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ - RTEMS_SCHEDULER_TABLE_EDF_SMP(a, rtems_build_name('A', ' ', ' ', ' ')), \ - RTEMS_SCHEDULER_TABLE_EDF_SMP(b, rtems_build_name('B', ' ', ' ', ' ')), \ - RTEMS_SCHEDULER_TABLE_EDF_SMP(c, rtems_build_name('C', ' ', ' ', ' ')) + RTEMS_SCHEDULER_TABLE_EDF_SMP( a, TEST_SCHEDULER_A_NAME ), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP( b, TEST_SCHEDULER_B_NAME ), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP( c, TEST_SCHEDULER_C_NAME ), \ + RTEMS_SCHEDULER_TABLE_EDF_SMP( d, TEST_SCHEDULER_D_NAME ) #if CONFIGURE_MAXIMUM_PROCESSORS == 5 #define CONFIGURE_SCHEDULER_ASSIGNMENTS \ @@ -210,7 +280,48 @@ RTEMS_SCHEDULER_EDF_SMP(c); RTEMS_SCHEDULER_ASSIGN(2, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_OPTIONAL) #endif -#endif /* RTEMS_SMP */ +#elif !defined( CONFIGURE_SCHEDULER_ASSIGNMENTS ) + +#include + +#undef CONFIGURE_MAXIMUM_PROCESSORS +#define CONFIGURE_MAXIMUM_PROCESSORS 1 + +const Scheduler_Operations +T_scheduler_operations[ CONFIGURE_MAXIMUM_PROCESSORS ] = { + SCHEDULER_PRIORITY_ENTRY_POINTS +}; + +#undef SCHEDULER_PRIORITY_ENTRY_POINTS + +#define SCHEDULER_PRIORITY_ENTRY_POINTS T_SCHEDULER_ENTRY_POINTS + +#define CONFIGURE_SCHEDULER_NAME TEST_SCHEDULER_A_NAME + +#define CONFIGURE_SCHEDULER_PRIORITY + +#define CONFIGURE_MAXIMUM_PRIORITY 127 + +#endif + +#define CONFIGURE_IDLE_TASK_STACK_SIZE TEST_IDLE_STACK_SIZE + +static char test_idle_stacks[ CONFIGURE_MAXIMUM_PROCESSORS ][ + ( TEST_IDLE_STACK_SIZE + CPU_IDLE_TASK_IS_FP * CONTEXT_FP_SIZE ) +] +RTEMS_ALIGNED( CPU_INTERRUPT_STACK_ALIGNMENT ) +RTEMS_SECTION( ".rtemsstack.idle" ); + +void *test_idle_task_stack_allocate( uint32_t cpu_index, size_t size ) +{ + if ( size > sizeof( test_idle_stacks[ 0 ] ) ) { + rtems_fatal( RTEMS_FATAL_SOURCE_APPLICATION, 0xABAD1DEA ); + } + + return &test_idle_stacks[ cpu_index ][0]; +} + +#define CONFIGURE_TASK_STACK_ALLOCATOR_FOR_IDLE test_idle_task_stack_allocate #define CONFIGURE_INIT diff --git a/testsuites/validation/ts-idle.h b/testsuites/validation/ts-idle.h new file mode 100644 index 0000000000..071209b5ef --- /dev/null +++ b/testsuites/validation/ts-idle.h @@ -0,0 +1,98 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @brief This header file provides a configurable validation test suite runner + * and application configuration for tests which should run within an idle + * task without a user initialization task. + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include +#include +#include +#include + +#include + +#include "tx-support.h" + +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_INITIAL_EXTENSIONS \ + { .fatal = FatalInitialExtension } + +#define CONFIGURE_IDLE_TASK_INITIALIZES_APPLICATION + +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 diff --git a/testsuites/validation/ts-performance-0.c b/testsuites/validation/ts-performance-0.c deleted file mode 100644 index 1fb15ecfce..0000000000 --- a/testsuites/validation/ts-performance-0.c +++ /dev/null @@ -1,78 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ - -/** - * @file - * - * @ingroup RTEMSTestSuiteTestsuitesPerformance0 - */ - -/* - * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * This file is part of the RTEMS quality process and was automatically - * generated. If you find something that needs to be fixed or - * worded better please post a report or patch to an RTEMS mailing list - * or raise a bug report: - * - * https://www.rtems.org/bugs.html - * - * For information on updating and regenerating please refer to the How-To - * section in the Software Requirements Engineering chapter of the - * RTEMS Software Engineering manual. The manual is provided as a part of - * a release. For development sources please refer to the online - * documentation at: - * - * https://docs.rtems.org - */ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include - -#include - -/** - * @defgroup RTEMSTestSuiteTestsuitesPerformance0 \ - * spec:/testsuites/performance-0 - * - * @ingroup RTEMSTestSuites - * - * @brief This general purpose performance test suite provides enough resources - * to run basic performance tests for all specified managers and functions. - * - * In SMP configurations, up to three scheduler instances using the SMP EDF - * scheduler are provided using up to four processors. - * - * @{ - */ - -const char rtems_test_name[] = "Performance0"; - -#include "ts-default.h" - -/** @} */ diff --git a/testsuites/validation/ts-performance-no-clock-0.c b/testsuites/validation/ts-performance-no-clock-0.c new file mode 100644 index 0000000000..e43b3a6327 --- /dev/null +++ b/testsuites/validation/ts-performance-no-clock-0.c @@ -0,0 +1,82 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesPerformanceNoClock0 + */ + +/* + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesPerformanceNoClock0 \ + * spec:/testsuites/performance-no-clock-0 + * + * @ingroup RTEMSTestSuites + * + * @brief This general purpose performance test suite provides enough resources + * to run basic performance tests for all specified managers and functions. + * + * In SMP configurations, up to three scheduler instances using the SMP EDF + * scheduler are provided using up to four processors. + * + * @{ + */ + +const char rtems_test_name[] = "PerformanceNoClock0"; + +#define CONFIGURE_MAXIMUM_PROCESSORS 4 + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#include "ts-default.h" + +/** @} */ diff --git a/testsuites/validation/ts-validation-1.c b/testsuites/validation/ts-validation-1.c index 11bef51fb7..6f396dc873 100644 --- a/testsuites/validation/ts-validation-1.c +++ b/testsuites/validation/ts-validation-1.c @@ -7,7 +7,7 @@ */ /* - * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * Copyright (C) 2020 embedded brains GmbH (http://www.embedded-brains.de) * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -60,15 +60,17 @@ * @ingroup RTEMSTestSuites * * @brief This general purpose validation test suite provides enough resources - * to run basic tests for all specified managers and functions in a - * configuration with exactly one processor. + * to run basic tests for all specified managers and functions. + * + * In SMP configurations, up to three scheduler instances using the SMP EDF + * scheduler are provided using up to four processors. * * @{ */ const char rtems_test_name[] = "Validation1"; -#define CONFIGURE_MAXIMUM_PROCESSORS 1 +#define CONFIGURE_MAXIMUM_PROCESSORS 5 #include "ts-default.h" diff --git a/testsuites/validation/ts-validation-no-clock-0.c b/testsuites/validation/ts-validation-no-clock-0.c new file mode 100644 index 0000000000..5ff630b6c3 --- /dev/null +++ b/testsuites/validation/ts-validation-no-clock-0.c @@ -0,0 +1,81 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationNoClock0 + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationNoClock0 \ + * spec:/testsuites/validation-no-clock-0 + * + * @ingroup RTEMSTestSuites + * + * @brief This general purpose validation test suite provides enough resources + * to run basic tests without a Clock Driver for all specified managers and + * functions. + * + * In SMP configurations, up to three scheduler instances using the SMP EDF + * scheduler are provided using up to four processors. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationNoClock0"; + +#define CONFIGURE_MAXIMUM_PROCESSORS 5 + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#include "ts-default.h" + +/** @} */ diff --git a/testsuites/validation/ts-validation-non-smp.c b/testsuites/validation/ts-validation-non-smp.c new file mode 100644 index 0000000000..163223f18b --- /dev/null +++ b/testsuites/validation/ts-validation-non-smp.c @@ -0,0 +1,75 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationNonSmp + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationNonSmp \ + * spec:/testsuites/validation-non-smp + * + * @ingroup RTEMSTestSuites + * + * @brief This test suite for non-SMP test cases provides enough resources to + * run basic tests for all specified managers and functions. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationNonSMP"; + +#define CONFIGURE_MAXIMUM_PROCESSORS 1 + +#include "ts-default.h" + +/** @} */ diff --git a/testsuites/validation/ts-validation-one-cpu-0.c b/testsuites/validation/ts-validation-one-cpu-0.c new file mode 100644 index 0000000000..d281b59d01 --- /dev/null +++ b/testsuites/validation/ts-validation-one-cpu-0.c @@ -0,0 +1,80 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationOneCpu0 + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationOneCpu0 \ + * spec:/testsuites/validation-one-cpu-0 + * + * @ingroup RTEMSTestSuites + * + * @brief This general purpose validation test suite provides enough resources + * to run basic tests with exactly one processor and without a Clock Driver. + * + * Two test suites of this configuration are provided to limit test run + * duration. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationOneCpu0"; + +#define CONFIGURE_APPLICATION_DOES_NOT_NEED_CLOCK_DRIVER + +#define CONFIGURE_MAXIMUM_PROCESSORS 1 + +#include "ts-default.h" + +/** @} */ diff --git a/testsuites/validation/ts-validation-smp-only-0.c b/testsuites/validation/ts-validation-smp-only-0.c new file mode 100644 index 0000000000..9907365cd9 --- /dev/null +++ b/testsuites/validation/ts-validation-smp-only-0.c @@ -0,0 +1,78 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationSmpOnly0 + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationSmpOnly0 \ + * spec:/testsuites/validation-smp-only-0 + * + * @ingroup RTEMSTestSuites + * + * @brief This test suite for SMP-only test cases provides enough resources to + * run basic tests for all specified managers and functions. + * + * Up to three scheduler instances using the SMP EDF scheduler are provided + * using up to four processors. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationSMPOnly0"; + +#define CONFIGURE_MAXIMUM_PROCESSORS 5 + +#include "ts-default.h" + +/** @} */ diff --git a/testsuites/validation/ts-validation-smp-only-1.c b/testsuites/validation/ts-validation-smp-only-1.c new file mode 100644 index 0000000000..a1f9eeb413 --- /dev/null +++ b/testsuites/validation/ts-validation-smp-only-1.c @@ -0,0 +1,94 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ + +/** + * @file + * + * @ingroup RTEMSTestSuiteTestsuitesValidationSmpOnly1 + */ + +/* + * Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de) + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +/* + * This file is part of the RTEMS quality process and was automatically + * generated. If you find something that needs to be fixed or + * worded better please post a report or patch to an RTEMS mailing list + * or raise a bug report: + * + * https://www.rtems.org/bugs.html + * + * For information on updating and regenerating please refer to the How-To + * section in the Software Requirements Engineering chapter of the + * RTEMS Software Engineering manual. The manual is provided as a part of + * a release. For development sources please refer to the online + * documentation at: + * + * https://docs.rtems.org + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "ts-config.h" + +#include + +/** + * @defgroup RTEMSTestSuiteTestsuitesValidationSmpOnly1 \ + * spec:/testsuites/validation-smp-only-1 + * + * @ingroup RTEMSTestSuites + * + * @brief This SMP-only test suite validates the clustered scheduler + * configuration through an application configuration with a processor + * maximum of two, however, only the first processor has a scheduler + * assigned. + * + * @{ + */ + +const char rtems_test_name[] = "ValidationSMPOnly1"; + +#define CONFIGURE_MAXIMUM_PROCESSORS 2 + +#include + +#define CONFIGURE_SCHEDULER_EDF_SMP + +#include + +RTEMS_SCHEDULER_EDF_SMP( a ); + +#define CONFIGURE_SCHEDULER_TABLE_ENTRIES \ + RTEMS_SCHEDULER_TABLE_EDF_SMP( a, TEST_SCHEDULER_A_NAME ) + +#define CONFIGURE_SCHEDULER_ASSIGNMENTS \ + RTEMS_SCHEDULER_ASSIGN( 0, RTEMS_SCHEDULER_ASSIGN_PROCESSOR_MANDATORY ), \ + RTEMS_SCHEDULER_ASSIGN_NO_SCHEDULER + +#include "ts-default.h" + +/** @} */ -- cgit v1.2.3