7b2964448e
2009-06-26 14:00:27 +0200 lla r273410 : #i102248# cleanups 2009-06-26 13:36:44 +0200 lla r273407 : #i102248# fix problem with too long sleeps and waits 2009-06-26 08:34:17 +0200 lla r273393 : #i102248# cleanups 2009-06-26 08:28:43 +0200 lla r273392 : #i102248# cleanups 2009-06-25 13:17:19 +0200 lla r273379 : #i102248# add prototypes 2009-06-25 11:31:02 +0200 lla r273371 : #i102248# cleanups 2009-06-25 11:15:18 +0200 lla r273370 : #i102248# add a selftest for demonstration. 2009-06-25 10:53:35 +0200 lla r273369 : #i102248# add a selftest for demonstration. 2009-06-25 10:38:10 +0200 lla r273368 : #i102248# add a selftest for demonstration. 2009-06-23 11:09:35 +0200 lla r273266 : #i102248# cleanup 2009-06-23 11:00:15 +0200 lla r273265 : #i10i108248# add cwstestresult to cwscheckapi 2009-06-23 10:59:50 +0200 lla r273264 : #i10i108248# add cwstestresult to cwscheckapi 2009-06-23 10:58:47 +0200 lla r273263 : #i102248# add selftest
363 lines
10 KiB
Bash
Executable file
363 lines
10 KiB
Bash
Executable file
#!/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
|