129 lines
3.0 KiB
Bash
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
|