#!/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