#!/bin/bash #************************************************************************* # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # Copyright 2008 by Sun Microsystems, Inc. # # OpenOffice.org - a multi-platform office productivity suite # # $RCSfile: cwscheckapi,v $ # # $Revision: 1.5 $ # # 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 # # for a copy of the LGPLv3 License. #***********************************************************************/ EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_ERROR=2 EXIT_BUG=10 # report the given error parameter to cwstestresult if the is one. # 0: no error send ok or parameter $2 # 1: failure # 2...: incomplete function reportError() { ERRORCODE=$1 if [ -e $SOLARENV/bin/cwstestresult.pl ]; then if [ $ERRORCODE -eq 0 ]; then PT_STATUS=${2:-ok} # use default 'ok' or $2 elif [ $ERRORCODE -eq 1 ]; then PT_STATUS=failed else PT_STATUS=incomplete fi if [ "$OSTYPE" == "cygwin" ]; then CWSENV=Windows elif [ "$OSTYPE" == "linux" ]; then CWSENV=Linux elif [ "$OSTYPE" == "solaris" ]; then CWSENV=SolarisX86 else CWSENV=Unknown fi perl $SOLARENV/bin/cwstestresult.pl -c $CWS_WORK_STAMP -n CWSCheckAPI -p $CWSENV $PT_STATUS else echo "No cwstestresult.pl found." fi } usage() { echo "Usage: $SCRIPTNAME [-m MODULE1[,MODULEn]] [-k] [-o] [-h] [-d] [-u] [-t] [-s] [-a]" >&2 echo "" >&2 echo "[-m] list of modules to test like: '-m sw,sc,sd' or '-m all' for all modules" >&2 echo "" >&2 echo "[-k] keep Office installation, otherwise it will be removed after test" >&2 echo "" >&2 echo "[-o] force OpenOffice.org installation instead of StarOffice" >&2 echo "" >&2 echo "[-d] debug installation and UnoAPI-Tests" >&2 # echo "" >&2 # echo "[-i] debug installation" >&2 echo "" >&2 echo "[-t] debug UnoAPI-Tests" >&2 echo "" >&2 echo "[-s] skip installation of Office" >&2 echo "" >&2 echo "[-a] NoCwsAttach: do not attach UnoAPI-Test result to EIS database" >&2 echo "" >&2 echo "[-u] UseInstalledOffice: do not install an office" >&2 echo "" >&2 echo "further informations: http://wiki.services.openoffice.org/wiki/Cwscheckapi" >&2 echo "" >&2 exit $EXIT_FAILURE } # we start cwscheckapi reportError 0 running if [ "$PROEXT" != ".pro" ]; then echo "ERROR: cwscheckapi works only on pro-versions" >&2 reportError 2 exit $EXIT_FAILURE fi if [ x${USER}x = xx ]; then if [ x${LOGNAME}x = xx ]; then echo "ERROR: could not determine username. Please export variable USER" >&2 reportError 2 exit $EXIT_FAILURE else USER=$LOGNAME export USER fi fi #DEBUG_I=false DEBUG_T=false INSTALL=true ATTACH=true MODULES="auto" OOO=false KEEPOFFICE=false USE_INSTALLED_OFFICE=false while getopts ':m:dkutsaho' OPTION ; do case $OPTION in d) # DEBUG_I=true DEBUG_T=true ;; m) MODULES="$OPTARG" ;; k) KEEPOFFICE=true ;; o) OOO=true ;; # i) # DEBUG_I=true # ;; t) DEBUG_T=true ;; s) INSTALL=false ;; a) ATTACH=false ;; u) USE_INSTALLED_OFFICE=true INSTALL=false KEEPOFFICE=true echo "make sure your office is started with parameter -accept=pipe,name=$USER;urp;" ;; h) usage $EXIT_SUCCESS ;; \?) echo "unkown option \"-$OPTARG\"." >&2 usage $EXIT_ERROR ;; *) echo "this is not possible...">&2 usage $EXIT_BUG ;; esac done shift `expr $OPTIND - 1` if [ -d /export/home/$USER ]; then CWSCHECKAPIPATH=/export/home/$USER/cwscheckapi else if [ -w /export/home ]; then mkdir /export/home/$USER CWSCHECKAPIPATH=/export/home/$USER/cwscheckapi else CWSCHECKAPIPATH=/tmp/$USER/cwscheckapi fi fi # the following line is to cleanup old cwscheckapi-installations. It results form the first version of cwscheckapi # The disk space on /tmp is limited. If a lot of users run cwscheckapi a lot of installed offices are in /tmp # The new concept is to remove the offices after test. But old unused installations should be removed... if [ $CWSCHECKAPIPATH != /tmp/$USER/cwscheckapi ]; then rm -rf /tmp/$USER/cwscheckapi fi LOCALINSTALLDIR=$CWSCHECKAPIPATH/office LOCALUNPACKDIR=$CWSCHECKAPIPATH/unpack export LOCALINSTALLDIR export LOCALUNPACKDIR unset FORCE2ARCHIVE if [ $INSTALL = true ]; then date 2>&1 # if [ $DEBUG_I = true ]; then # echo "start installation: `date`" # echo call "$SOLARENV/bin/installoffice.pl -cwscheckapi true -dest $LOCALINSTALLDIR -debug $DEBUG_I" # fi perl -w $SOLARENV/bin/installoffice.pl -cwscheckapi true -dest $LOCALINSTALLDIR -ooo $OOO -debug $DEBUG_I EXITVAL=$? if [ $EXITVAL -ne 0 ]; then echo "ERROR: could not install office" reportError 2 exit $EXITVAL fi echo "`date` installation successfull, start testing...." fi SOFFICE="soffice" PS=":" CYGWIN="" SHELL="/bin/bash" # cygwin: if [ "$GUI" = "WNT" ]; then SOFFICE="soffice.exe" PS=";" CYGWIN="-Cygwin true" SHELL=$(which bash) SHELL=$(cygpath -w $SHELL) if [ ! -f $SHELL ]; then echo "could not determine bash shell" reportError 2 exit 1 fi fi # if [ $DEBUG_T = true ]; then # echo find $LOCALINSTALLDIR -name $SOFFICE # fi if [ $USE_INSTALLED_OFFICE = false ]; then OFFICEBIN=`find $LOCALINSTALLDIR -name $SOFFICE` if [ ! -f "$OFFICEBIN" ]; then echo "could not find 'soffice' in subfolders of $LOCALINSTALLDIR" reportError 2 exit 1 fi if [ "$GUI" = "WNT" ]; then # transform /tmp/... -> c:\tmp\... OFFICEBIN=`cygpath -w $OFFICEBIN` fi else OFFICEBIN=$SOFFICE echo "Use already installed and running office." fi JARFOLDER=$SOLARVERSION/$INPATH/bin$UPDMINOREXT SOLVER_LIB=$SOLARVERSION/$INPATH/lib$UPDMINOREXT myCLASSPATH=${PS}${JARFOLDER}/ridl.jar${PS}\ ${JARFOLDER}/unoil.jar${PS}\ ${JARFOLDER}/jurt.jar${PS}\ ${JARFOLDER}/juh.jar${PS}\ ${JARFOLDER}/java_uno.jar myCLASSPATH=$myCLASSPATH${PS}\ ${JARFOLDER}/OOoRunner.jar myCLASSPATH=$myCLASSPATH${PS}\ /net/unoapi/export/unoapi/bin/mysql.jar${PS}\ $SOLVER_LIB PARAM="" if [ -n "$JAVAI" ]; then JAVABIN=$JAVAI elif [ -n "$JAVA_HOME" ]; then if [ "$OS$CPUNAME$CPU" = SOLARISSPARCU ]; then JAVABIN=$JAVA_HOME/bin/sparcv9/java else JAVABIN=$JAVA_HOME/bin/java fi else echo "please set environment variable JAVA_HOME" reportError 2 exit 1 fi if [ -n "$WORK_STAMP" ]; then if [ -n "$CWS_WORK_STAMP" ]; then PARAM="$PARAM -Version cws_${CWS_WORK_STAMP}" else echo "######" echo CAUTION! You are working on the MWS echo "######" PARAM="$PARAM -Version ${WORK_STAMP}_${UPDMINOR}" fi fi PARAM="$PARAM -cmd '$OFFICEBIN -nofirststartwizard -accept=pipe,name=$USER;urp; -norestore -nocrashreport -nolockcheck -enableautomation'" PARAM="$PARAM -cs pipe,name=$USER" PARAM="$PARAM -NoOffice true" PARAM="$PARAM -SRC_ROOT $SRC_ROOT" PARAM="$PARAM -COMP_ENV $OUTPATH" PARAM="$PARAM -Shell $SHELL" PARAM="$PARAM $CYGWIN" PARAM="$PARAM -tb java_complex" PARAM="$PARAM -TimeOut 90000" PARAM="$PARAM -o complex.unoapi.CheckModuleAPI::module($MODULES)" if [ $ATTACH = false ]; then PARAM="$PARAM -nca true" fi if [ $DEBUG_T = true ]; then PARAM="$PARAM -debug true -log true" fi # Sample command # /so/env/Linux_JDK_1.5.0_06/bin/java # -Xmx120m $XDEBUG # -cp :/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/ridl.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/unoil.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/jurt.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/juh.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/java_uno.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/bin.m50/OOoRunner.jar:/net/unoapi/export/unoapi/bin/mysql.jar:/net/so-cwsserv02/export/cws/unoapi04/DEV300/unxlngi6.pro/lib.m50 # org.openoffice.Runner # -Version cws_unoapi04 # -cmd '/tmp/ll93751/cwscheckapi/office/staroffice9/program/soffice -nofirststartwizard -accept=pipe,name=ll93751;urp; -norestore -nocrashreport -nolockcheck -enableautomation' # -cs pipe,name=ll93751 # -NoOffice true # -SRC_ROOT /net/so-cwsserv02/export/cws/unoapi04/DEV300/src.m50 # -COMP_ENV unxlngi6 # -Shell /bin/bash # -tb java_complex # -TimeOut 90000 # -o 'complex.unoapi.CheckModuleAPI::module(auto)' # XDEBUG=" -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=9003,suspend=y " # set DEBUGAPI if you want to debug the checkapi # DEBUGAPI=t COMMAND="$JAVABIN -Xmx120m $XDEBUG -cp $myCLASSPATH org.openoffice.Runner $PARAM $*" echo "$COMMAND" LOGFILE=$CWSCHECKAPIPATH/cwscheckapi.log $COMMAND | tee $LOGFILE EXITVAL=$? if [ $KEEPOFFICE = false ]; then echo "remove office instrallation in $LOCALINSTALLDIR..." rm -rf $LOCALINSTALLDIR fi echo echo A logfile could be found here: $LOGFILE date 2>&1 # send the results via cwstestresult.pl to EIS if [ $EXITVAL -eq 0 ]; then reportError 0 ok else reportError 1 fi