summaryrefslogtreecommitdiff
path: root/solenv/bin/cwscheckapi
diff options
context:
space:
mode:
Diffstat (limited to 'solenv/bin/cwscheckapi')
-rwxr-xr-xsolenv/bin/cwscheckapi363
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