diff options
Diffstat (limited to 'solenv/bin/cwscheckapi')
-rwxr-xr-x | solenv/bin/cwscheckapi | 363 |
1 files changed, 363 insertions, 0 deletions
diff --git a/solenv/bin/cwscheckapi b/solenv/bin/cwscheckapi new file mode 100755 index 000000000000..ddb56fd1d7c1 --- /dev/null +++ b/solenv/bin/cwscheckapi @@ -0,0 +1,363 @@ +#!/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 +# <http://www.openoffice.org/license.html> +# 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 |