#!/bin/bash
#
# uls_tests
#
# Aufruf der einzelnen Testschritte fuers Logging
#
####################################################
#
ASEC=0
ANUM=1
NODATE=0
ND=''
#
unset ND TMP_PATH ULSHOSTNAME SECTION TESTSTEP SAVESTATEPATH FLUSH CONFIGDIR
#
while getopts fn:h:s:t:S:d:DT:C:? op
 do
  case "$op" in
    h) ULSHOSTNAME="$OPTARG";;
    s) SECTION="$OPTARG";;
    t) TESTSTEP="$OPTARG";;
    f) FLUSH=1;;
    S) ASEC=$OPTARG;;
    n) ANUM=$OPTARG;;
    D) NODATE=1
       ND="-D";;
    d) TMP_PATH="$OPTARG";;
    T) SAVESTATEPATH="$OPTARG";;
    C) CONFIGDIR="$OPTARG";;
    ?) echo "usage: `basename $0` [-C <path>] [-d <path>] [-h <ulshostname>] [-s <section>] [-t <teststep>] [-T <savestatepat
h>] [-f] [-S <secs>] [-n <num>] [-D] <test-list>"
       echo "  -d <path>  ULS-Daten ins Verzeichnis <path> schreiben und nicht versenden"
       echo "  -h <name>  ULS-Hostname"
       echo "  -s <sec>   ULS-Section"
       echo "  -t <tst>   ULS-Tetsstep"
       echo "  -f         flush_test_values"
       echo "  -S <secs>  Sekunden bis zur Wiederholung"
       echo "  -n <num>   Anzahl der Wiederholungen"
       echo "  -C <path>  Configdirectory"
       echo "  -D         Jeder Test generiert eigenen Zeitstempel"
       echo "  -T <path>  Pfad fuer Savestates"
       exit 0;;
    *) echo "usage: `basename $0` [-C <path>] [-d <path>] [-h <ulshostname>] [-s <section>] [-t <teststep>] [-T <savestatepat
h>] [-f] [-S <secs>] [-n <num>] [-D] <test-list>"
       exit 0;;
  esac
done
shift $(( $OPTIND - 1))
#
if [[ $# -ne 1 ]]
 then
  echo "usage: `basename $0` [-C <path>] [-d <path>] [-h <ulshostname>] [-s <section>] [-t <teststep>] [-T <savestatepat
h>] [-f] [-S <secs>] [-n <num>] [-D] <test-list>"
  exit 1
fi
#
if [[ `id -u` != 0 && -z "$SAVESTATEPATH" ]]
 then
  MYSAVESTATEPATH="/dev/shm/uls_test.$$"
  mkdir $MYSAVESTATEPATH
  SAVESTATEPATH="$MYSAVESTATEPATH"
fi
#
if [[ $ANUM -gt 1 && $ASEC -gt 0 ]]
 then
  if [[ -n "$TMP_PATH$SAVESTATEPATH$ULSHOSTNAME$SECTION$TESTSTEP" ]]
   then
    while [[ $ANUM -gt 1 ]]
     do
      $0 -C "$CONFIGDIR" -d "$TMP_PATH" -T "$SAVESTATEPATH" -h "$ULSHOSTNAME" -s "$SECTION" -t "$TESTSTEP" $ND -S "$ASEC" "$1" &
      ANUM=$(($ANUM - 1))
      sleep $ASEC
    done
  else
    while [[ $ANUM -ge 1 ]]
     do
      $0 $ND -S "$ASEC" "$1"&
      ANUM=$(($ANUM - 1))
      sleep $ASEC
    done
  fi
fi
#
cd `dirname $0`
LANG=C
LC_ALL=C
export LANG LC_ALL
#
if [[ $ASEC -gt 0 ]]
 then
  DTZ=`date '+%F %T%:z'`
else
  DTZ=`date '+%F %H:%M:00%:z'`
fi
#
while [[ $# -ge 1 ]]
 do
  if [[ -s "$1" ]]
   then
    grep -v '^ *#' "$1" | while read e p
     do
      if [[ -f $e ]]
       then
        if [[ "$NODATE" = "0" ]]
         then
          /bin/bash $e -d "$TMP_PATH" -T "$SAVESTATEPATH" -h "$ULSHOSTNAME" -s "$SECTION" -t "$TESTSTEP" $p $DTZ </dev/null
        else
          /bin/bash $e -d "$TMP_PATH" -T "$SAVESTATEPATH" -h "$ULSHOSTNAME" -s "$SECTION" -t "$TESTSTEP" $p </dev/null
        fi
      fi
    done
  fi
  shift
done
wait
if [[ -n "$FLUSH" && $ANUM = 1 ]]
 then
  if [[ -n "$TMP_PATH" ]]
   then
    flush_test_values -f "$TMP_PATH"
  else
    flush_test_values
  fi
fi
if [[ -n "$MYSAVESTATEPATH" && -d "$MYSAVESTATEPATH" ]]
 then
  rm -r "$MYSAVESTATEPATH"
fi
