#!/bin/bash # this script starts a SecondoMonitor, an OptimizerServer and than # it executes a set of scripts gives as arguments in GUI-testrunner style # the return value is the amount of failed tests. # The outputs of the tests are redirected to TotalTest.log BIN=$SECONDO_BUILD_DIR/bin LOGFILEMON=$BIN/TotalTest.monitor.log LOGFILEOPT=$BIN/TotalTest.optserver.log LOGFILE=$BIN/TotalTest.log PID=$$ t=$TMPDIR if [ -z "$t" ]; then t=$TEMP fi if [ -z "$t" ]; then t=$TMP fi if [ -z "$t" ]; then if [ -d "/tmp" ]; then t="/tmp" else if [ -d "/var/tmp" ]; then t="/var/tmp" else if [ -d "/usr/tmp" ]; then t="/usr/tmp" fi fi fi fi if [ -z "$t" ]; then echo "cannot find temporal directory" exit 1 fi dir=$t/SecTotal_$PID mkdir -p $dir if [ $? -ne 0 ]; then echo "Directory $dir already exists or no permission to write into parent folder" echo "Directory $dir already exists or no permission to write into parent folder" >$LOGFILE exit 1 fi echo "Use directory $dir as home of the databases" echo "Current content " ls -l $dir #overwrite settings in SecondoConfig.ini export SECONDO_PARAM_RTFlags="DEBUG:DemangleStackTrace,CMSG:Color,CTLG:SkipExamples,SI:PrintCounters,SMI:AutoRemoveLogs,Server:BinaryTransfer" export SECONDO_PARAM_SecondoHome=$dir # start the SecondoMonitor if [ $SECONDO_BUILD_DIR = "" ]; then echo "Variable SECONDO_BUILD_DIR not defined" echo "Variable SECONDO_BUILD_DIR not defined" >$LOGFILE rm -rf $dir exit 1 fi # start Monitor echo "StartMonitor" echo "StartMonitor" >$LOGFILE cd $SECONDO_BUILD_DIR/bin ./SecondoMonitor -s >$LOGFILEMON 2>&1 $LOGFILE 2>&1 rm -rf $dir exit 1 fi echo "Monitor is running" sleep 5 echo "StartOptServer" #start OptServer cd $SECONDO_BUILD_DIR/Optimizer StartOptServer -q -t >$LOGFILEOPT 2>&1 & echo "Optimizer server is running" sleep 3 echo "Start Tests" declare -i err=0 cd $SECONDO_BUILD_DIR/Javagui runCmd="sgui --testrunner " errFiles="" echo -e "Tests from $date \n" >$LOGFILE declare -i errors=0 for f in $*; do echo "run test " $f $runCmd $f >>$LOGFILE 2>&1 rc=$? if [ $rc -ne 0 ]; then echo "Test $f failed with return code $rc" errFiles=$errFiles"\n $f $errRC" let errors++ else echo "Test $f successful" fi done if [ "$errFiles" != "" ]; then echo "There are tests failed $errFiles" echo "Failed test: $errFiles" >> $LOGFILE else echo "All Tests successful" echo "All tests successful" >>$LOGFILE fi echo "Terminate OptServer" echo "Terminate Monitor" kill -SIGTERM $mon 2>/dev/null sleep 5 rm -rf $dir exit $errors