jdk/test/com/sun/tools/attach/ApplicationSetup.sh
changeset 22394 f4ca0d4b0838
parent 22393 58835248c352
parent 22027 13b877757b0b
child 22396 703a74c914fe
equal deleted inserted replaced
22393:58835248c352 22394:f4ca0d4b0838
     1 #!/bin/sh
       
     2 
       
     3 #
       
     4 # Copyright (c) 2005, 2011, Oracle and/or its affiliates. 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    22 # or visit www.oracle.com if you need additional information or have any
       
    23 # questions.
       
    24 #
       
    25 
       
    26 
       
    27 #
       
    28 #
       
    29 # Application Setup - creates ${TESTCLASSES}/Application.jar and the following
       
    30 # procedures:
       
    31 #	startApplication - starts target application
       
    32 #	stopApplication $1 - stops application via TCP shutdown port $1
       
    33 
       
    34 $JAVAC -d "${TESTCLASSES}" "${TESTSRC}"/Application.java "${TESTSRC}"/Shutdown.java
       
    35 $JAR -cfm "${TESTCLASSES}"/Application.jar "${TESTSRC}"/application.mf \
       
    36   -C "${TESTCLASSES}" Application.class
       
    37 
       
    38 OUTPUTFILE=${TESTCLASSES}/Application.out
       
    39 rm -f ${OUTPUTFILE}
       
    40 
       
    41 startApplication() 
       
    42 {
       
    43   # put all output from the app into ${OUTPUTFILE}
       
    44   ${JAVA} ${TESTVMOPTS} $1 $2 $3 -jar "${TESTCLASSES}"/Application.jar > ${OUTPUTFILE} 2>&1 &
       
    45   pid="$!"
       
    46 
       
    47   # MKS creates an intermediate shell to launch ${JAVA} so
       
    48   # ${pid} is not the actual pid. We have put in a small sleep
       
    49   # to give the intermediate shell process time to launch the
       
    50   # "java" process.
       
    51   if [ "$OS" = "Windows" ]; then
       
    52     sleep 2
       
    53     if [ "${isCygwin}" = "true" ] ; then
       
    54       realpid=`ps -p ${pid} | tail -1 | awk '{print $4;}'`
       
    55     else
       
    56       realpid=`ps -o pid,ppid,comm|grep ${pid}|grep "java"|cut -c1-6`
       
    57     fi
       
    58     pid=${realpid}
       
    59   fi
       
    60                                                                                                                   
       
    61   echo "Waiting for Application to initialize..."
       
    62   attempts=0
       
    63   while true; do
       
    64     sleep 1
       
    65     port=`tail -1 ${OUTPUTFILE} | sed -e 's@\\r@@g' `
       
    66     if [ ! -z "$port" ]; then
       
    67       # In case of errors wait time for output to be flushed
       
    68       sleep 1
       
    69       cat ${OUTPUTFILE}
       
    70       break
       
    71     fi
       
    72     attempts=`expr $attempts + 1`
       
    73     echo "Waiting $attempts second(s) ..."
       
    74   done
       
    75   echo "Application is process $pid, shutdown port is $port"
       
    76   return $port
       
    77 }
       
    78 
       
    79 stopApplication() 
       
    80 {
       
    81   $JAVA ${TESTVMOPTS} -classpath "${TESTCLASSES}" Shutdown $1
       
    82 }
       
    83