summaryrefslogtreecommitdiffstats
path: root/bin/runtest
diff options
context:
space:
mode:
Diffstat (limited to 'bin/runtest')
-rwxr-xr-xbin/runtest966
1 files changed, 0 insertions, 966 deletions
diff --git a/bin/runtest b/bin/runtest
deleted file mode 100755
index 5e05abb..0000000
--- a/bin/runtest
+++ /dev/null
@@ -1,966 +0,0 @@
-#! /bin/sh
-#
-# Copyright by The HDF Group.
-# Copyright by the Board of Trustees of the University of Illinois.
-# All rights reserved.
-#
-# This file is part of HDF5. The full HDF5 copyright notice, including
-# terms governing use, modification, and redistribution, is contained in
-# the COPYING file, which can be found at the root of the source code
-# distribution tree, or in https://www.hdfgroup.org/licenses.
-# If you do not have access to either file, you may request a copy from
-# help@hdfgroup.org.
-#
-
-# run the hdf5/bin/snapshot
-# Usage:
-# runtest run the test for the local host
-# runtest <hostname> run the test for <hostname>
-# runtest -all run the test for all predefined hosts
-#
-# Assumptions in knowing where to find the right scripts to execute.
-# 1. assume we are at the top level of the hdf5 source. So, bin/* are
-# where the script files are.
-# 2. after the cvs update is completed, we can go to the snapshot area
-# hdf5 source tree and use the bin/* there.
-# 3. Cannot use the snapshot area scripts from the beginning because
-# for one, the current directory is renamed as previous right after
-# a snapshot release; and for another, some scripts may be changed
-# by the cvs update while it is being used.
-
-# local setup
-DEBUGMODE=""
-test -n "$DEBUGMODE" && echo "******** DEBUGMODE is $DEBUGMODE ************"
-WHEREAMI='pwd'
-CMD=
-
-# the name of this program
-PROGNAME="bin/runtest $DEBUGMODE"
-
-# Setup
-HOSTNAME=`hostname | cut -f1 -d.` # no domain part
-TODAY=`date +%m%d%a`
-WEEKDAY=`date +%a`
-H5VER= # default to current CVS version
-H5VERSION= # default to current CVS version
-n_test=0 # Number of tests ran
-n_pass=0 # Number of tests passed
-n_fail=0 # Number of tests failed
-n_skip=0 # Number of tests skipped
-
-# Default to do checkout (only once) and test, no release.
-# Will run test only if there is significant differences from previous version.
-# If srcdir is not used, don't launched multiple tests
-SNAPSHOT="${DEBUGMODE:+echo }bin/snapshot"
-SRCDIR="srcdir"
-# Default standard Snaptest commands
-SNAPCMD="$SRCDIR test clean"
-# Default Standard snaptest command options
-STANDARD_OPT=""
-ENABLE_PARALLEL="--enable-parallel"
-CONFIGNAME=$HOSTNAME # Name used in the SNAPTESTCFG file
-
-# test host default as local host.
-TESTHOST=""
-
-#################################
-# Function definitions
-#################################
-
-# Print messages to stdout
-# Use this to show output heading to stdout
-PRINT()
-{
- echo "$*"
-}
-
-# Show seconds since midnight.
-# This is used to calculate seconds elapsed
-SecOfDay()
-{
- set `date '+%H %M %S'`
- t_sec=`expr $1 \* 3600 + $2 \* 60 + $3`
- echo $t_sec
-}
-
-# Calculated the elapsed time (in seconds) between the first
-# and second time. If second time is smaller than the first,
-# we assume the clock has passed midnight and calculate appropriately.
-ElapsedTime()
-{
- if [ $2 -lt $1 ]; then
- t_sec=`expr 3600 \* 24 - $1 + $2`
- else
- t_sec=`expr $2 - $1`
- fi
- echo `expr $t_sec / 60`m `expr $t_sec % 60`s
-}
-
-# Report errors
-# $1--an error message to be printed
-REPORT_ERR()
-{
- ERRMSG=$1
- # print it with a banner shifted right a bit
- PRINT " *************************************"
- PRINT " `date`"
- PRINT " $ERRMSG"
- PRINT " *************************************"
- # report it in the FAILED-LOG file too
- PRINT "$ERRMSG" >> $FAILEDLOG
-}
-
-#
-# Report results of the last test done
-REPORT_RESULT()
-{
- if [ $retcode -eq 0 ]; then
- if [ $skiptest = yes ]; then
- n_skip=`expr $n_skip + 1`
- PRINT "SKIPPED ${HOSTNAME}: $TEST_TYPE" | tee -a $SKIPPEDLOG
- else
- n_pass=`expr $n_pass + 1`
- PRINT "PASSED ${HOSTNAME}: $TEST_TYPE" | tee -a $PASSEDLOG
- fi
- else
- # test failed.
- n_fail=`expr $n_fail + 1`
- REPORT_ERR "****FAILED ${HOSTNAME}: $TEST_TYPE****"
- fi
-}
-
-# Print a blank line
-PRINT_BLANK()
-{
- PRINT
-}
-
-# Print test trailer
-PRINT_TEST_TRAILER()
-{
- PRINT "*** finished $TEST_TYPE tests for $HOSTNAME ***"
- date; EndTime=`SecOfDay`
- PRINT Total time = `ElapsedTime $StartTime $EndTime`
- PRINT_BLANK
-}
-
-# Print trailer summary
-PRINT_TRAILER()
-{
- PRINT "*** finished tests in $HOSTNAME ***"
- date; TotalEndTime=`SecOfDay`
- PRINT "${HOSTNAME}: Ran $n_test($n_pass/$n_fail/$n_skip) $runtest_type, Grand total test time = " \
- "`ElapsedTime $TotalStartTime $TotalEndTime`" | tee -a $TIMELOG
- PRINT_BLANK
-}
-
-# Figure out which remote command to use to reach a host.
-# Try ssh first, then rsh since fewer machines support rsh exec.
-# $1--hostname to reach.
-CHECK_RSH()
-{
- # Figure out how to use ping command in this host.
- # Some hosts use "ping host count", some use "ping -c count host".
- # Test "ping -c 3 -w 5" since it has timeout feature.
- # Test "ping -c ..." style before "ping host 3" because some machines
- # that recognize -c treat 'ping localhost 3' as to ping host '3'.
- if [ -z "$PING" ]; then
- if ping -c 3 -w 5 localhost >/dev/null 2>&1; then
- PING='ping -c 3 -w 5'
- PINGCOUNT=
- elif ping -c 3 localhost >/dev/null 2>&1; then
- PING='ping -c 3'
- PINGCOUNT=
- elif ping localhost 3 >/dev/null 2>&1; then
- PING=ping
- PINGCOUNT=3
- else # don't know how to use ping.
- PING=no_ping
- PINGCOUNT=
- fi
- fi
- #
- host=$1
- # Try remote command with host if it responds to ping.
- # Still try it if we don't know how to do ping.
- if [ no_ping = "$PING" ] || $PING $host $PINGCOUNT >/dev/null 2>&1; then
- if ssh $host -n hostname >/dev/null 2>&1; then
- RSH=ssh
- elif rsh $host -n hostname >/dev/null 2>&1; then
- RSH=rsh
- else
- PRINT cannot remote command with $host
- RSH="NoRemoteCommand"
- fi
- else
- RSH="NotReachable"
- fi
-}
-
-
-# Wait for a file for at most number of minutes
-# $1--the file
-# $2--number of minutes
-# WAIT_STATUS set to:
-# -1 if errors encountered
-# 0 if file found within time limit
-# 1 if file not found within time limit
-WAITFOR()
-{
- wait_file=$1
- nminutes=$2
- if [ -z "$wait_file" -o ! "$nminutes" -ge 0 ]
- then
- PRINT "errors in argument of WAITFOR(): wait_file($1) or nminutes($2)"
- WAIT_STATUS=-1
- return
- fi
- while [ ! -f $wait_file ]; do
- if [ $nminutes -gt 0 ]; then
- PRINT "Wait For $wait_file to appear"
- sleep 60 #sleep 1 minute
- else
- WAIT_STATUS=1
- return
- fi
- nminutes=`expr $nminutes - 1`
- done
- WAIT_STATUS=0
- return
-}
-
-
-# Wait till a file disappears for at most number of minutes.
-# Useful to wait till a lock is removed by another process.
-# $1--the file
-# $2--number of minutes
-# WAIT_STATUS set to:
-# -1 if errors encountered
-# 0 if file disappears within time limit
-# 1 if file has not disappeared within time limit
-WAITTILL()
-{
- wait_file=$1
- nminutes=$2
- if [ -z "$wait_file" -o ! "$nminutes" -ge 0 ]
- then
- PRINT "errors in argument of WAITTILL(): wait_file($1) or nminutes($2)"
- WAIT_STATUS=-1
- return
- fi
- while [ -f $wait_file ]; do
- if [ $nminutes -gt 0 ]; then
- PRINT "Wait till $wait_file has disappeared"
- sleep 60 #sleep 1 minute
- else
- WAIT_STATUS=1
- return
- fi
- nminutes=`expr $nminutes - 1`
- done
- WAIT_STATUS=0
- return
-}
-
-
-# Run one snapshot test
-# $*--Types of test being run
-RUNSNAPTEST()
-{
- SNAPCMD_OPT="$STANDARD_OPT" # snapshot test option
- SRCDIRNAME=${HOSTNAME}
- # restore CC, PATH in case they were changed in the last test.
- CC="$CC_SAVED"
- PATH=$PATH_SAVED
- export PATH # DEC OSF1 needs to export PATH explicitly
- TEST_TYPE=$*
- retcode=0
- skiptest=no
- date
- PRINT "*** starting $TEST_TYPE tests in $HOSTNAME ***"
- PRINT "Uname -a: `uname -a`"
-
- # Parse the test type and set options accordingly.
- # See comments of SNAPTEST_CONFIG_PARSE().
- while [ $# -gt 0 ]; do
- case $1 in
- -n32) # want -n32 option
- SRCDIRNAME=${SRCDIRNAME}-n32
- CC="cc -n32"
- export CC
- ;;
- -64) # want -64 option
- SRCDIRNAME=${SRCDIRNAME}-64
- CC="cc -64"
- export CC
- ;;
- parallel) # want parallel test
- SNAPCMD_OPT="$SNAPCMD_OPT $ENABLE_PARALLEL"
- SRCDIRNAME=${SRCDIRNAME}-pp
- ;;
- standard) # standard test
- ;;
- --*)
- # option for configure
- SNAPCMD_OPT="$SNAPCMD_OPT $1"
- ;;
- op-configure)
- # option for configure
- SNAPCMD_OPT="$SNAPCMD_OPT $1 $2"
- shift
- ;;
- op-snapshot)
- # option for snapshot
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT $1"
- ;;
- setenv)
- # pass them along to snapshot set environment variable
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT setenv $1 $2"
- shift
- ;;
- setenvN)
- # set environment variable with $1 values
- # e.g., setenvN 3 x a b c is same as setenv x="a b c".
- # pass them along to snapshot set environment variable
- shift
- envN=$1
- shift
- envname=$1
- SNAPCMD_OPT="$SNAPCMD_OPT setenvN $envN $envname"
- envalue=
- while test $envN -gt 0; do
- shift
- envalue="$envalue $1"
- envN=`expr $envN - 1`
- done
- SNAPCMD_OPT="$SNAPCMD_OPT $envalue"
- ;;
- skip)
- # skip this test
- skiptest=yes
- ;;
- srcdirname)
- # Use this before using parallel and -n32 since this overrides
- # the others.
- shift
- SRCDIRNAME=$1
- ;;
- deploy)
- # deploy the built binary.
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT deploy $1"
- ;;
- deploydir)
- # default directory for deployment.
- shift
- SNAPCMD_OPT="$SNAPCMD_OPT deploydir $1"
- ;;
- *) # unknown test
- PRINT "$0: unknown type of test ($1)"
- retcode=1
- ;;
- esac
- shift
- done
-
- if [ $retcode -ne 0 -o $skiptest = yes ]; then
- errcode=$retcode
- return $retcode
- fi
-
- # Track down the zlib software
- ans=`$SNAPYARD/current/bin/locate_sw zlib`
- if [ $? = 0 ]; then
- Z_INC=`echo $ans | cut -f1 -d,`
- Z_LIB=`echo $ans | cut -f2 -d,`
- SNAPCMD_OPT="$SNAPCMD_OPT zlib $Z_INC,$Z_LIB"
- else
- # cannot locate zlib software.
- # continue the test, maybe configure can find it.
- :
- fi
-
- if [ -n "${SRCDIRNAME}" ]; then
- SNAPCMD_OPT="$SNAPCMD_OPT srcdirname ${SRCDIRNAME}"
- fi
-
- # Setup log file name to save test output
- THIS_MINUTE=`date +%H%M`
- LOGFILE=${LOGBASENAME}/${SRCDIRNAME}_${TODAY}_${THIS_MINUTE}
- PRINT "Running snapshot with output saved in"
- PRINT " $LOGFILE"
- (date; PRINT Hostname=$HOSTNAME) >> $LOGFILE
-
- (
- cd $SNAPYARD/current
- $SNAPSHOT $SNAPCMD $SNAPCMD_OPT
- ) >> $LOGFILE 2>&1
- retcode=$?
- [ $retcode -ne 0 ] && errcode=$retcode
-
- date >> $LOGFILE
- if [ $retcode -ne 0 ]; then
- # Dump the first 10 lines and the last 30 lines of the LOGFILE.
- ( ntail=30
- echo =========================
- echo "Dumping logfile of ${HOSTNAME}: $TEST_TYPE"
- echo "Last $ntail lines of $LOGFILE"
- echo =========================
- tail -$ntail $LOGFILE
- echo =========================
- echo Dumping done
- echo =========================
- echo ""
- ) >> $FAILEDDETAIL
- fi
-}
-
-TIMELIMIT_PARSE()
-{
- # Function returns timeparam for timekeeper via standard out -
- # any debug statements should be 'echo "Debug string" >&2' or timekeeper
- # will declare timeparam to be non-numeric and ignore it.
- while read x y ; do
- # Scan for entry for this weekday.
- xd=`echo $x | cut -f1 -d/`
- if [ "$xd" = ${WEEKDAY} ]; then
- # strip away the weekday/ part.
- timeparam=`echo $x | cut -f2 -d/`
- break
- fi
- case "$x" in
- '' | '#'*)
- # blank or comment lines. Continue.
- ;;
- ???/*)
- # Ignore any entry not of this weekday.
- ;;
- *)
- timeparam="$x"
- ;;
- esac
- done
- echo $timeparam
- return
-}
-
-# configuration parsing.
-# Taking configuration from input.
-# This should be invoke with configure file as stdin.
-# Syntax of the configure file:
-# All lines started with the # are comment lines and are ignored.
-# Blank lines are ignored too.
-# Each config line starts with a "Scope" followed by test types.
-#
-# Scope can be:
-# standard ... # what the standard test types are.
-# <host>: <test> Do <test> for <host>
-# all: <test> Do <test> for all hosts.
-# <weekday>/... Use this scope if the <weekday> matches.
-# <weekday> can be {Mon,Tue,Wed,Thu,Fri,Sat,Sun}
-# If no <host>: input for a <host>, the standard test is used.
-#
-# Test types:
-# standard tests defined in standard scope.
-# -n32 -n32 mode. Apply to 64/32 bit OS such as IRIX64.
-# parallel parallel mode.
-# op-configure <option> configure option
-# op-snapshot <option> snapshot option
-# --* configure option
-# setenv <name> <value> set environment variable <name> to <value>
-# Pass along to snapshot
-# setenvN <N> <name> <value> ...
-# set environment variable with <N> values
-# e.g., setenvN 3 x a b c is same as setenv x="a b c".
-# Pass along to snapshot.
-# skip skip this test
-# srcdirname <name> use <name> as the build-directory.
-# deploy <name> deploy the built binary at directory <name>.
-# deploydir <name> use <name> as the default directory for deployment.
-SNAPTEST_CONFIG_PARSE()
-{
- while read x y ; do
- # Scan for entry for this weekday.
- xd=`echo $x | cut -f1 -d/`
- if [ "$xd" = ${WEEKDAY} ]; then
- # strip away the weekday/ part.
- x=`echo $x | cut -f2 -d/`
- fi
- case "$x" in
- '' | '#'*)
- # blank or comment lines. Continue.
- ;;
- ???/*)
- # Ignore any entry not of this weekday.
- ;;
- standard)
- #standard configuration
- STANDARD_OPT="$y"
- ;;
- all: | ${CONFIGNAME}:)
- # types of test for all hosts or this host
- if [ -n "$TEST_TYPES" ]; then
- TEST_TYPES="$TEST_TYPES ; $y"
- else
- TEST_TYPES="$y"
- fi
- ;;
- *:) # ignore types of test for other hosts
- ;;
- *) # unknown configuration option
- PRINT $x $y
- PRINT "***Unknown configuration option. Ignored.***"
- ;;
- esac
- done
-}
-
-# Snap Test configuration parsing.
-# If TEST_TYPES is not set, set it to do the "standard" test.
-SNAPTEST_CONFIG()
-{
- TEST_TYPES=
- STANDARD_OPT=
- if [ -f $SNAPTESTCFG ]; then
- SNAPTEST_CONFIG_PARSE < $SNAPTESTCFG
- fi
- TEST_TYPES=${TEST_TYPES:-'standard'}
-}
-
-
-# Show usage page
-USAGE()
-{
-cat <<EOF
-Usage: runtest [-h] [-debug] [-r<version>] [-all] [-nocvs] [-nodiff] [<host> ...]
- -h
- print this help page
- -debug
- turn on debug mode
- -r<version>
- do runtest for <version>
- -all
- launch tests for all pre-defined testing hosts
- -nocvs
- do not do cvs commands
- -nodiff
- do not do diff commands
- -setup
- setup the directory structure for snapshot test
- -configname <name>
- use <name> as hostname in the parsing of the snaptest configure file
- <host>
- launch tests for <host>
-
--all and <host> are contradictory and whichever is specified last, is
-the one to take effect. If neither are given, do the test for the
-local host.
-EOF
-}
-
-
-# Verify if directory ($1) exists. If not, create it.
-CHECK_DIR()
-{
- dir=$1
- if test ! -e $1; then
- echo mkdir $1
- mkdir $1
- errcode=$?
- elif test ! -d $1; then
- echo $1 is not a directory
- errcode=1
- fi
-}
-
-
-#################################
-# Main
-#################################
-#################################
-# Set up global variables
-#################################
-retcode=0 # error code of individula task
-errcode=0 # error code of the whole test
-skiptest=no # if test is skipped
-CC_SAVED="$CC" # CC & PATH maybe changed within a test.
-PATH_SAVED=$PATH # These save the original values.
-timelimit=300 # default time limit (minutes) for the timekeeper
-
-#################################
-# Parse options
-#################################
-while [ $# -gt 0 ]; do
- case "$1" in
- -h) # help--show usage
- USAGE
- exit 0
- ;;
- -debug*)
- # set debug mode
- DEBUGMODE="$1"
- SNAPSHOT="echo bin/snapshot"
- PROGNAME="$PROGNAME $DEBUGMODE"
- PRINT "******** DEBUGMODE is $DEBUGMODE ************"
- ;;
- -r*)
- # version string
- H5VER="$1"
- ;;
- -all)
- # Test all hosts.
- TESTHOST=-all
- ;;
- -nocvs)
- # do not do cvs commands.
- NOCVS=nocvs
- ;;
- -nodiff)
- # do not do diff commands.
- NODIFF=nodiff
- ;;
- -configname)
- # use <name> as hostname in the parsing of the snaptest configure file.
- shift
- CONFIGNAME=$1
- ;;
- -setup)
- # setup the directory structure for snapshot test.
- CMD=setup
- ;;
- -*) # Unknown option
- PRINT "Unknown option ($1)"
- USAGE
- exit 1
- ;;
- *)
- TESTHOST=$*
- break
- ;;
- esac
- shift
-done
-
-# setup H5VER if not set yet
-if [ -z "$H5VER" -a -f bin/snapshot_version ]
-then
- . bin/snapshot_version
-fi
-
-if [ -n "$H5VER" ]
-then
- H5VERSION=hdf5_`echo $H5VER | sed -e s/-r// -e s/\\\./_/g`
- PROGNAME="$PROGNAME $H5VER"
-else
- H5VERSION=hdf5
-fi
-
-#################################
-# Setup snapshot test directories
-#################################
-BASEDIR=${HOME}/snapshots-${H5VERSION}
-# initial processing of setup option if requested
-if test x-$CMD = x-setup; then
- CHECK_DIR $BASEDIR
- test $errcode -ne 0 && exit 1
-elif [ ! -d ${BASEDIR} ]; then
- echo "BASEDIR ($BASEDIR) does not exist"
- exit 1
-fi
-# Show the real physical path rather than the symbolic path
-SNAPYARD=`cd $BASEDIR && /bin/pwd`
-# Log file basename
-LOGDIR=${SNAPYARD}/log
-LOGBASENAME=${LOGDIR}
-PASSEDLOG=${LOGDIR}/PASSED_LOG_${TODAY}
-FAILEDLOG=${LOGDIR}/FAILED_LOG_${TODAY}
-FAILEDDETAIL=${LOGDIR}/FAILED_DETAIL_${TODAY}
-SKIPPEDLOG=${LOGDIR}/SKIPPED_LOG_${TODAY}
-TIMELOG=${LOGDIR}/TIME_LOG_${TODAY}
-TIMEKEEPERLOG=${LOGDIR}/TIMEKEEPER_LOG_${TODAY}
-CVSLOG=${LOGDIR}/CVS_LOG_${TODAY}
-CVSLOG_LOCK=${LOGDIR}/CVS_LOG_LOCK_${TODAY}
-DIFFLOG=${LOGDIR}/DIFF_LOG_${TODAY}
-COPYRIGHT_ERR=${LOGDIR}/COPYRIGHT_ERR_${TODAY}
-# Snap Test hosts and Configuration files
-ALLHOSTSFILE=${SNAPYARD}/allhostfile
-SNAPTESTCFG=${SNAPYARD}/snaptest.cfg
-TIMELIMIT=${SNAPYARD}/timelimit
-TMPFILE="${LOGDIR}/#runtest.${TODAY}.$$"
-
-# more processing of setup option if requested
-if test x-$CMD = x-setup; then
- CHECK_DIR $LOGDIR
- test $errcode -ne 0 && exit 1
- CHECK_DIR $LOGDIR/OLD
- test $errcode -ne 0 && exit 1
- CHECK_DIR $SNAPYARD/TestDir
- test $errcode -ne 0 && exit 1
- # create empty test hosts or configure files if non-existing
- for f in $ALLHOSTSFILE $SNAPTESTCFG; do
- if test ! -f $f; then
- echo Creating $f
- touch $f
- fi
- done
- # create or update the current source.
- echo update current source
- $SNAPSHOT checkout
- # setup completed. Exit.
- exit 0
-fi
-
-#################################
-# Show some host status numbers
-#################################
-# df sometimes hangs due to file system problems. Invoke it as background
-# process and give it 10 seconds to finish. If it hangs, just continue.
-uptime
-df &
-sleep 10
-
-#################################
-# Setup test host(s)
-#################################
-if [ "$TESTHOST" = -all ]; then
- if [ -f $ALLHOSTSFILE ]; then
- TESTHOST=`sed -e '/^#/d;/^ *$/d' $ALLHOSTSFILE`
- else
- PRINT "could not access the all-hosts-file ($ALLHOSTSFILE)"
- USAGE
- exit 1
- fi
-fi
-
-
-#################################
-# Setup to print a trailer summary when exiting not via
-# the normal end of the script.
-#################################
-trap PRINT_TRAILER 0
-
-#
-TotalStartTime=`SecOfDay`
-
-# Process the configuration
-SNAPTEST_CONFIG
-PRINT STANDARD_OPT=$STANDARD_OPT
-PRINT TEST_TYPES=$TEST_TYPES
-PRINT_BLANK
-
-# Do a checkout if one has not been done today.
-# Then check MANIFEST file and copyrights noitces.
-if [ -z "$NOCVS" ]; then
- PRINT "Running CVS checkout with output saved in"
- PRINT " $CVSLOG"
- # Set CVS lock first
- touch $CVSLOG_LOCK
- ($SNAPSHOT checkout ) >> $CVSLOG 2>&1
- # Save error code and remove the lock
- errcode=$?
- rm -f $CVSLOG_LOCK
- if [ $errcode -ne 0 ]; then
- # test failed.
- REPORT_ERR "****FAILED ${HOSTNAME}: CVS checkout****"
- exit $errcode
- fi
- # ===================
- # Check MANIFEST file
- # ===================
- PRINT Checking MAINFEST file ...
- (cd $SNAPYARD/current; bin/chkmanifest) > $TMPFILE 2>&1
- errcode=$?
- if [ $errcode -eq 0 ]; then
- # test passed.
- cat $TMPFILE
- else
- # test failed.
- REPORT_ERR "****FAILED ${HOSTNAME}: MANIFEST check****"
- ( echo =========================
- echo "MANIFEST checking failed output"
- echo =========================
- cat $TMPFILE
- echo =========================
- echo "MANIFEST checking failed output done"
- echo =========================
- echo ""
- ) >> $FAILEDDETAIL
- fi
- rm $TMPFILE
- PRINT_BLANK
- # No copyright checking until what need copyright is decided. 2006/4/7.
- if false; then
- # ======================
- # Check Copyright notice
- # ======================
- PRINT Checking Copyrights notices ...
- if (cd $SNAPYARD/current; bin/chkcopyright) > $TMPFILE 2>&1 ; then
- echo Passed.
- else
- # Save the output and report some of it.
- # Do not report it as failed for runtest yet.
- # Send a separate report mail via hardcoding.
- # Need fixes/cleanup later.
- echo "Failed. See detail in another report mail"
- cp $TMPFILE $COPYRIGHT_ERR
- nheadlines=300
- ntaillines=5 # Number of lines in report summary.
- (
- echo =========================
- echo "Copyright checking failed. Showing first $nheadlines lines of output."
- echo "Complete output is in file $COPYRIGHT_ERR"
- echo =========================
- nreportlines=`wc -l < $COPYRIGHT_ERR`
- if [ $nreportlines -le `expr $nheadlines + $ntaillines` ]; then
- # Just print the whole file.
- cat $COPYRIGHT_ERR
- else
- # Show the first $nheadlines plus report summary
- head -$nheadlines $COPYRIGHT_ERR
- echo ...
- tail -$ntaillines $COPYRIGHT_ERR
- fi
- ) | Mail -s "${H5VERSION} Copyrights check Failed" hdf5lib
- fi
- rm $TMPFILE
- PRINT_BLANK
- fi
-else
- # make sure the cvs update, if done by another host, has completed.
- # First wait for the presence of $CVSLOG which signals some host
- # has started the cvs update. Then wait for the absence of $CVSLOG_LOCK
- # which signals the host has completed the cvs update.
- WAITFOR $CVSLOG 90
- if [ $WAIT_STATUS -ne 0 ]; then
- errcode=$WAIT_STATUS
- REPORT_ERR "****FAILED ${HOSTNAME}: Time expired waiting CVS update to start****"
- exit $errcode
- fi
- WAITTILL $CVSLOG_LOCK 10
- if [ $WAIT_STATUS -ne 0 ]; then
- errcode=$WAIT_STATUS
- REPORT_ERR "****FAILED ${HOSTNAME}: Time expired waiting CVS update to finish****"
- exit $errcode
- fi
-fi
-
-# run a snapshot diff to see if any significant differences between
-# the current and previous versions
-if [ -z "$NODIFF" ]; then
- $SNAPSHOT diff >> $DIFFLOG 2>&1
- errcode=$?
- # check the errcode only if NOT in DEBUG MODE
- if [ -z "$DEBUGMODE" -a $errcode -eq 0 ]; then
- # no need to run test
- PRINT "NO TEST: no significant differences between current and previous versions" |
- tee -a $PASSEDLOG
- exit 0
- fi
-fi
-
-# we can use the version of script in SNAPYARD/current now.
-# Don't do the diff or cvs update any more.
-PROGNAME="$SNAPYARD/current/$PROGNAME -nodiff -nocvs"
-
-# Decide to do test for the local host or for remote hosts
-if [ -n "$TESTHOST" -a $HOSTNAME != "$TESTHOST" ]; then
- date
- PRINT "*** launching tests from $HOSTNAME ***"
- PRINT_BLANK
- TEST_TYPE="launching"
- cd ${SNAPYARD}/log
- # Fork off timekeeper if concurrent tests will be used.
- if [ -n "$SRCDIR" ]; then
- timelimit=`TIMELIMIT_PARSE < $TIMELIMIT`
- ($SNAPYARD/current/bin/timekeeper $timelimit > $TIMEKEEPERLOG 2>&1 &)
- PRINT " Fork off timekeeper $timelimit"
- fi
- runtest_type="hosts"
- for h in $TESTHOST; do
- # Must do CONFIGNAME before $h got changed by the second cut.
- # cut returns the whole string if there is no / in the string
- # at all. But that works okay for the CONFIGNAME too.
- CONFIGNAME=`echo $h | cut -f2 -d/`
- h=`echo $h | cut -f1 -d/`
- n_test=`expr $n_test + 1`
- TMP_OUTPUT="#${h}_${CONFIGNAME}.out"
- (PRINT "=============="
- PRINT "Testing $h"
- PRINT "==============") > $TMP_OUTPUT
- CHECK_RSH $h
- # run the remote shell command with output to $TMP_OUTPUT
- case "$RSH" in
- rsh|ssh)
- CMD="$RSH $h -n $PROGNAME -configname $CONFIGNAME"
- PRINT $CMD
-
- # launch concurrent tests only if srcdir is used
- if [ -n "$SRCDIR" ]; then
- $CMD || REPORT_ERR "****FAILED ${h}: Abnormal exit from runtest****" && PRINT_BLANK &
- echo $! > PID.${h}_${CONFIGNAME}
- else
- $CMD || REPORT_ERR "****FAILED ${h}: Abnormal exit from runtest****" && PRINT_BLANK
- fi
- ;;
- NoRemoteCommand)
- PRINT $h does not accept Remote Command "(`date`)"
- ;;
- NotReachable)
- PRINT $h is not reachable "(`date`)"
- ;;
- *)
- PRINT "CHECK_RSH for $h returned unknown result ($RSH)"
- ;;
- esac >> $TMP_OUTPUT 2>&1
- done
- # wait for all launched tests to finish, then cat them back out.
- wait
- # Pause a moment in case the timekeeper is terminating processes.
- wait 30
- for h in $TESTHOST; do
- CONFIGNAME=`echo $h | cut -f2 -d/`
- h=`echo $h | cut -f1 -d/`
- TMP_OUTPUT="#${h}_${CONFIGNAME}.out"
- cat $TMP_OUTPUT
- # Verify test script did complete by checking the last lines
- (tail -5 $TMP_OUTPUT | grep -s 'Grand total' > /dev/null 2>&1) ||
- (REPORT_ERR "****FAILED ${h}: snaptest did not complete****" &&
- PRINT_BLANK)
- rm -f $TMP_OUTPUT PID.${h}_${CONFIGNAME}
- done
- exit 0
-fi
-
-# run the test(s)
-# Note that first field is cut without -s but all subsequent cut
-# must use -s. If -s is not used at all, a $TEST_TYPES that has
-# no ';' (only 1 test), will pass through intact in all cut. That
-# results in infinite looping.
-# If -s is used with the first field, it will suppress completely
-# a $TYPE_TYPES that has no ';' (only 1 tst ). That results in no
-# test at all.
-# Note that n_test must start as 1.
-#
-n_test=1
-runtest_type="tests"
-TEST="`echo $TEST_TYPES | cut -f$n_test -d';'`"
-while [ -n "$TEST" ]; do
- StartTime=`SecOfDay`
- RUNSNAPTEST $TEST
- REPORT_RESULT
- PRINT_TEST_TRAILER
-
- n_test=`expr $n_test + 1`
- TEST="`echo $TEST_TYPES | cut -f$n_test -s -d';'`"
-done
-# dec n_test to show the actual number of tests ran.
-n_test=`expr $n_test - 1`
-
-PRINT_TRAILER
-
-# disable trailer summary printing since all trailers have been
-# printed and we are exiting normally.
-trap 0
-exit $errcode