From b9d871f9e1fc105b8123b2ffb41bef17f0fc8005 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. Conflicts: testsuites/automake/test-subdirs.am tools/build/rtems-test-check --- c/src/lib/libbsp/bfin/acinclude.m4 | 4 +- testsuites/testdata/require-tick-isr.tcfg | 72 +++++++++++++++++++++++++++++ tools/build/rtems-test-check | 76 +++++++++++++++++++++++++++++++ 3 files changed, 150 insertions(+), 2 deletions(-) create mode 100644 testsuites/testdata/require-tick-isr.tcfg create mode 100755 tools/build/rtems-test-check diff --git a/c/src/lib/libbsp/bfin/acinclude.m4 b/c/src/lib/libbsp/bfin/acinclude.m4 index 828fd894dd..ab6082ef47 100644 --- a/c/src/lib/libbsp/bfin/acinclude.m4 +++ b/c/src/lib/libbsp/bfin/acinclude.m4 @@ -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 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 new file mode 100755 index 0000000000..3a485c7dc8 --- /dev/null +++ b/tools/build/rtems-test-check @@ -0,0 +1,76 @@ +#! /bin/sh +# +# Copyright 2014 Chris Johns +# All rights reserved +# + +# +# usage: rtems-test-check +# + +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 + -- cgit v1.2.3