diff options
Diffstat (limited to 'testautomation/tools/run_tests/run_tests.sh')
-rwxr-xr-x | testautomation/tools/run_tests/run_tests.sh | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/testautomation/tools/run_tests/run_tests.sh b/testautomation/tools/run_tests/run_tests.sh new file mode 100755 index 000000000000..0c4dc85bcc1f --- /dev/null +++ b/testautomation/tools/run_tests/run_tests.sh @@ -0,0 +1,196 @@ +#!/bin/bash +#************************************************************************* +#* +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2000, 2010 Oracle and/or its affiliates. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# This file is part of OpenOffice.org. +# +# OpenOffice.org is free software: you can redistribute it and/or modify +# it under the terms of the GNU Lesser General Public License version 3 +# only, as published by the Free Software Foundation. +# +# OpenOffice.org is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Lesser General Public License version 3 for more details +# (a copy is included in the LICENSE file that accompanied this code). +# +# You should have received a copy of the GNU Lesser General Public License +# version 3 along with OpenOffice.org. If not, see +# <http://www.openoffice.org/license.html> +# for a copy of the LGPLv3 License. +# +######################################################################### +# +# Owner : andreschnabel@openoffice.org +# +# short description : run several testscripts on unix +# list of scripts to run is read from stdin +# this script has been derived from former ooo_releasetests.sh +# +######################################################################### + + +# set location of testscripts (the 'qatesttool' directory) +# if this is empty, we try to parse $HOME/.testtoolrc +sLocation="" + +# set location of TestTool +# (full path including executable 'testtool') +# if this is empty, we try to parse $HOME/.testtoolrc and use OOoProgramdir +# on Mac this is VCLTestTool.app/Contents/MacOS/testtool.bin +#sTestTool="/Users/sca/qa/testtool/VCLTestTool.app/Contents/MacOS/testtool.bin" +sTestTool="" + +#------------------------------------------------------------------------ +#--- internally used functions --- +#------------------------------------------------------------------------ +function GetValueFromSection () +# call with NameOfValue Section file +{ + $AWK -v sVarName="$1" -v sSectionName="$2" \ + 'BEGIN { bInSection = 0} + { if ( index ($0 ,"[" sSectionName "]") > 0 ) + bInSection = 1 + else if ( (bInSection == 1) && (substr ($0,1,1) == "[") ) + bInSection = 0 + if ( (bInSection == 1) && (index ($0 , sVarName "=") == 1)) { + sub(/\r$/,"") + print substr ($0,index ($0 ,"=") + 1) + } + }' < "$3" +} + +#------------------------------------------------------------------------ +#--- the main script starts here --- +#------------------------------------------------------------------------ + +#platform specific settings +case `uname -s` in + Darwin) + testtoolrc="$HOME/Library/Application Support/.testtoolrc" + KILLOFFICEALL="/usr/bin/killall -9 soffice.bin" + AWK=awk + ;; + SunOS) + testtoolrc="$HOME/.testtoolrc" + KILLOFFICEALL="pkill -9 soffice.bin" + AWK=nawk + ;; + *) + testtoolrc="$HOME/.testtoolrc" + KILLOFFICEALL="pkill -9 soffice.bin" + AWK=awk + ;; +esac + +# if sLocation is not set manuall try to get the location form testtoolrc +if [ -z "$sLocation" ] +then + # first read the profile + sProfile=`GetValueFromSection CurrentProfile Misc "$testtoolrc"` + # then read the BaseDir for the profile + sLocation=`GetValueFromSection BaseDir "$sProfile" "$testtoolrc"` + sLocation="$sLocation/" +fi + +# set location of close-office file +# (see cvs) +sExitOfficeBas="${sLocation}global/tools/closeoffice.bas" +sResetOfficeBas="${sLocation}global/tools/resetoffice.bas" + +# if sTestTool is not set manuall try to get the location form testtoolrc +if [ -z "$sTestTool" ] +then + sTestTool=`GetValueFromSection Current OOoProgramDir "$testtoolrc"` + sTestTool="$sTestTool/basis-link/program/testtool.bin" +fi + + + +echo "****************************************************" +echo "************ STARTING ************" +echo "****************************************************" + +# check if there is a virtual display available + +echo "DISPLAY is set to: " $DISPLAY +echo "My name is: " $USER + +# test if location exists +if [ -d "$sLocation" ] +then + echo "using scripts from $sLocation" +else + echo "test scripts not found at $sLocation" + echo "Please set sLocation in this script" + exit 1 +fi + +# test if testtool.bin exists +if [ -f "$sTestTool" ] +then + echo "using testtool from $sTestTool" +else + echo "testtool not found at $sTestTool" + echo "Please set sTestTool in this script" + exit 1 +fi + +i=0 + +while read x ; +do + echo "Running soffices' processes: " + # kill office, if exists + `$KILLOFFICEALL` + + echo "****************************************************" + x=`echo "$x"|sed s/[[:blank:]]*$//` #cut all trailing blanks + sTest="$sLocation$x" + if [ -f "$sTest" ]; then + + # two pass logic - first pass is the real test, second pass is reset office, third is closeoffice + for z in "1" "2"; + do + echo "running <$sTest>" + "$sTestTool" -run "$sTest" & + sleep 5 + echo " " + + ######### save the PID from the last Background job + testtoolpid=$! + echo "PID of Testtool: " $testtoolpid + + if [ `ps -A | grep -v "grep" | grep $testtoolpid | wc -l` -gt 0 ] ; then + echo " Successfully started" + else + echo " There might be something wrong with starting the Testtool!" + fi + + ######### wait until Testtool has finished & closed + while [ `ps -A | grep -v "grep" | grep $testtoolpid | wc -l` -gt 0 ] ; + do + sleep 5 + i=$((i+5)) + done + + ####### for the second run use the office reset script! + case $z in + "1") sTest="$sResetOfficeBas";; + esac + done + else + echo "Error: file <$sTest> not found" + fi +done + +echo "Duration:" $((i/60)) "min" $((i%60)) "sec " + +echo "****************************************************" +echo "************ FINISHED ************" +echo "****************************************************" |