--- a/jdk/test/sun/tools/common/ApplicationSetup.sh Mon May 25 09:13:41 2015 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code 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 General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-
-# Support functions to start, stop, wait for or kill a given SimpleApplication
-
-# Starts a given app as background process, usage:
-# startApplication <class> port-file [args...]
-#
-# The following variables are set:
-#
-# appJavaPid - application's Java pid
-# appOtherPid - pid associated with the app other than appJavaPid
-# appPidList - all pids associated with the app
-# appOutput - file containing stdout and stderr from the app
-#
-# Waits for at least one line of output from the app to indicate
-# that it is up and running.
-#
-startApplication()
-{
- appOutput="${TESTCLASSES}/Application.out"
-
- ${JAVA} -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" "$@" > "$appOutput" 2>&1 &
- appJavaPid="$!"
- appOtherPid=
- appPidList="$appJavaPid"
-
- echo "INFO: waiting for $1 to initialize..."
- _cnt=0
- while true; do
- # if the app doesn't start then the JavaTest/JTREG timeout will
- # kick in so this isn't really a endless loop
- sleep 1
- out=`tail -1 "$appOutput"`
- if [ -n "$out" ]; then
- # we got some output from the app so it's running
- break
- fi
- _cnt=`expr $_cnt + 1`
- echo "INFO: waited $_cnt second(s) ..."
- done
- unset _cnt
-
- if $isWindows; then
- # Windows requires special handling
- appOtherPid="$appJavaPid"
-
- if $isCygwin; then
- appJavaPid=`ps -p "$appOtherPid" \
- | sed -n '
- # See if $appOtherPid is in PID column; there are sometimes
- # non-blanks in column 1 (I and S observed so far)
- /^.'"${PATTERN_WS}${PATTERN_WS}*${appOtherPid}${PATTERN_WS}"'/{
- # strip PID column
- s/^.'"${PATTERN_WS}${PATTERN_WS}*${appOtherPid}${PATTERN_WS}${PATTERN_WS}"'*//
- # strip PPID column
- s/^[1-9][0-9]*'"${PATTERN_WS}${PATTERN_WS}"'*//
- # strip PGID column
- s/^[1-9][0-9]*'"${PATTERN_WS}${PATTERN_WS}"'*//
- # strip everything after WINPID column
- s/'"${PATTERN_WS}"'.*//
- p
- q
- }
- '`
- echo "INFO: Cygwin pid=$appOtherPid maps to Windows pid=$appJavaPid"
- else
- # show PID, PPID and COMM columns only
- appJavaPid=`ps -o pid,ppid,comm \
- | sed -n '
- # see if appOtherPid is in either PID or PPID columns
- /'"${PATTERN_WS}${appOtherPid}${PATTERN_WS}"'/{
- # see if this is a java command
- /java'"${PATTERN_EOL}"'/{
- # strip leading white space
- s/^'"${PATTERN_WS}${PATTERN_WS}"'*//
- # strip everything after the first word
- s/'"${PATTERN_WS}"'.*//
- # print the pid and we are done
- p
- q
- }
- }
- '`
- echo "INFO: MKS shell pid=$appOtherPid; Java pid=$appJavaPid"
- fi
-
- if [ -z "$appJavaPid" ]; then
- echo "ERROR: could not find app's Java pid." >&2
- killApplication
- exit 2
- fi
- appPidList="$appOtherPid $appJavaPid"
- fi
-
- echo "INFO: $1 is process $appJavaPid"
- echo "INFO: $1 output is in $appOutput"
-}
-
-
-# Stops a simple application by invoking ShutdownSimpleApplication
-# class with a specific port-file, usage:
-# stopApplication port-file
-#
-# Note: When this function returns, the SimpleApplication (or a subclass)
-# may still be running because the application has not yet reached the
-# shutdown check.
-#
-stopApplication()
-{
- $JAVA -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" ShutdownSimpleApplication $1
-}
-
-
-# Wait for a simple application to stop running.
-#
-waitForApplication() {
- if [ $isWindows = false ]; then
- # non-Windows is easy; just one process
- echo "INFO: waiting for $appJavaPid"
- set +e
- wait "$appJavaPid"
- set -e
-
- elif $isCygwin; then
- # Cygwin pid and not the Windows pid
- echo "INFO: waiting for $appOtherPid"
- set +e
- wait "$appOtherPid"
- set -e
-
- else # implied isMKS
- # MKS has intermediate shell and Java process
- echo "INFO: waiting for $appJavaPid"
-
- # appJavaPid can be empty if pid search in startApplication() failed
- if [ -n "$appJavaPid" ]; then
- # only need to wait for the Java process
- set +e
- wait "$appJavaPid"
- set -e
- fi
- fi
-}
-
-
-# Kills a simple application by sending a SIGTERM to the appropriate
-# process(es); on Windows SIGQUIT (-9) is used.
-#
-killApplication()
-{
- if [ $isWindows = false ]; then
- # non-Windows is easy; just one process
- echo "INFO: killing $appJavaPid"
- set +e
- kill -TERM "$appJavaPid" # try a polite SIGTERM first
- sleep 2
- # send SIGQUIT (-9) just in case SIGTERM didn't do it
- # but don't show any complaints
- kill -QUIT "$appJavaPid" > /dev/null 2>&1
- wait "$appJavaPid"
- set -e
-
- elif $isCygwin; then
- # Cygwin pid and not the Windows pid
- echo "INFO: killing $appOtherPid"
- set +e
- kill -9 "$appOtherPid"
- wait "$appOtherPid"
- set -e
-
- else # implied isMKS
- # MKS has intermediate shell and Java process
- echo "INFO: killing $appPidList"
- set +e
- kill -9 $appPidList
- set -e
-
- # appJavaPid can be empty if pid search in startApplication() failed
- if [ -n "$appJavaPid" ]; then
- # only need to wait for the Java process
- set +e
- wait "$appJavaPid"
- set -e
- fi
- fi
-}