1 #!/bin/sh 2 3 # 4 # Copyright 2005 Sun Microsystems, Inc. All Rights Reserved. 5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 # 7 # This code is free software; you can redistribute it and/or modify it 8 # under the terms of the GNU General Public License version 2 only, as 9 # published by the Free Software Foundation. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, 22 # CA 95054 USA or visit www.sun.com if you need additional information or 23 # have any questions. 24 # 25 26 27 # Support function to start and stop a given application 28 29 # Starts a given application as background process, usage: 30 # startApplication <class> [args...] 31 # 32 # Waits for application to print something to indicate it is running 33 # (and initialized). Output is directed to ${TESTCLASSES}/Application.out. 34 # Sets $pid to be the process-id of the application. 35 36 startApplication() 37 { 38 OUTPUTFILE=${TESTCLASSES}/Application.out 39 ${JAVA} $1 $2 $3 $4 $5 $6 > ${OUTPUTFILE} & 40 pid="$!" 41 42 # MKS creates an intermediate shell to launch ${JAVA} so 43 # ${pid} is not the actual pid. We have put in a small sleep 44 # to give the intermediate shell process time to launch the 45 # "java" process. 46 if [ "$OS" = "Windows" ]; then 47 sleep 2 48 realpid=`ps -o pid,ppid,comm|grep ${pid}|grep "java"|cut -c1-6` 49 pid=${realpid} 50 fi 51 52 echo "Waiting for Application to initialize..." 53 attempts=0 54 while true; do 55 sleep 1 56 out=`tail -1 ${OUTPUTFILE}` 57 if [ ! -z "$out" ]; then 58 break 59 fi 60 attempts=`expr $attempts + 1` 61 echo "Waiting $attempts second(s) ..." 62 done 63 64 echo "Application is process $pid" 65 } 66 67 # Stops an application by invoking the given class and argument, usage: 68 # stopApplication <class> <argument> 69 stopApplication() 70 { 71 $JAVA -classpath "${TESTCLASSES}" $1 $2 72 } 73