From fcbab787e69a4dec8285df9dbdc83bc876d0b141 Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Sun, 6 Mar 2016 11:59:44 +0000 Subject: Test Generator prototype. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9035 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- test/nasa_osal/.cproject | 57 +++++ test/nasa_osal/.project | 32 +++ test/nasa_osal/.spc5project | 4 + test/nasa_osal/configuration.xml | 296 +++++++++++++++++++++++++ test/nasa_osal/patch.xml | 5 + test/nasa_osal/source/test/test_root.c | 59 +++++ test/nasa_osal/source/test/test_root.h | 59 +++++ test/nasa_osal/source/test/test_sequence_001.c | 276 +++++++++++++++++++++++ test/nasa_osal/source/test/test_sequence_001.h | 17 ++ test/nasa_osal/test.mk | 6 +- test/nasa_osal/test_root.c | 50 ----- test/nasa_osal/test_root.h | 68 ------ 12 files changed, 808 insertions(+), 121 deletions(-) create mode 100644 test/nasa_osal/.cproject create mode 100644 test/nasa_osal/.project create mode 100644 test/nasa_osal/.spc5project create mode 100644 test/nasa_osal/configuration.xml create mode 100644 test/nasa_osal/patch.xml create mode 100644 test/nasa_osal/source/test/test_root.c create mode 100644 test/nasa_osal/source/test/test_root.h create mode 100644 test/nasa_osal/source/test/test_sequence_001.c create mode 100644 test/nasa_osal/source/test/test_sequence_001.h delete mode 100644 test/nasa_osal/test_root.c delete mode 100644 test/nasa_osal/test_root.h diff --git a/test/nasa_osal/.cproject b/test/nasa_osal/.cproject new file mode 100644 index 000000000..1f35e2ebb --- /dev/null +++ b/test/nasa_osal/.cproject @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/nasa_osal/.project b/test/nasa_osal/.project new file mode 100644 index 000000000..0247cf4b7 --- /dev/null +++ b/test/nasa_osal/.project @@ -0,0 +1,32 @@ + + + NASA OSAL Tests Generator + + + + + + org.eclipse.cdt.managedbuilder.core.genmakebuilder + clean,full,incremental, + + + + + org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder + full,incremental, + + + + + com.st.tools.spc5.spc5StudioPatchBuilder + + + + + + org.eclipse.cdt.core.cnature + org.eclipse.cdt.managedbuilder.core.managedBuildNature + org.eclipse.cdt.managedbuilder.core.ScannerConfigNature + com.st.tools.spc5.spc5StudioNature + + diff --git a/test/nasa_osal/.spc5project b/test/nasa_osal/.spc5project new file mode 100644 index 000000000..104c5aa76 --- /dev/null +++ b/test/nasa_osal/.spc5project @@ -0,0 +1,4 @@ + + + + diff --git a/test/nasa_osal/configuration.xml b/test/nasa_osal/configuration.xml new file mode 100644 index 000000000..4f89b0e1b --- /dev/null +++ b/test/nasa_osal/configuration.xml @@ -0,0 +1,296 @@ + + + + Test specification for the NASA OSAL ChibiOS extension. + + + + + + + + + This document has been automatically generated. + + + + + + + + + + + + + + Internal Tests + + + Threads Functionality + + + This sequence tests the NASA OSAL over ChibiOS/RT functionalities related to threading. + + + + + + + + OS_TaskCreate() errors + + + Parameters checking in OS_TaskCreate() is tested. + + + + + + + + + + + + + + + + + + + OS_TaskCreate() is invoked with task_id set to NULL, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked with task_name set to NULL, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked with stack_pointer set to NULL, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked with a very long task name, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked with priority below and above allowed range, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked with a stack size below minimum, an error is expected. + + + + + + + + + + + OS_TaskCreate() is invoked twice with duplicated name and then duplicated stack, an error is expected in both cases. + + + + + + + + + + + + + + + + + + diff --git a/test/nasa_osal/patch.xml b/test/nasa_osal/patch.xml new file mode 100644 index 000000000..879b2ed23 --- /dev/null +++ b/test/nasa_osal/patch.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/test/nasa_osal/source/test/test_root.c b/test/nasa_osal/source/test/test_root.c new file mode 100644 index 000000000..5c5ef9316 --- /dev/null +++ b/test/nasa_osal/source/test/test_root.c @@ -0,0 +1,59 @@ +/* + ChibiOS - Copyright (C) 2006..2016 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @mainpage Test Suite Specification + * This document has been automatically generated. + * + *

Test Sequences

+ * - @subpage test_sequence_001 + * . + */ + +/** + * @file test_root.c + * @brief Test Suite root structures code. + * + * @addtogroup SPC5_TEST_ROOT + * @{ + */ + +#include "hal.h" +#include "ch_test.h" +#include "test_root.h" + +/*===========================================================================*/ +/* Module exported variables. */ +/*===========================================================================*/ + +/** + * @brief Array of all the test sequences. + */ +const testcase_t * const *test_suite[] = { + test_sequence_001, + NULL +}; + +/*===========================================================================*/ +/* Shared code. */ +/*===========================================================================*/ + +THD_WORKING_AREA(wa_test1, TASKS_STACK_SIZE); +THD_WORKING_AREA(wa_test2, TASKS_STACK_SIZE); +THD_WORKING_AREA(wa_test3, TASKS_STACK_SIZE); +THD_WORKING_AREA(wa_test4, TASKS_STACK_SIZE); + +/** @} */ diff --git a/test/nasa_osal/source/test/test_root.h b/test/nasa_osal/source/test/test_root.h new file mode 100644 index 000000000..53efafa5a --- /dev/null +++ b/test/nasa_osal/source/test/test_root.h @@ -0,0 +1,59 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +/** + * @file test_root.h + * @brief Test Suite root structures header. + * + * @addtogroup SPC5_TEST_ROOT + * @{ + */ + +#ifndef _SPC5_TEST_ROOT_H_ +#define _SPC5_TEST_ROOT_H_ + +#include "test_sequence_001.h" + +/*===========================================================================*/ +/* External declarations. */ +/*===========================================================================*/ + +extern const testcase_t * const *test_suite[]; + +#ifdef __cplusplus +extern "C" { +#endif +#ifdef __cplusplus +} +#endif + +/*===========================================================================*/ +/* Shared definitions. */ +/*===========================================================================*/ + +#define TEST_SUITE_NAME "NASA OSAL over ChibiOS/RT Test Suite" + +#define TASKS_BASE_PRIORITY 200 +#define TASKS_STACK_SIZE 256 + +extern THD_WORKING_AREA(wa_test1, TASKS_STACK_SIZE); +extern THD_WORKING_AREA(wa_test2, TASKS_STACK_SIZE); +extern THD_WORKING_AREA(wa_test3, TASKS_STACK_SIZE); +extern THD_WORKING_AREA(wa_test4, TASKS_STACK_SIZE); + +#endif /* _SPC5_TEST_ROOT_H_ */ + +/** @} */ diff --git a/test/nasa_osal/source/test/test_sequence_001.c b/test/nasa_osal/source/test/test_sequence_001.c new file mode 100644 index 000000000..871a07f83 --- /dev/null +++ b/test/nasa_osal/source/test/test_sequence_001.c @@ -0,0 +1,276 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +#include "hal.h" +#include "ch_test.h" +#include "test_root.h" + +/** + * @page test_sequence_001 Threads Functionality + * + * File: @ref test_sequence_001.c + * + *

Description

+ * This sequence tests the NASA OSAL over ChibiOS/RT functionalities + * related to threading. + * + *

Test Cases

+ * - @subpage test_001_001 + * . + */ + +/**************************************************************************** + * Shared code. + ****************************************************************************/ + +#include "osapi.H" + +static void test_thread1(void) { + + test_emit_token('A'); +} + +static void test_thread2(void) { + + test_emit_token('B'); +} + +static void test_thread3(void) { + + test_emit_token('C'); +} + +static void test_thread4(void) { + + test_emit_token('D'); +} + +/**************************************************************************** + * Test cases. + ****************************************************************************/ + +/** + * @page test_001_001 OS_TaskCreate() errors + * + *

Description

+ * Parameters checking in OS_TaskCreate() is tested. + * + *

Test Steps

+ * - OS_TaskCreate() is invoked with task_id set to NULL, an error is + * expected. + * - OS_TaskCreate() is invoked with task_name set to NULL, an error is + * expected. + * - OS_TaskCreate() is invoked with stack_pointer set to NULL, an + * error is expected. + * - OS_TaskCreate() is invoked with a very long task name, an error is + * expected. + * - OS_TaskCreate() is invoked with priority below and above allowed + * range, an error is expected. + * - OS_TaskCreate() is invoked with a stack size below minimum, an + * error is expected. + * - OS_TaskCreate() is invoked twice with duplicated name and then + * duplicated stack, an error is expected in both cases. + * . + */ + +static void test_001_001_execute(void) { + + /* OS_TaskCreate() is invoked with task_id set to NULL, an error is + expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_TaskCreate(NULL, /* Error.*/ + "failing thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked with task_name set to NULL, an error is + expected.*/ + test_set_step(2); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + NULL, /* Error.*/ + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked with stack_pointer set to NULL, an + error is expected.*/ + test_set_step(3); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + "failing thread", + test_thread1, + (uint32 *)NULL, /* Error.*/ + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked with a very long task name, an error is + expected.*/ + test_set_step(4); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + "this is a very very long task name", /* Error.*/ + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_ERR_NAME_TOO_LONG, "name limit not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked with priority below and above allowed + range, an error is expected.*/ + test_set_step(5); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + "failing thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + 0, /* Error.*/ + 0); + test_assert(err == OS_ERR_INVALID_PRIORITY, "priority error not detected"); + test_assert_sequence("", "task executed"); + + err = OS_TaskCreate(&tid, + "failing thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + 256, /* Error.*/ + 0); + test_assert(err == OS_ERR_INVALID_PRIORITY, "priority error not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked with a stack size below minimum, an + error is expected.*/ + test_set_step(6); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + "failing thread", + test_thread1, + (uint32 *)wa_test1, + 16, /* Error.*/ + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_INVALID_INT_NUM, "stack insufficient size not detected"); + test_assert_sequence("", "task executed"); + } + + /* OS_TaskCreate() is invoked twice with duplicated name and then + duplicated stack, an error is expected in both cases.*/ + test_set_step(7); + { + int32 err; + uint32 tid; + + err = OS_TaskCreate(&tid, + "running thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_SUCCESS, "task creation failed"); + + err = OS_TaskCreate(&tid, + "running thread", + test_thread2, + (uint32 *)wa_test2, + sizeof wa_test2, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_ERR_NAME_TAKEN, "name conflict not detected"); + + err = OS_TaskCreate(&tid, + "another running thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_ERR_NO_FREE_IDS, "stack conflict not detected"); + + OS_TaskDelay(5); + test_assert_sequence("A", "task not executed"); + + err = OS_TaskCreate(&tid, + "running thread", + test_thread1, + (uint32 *)wa_test1, + sizeof wa_test1, + TASKS_BASE_PRIORITY, + 0); + test_assert(err == OS_SUCCESS, "task creation failed"); + + OS_TaskDelay(5); + test_assert_sequence("A", "task not executed"); + } +} + +static const testcase_t test_001_001 = { + "OS_TaskCreate() errors", + NULL, + NULL, + test_001_001_execute +}; + +/**************************************************************************** + * Exported data. + ****************************************************************************/ + +/** + * @brief Threads Functionality. + */ +const testcase_t * const test_sequence_001[] = { + &test_001_001, + NULL +}; diff --git a/test/nasa_osal/source/test/test_sequence_001.h b/test/nasa_osal/source/test/test_sequence_001.h new file mode 100644 index 000000000..83ef96518 --- /dev/null +++ b/test/nasa_osal/source/test/test_sequence_001.h @@ -0,0 +1,17 @@ +/* + ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ + +extern const testcase_t * const test_sequence_001[]; diff --git a/test/nasa_osal/test.mk b/test/nasa_osal/test.mk index dcaa7197f..daf008362 100644 --- a/test/nasa_osal/test.mk +++ b/test/nasa_osal/test.mk @@ -1,8 +1,8 @@ # List of all the NASA OSAL over ChibiOS/RT test files. TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \ - ${CHIBIOS}/test/nasa_osal/test_root.c \ - ${CHIBIOS}/test/nasa_osal/test_sequence_001.c + ${CHIBIOS}/test/nasa_osal/source/test/test_root.c \ + ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_001.c # Required include directories TESTINC = ${CHIBIOS}/test/lib \ - ${CHIBIOS}/test/nasa_osal + ${CHIBIOS}/test/nasa_osal/source/test/ diff --git a/test/nasa_osal/test_root.c b/test/nasa_osal/test_root.c deleted file mode 100644 index e6a803c40..000000000 --- a/test/nasa_osal/test_root.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file test_root.c - * @brief Test Suite root structures code. - * - * @addtogroup CH_TEST_ROOT - * @{ - */ - -#include "hal.h" -#include "ch_test.h" -#include "osapi.h" - -/*===========================================================================*/ -/* Module exported variables. */ -/*===========================================================================*/ - -THD_WORKING_AREA(wa_test1, TASKS_STACK_SIZE); -THD_WORKING_AREA(wa_test2, TASKS_STACK_SIZE); -THD_WORKING_AREA(wa_test3, TASKS_STACK_SIZE); -THD_WORKING_AREA(wa_test4, TASKS_STACK_SIZE); - -/** - * @brief Array of all the test sequences. - */ -const testcase_t * const *test_suite[] = { - test_sequence_001, - NULL -}; - -/*===========================================================================*/ -/* Shared code. */ -/*===========================================================================*/ - -/** @} */ diff --git a/test/nasa_osal/test_root.h b/test/nasa_osal/test_root.h deleted file mode 100644 index a30317d22..000000000 --- a/test/nasa_osal/test_root.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -*/ - -/** - * @file test_root.h - * @brief Test Suite root structures header. - * - * @addtogroup CH_TEST_ROOT - * @{ - */ - -#ifndef _TEST_ROOT_H_ -#define _TEST_ROOT_H_ - -#include "ch.h" - -#include "test_sequence_001.h" - -/*===========================================================================*/ -/* Default definitions. */ -/*===========================================================================*/ - -/* Global test suite name, it is printed on top of the test - report header.*/ -#define TEST_SUITE_NAME "NASA OSAL over ChibiOS/RT Test Suite" - -#define TASKS_BASE_PRIORITY 200 -#define TASKS_STACK_SIZE 256 - -/*===========================================================================*/ -/* External declarations. */ -/*===========================================================================*/ - -extern const testcase_t * const *test_suite[]; - -extern THD_WORKING_AREA(wa_test1, TASKS_STACK_SIZE); -extern THD_WORKING_AREA(wa_test2, TASKS_STACK_SIZE); -extern THD_WORKING_AREA(wa_test3, TASKS_STACK_SIZE); -extern THD_WORKING_AREA(wa_test4, TASKS_STACK_SIZE); - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef __cplusplus -} -#endif - -/*===========================================================================*/ -/* Shared definitions. */ -/*===========================================================================*/ - -#endif /* _TEST_ROOT_H_ */ - -/** @} */ -- cgit v1.2.3