Test Generator prototype.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9035 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Giovanni Di Sirio 2016-03-06 11:59:44 +00:00
parent ab30e97aea
commit fcbab787e6
10 changed files with 721 additions and 34 deletions

57
test/nasa_osal/.cproject Normal file
View File

@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="com.st.tools.spc5.configuration.default">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.st.tools.spc5.configuration.default" moduleId="org.eclipse.cdt.core.settings" name="Default">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.st.tools.spc5.configuration.default" name="Default" parent="org.eclipse.cdt.build.core.prefbase.cfg">
<folderInfo id="com.st.tools.spc5.configuration.default." name="/" resourcePath="">
<toolChain id="org.eclipse.cdt.build.core.prefbase.toolchain.1601604545" name="No ToolChain" resourceTypeBasedDiscovery="false" superClass="org.eclipse.cdt.build.core.prefbase.toolchain">
<targetPlatform id="org.eclipse.cdt.build.core.prefbase.toolchain.1601604545.979430051" name=""/>
<builder id="org.eclipse.cdt.build.core.settings.default.builder.1252703125" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" superClass="org.eclipse.cdt.build.core.settings.default.builder">
<outputEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name=""/>
</outputEntries>
</builder>
<tool id="org.eclipse.cdt.build.core.settings.holder.libs.758143064" name="holder for library settings" superClass="org.eclipse.cdt.build.core.settings.holder.libs"/>
<tool id="org.eclipse.cdt.build.core.settings.holder.466800556" name="Assembly" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.276542087" languageId="org.eclipse.cdt.core.assembly" languageName="Assembly" sourceContentType="org.eclipse.cdt.core.asmSource" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1590093401" name="GNU C++" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1021209563" languageId="org.eclipse.cdt.core.g++" languageName="GNU C++" sourceContentType="org.eclipse.cdt.core.cxxSource,org.eclipse.cdt.core.cxxHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
<tool id="org.eclipse.cdt.build.core.settings.holder.1880457386" name="GNU C" superClass="org.eclipse.cdt.build.core.settings.holder">
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.1710576459" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
</tool>
</toolChain>
</folderInfo>
<sourceEntries>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="components"/>
<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="source"/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="NASA OSAL Tests Generator.null.1740439042" name="NASA OSAL Tests Generator"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="com.st.tools.spc5.configuration.default">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
</cproject>

32
test/nasa_osal/.project Normal file
View File

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>NASA OSAL Tests Generator</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.st.tools.spc5.spc5StudioPatchBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>com.st.tools.spc5.spc5StudioNature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPC5StudioProject>
<Properties />
</SPC5StudioProject>

View File

@ -0,0 +1,296 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPC5-Config version="1.0.0">
<application name="Test Suite" version="1.0.0" standalone="true" locked="false">
<description>Test specification for the NASA OSAL ChibiOS extension.</description>
<component id="org.chibios.spc5.components.platform.generic">
<component id="org.chibios.spc5.components.chibios_unitary_tests_engine" />
</component>
<instances>
<instance locked="false" id="org.chibios.spc5.components.platform.generic" />
<instance locked="false" id="org.chibios.spc5.components.chibios_unitary_tests_engine">
<description>
<introduction>
<value>This document has been automatically generated.</value>
</introduction>
</description>
<global_data_and_code>
<global_definitions>
<value><![CDATA[#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);]]></value>
</global_definitions>
<global_code>
<value><![CDATA[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);]]></value>
</global_code>
</global_data_and_code>
<sequences>
<sequence>
<type index="0">
<value>Internal Tests</value>
</type>
<brief>
<value>Threads Functionality</value>
</brief>
<description>
<value>This sequence tests the NASA OSAL over ChibiOS/RT functionalities related to threading.</value>
</description>
<shared_code>
<value><![CDATA[#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');
}]]></value>
</shared_code>
<cases>
<case>
<brief>
<value>OS_TaskCreate() errors</value>
</brief>
<description>
<value>Parameters checking in OS_TaskCreate() is tested.</value>
</description>
<condition>
<value />
</condition>
<various_code>
<setup_code>
<value />
</setup_code>
<teardown_code>
<value />
</teardown_code>
<local_variables>
<value />
</local_variables>
</various_code>
<steps>
<step>
<description>
<value>OS_TaskCreate() is invoked with task_id set to NULL, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked with task_name set to NULL, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked with stack_pointer set to NULL, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked with a very long task name, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked with priority below and above allowed range, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked with a stack size below minimum, an error is expected.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
<step>
<description>
<value>OS_TaskCreate() is invoked twice with duplicated name and then duplicated stack, an error is expected in both cases.</value>
</description>
<tags>
<value />
</tags>
<code>
<value><![CDATA[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");]]></value>
</code>
</step>
</steps>
</case>
</cases>
</sequence>
</sequences>
</instance>
</instances>
<exportedFeatures />
</application>
</SPC5-Config>

5
test/nasa_osal/patch.xml Normal file
View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<SPC5-Patch version="1.0.0">
<!--It is your patch repository, do not break your XML File.-->
<files />
</SPC5-Patch>

View File

@ -1,5 +1,5 @@
/*
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
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.
@ -14,27 +14,31 @@
limitations under the License.
*/
/**
* @mainpage Test Suite Specification
* This document has been automatically generated.
*
* <h2>Test Sequences</h2>
* - @subpage test_sequence_001
* .
*/
/**
* @file test_root.c
* @brief Test Suite root structures code.
*
* @addtogroup CH_TEST_ROOT
* @addtogroup SPC5_TEST_ROOT
* @{
*/
#include "hal.h"
#include "ch_test.h"
#include "osapi.h"
#include "test_root.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.
*/
@ -47,4 +51,9 @@ const testcase_t * const *test_suite[] = {
/* 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);
/** @} */

View File

@ -18,43 +18,24 @@
* @file test_root.h
* @brief Test Suite root structures header.
*
* @addtogroup CH_TEST_ROOT
* @addtogroup SPC5_TEST_ROOT
* @{
*/
#ifndef _TEST_ROOT_H_
#define _TEST_ROOT_H_
#include "ch.h"
#ifndef _SPC5_TEST_ROOT_H_
#define _SPC5_TEST_ROOT_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
@ -63,6 +44,16 @@ extern "C" {
/* Shared definitions. */
/*===========================================================================*/
#endif /* _TEST_ROOT_H_ */
#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_ */
/** @} */

View File

@ -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
*
* <h2>Description</h2>
* This sequence tests the NASA OSAL over ChibiOS/RT functionalities
* related to threading.
*
* <h2>Test Cases</h2>
* - @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
*
* <h2>Description</h2>
* Parameters checking in OS_TaskCreate() is tested.
*
* <h2>Test Steps</h2>
* - 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
};

View File

@ -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[];

View File

@ -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/