git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6694 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
1ef57ed011
commit
c082a87062
|
@ -86,5 +86,10 @@
|
||||||
<type>2</type>
|
<type>2</type>
|
||||||
<locationURI>CHIBIOS/os</locationURI>
|
<locationURI>CHIBIOS/os</locationURI>
|
||||||
</link>
|
</link>
|
||||||
|
<link>
|
||||||
|
<name>test</name>
|
||||||
|
<type>2</type>
|
||||||
|
<locationURI>CHIBIOS/test</locationURI>
|
||||||
|
</link>
|
||||||
</linkedResources>
|
</linkedResources>
|
||||||
</projectDescription>
|
</projectDescription>
|
||||||
|
|
|
@ -82,7 +82,7 @@ include $(CHIBIOS)/os/hal/ports/STM32/STM32F30x/platform.mk
|
||||||
include $(CHIBIOS)/os/hal/osal/nil/osal.mk
|
include $(CHIBIOS)/os/hal/osal/nil/osal.mk
|
||||||
include $(CHIBIOS)/os/nil/nil.mk
|
include $(CHIBIOS)/os/nil/nil.mk
|
||||||
include $(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC/mk/port_stm32f30x.mk
|
include $(CHIBIOS)/os/nil/ports/ARMCMx/compilers/GCC/mk/port_stm32f30x.mk
|
||||||
#include $(CHIBIOS)/test/test.mk
|
include $(CHIBIOS)/test/nil/test.mk
|
||||||
|
|
||||||
# Define linker script file here
|
# Define linker script file here
|
||||||
LDSCRIPT = $(PORTLD)/STM32F303xC.ld
|
LDSCRIPT = $(PORTLD)/STM32F303xC.ld
|
||||||
|
|
|
@ -80,7 +80,7 @@ static const testcase_t test_XXX_000 = {
|
||||||
test_XXX_000_teardown,
|
test_XXX_000_teardown,
|
||||||
test_XXX_000_execute
|
test_XXX_000_execute
|
||||||
};
|
};
|
||||||
#endif /* TEST_XXX_000_CONDITION */
|
#endif /* TEST_XXX_000_CONDITION */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Exported data.
|
* Exported data.
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
# List of all the ChibiOS/RT test files.
|
# List of all the ChibiOS/RT test files.
|
||||||
TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \
|
TESTSRC = ${CHIBIOS}/test/lib/ch_test.c \
|
||||||
${CHIBIOS}/test/rt/test_root.c \
|
${CHIBIOS}/test/nil/test_root.c \
|
||||||
${CHIBIOS}/test/rt/test_sequence_000.c
|
${CHIBIOS}/test/nil/test_sequence_000.c
|
||||||
|
|
||||||
# Required include directories
|
# Required include directories
|
||||||
TESTINC = ${CHIBIOS}/test/lib \
|
TESTINC = ${CHIBIOS}/test/lib \
|
||||||
${CHIBIOS}/test/rt
|
${CHIBIOS}/test/nil
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#ifndef _TEST_ROOT_H_
|
#ifndef _TEST_ROOT_H_
|
||||||
#define _TEST_ROOT_H_
|
#define _TEST_ROOT_H_
|
||||||
|
|
||||||
|
#include "nil.h"
|
||||||
|
|
||||||
#include "test_sequence_000.h"
|
#include "test_sequence_000.h"
|
||||||
|
|
||||||
/*===========================================================================*/
|
/*===========================================================================*/
|
||||||
|
|
|
@ -19,12 +19,12 @@
|
||||||
#include "test_root.h"
|
#include "test_root.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @page test_sequence_000 Sequence brief description
|
* @page test_sequence_000 Threads Functionality
|
||||||
*
|
*
|
||||||
* File: @ref test_sequence_000.c
|
* File: @ref test_sequence_000.c
|
||||||
*
|
*
|
||||||
* <h2>Description</h2>
|
* <h2>Description</h2>
|
||||||
* Sequence detailed description.
|
* This sequence tests the ChibiOS/Nil functionalities related to threading.
|
||||||
*
|
*
|
||||||
* <h2>Test Cases</h2>
|
* <h2>Test Cases</h2>
|
||||||
* - @subpage test_000_000
|
* - @subpage test_000_000
|
||||||
|
@ -40,47 +40,120 @@
|
||||||
* Test cases.
|
* Test cases.
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
#if TEST_000_000_CONDITION || defined(__DOXYGEN__)
|
#if TRUE || defined(__DOXYGEN__)
|
||||||
/**
|
/**
|
||||||
* @page test_000_000 Brief description
|
* @page test_000_000 System Tick Counter functionality
|
||||||
*
|
*
|
||||||
* <h2>Description</h2>
|
* <h2>Description</h2>
|
||||||
* Detailed description.
|
* The functionality of the API @p chVTGetSystemTimeX() is tested.
|
||||||
*
|
*
|
||||||
* <h2>Conditions</h2>
|
* <h2>Conditions</h2>
|
||||||
* This test is only executed if the following preprocessor condition
|
* None.
|
||||||
* evaluates to true:
|
|
||||||
* - TEST_000_000_CONDITION
|
|
||||||
* .
|
|
||||||
*
|
*
|
||||||
* <h2>Test Steps</h2>
|
* <h2>Test Steps</h2>
|
||||||
* - Step description.
|
* - A System Tick Counter increment is expected, the test simply hangs if
|
||||||
|
* it does not happen.
|
||||||
* .
|
* .
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static void test_000_000_setup(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_000_000}_teardown(void) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
static void test_000_000_execute(void) {
|
static void test_000_000_execute(void) {
|
||||||
|
systime_t time;
|
||||||
|
|
||||||
/* Step description.*/
|
/* A System Tick Counter increment is expected, the test simply hangs if
|
||||||
|
it does not happen.*/
|
||||||
test_set_step(1);
|
test_set_step(1);
|
||||||
{
|
{
|
||||||
|
time = chVTGetSystemTimeX();
|
||||||
|
while (time == chVTGetSystemTimeX()) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const testcase_t test_000_000 = {
|
static const testcase_t test_000_000 = {
|
||||||
"Brief description",
|
"Brief description",
|
||||||
test_000_000_setup,
|
NULL,
|
||||||
test_000_000_teardown,
|
NULL,
|
||||||
test_000_000_execute
|
test_000_000_execute
|
||||||
};
|
};
|
||||||
#endif /* TEST_000_000_CONDITION */
|
#endif /* TEST_000_000_CONDITION */
|
||||||
|
|
||||||
|
#if TRUE || defined(__DOXYGEN__)
|
||||||
|
/**
|
||||||
|
* @page test_000_001 Thread Sleep functionality
|
||||||
|
*
|
||||||
|
* <h2>Description</h2>
|
||||||
|
* The functionality of the API @p chThdSleep() and derivatives is tested.
|
||||||
|
*
|
||||||
|
* <h2>Conditions</h2>
|
||||||
|
* None.
|
||||||
|
*
|
||||||
|
* <h2>Test Steps</h2>
|
||||||
|
* - The current system time is read then a sleep is performed for 100 system
|
||||||
|
* ticks and on exit the system time is verified again.
|
||||||
|
* - The current system time is read then a sleep is performed for 100000
|
||||||
|
* microseconds and on exit the system time is verified again.
|
||||||
|
* - The current system time is read then a sleep is performed for 100
|
||||||
|
* milliseconds and on exit the system time is verified again.
|
||||||
|
* - The current system time is read then a sleep is performed for 1
|
||||||
|
* second and on exit the system time is verified again.
|
||||||
|
* .
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void test_000_001_execute(void) {
|
||||||
|
systime_t time;
|
||||||
|
|
||||||
|
/* The current system time is read then a sleep is performed for 100 system
|
||||||
|
ticks and on exit the system time is verified again.*/
|
||||||
|
test_set_step(1);
|
||||||
|
{
|
||||||
|
time = chVTGetSystemTimeX();
|
||||||
|
chThdSleep(100);
|
||||||
|
test_assert_time_window(time + 100,
|
||||||
|
time + 101,
|
||||||
|
"out of time window");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The current system time is read then a sleep is performed for 100000
|
||||||
|
microseconds and on exit the system time is verified again.*/
|
||||||
|
test_set_step(2);
|
||||||
|
{
|
||||||
|
time = chVTGetSystemTimeX();
|
||||||
|
chThdSleepMicroseconds(100);
|
||||||
|
test_assert_time_window(time + US2ST(100),
|
||||||
|
time + US2ST(100) + 1,
|
||||||
|
"out of time window");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The current system time is read then a sleep is performed for 100
|
||||||
|
milliseconds and on exit the system time is verified again.*/
|
||||||
|
test_set_step(3);
|
||||||
|
{
|
||||||
|
time = chVTGetSystemTimeX();
|
||||||
|
chThdSleepMicroseconds(100);
|
||||||
|
test_assert_time_window(time + MS2ST(100),
|
||||||
|
time + MS2ST(100) + 1,
|
||||||
|
"out of time window");
|
||||||
|
}
|
||||||
|
|
||||||
|
/* The current system time is read then a sleep is performed for 1
|
||||||
|
second and on exit the system time is verified again.*/
|
||||||
|
test_set_step(4);
|
||||||
|
{
|
||||||
|
time = chVTGetSystemTimeX();
|
||||||
|
chThdSleepSeconds(1);
|
||||||
|
test_assert_time_window(time + S2ST(1),
|
||||||
|
time + S2ST(1) + 1,
|
||||||
|
"out of time window");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static const testcase_t test_000_001 = {
|
||||||
|
"Brief description",
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
test_000_001_execute
|
||||||
|
};
|
||||||
|
#endif /* TEST_000_001_CONDITION */
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Exported data.
|
* Exported data.
|
||||||
|
@ -90,8 +163,11 @@ static const testcase_t test_000_000 = {
|
||||||
* @brief Sequence brief description.
|
* @brief Sequence brief description.
|
||||||
*/
|
*/
|
||||||
const testcase_t * const test_sequence_000[] = {
|
const testcase_t * const test_sequence_000[] = {
|
||||||
#if TEST_000_000_CONDITION || defined(__DOXYGEN__)
|
#if 1 || defined(__DOXYGEN__)
|
||||||
&test_000_000,
|
&test_000_000,
|
||||||
|
#endif
|
||||||
|
#if 1 || defined(__DOXYGEN__)
|
||||||
|
&test_000_001,
|
||||||
#endif
|
#endif
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue