diff options
Diffstat (limited to 'ACE/tests/run_tests_remote.sh')
-rwxr-xr-x | ACE/tests/run_tests_remote.sh | 246 |
1 files changed, 246 insertions, 0 deletions
diff --git a/ACE/tests/run_tests_remote.sh b/ACE/tests/run_tests_remote.sh new file mode 100755 index 00000000000..39fed72b786 --- /dev/null +++ b/ACE/tests/run_tests_remote.sh @@ -0,0 +1,246 @@ +#!/bin/sh +# $Id$ +# +# This is the UNIX version of the one-button ACE tests. +# Contributed originally by Michael Rueger <m_rueger@SYSCOMP.DE> and +# modified substantially by the DOC group. +# +# It also supports remote invocation on a CHORUS/ClassiX/MVME target. +# For that environment, these steps are required: +# 1) Create a "log" directory below the root mount point on the host. +# 2) Mount the "tests" directory on the target, and add it to the PATH +# on the target. +# 3) cd to the directory that contains this script on the host. +# 4) Create a symlink to the "log" directory create in step 1) above. +# 5) ./run_tests.sh <target_hostname> + +if [ -x /bin/rm ]; then + RM=/bin/rm +elif [ -x /usr/bin/rm ]; then + RM=/usr/bin/rm +else + echo "Can't find rm, aborting." 1>&2 + exit 1 +fi + +usage="usage: $0 [-p] <target> + -p: purify tests" + +purify=0 +purify_with_old_gcc=0 + +#### +#### Interpret command arguments. +#### +for arg in "$@"; do + case $arg in + -p ) purify=1 + shift + ;; + + -'?' ) echo $usage + exit 0 + ;; + + -*) echo $0: unknown option $arg + echo $usage + exit 1 + ;; + esac +done + +if [ ! "$ACE_ROOT" ]; then + ACE_ROOT=.. + export ACE_ROOT +fi + +# Some tests fork/exec copies of themselves (e.g. Pipe_Test). If execvp +# ends up getting used, the PATH has to include "." or the test won't work. +PATH=.:$PATH +export PATH + +IFS="|" +tmp=/tmp +compilation_log="log/compilations.log" +shlib_suffix=".so" + +LD_LIBRARY_PATH=$ACE_ROOT/ace:${LD_LIBRARY_PATH:-/usr/lib} +export LD_LIBRARY_PATH + +#### If uname isn't on the user's PATH, store any string +#### in $sysname. +sysname=`uname -s 2>&1` + +if [ $sysname = 'HP-UX' ]; then + SHLIB_PATH=$ACE_ROOT/ace:${SHLIB_PATH:-/usr/lib} + export SHLIB_PATH + shlib_suffix=".sl" +fi + +if [ $sysname = 'AIX' ]; then + LIBPATH=$ACE_ROOT/ace:${LIBPATH:-/usr/lib:/lib} + export LIBPATH +fi + +if echo $sysname | grep -q CYGWIN; then + shlib_suffix=".dll" +fi + +if [ $purify -eq 1 ]; then + if echo $PWD | egrep 'gcc|g++'; then + purify_with_old_gcc=1 + fi +fi + +#### +#### Process command line arguments. +#### +target= +run_command= +chorus=1 +if [ $# -eq 1 ]; then + target=$1 + if rsh $target help | head -1 | egrep -i CHORUS > /dev/null; then + run_command=arun + chorus= + else + #### Only support Chorus/MVME, for now. + echo $0: host $1 does not appear to be Chorus/MVME: not supported. + exit 1 + fi +elif [ $# -ne 0 ]; then + echo $usage + exit 1 +fi + +run() +{ + $RM -f core log/$1.log + + if [ ! -f "$1" ]; then + echo 1>&2 "Making $1 . . ." + remove_exe_after_test="true" + make BIN="$1" >> "$compilation_log" + else + remove_exe_after_test="" + fi + + echo "running $1" + if [ -z "$chorus" ]; then + #### Assumes that the PATH has been set on the target. + rsh $target $run_command $1 + else + ./$1 + fi + status=$? + + if [ $status -ne 0 ]; then + echo \"$1\" FAILED with exit status $status!!!! + fi + + if [ -f core ]; then + echo \"$1\" dumped core!!!! + fi + + if [ -f log/$1.log ]; then + sh ./run_tests.check log/$1.log + else + echo "No log file (log/$1.log) is present" + fi + + if [ "$remove_exe_after_test" ]; then + echo 1>&2 "Discarding $1" + rm -f "$1" ".obj/$1.o" + fi +} + +LynxOS=1 +if [ $sysname = 'LynxOS' ]; then + LynxOS= +fi + +Unicos=1 +if [ $sysname = 'unicos' ]; then + Unicos= +fi + +ace_version=`head -1 ../VERSION | sed 's/.*version \([0-9.]*\).*/\1/'` + +if [ ! "$chorus" ]; then + user=${LOGNAME:-`whoami`} + start_test_resources=`ipcs | egrep $user` +fi # ! chorus + +ACE_BUILD_COMPONENTS=`$ACE_ROOT/bin/ace_components --ace` +OTHER=`echo $ACE_BUILD_COMPONENTS | egrep ' Other '` +TOKEN=`echo $ACE_BUILD_COMPONENTS | egrep ' Token '` + +libDLL_Test= +if [ -f libDLL_Test$shlib_suffix ]; then + libDLL_Test=1 +fi + +netsvcs_main= +if [ -f ../netsvcs/servers/main ]; then + netsvcs_main=1 +fi + +# Testing for this flag always disables the test +DISABLED= + +echo "Starting ACE version $ace_version tests . . ." + +mv -f "$compilation_log" "$compilation_log.bak" > /dev/null 2>&1 + +if [ $sysname != 'procnto' ]; then + # Limit the amount of memory required by the tests to 64Mb. + ulimit -d 65536 +fi # ! procnto + +# Redirection gets confused when rsh is involved (Chorus) +for i in `cat run_tests_remote.lst | tr "\012" "$IFS"`; do + + if [ "$i" != "" ]; then + + case $i in + */*) + p=`dirname $i | sed 's%/% \&\& test $%g'`; + precond="\$$p"; + test=`basename $i`; + ;; + *) + precond=""; + test=$i; + ;; + esac + +# echo =****= $precond ===== $test; + + if test -z "$precond"; then + run $test + elif eval test $precond; then + run $test + else + if echo $precond | egrep '(DISABLED)|(OTHER)' > /dev/null; then :; else + echo Skipping $test on this platform + fi + fi + fi +done + +echo "Finished ACE version $ace_version tests." + +$RM -f ace_pipe_name pattern \ + $tmp/ace_temp_file* \ + $tmp/ace_test_file \ + $tmp/Naming_Test* + +if [ ! "$chorus" ]; then + end_test_resources=`ipcs | egrep $user` + if [ "$start_test_resources" != "$end_test_resources" ]; then + echo WARNING: the ACE tests _may_ have leaked OS resources! + ipcs + fi +fi + +# EOF |