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.

Conflicts:
	testsuites/automake/test-subdirs.am
	tools/build/rtems-test-check
This commit is contained in:
Chris Johns
2014-05-19 23:07:22 +10:00
committed by Joel Sherrill
parent c1d7c5fa6e
commit b9d871f9e1
3 changed files with 150 additions and 2 deletions

View File

@@ -2,12 +2,12 @@
AC_DEFUN([RTEMS_CHECK_BSPDIR],
[
case "$1" in
TLL6527M )
AC_CONFIG_SUBDIRS([TLL6527M]);;
bf537Stamp )
AC_CONFIG_SUBDIRS([bf537Stamp]);;
eZKit533 )
AC_CONFIG_SUBDIRS([eZKit533]);;
TLL6527M )
AC_CONFIG_SUBDIRS([TLL6527M]);;
*)
AC_MSG_ERROR([Invalid BSP]);;
esac

View File

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

76
tools/build/rtems-test-check Executable file
View File

@@ -0,0 +1,76 @@
#! /bin/sh
#
# Copyright 2014 Chris Johns <chrisj@rtems.org>
# All rights reserved
#
#
# usage: rtems-test-check <bsp-test-database> <includes> <bsp> <tests..>
#
if test $# -lt 3; then
echo "error: invalid command line" >&2
exit 2
fi
testdata="$1"
shift
includepath="$1"
shift
bsp="$1"
shift
tests="$*"
bsp_tests=${tests}
#
# If there is no testdata all tests are valid.
#
if test -f $testdata; then
disabled_tests=""
while [ ! -z $testdata ];
do
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=""
for t in ${tests};
do
allow="yes"
for dt in ${disabled_tests};
do
if test ${t} = ${dt}; then
allow="no"
fi
done
if test ${allow} = yes; then
bsp_tests="${bsp_tests} ${t}"
fi
done
fi
echo ${bsp_tests}
exit 0