99 lines
3.0 KiB
Bash
99 lines
3.0 KiB
Bash
#!/bin/sh
|
|
#
|
|
|
|
if [ $# -ne 3 ]; then
|
|
echo "TSMscript_tools.sh: incorrect number of input arguments"
|
|
exit 1
|
|
fi
|
|
|
|
test_name=TSMscript_tools.$1.$2.$3
|
|
|
|
if [ -f ${CLM_TESTDIR}/${test_name}/TestStatus ]; then
|
|
if grep -c PASS ${CLM_TESTDIR}/${test_name}/TestStatus > /dev/null; then
|
|
echo "TSMscript_tools.sh: smoke test has already passed; results are in "
|
|
echo " ${CLM_TESTDIR}/${test_name}"
|
|
exit 0
|
|
elif grep -c GEN ${CLM_TESTDIR}/${test_name}/TestStatus > /dev/null; then
|
|
echo "TSMscript_tools.sh: test already generated"
|
|
else
|
|
read fail_msg < ${CLM_TESTDIR}/${test_name}/TestStatus
|
|
prev_jobid=${fail_msg#*job}
|
|
|
|
if [ $JOBID = $prev_jobid ]; then
|
|
echo "TSMscript_tools.sh: smoke test has already failed for this job - will not reattempt; "
|
|
echo " results are in: ${CLM_TESTDIR}/${test_name}"
|
|
exit 2
|
|
else
|
|
echo "TSMscript_tools.sh: this smoke test failed under job ${prev_jobid} - moving those results to "
|
|
echo " ${CLM_TESTDIR}/${test_name}_FAIL.job$prev_jobid and trying again"
|
|
cp -rp ${CLM_TESTDIR}/${test_name} ${CLM_TESTDIR}/${test_name}_FAIL.job$prev_jobid
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
cfgdir=`ls -1d ${CLM_ROOT}/tools/$1`
|
|
rundir=${CLM_TESTDIR}/${test_name}
|
|
if [ -d ${rundir} ]; then
|
|
rm -r ${rundir}
|
|
fi
|
|
mkdir -p ${rundir}
|
|
if [ $? -ne 0 ]; then
|
|
echo "TSMscript_tools.sh: error, unable to create work subdirectory"
|
|
exit 3
|
|
fi
|
|
cd ${rundir}
|
|
|
|
optfile=${3%^*}
|
|
cfgfile=${3#*^}
|
|
|
|
if [ "$optfile" != "$3" ]; then
|
|
echo "TSMscript_tools.sh: calling TCBtools.sh to prepare $1 executable"
|
|
${CLM_SCRIPTDIR}/TCBtools.sh $1 $cfgfile
|
|
rc=$?
|
|
if [ $rc -ne 0 ]; then
|
|
echo "TSMscript_tools.sh: error from TCBtools.sh= $rc"
|
|
echo "FAIL.job${JOBID}" > TestStatus
|
|
exit 4
|
|
fi
|
|
tcbtools=${CLM_TESTDIR}/TCBtools.$1.$cfgfile
|
|
else
|
|
tcbtools="$rundir"
|
|
fi
|
|
|
|
scopts=`cat ${CLM_SCRIPTDIR}/nl_files/$optfile | sed -e "s|CSMDATA|$CSMDATA|g" | sed -e "s|EXEDIR|$tcbtools|g" | sed -e "s|CFGDIR|$cfgdir|g"`
|
|
scopts=`echo $scopts | sed -e "s|CTSM_ROOT|$CTSM_ROOT|g" | sed -e "s|CIME_ROOT|$CIME_ROOT|g"`
|
|
|
|
echo "TSMscript_tools.sh: running ${cfgdir}/$2 with $scopts; output in ${rundir}/test.log"
|
|
|
|
if [ ! -f "${cfgdir}/$2" ]; then
|
|
echo "TSMscript_tools.sh: error ${cfgdir}/$2 input script not found"
|
|
echo "FAIL.job${JOBID}" > TestStatus
|
|
exit 5
|
|
fi
|
|
|
|
if [ "$debug" != "YES" ] && [ "$compile_only" != "YES" ]; then
|
|
${cfgdir}/$2 $scopts >> test.log 2>&1
|
|
rc=$?
|
|
status="PASS"
|
|
else
|
|
echo "success" > test.log
|
|
status="GEN"
|
|
rc=0
|
|
fi
|
|
|
|
if [ $rc -eq 0 ] && grep -ci "Successfully " test.log > /dev/null; then
|
|
echo "TSMscript_tools.sh: smoke test passed"
|
|
echo "$status" > TestStatus
|
|
# Copy files from subdirectories up...
|
|
# (use hard links rather than symbolic links because 'ln -s' does funny
|
|
# things when there are no matching files)
|
|
ln */*.nc */*/*.nc .
|
|
else
|
|
echo "TSMscript_tools.sh: error running $2, error= $rc"
|
|
echo "TSMscript_tools.sh: see ${CLM_TESTDIR}/${test_name}/test.log for details"
|
|
echo "FAIL.job${JOBID}" > TestStatus
|
|
exit 6
|
|
fi
|
|
|
|
exit 0
|