From 431bb85dde2b3eae34ff5070b4e2a507bf8bdfa3 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Mon, 19 May 2014 23:07:22 +1000 Subject: rtems-test-check: Ignore tests which require real ISR based clock tick 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 35d6c81e52..ff339aa38d 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 0000000000..8231acb1ca --- /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 74d12097c4..3a485c7dc8 100755 --- a/tools/build/rtems-test-check +++ b/tools/build/rtems-test-check @@ -5,7 +5,7 @@ # # -# usage: rtems-test-check +# usage: rtems-test-check # 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="" -- cgit v1.2.3