From d962e4e16350563b8c5878b3231c35f308613f1f Mon Sep 17 00:00:00 2001 From: Giovanni Di Sirio Date: Fri, 11 Mar 2016 16:20:58 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9080 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- test/nasa_osal/configuration.xml | 391 +++++++++++++++++++++++- test/nasa_osal/source/test/test_root.c | 2 + test/nasa_osal/source/test/test_root.h | 1 + test/nasa_osal/source/test/test_sequence_004.c | 12 +- test/nasa_osal/source/test/test_sequence_005.c | 403 +++++++++++++++++++++++++ test/nasa_osal/source/test/test_sequence_005.h | 17 ++ test/nasa_osal/test.mk | 3 +- 7 files changed, 820 insertions(+), 9 deletions(-) create mode 100644 test/nasa_osal/source/test/test_sequence_005.c create mode 100644 test/nasa_osal/source/test/test_sequence_005.h diff --git a/test/nasa_osal/configuration.xml b/test/nasa_osal/configuration.xml index 323193671..9cc1b47b0 100644 --- a/test/nasa_osal/configuration.xml +++ b/test/nasa_osal/configuration.xml @@ -1451,7 +1451,7 @@ uint32 bsid;]]> - OS_TimerCreate() and OS_TimerDelete() errors + OS_BinSemCreate() and OS_BinSemDelete() errors Parameters checking in OS_BinSemCreate() and OS_BinSemDelete() is tested. @@ -1557,7 +1557,7 @@ test_assert(err == OS_ERR_INVALID_ID, "wrong semaphore id not detected");]]> - OS_TimerCreate() is invoked twice with duplicated name, an error is expected, then the queue is deleted using OS_TimerDelete(). + OS_BinSemCreate() is invoked twice with duplicated name, an error is expected, then the queue is deleted using OS_BinSemDelete(). @@ -1851,6 +1851,393 @@ test_assert(err == OS_ERR_NAME_TOO_LONG, "name limit not detected");]]> + + + + + + + + + Internal Tests + + + Counter Semaphores Functionality + + + This sequence tests the NASA OSAL over ChibiOS/RT functionalities related to counter semaphores. + + + + + + + + OS_CountSemCreate() and OS_CountSemDelete() errors + + + Parameters checking in OS_CountSemCreate() and OS_CountSemDelete() is tested. + + + + + + + + + + + + + + + + + + + OS_CountSemCreate() is invoked with sem_id set to NULL, an error is expected. + + + + + + + + + + + OS_CountSemCreate() is invoked with sem_name set to NULL, an error is expected. + + + + + + + + + + + OS_CountSemCreate() is invoked with an invalid sem_initial_value, an error is expected. + + + + + + + + + + + OS_CountSemCreate() is invoked with a very long timer name, an error is expected. + + + + + + + + + + + OS_CountSemDelete() is invoked with timer_id set to -1, an error is expected. + + + + + + + + + + + OS_CountSemCreate() is invoked twice with duplicated name, an error is expected, then the queue is deleted using OS_CountSemDelete(). + + + + + + + + + + + + + OS_CountSemGive() errors + + + Parameters checking in OS_CountSemGive() is tested. + + + + + + + + + + + + + + + + + + + OS_CountSemGive() is invoked with sem_id set to -1, an error is expected. + + + + + + + + + + + + + OS_CountSemTake() errors + + + Parameters checking in OS_CountSemTake() is tested. + + + + + + + + + + + + + + + + + + + OS_BinSemTake() is invoked with sem_id set to -1, an error is expected. + + + + + + + + + + + + + OS_CountSemTimedWait() errors + + + Parameters checking in OS_CountSemTimedWait() is tested. + + + + + + + + + + 0) { + (void) OS_CountSemDelete(csid); +}]]> + + + + + + + + + OS_CountSemTimedWait() is invoked with sem_id set to -1, an error is expected. + + + + + + + + + + + OS_CountSemTimedWait() is invoked with msecs set to 0, an error is expected. + + + + + + + + + + + + + OS_CountSemGetIdByName() errors + + + Parameters checking in OS_BinSemGetIdByName() is tested. + + + + + + + + + + + + + + + + + + + OS_CountSemGetIdByName() is invoked with sem_id set to NULL, an error is expected. + + + + + + + + + + + OS_CountSemGetIdByName() is invoked with semaphore name set to NULL, an error is expected. + + + + + + + + + + + OS_CountSemGetIdByName() is invoked with a very long task name, an error is expected. + + + + + + + + + + + + + OS_CountSemTimedWait() timeout functionality + + + OS_CountSemCreate() timeout functionality is tested. + + + + + + + + + + 0) { + (void) OS_CountSemDelete(csid); +}]]> + + + + + + + + + OS_CountSemTimedWait() is invoked with timeout set to one second, an error is expected. + + + + + + diff --git a/test/nasa_osal/source/test/test_root.c b/test/nasa_osal/source/test/test_root.c index a14b0e244..35419fa35 100644 --- a/test/nasa_osal/source/test/test_root.c +++ b/test/nasa_osal/source/test/test_root.c @@ -25,6 +25,7 @@ * - @subpage test_sequence_002 * - @subpage test_sequence_003 * - @subpage test_sequence_004 + * - @subpage test_sequence_005 * . */ @@ -52,6 +53,7 @@ const testcase_t * const *test_suite[] = { test_sequence_002, test_sequence_003, test_sequence_004, + test_sequence_005, NULL }; diff --git a/test/nasa_osal/source/test/test_root.h b/test/nasa_osal/source/test/test_root.h index d509debfa..3ce44595f 100644 --- a/test/nasa_osal/source/test/test_root.h +++ b/test/nasa_osal/source/test/test_root.h @@ -29,6 +29,7 @@ #include "test_sequence_002.h" #include "test_sequence_003.h" #include "test_sequence_004.h" +#include "test_sequence_005.h" /*===========================================================================*/ /* External declarations. */ diff --git a/test/nasa_osal/source/test/test_sequence_004.c b/test/nasa_osal/source/test/test_sequence_004.c index 3f99bafad..908a0861b 100644 --- a/test/nasa_osal/source/test/test_sequence_004.c +++ b/test/nasa_osal/source/test/test_sequence_004.c @@ -51,7 +51,7 @@ uint32 bsid; ****************************************************************************/ /** - * @page test_004_001 OS_TimerCreate() and OS_TimerDelete() errors + * @page test_004_001 OS_BinSemCreate() and OS_BinSemDelete() errors * *

Description

* Parameters checking in OS_BinSemCreate() and OS_BinSemDelete() is @@ -68,8 +68,8 @@ uint32 bsid; * is expected. * - OS_BinSemDelete() is invoked with timer_id set to -1, an error is * expected. - * - OS_TimerCreate() is invoked twice with duplicated name, an error - * is expected, then the queue is deleted using OS_TimerDelete(). + * - OS_BinSemCreate() is invoked twice with duplicated name, an error + * is expected, then the queue is deleted using OS_BinSemDelete(). * . */ @@ -139,8 +139,8 @@ static void test_004_001_execute(void) { test_assert(err == OS_ERR_INVALID_ID, "wrong semaphore id not detected"); } - /* OS_TimerCreate() is invoked twice with duplicated name, an error - is expected, then the queue is deleted using OS_TimerDelete().*/ + /* OS_BinSemCreate() is invoked twice with duplicated name, an error + is expected, then the queue is deleted using OS_BinSemDelete().*/ test_set_step(6); { int32 err; @@ -160,7 +160,7 @@ static void test_004_001_execute(void) { } static const testcase_t test_004_001 = { - "OS_TimerCreate() and OS_TimerDelete() errors", + "OS_BinSemCreate() and OS_BinSemDelete() errors", NULL, NULL, test_004_001_execute diff --git a/test/nasa_osal/source/test/test_sequence_005.c b/test/nasa_osal/source/test/test_sequence_005.c new file mode 100644 index 000000000..6663cda81 --- /dev/null +++ b/test/nasa_osal/source/test/test_sequence_005.c @@ -0,0 +1,403 @@ +/* + 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_005 Counter Semaphores Functionality + * + * File: @ref test_sequence_005.c + * + *

Description

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

Test Cases

+ * - @subpage test_005_001 + * - @subpage test_005_002 + * - @subpage test_005_003 + * - @subpage test_005_004 + * - @subpage test_005_005 + * - @subpage test_005_006 + * . + */ + +/**************************************************************************** + * Shared code. + ****************************************************************************/ + +#include "osapi.h" + +uint32 csid; + +/**************************************************************************** + * Test cases. + ****************************************************************************/ + +/** + * @page test_005_001 OS_CountSemCreate() and OS_CountSemDelete() errors + * + *

Description

+ * Parameters checking in OS_CountSemCreate() and OS_CountSemDelete() + * is tested. + * + *

Test Steps

+ * - OS_CountSemCreate() is invoked with sem_id set to NULL, an error + * is expected. + * - OS_CountSemCreate() is invoked with sem_name set to NULL, an error + * is expected. + * - OS_CountSemCreate() is invoked with an invalid sem_initial_value, + * an error is expected. + * - OS_CountSemCreate() is invoked with a very long timer name, an + * error is expected. + * - OS_CountSemDelete() is invoked with timer_id set to -1, an error + * is expected. + * - OS_CountSemCreate() is invoked twice with duplicated name, an + * error is expected, then the queue is deleted using + * OS_CountSemDelete(). + * . + */ + +static void test_005_001_execute(void) { + + /* OS_CountSemCreate() is invoked with sem_id set to NULL, an error + is expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_CountSemCreate(NULL, /* Error.*/ + "failing semaphore", + 0, + 0); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + } + + /* OS_CountSemCreate() is invoked with sem_name set to NULL, an error + is expected.*/ + test_set_step(2); + { + int32 err; + + err = OS_CountSemCreate(&csid, + NULL, /* Error.*/ + 0, + 0); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + } + + /* OS_CountSemCreate() is invoked with an invalid sem_initial_value, + an error is expected.*/ + test_set_step(3); + { + int32 err; + + err = OS_CountSemCreate(&csid, + "failing semaphore", + (uint32)-1, /* Error.*/ + 0); + test_assert(err == OS_INVALID_INT_NUM, "counter error not detected"); + } + + /* OS_CountSemCreate() is invoked with a very long timer name, an + error is expected.*/ + test_set_step(4); + { + #if 0 /* Semaphore name currently not implemented.*/ + int32 err; + + err = OS_CountSemCreate(&csid, + "very very long semaphore name",/* Error.*/ + 0, + 0); + test_assert(err == OS_ERR_NAME_TOO_LONG, "name limit not detected"); + #endif + } + + /* OS_CountSemDelete() is invoked with timer_id set to -1, an error + is expected.*/ + test_set_step(5); + { + int32 err; + + err = OS_CountSemDelete((uint32)-1); + test_assert(err == OS_ERR_INVALID_ID, "wrong semaphore id not detected"); + } + + /* OS_CountSemCreate() is invoked twice with duplicated name, an + error is expected, then the queue is deleted using + OS_CountSemDelete().*/ + test_set_step(6); + { + int32 err; + uint32 csid1; /*, csid2;*/ + + err = OS_CountSemCreate(&csid1, "my semaphore", 0, 0); + test_assert(err == OS_SUCCESS, "semaphore creation failed"); + + #if 0 /* Semaphore name currently not implemented.*/ + err = OS_CountSemCreate(&csid2, "my semaphore", 0, 0); + test_assert(err == OS_ERR_NAME_TAKEN, "name conflict not detected"); + #endif + + err = OS_CountSemDelete(csid1); + test_assert(err == OS_SUCCESS, "semaphore deletion failed"); + } +} + +static const testcase_t test_005_001 = { + "OS_CountSemCreate() and OS_CountSemDelete() errors", + NULL, + NULL, + test_005_001_execute +}; + +/** + * @page test_005_002 OS_CountSemGive() errors + * + *

Description

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

Test Steps

+ * - OS_CountSemGive() is invoked with sem_id set to -1, an error is + * expected. + * . + */ + +static void test_005_002_execute(void) { + + /* OS_CountSemGive() is invoked with sem_id set to -1, an error is + expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_CountSemGive((uint32)-1); + test_assert(err == OS_ERR_INVALID_ID, "invalid sem_id not detected"); + } +} + +static const testcase_t test_005_002 = { + "OS_CountSemGive() errors", + NULL, + NULL, + test_005_002_execute +}; + +/** + * @page test_005_003 OS_CountSemTake() errors + * + *

Description

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

Test Steps

+ * - OS_BinSemTake() is invoked with sem_id set to -1, an error is + * expected. + * . + */ + +static void test_005_003_execute(void) { + + /* OS_BinSemTake() is invoked with sem_id set to -1, an error is + expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_BinSemTake((uint32)-1); + test_assert(err == OS_ERR_INVALID_ID, "invalid sem_id not detected"); + } +} + +static const testcase_t test_005_003 = { + "OS_CountSemTake() errors", + NULL, + NULL, + test_005_003_execute +}; + +/** + * @page test_005_004 OS_CountSemTimedWait() errors + * + *

Description

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

Test Steps

+ * - OS_CountSemTimedWait() is invoked with sem_id set to -1, an error + * is expected. + * - OS_CountSemTimedWait() is invoked with msecs set to 0, an error is + * expected. + * . + */ + +static void test_005_004_setup(void) { + csid = 0; + (void) OS_CountSemCreate(&csid, "test semaphore", 0, 0); +} + +static void test_005_004_teardown(void) { + if (csid > 0) { + (void) OS_CountSemDelete(csid); + } +} + +static void test_005_004_execute(void) { + + /* OS_CountSemTimedWait() is invoked with sem_id set to -1, an error + is expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_CountSemTimedWait((uint32)-1, 1000); + test_assert(err == OS_ERR_INVALID_ID, "invalid sem_id not detected"); + } + + /* OS_CountSemTimedWait() is invoked with msecs set to 0, an error is + expected.*/ + test_set_step(2); + { + int32 err; + + err = OS_CountSemTimedWait(csid, 0); + test_assert(err == OS_INVALID_INT_NUM, "invalid msec not detected"); + } +} + +static const testcase_t test_005_004 = { + "OS_CountSemTimedWait() errors", + test_005_004_setup, + test_005_004_teardown, + test_005_004_execute +}; + +/** + * @page test_005_005 OS_CountSemGetIdByName() errors + * + *

Description

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

Test Steps

+ * - OS_CountSemGetIdByName() is invoked with sem_id set to NULL, an + * error is expected. + * - OS_CountSemGetIdByName() is invoked with semaphore name set to + * NULL, an error is expected. + * - OS_CountSemGetIdByName() is invoked with a very long task name, an + * error is expected. + * . + */ + +static void test_005_005_execute(void) { + + /* OS_CountSemGetIdByName() is invoked with sem_id set to NULL, an + error is expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_CountSemGetIdByName(NULL, "semaphore"); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + } + + /* OS_CountSemGetIdByName() is invoked with semaphore name set to + NULL, an error is expected.*/ + test_set_step(2); + { + int32 err; + + err = OS_CountSemGetIdByName(&csid, NULL); + test_assert(err == OS_INVALID_POINTER, "NULL not detected"); + } + + /* OS_CountSemGetIdByName() is invoked with a very long task name, an + error is expected.*/ + test_set_step(3); + { + int32 err; + + err = OS_CountSemGetIdByName(&csid, "very very long semaphore name"); + test_assert(err == OS_ERR_NAME_TOO_LONG, "name limit not detected"); + } +} + +static const testcase_t test_005_005 = { + "OS_CountSemGetIdByName() errors", + NULL, + NULL, + test_005_005_execute +}; + +/** + * @page test_005_006 OS_CountSemTimedWait() timeout functionality + * + *

Description

+ * OS_CountSemCreate() timeout functionality is tested. + * + *

Test Steps

+ * - OS_CountSemTimedWait() is invoked with timeout set to one second, + * an error is expected. + * . + */ + +static void test_005_006_setup(void) { + csid = 0; + (void) OS_CountSemCreate(&csid, "test semaphore", 0, 0); +} + +static void test_005_006_teardown(void) { + if (csid > 0) { + (void) OS_CountSemDelete(csid); + } +} + +static void test_005_006_execute(void) { + + /* OS_CountSemTimedWait() is invoked with timeout set to one second, + an error is expected.*/ + test_set_step(1); + { + int32 err; + + err = OS_CountSemTimedWait(csid, 1000); + test_assert(err == OS_SEM_TIMEOUT, "unexpected error code"); + } +} + +static const testcase_t test_005_006 = { + "OS_CountSemTimedWait() timeout functionality", + test_005_006_setup, + test_005_006_teardown, + test_005_006_execute +}; + +/**************************************************************************** + * Exported data. + ****************************************************************************/ + +/** + * @brief Counter Semaphores Functionality. + */ +const testcase_t * const test_sequence_005[] = { + &test_005_001, + &test_005_002, + &test_005_003, + &test_005_004, + &test_005_005, + &test_005_006, + NULL +}; diff --git a/test/nasa_osal/source/test/test_sequence_005.h b/test/nasa_osal/source/test/test_sequence_005.h new file mode 100644 index 000000000..4cb8e1db0 --- /dev/null +++ b/test/nasa_osal/source/test/test_sequence_005.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_005[]; diff --git a/test/nasa_osal/test.mk b/test/nasa_osal/test.mk index 2aa0e3f26..6597edc88 100644 --- a/test/nasa_osal/test.mk +++ b/test/nasa_osal/test.mk @@ -4,7 +4,8 @@ TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \ ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_001.c \ ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_002.c \ ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_003.c \ - ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_004.c + ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_004.c \ + ${CHIBIOS}/test/nasa_osal/source/test/test_sequence_005.c # Required include directories TESTINC = ${CHIBIOS}/test/lib \ -- cgit v1.2.3