#!/bin/bash ################################################################################ ## ## ## Copyright © International Business Machines Corp., 2007, 2008 ## ## ## ## This program is free software; you can redistribute it and#or modify ## ## it under the terms of the GNU General Public License as published by ## ## the Free Software Foundation; either version 2 of the License, or ## ## (at your option) any later version. ## ## ## ## This program is distributed in the hope that it will be useful, but ## ## WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ## ## or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## ## for more details. ## ## ## ## You should have received a copy of the GNU General Public License ## ## along with this program; if not, write to the Free Software ## ## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA ## ## ## ################################################################################ # # Script to run the tests in testcases/realtime # # Usage: $0 test_argument # # where test-argument = func | stress | perf | all | list | clean | test_name # # test_name is the name of a subdirectory in func/, stress/ or perf/ # echo "Real-time tests run" export LTPROOT=${PWD} echo $LTPROOT | grep testscripts > /dev/null 2>&1 if [ $? -eq 0 ]; then cd .. export LTPROOT=${PWD} fi function usage() { cat </dev/null if [ -f "run_auto.sh" ]; then echo " Running $LOOPS runs of $subdir " for((iter=0; $iter < $LOOPS; iter++)); do ./run_auto.sh done else printf "\n Failed to find run script in $test \n\n" fi pushd $TESTS_DIR >/dev/null else printf "\n $test is not a valid test subdirectory \n" usage exit 1 fi } function make_clean() { pushd $TESTS_DIR >/dev/null rm -rf logs make clean } find_test() { case $1 in func) TESTLIST="func" ;; stress) TESTLIST="stress" ;; perf) TESTLIST="perf" ;; all) # Run all tests which have run_auto.sh TESTLIST="func stress perf" ;; list) # This will only display subdirs which have run_auto.sh list_tests exit ;; clean) # This will clobber logs, out files, .o's etc make_clean exit ;; *) # run the tests in the individual subdirectory if it exists TESTLIST="$1" ;; esac for subdir in $TESTLIST; do if [ -d $subdir ]; then pushd $subdir >/dev/null for name in `find -name "run_auto.sh"`; do test="`dirname $name`" run_test "$test" "$2" pushd $subdir > /dev/null done pushd $TESTS_DIR >/dev/null else printf "\n $subdir not found; check name/path with run.sh list \n" fi done } source $LTPROOT/testcases/realtime/scripts/setenv.sh if [ $# -lt 1 ]; then usage fi pushd $TESTS_DIR >/dev/null cd $TESTS_DIR if [ ! -e "logs" ]; then mkdir logs echo " creating logs directory as $TESTS_DIR/logs " chmod -R 775 logs fi # if INSTALL_DIR != top_srcdir assume the individual tests are built and installed. # So no need to build lib if [[ -d lib ]]; then #Only build the library, most of the tests depend upon. #The Individual tests will be built, just before they run. pushd lib make check_error make popd fi ISLOOP=0 index=0 while getopts ":t:l:h" option do case "$option" in t ) if [ $ISLOOP -eq 1 ]; then LOOP=1 tests[$index]=$LOOP index=$((index+1)) fi tests[$index]="$OPTARG" index=$((index+1)) TESTCASE="$OPTARG" ISLOOP=1 ;; l ) ISLOOP=0 tests[$index]="$OPTARG" LOOP="$OPTARG" index=$((index+1)) ;; h ) usage ;; * ) echo "Unrecognized option specified" usage ;; esac done for(( i=0; $i < $index ; $((i+=2)) )); do find_test ${tests[$i]} ${tests[$((i+1))]} done