#!/bin/ksh
#
# jobmonitor2uls
#
# Job starten und Ergebnisse, Laufzeit und Start-Stopp-Zeit ans ULS schicken
#
# Aufruf:
# jobmonitor2uls [-u <timeunit>] [-h <hostname>] [-s <Section>] [-t <Teststep>] <job.sh> [Parameter...]
# Defaults:       -u s -h `hostname` -s Jobs -t `basename <job.sh>` job.sh [Parameter...]
###############################################################################
#
if [ $# -lt 1 ]
 then
  echo "usage: `basename $0` [-u <timeunit>] [-h <hostname>] [-s <Section>] [-t <Teststep>] <job.sh> [Parameter...]"
  exit 1
fi
#
DATE=`date '+%d.%m.%y'`
TIME=`date '+%H:%M:00'`
START=`date '+%Y-%m-%d %H:%M:%S'`
SSEC=$SECONDS
#
SECTION=Jobs
#
STDOUT=/tmp/STDOUT$$.lst
EOUT=/tmp/EOUT$$.lst
TUNIT=s
#
while getopts u:h:s:t:? op
 do
  case "$op" in
    u) TUNIT=$OPTARG;;
    h) SERVER="-h $OPTARG";;
    s) SECTION=$OPTARG;;
    t) TESTSTEP=$OPTARG;;
    *) echo "usage: `basename $0` [-u <timeunit>] [-h <hostname>] [-s <Section>] [-t <Teststep>] <job.sh> [Parameter...]"
       exit 0
       ;;
  esac
done
shift $(( $OPTIND - 1))
#
if [ $# -lt 1 ]
 then
  echo "usage: `basename $0` [-u <timeunit>] [-h <hostname>] [-s <Section>] [-t <Teststep>] <job.sh> [Parameter...]"
  exit 1
fi
#
if [ -z "$TESTSTEP" ]
 then
  TESTSTEP=`basename $1`
fi
#
/usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Start-Stop $DATE $TIME "Start $START" '{T}'
#
PRG=$1
shift
"$PRG" "$@" >$STDOUT 2>$EOUT
RET=$?
#
END=`date '+%Y-%m-%d %H:%M:%S'`
DAUER=$(( $SECONDS - $SSEC ))
#
/usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Start-Stop $DATE $TIME "Stop $END" '{T}'
case $TUNIT in
  m) DAUER=`awk 'BEGIN{printf("%.2f", '$DAUER' / 60)}'`
     /usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Laufzeit $DATE $TIME "$DAUER" 'm';;
  h) DAUER=`awk 'BEGIN{printf("%.2f", '$DAUER' / 3600)}'`
     /usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Laufzeit $DATE $TIME "$DAUER" 'h';;
  *) /usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Laufzeit $DATE $TIME "$DAUER" 's';;
esac
/usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Exitwert $DATE $TIME "$RET" '#'
if [ -s $STDOUT ]
 then
  /usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Stdout $DATE $TIME "`cat $STDOUT`" '_'
fi
if [ -s $EOUT ]
 then
  /usr/local/bin/send_test_value $SERVER "$SECTION" "$TESTSTEP" Errorout $DATE $TIME "`cat $EOUT`" '_'
fi
#
rm -f $EOUT $STDOUT
#
exit $RET
