Sleds/utils/sequencelogic-run-fr.sh

129 lines
3.0 KiB
Bash

#!/bin/bash
# Usage: sequencelogic-run-fr.sh [--timeout seconds] --argfile filename
# Where:
# {filename} is the command line argument(s) to FR, in a text file.
function usage(){
echo "Usage: sequencelogic-run-fr.sh [--timeout seconds] [--argfile filename] [--workdir working directory]"
echo " The --timeout arg option is used only for Linux"
echo " --argfile filename -- The command line argument(s) to FR, in a text file."
echo " --workdir working directory -- The directory where the package file is located."
exit 1
}
# setup
REDIR=/dev/null # use /dev/tty for debug
SCRIPT=$0
echo "[OK] Script: ${SCRIPT}" > ${REDIR}
# Absolute path this script is in, thus /home/user/bin
SCRIPTPATH=`dirname ${SCRIPT}`
echo "[OK] This script is located at: $SCRIPTPATH" > ${REDIR}
if [ -f "${SCRIPTPATH}/sequencelogic-helpers.sh" ]; then
source ${SCRIPTPATH}/sequencelogic-helpers.sh > ${REDIR}
else
source ${SEQUENCELOGICHOME}/bin/sequencelogic-helpers.sh > ${REDIR}
fi
# get running bot count
BOTCNT=`countRunningBots`
CORECNT=`countCores`
MAXTHREADS=1
if [ "${BOTCNT}" -le "2" ]; then
MAXTHREADS=$(expr $CORECNT - 1)
else
MAXTHREADS=$(expr $(expr ${CORECNT} - ${BOTCNT}) / 2)
fi
if [ "${MAXTHREADS}" -le 3 ]; then
MAXTHREADS=4
fi
echo "There are ${BOTCNT} running robots and ${CORECNT} CPU cores on this machine; using ${MAXTHREADS} max threads"
IPADDR=`hostname -i`
echo "The address of this host is: $IPADDR"
echo " --------- Memory Info ----------- "
free -m
uptime
echo ""
# args
STAT=0
LIB=""
TIMEOUTPROG=""
if [ "$1" = "--timeout" ]; then
shift
TIMEOUTPROG="timeout $1"
shift
fi
FRTNAME=""
if [ "$1" = "--frtfile" ]; then
shift
FRTNAME="$1"
shift
fi
ARGFILENAME=""
if [ "$1" = "--argfile" ]; then
shift
ARGFILENAME="$1"
shift
fi
WORKDIR=""
if [ "$1" = "--workdir" ]; then
shift
WORKDIR="$1"
shift
fi
FRARGS=$(echo ${ARGFILENAME} | tr ":" "\n");
FRARG=""
for FRARGNAME in $FRARGS
do
if [ ! -f "${FRARGNAME}" ]; then
echo "--argfile ${FRARGNAME} does not exist"
usage
exit 2;
fi
FRARG="${FRARG} -f ${FRARGNAME}"
done
# There is no fr for Darwin :(
CPROG="${SEQUENCELOGICHOME}/bin/fr"
if [ "$PLATFORM" = "Darwin" -a ! -x "${CPROG}" ]; then
TDROOT="${SEQUENCELOGICHOME}/SLSync/testdata"
CNAME=`basename "${WORKDIR}"`
TESTOUT="${TDROOT}/package/loan/fr/${CNAME}.out.json"
echo "Looking for testdata in: $TESTOUT"
if [ ! -f "$TESTOUT" ]; then
TESTOUT="${TDROOT}/NO_PI/fr/${CNAME}.out.json"
echo "Looking for NO_PI testdata in: $TESTOUT"
fi
if [ -f "$TESTOUT" ]; then
cp "$TESTOUT" "${WORKDIR}/${FRTNAME}.out.json"
else
STAT=-1
echo "Did not find testdata .json file"
fi
sleep 3
else
# The actual program is named: "fr" and must be in in ${SEQUENCELOGICHOME}/bin
if [ ! -x "$CPROG" ]; then
echo "$CPROG does not exist or is not executable"
exit 2;
fi
#export CHECKALL=${SEQUENCELOGICHOME}/SLSync/config/scorepages.env
pushd "${WORKDIR}"
echo "$TIMEOUTPROG "$CPROG" -t ${MAXTHREADS} ${FRARG}"
$TIMEOUTPROG "$CPROG" -t ${MAXTHREADS} ${FRARG}
STAT=$?
popd
fi
echo "Exit with status: $STAT"
exit $STAT