[PATCH 1/2] rtems-test-check: Ignore tests which require real ISR based clock tick
Chris Johns
chrisj at rtems.org
Thu May 22 23:23:32 UTC 2014
BSPs for simulators which do not include a clock tick interrupt source
are incapable of running some tests successfully. This is a common
characteristic of some BSPs and a fixed set of tests. There is no point
in duplicating this list of tests in those BSPs test configuration.
Read testsuites/testdata/require-tick-isr.tcfg for details.
---
testsuites/automake/test-subdirs.am | 2 +-
testsuites/testdata/require-tick-isr.tcfg | 72 +++++++++++++++++++++++++++++++
tools/build/rtems-test-check | 30 +++++++++++--
3 files changed, 100 insertions(+), 4 deletions(-)
create mode 100644 testsuites/testdata/require-tick-isr.tcfg
diff --git a/testsuites/automake/test-subdirs.am b/testsuites/automake/test-subdirs.am
index 35d6c81..ff339aa 100644
--- a/testsuites/automake/test-subdirs.am
+++ b/testsuites/automake/test-subdirs.am
@@ -22,7 +22,7 @@ all-local:
fi; \
echo "BSP Testsuite Data: $$vtdata"; \
list=`$(top_srcdir)/../../tools/build/rtems-test-check \
- $$tdata $(RTEMS_BSP) $(_SUBDIRS)`; \
+ $$tdata $(top_srcdir)/.. $(RTEMS_BSP) $(_SUBDIRS)`; \
for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" != "."; then \
diff --git a/testsuites/testdata/require-tick-isr.tcfg b/testsuites/testdata/require-tick-isr.tcfg
new file mode 100644
index 0000000..8231acb
--- /dev/null
+++ b/testsuites/testdata/require-tick-isr.tcfg
@@ -0,0 +1,72 @@
+#
+# These tests require that the BSP have a real clock tick ISR. Some
+# simulator BSPs do not have any interrupt sources and use the file
+# libbsp/shared/clock_driver_simidle.c.
+#
+# Tests which do not work with this clock driver tend to have the
+# one of the following characteristics:
+#
+# + Assume that a clock tick will occur while a task is running
+# continuously can be
+# + Assume that a timer service routine will execute in an ISR
+# while a task is running continously.
+# + Has a busy spin loop waiting to start the test on a tick boundary
+# does this.
+#
+# Eventually there should be a way to note that a BSP has a list
+# of expected test failures which are specific to it AND a set of
+# characteristics that make running classes of test appropriate or
+# inappropriate. At that point, this would be one characteristic.
+#
+# NOTE: Each test in this list should be reviewed to ensure that it
+# has a legitimate reason to not run on a BSP with the simulator
+# clock idle task. It may need to be broken into multiple tests
+# if not executing it misses other paths.
+#
+cpuuse
+psx07
+psx09
+psx10
+psx11
+psxcancel01
+psxgetrusage01
+psxintrcritical01
+psxsignal01
+psxsignal02
+psxspin01
+psxtime
+psxtimes01
+sp04
+sp14
+sp19
+sp35
+sp38
+sp44
+sp69
+spcbssched02
+spcbssched03
+spcontext01
+spcpucounter01
+spedfsched03
+spintrcritical01
+spintrcritical02
+spintrcritical03
+spintrcritical04
+spintrcritical05
+spintrcritical06
+spintrcritical07
+spintrcritical08
+spintrcritical09
+spintrcritical10
+spintrcritical11
+spintrcritical12
+spintrcritical13
+spintrcritical14
+spintrcritical15
+spintrcritical16
+spintrcritical17
+spintrcritical18
+spintrcritical19
+spintrcritical20
+spnsext01
+spqreslib
diff --git a/tools/build/rtems-test-check b/tools/build/rtems-test-check
index 74d1209..3a485c7 100755
--- a/tools/build/rtems-test-check
+++ b/tools/build/rtems-test-check
@@ -5,7 +5,7 @@
#
#
-# usage: rtems-test-check <bsp-test-database> <bsp> <tests..>
+# usage: rtems-test-check <bsp-test-database> <includes> <bsp> <tests..>
#
if test $# -lt 3; then
@@ -15,6 +15,8 @@ fi
testdata="$1"
shift
+includepath="$1"
+shift
bsp="$1"
shift
tests="$*"
@@ -23,11 +25,33 @@ bsp_tests=${tests}
#
# If there is no testdata all tests are valid.
#
+
if test -f $testdata; then
disabled_tests=""
- for t in $(cat $testdata | sed -e 's/#.*$//' -e '/^$/d');
+ while [ ! -z $testdata ];
do
- disabled_tests="${disabled_tests} ${t}"
+ for td in $testdata;
+ do
+ ntd=""
+ exec 3<& 0
+ exec 0<$td
+ while read line
+ do
+ line=$(echo $line | sed -e 's/#.*$//' -e '/^$/d')
+ if [ ! -z "$line" ]; then
+ include=$(echo $line | sed -e "s/include:.*/yes/g")
+ if [ "$include" = "yes" ]; then
+ inf=$(echo $line | sed -e "s/include://g" -e 's/^[ \t]//;s/[ \t]$//')
+ if test -f $includepath/$inf; then
+ ntd="$includepath/$inf $ntd"
+ fi
+ else
+ disabled_tests="${disabled_tests} $line"
+ fi
+ fi
+ done
+ done
+ testdata=$ntd
done
bsp_tests=""
--
1.8.5.2 (Apple Git-48)
More information about the devel
mailing list