jdk/test/sun/tools/common/ApplicationSetup.sh
author jjg
Tue, 28 Aug 2012 10:31:27 +0100
changeset 13594 63741c133cf4
parent 10604 3f7bd2de5067
permissions -rw-r--r--
7194035: update tests for upcoming changes for jtreg Reviewed-by: alanb, sspitsyn
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
#!/bin/sh
90ce3da70b43 Initial load
duke
parents:
diff changeset
     2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
#
13594
63741c133cf4 7194035: update tests for upcoming changes for jtreg
jjg
parents: 10604
diff changeset
     4
# Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
     7
# This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
# under the terms of the GNU General Public License version 2 only, as
90ce3da70b43 Initial load
duke
parents:
diff changeset
     9
# published by the Free Software Foundation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
# This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
# version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
# accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
# You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
# 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
#
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4663
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4663
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4663
diff changeset
    23
# questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    27
# Support functions to start, stop, wait for or kill a given SimpleApplication
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    29
# Starts a given app as background process, usage:
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    30
#   startApplication <class> port-file [args...]
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    31
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    32
# The following variables are set:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
#
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    34
# appJavaPid  - application's Java pid
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    35
# appOtherPid - pid associated with the app other than appJavaPid
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    36
# appPidList  - all pids associated with the app
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    37
# appOutput   - file containing stdout and stderr from the app
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    38
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    39
# Waits for at least one line of output from the app to indicate
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    40
# that it is up and running.
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    41
#
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
startApplication()
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
{
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    44
  appOutput="${TESTCLASSES}/Application.out"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    45
13594
63741c133cf4 7194035: update tests for upcoming changes for jtreg
jjg
parents: 10604
diff changeset
    46
  ${JAVA} -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" "$@" > "$appOutput" 2>&1 &
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    47
  appJavaPid="$!"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    48
  appOtherPid=
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    49
  appPidList="$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    50
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    51
  echo "INFO: waiting for $1 to initialize..."
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    52
  _cnt=0
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
  while true; do
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    54
    # if the app doesn't start then the JavaTest/JTREG timeout will
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    55
    # kick in so this isn't really a endless loop
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
    sleep 1
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    57
    out=`tail -1 "$appOutput"`
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    58
    if [ -n "$out" ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    59
      # we got some output from the app so it's running
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
      break
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
    fi
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    62
    _cnt=`expr $_cnt + 1`
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    63
    echo "INFO: waited $_cnt second(s) ..."
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
  done
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    65
  unset _cnt
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    67
  if $isWindows; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    68
    # Windows requires special handling
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    69
    appOtherPid="$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    70
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    71
    if $isCygwin; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    72
      appJavaPid=`ps -p "$appOtherPid" \
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    73
        | sed -n '
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    74
          # See if $appOtherPid is in PID column; there are sometimes
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    75
          # non-blanks in column 1 (I and S observed so far)
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    76
          /^.'"${PATTERN_WS}${PATTERN_WS}*${appOtherPid}${PATTERN_WS}"'/{
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    77
            # strip PID column
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    78
            s/^.'"${PATTERN_WS}${PATTERN_WS}*${appOtherPid}${PATTERN_WS}${PATTERN_WS}"'*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    79
            # strip PPID column
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    80
            s/^[1-9][0-9]*'"${PATTERN_WS}${PATTERN_WS}"'*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    81
            # strip PGID column
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    82
            s/^[1-9][0-9]*'"${PATTERN_WS}${PATTERN_WS}"'*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    83
            # strip everything after WINPID column
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    84
            s/'"${PATTERN_WS}"'.*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    85
            p
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    86
            q
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    87
          }
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    88
        '`
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    89
      echo "INFO: Cygwin pid=$appOtherPid maps to Windows pid=$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    90
    else
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    91
      # show PID, PPID and COMM columns only
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    92
      appJavaPid=`ps -o pid,ppid,comm \
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    93
        | sed -n '
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    94
          # see if appOtherPid is in either PID or PPID columns
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    95
          /'"${PATTERN_WS}${appOtherPid}${PATTERN_WS}"'/{
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    96
            # see if this is a java command
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    97
            /java'"${PATTERN_EOL}"'/{
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    98
              # strip leading white space
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
    99
              s/^'"${PATTERN_WS}${PATTERN_WS}"'*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   100
              # strip everything after the first word
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   101
              s/'"${PATTERN_WS}"'.*//
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   102
              # print the pid and we are done
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   103
              p
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   104
              q
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   105
            }
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   106
          }
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   107
        '`
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   108
      echo "INFO: MKS shell pid=$appOtherPid; Java pid=$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   109
    fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   110
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   111
    if [ -z "$appJavaPid" ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   112
      echo "ERROR: could not find app's Java pid." >&2
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   113
      killApplication
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   114
      exit 2
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   115
    fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   116
    appPidList="$appOtherPid $appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   117
  fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   118
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   119
  echo "INFO: $1 is process $appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   120
  echo "INFO: $1 output is in $appOutput"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   121
}
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   122
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   123
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   124
# Stops a simple application by invoking ShutdownSimpleApplication
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   125
# class with a specific port-file, usage:
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   126
#   stopApplication port-file
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   127
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   128
# Note: When this function returns, the SimpleApplication (or a subclass)
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   129
# may still be running because the application has not yet reached the
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   130
# shutdown check.
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   131
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   132
stopApplication()
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   133
{
13594
63741c133cf4 7194035: update tests for upcoming changes for jtreg
jjg
parents: 10604
diff changeset
   134
  $JAVA -XX:+UsePerfData -classpath "${TESTCLASSPATH:-${TESTCLASSES}}" ShutdownSimpleApplication $1
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   137
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   138
# Wait for a simple application to stop running.
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   139
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   140
waitForApplication() {
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   141
  if [ $isWindows = false ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   142
    # non-Windows is easy; just one process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   143
    echo "INFO: waiting for $appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   144
    set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   145
    wait "$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   146
    set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   147
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   148
  elif $isCygwin; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   149
    # Cygwin pid and not the Windows pid
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   150
    echo "INFO: waiting for $appOtherPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   151
    set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   152
    wait "$appOtherPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   153
    set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   154
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   155
  else # implied isMKS
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   156
    # MKS has intermediate shell and Java process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   157
    echo "INFO: waiting for $appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   158
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   159
    # appJavaPid can be empty if pid search in startApplication() failed
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   160
    if [ -n "$appJavaPid" ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   161
      # only need to wait for the Java process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   162
      set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   163
      wait "$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   164
      set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   165
    fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   166
  fi
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
6120
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   169
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   170
# Kills a simple application by sending a SIGTERM to the appropriate
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   171
# process(es); on Windows SIGQUIT (-9) is used.
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   172
#
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   173
killApplication()
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   174
{
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   175
  if [ $isWindows = false ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   176
    # non-Windows is easy; just one process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   177
    echo "INFO: killing $appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   178
    set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   179
    kill -TERM "$appJavaPid"  # try a polite SIGTERM first
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   180
    sleep 2
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   181
    # send SIGQUIT (-9) just in case SIGTERM didn't do it
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   182
    # but don't show any complaints
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   183
    kill -QUIT "$appJavaPid" > /dev/null 2>&1
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   184
    wait "$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   185
    set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   186
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   187
  elif $isCygwin; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   188
    # Cygwin pid and not the Windows pid
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   189
    echo "INFO: killing $appOtherPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   190
    set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   191
    kill -9 "$appOtherPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   192
    wait "$appOtherPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   193
    set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   194
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   195
  else # implied isMKS
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   196
    # MKS has intermediate shell and Java process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   197
    echo "INFO: killing $appPidList"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   198
    set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   199
    kill -9 $appPidList
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   200
    set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   201
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   202
    # appJavaPid can be empty if pid search in startApplication() failed
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   203
    if [ -n "$appJavaPid" ]; then
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   204
      # only need to wait for the Java process
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   205
      set +e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   206
      wait "$appJavaPid"
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   207
      set -e
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   208
    fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   209
  fi
4979c5d548f8 6964018: 3/4 AnonLoggerWeakRefLeak and LoggerWeakRefLeak can fail in JPRT
dcubed
parents: 5506
diff changeset
   210
}