jdk/test/sun/tools/common/ApplicationSetup.sh
author ohair
Mon, 04 Jan 2010 15:56:42 -0800
changeset 4663 dfea6ffdb0dc
parent 2 90ce3da70b43
child 5506 202f599c92aa
permissions -rw-r--r--
6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools Reviewed-by: tbell, alanb
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
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
# Copyright 2005 Sun Microsystems, Inc.  All Rights Reserved.
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
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    21
# Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    22
# CA 95054 USA or visit www.sun.com if you need additional information or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    23
# have any questions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
# Support function to start and stop a given application
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
# Starts a given application as background process, usage:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
#   startApplication <class> [args...]
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
# Waits for application to print something to indicate it is running
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
# (and initialized). Output is directed to ${TESTCLASSES}/Application.out.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
# Sets $pid to be the process-id of the application.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
startApplication()
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
  OUTPUTFILE=${TESTCLASSES}/Application.out
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
  ${JAVA} $1 $2 $3 $4 $5 $6 > ${OUTPUTFILE} &
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
  pid="$!"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
                                                                                                     
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
  # MKS creates an intermediate shell to launch ${JAVA} so
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
  # ${pid} is not the actual pid. We have put in a small sleep
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
  # to give the intermediate shell process time to launch the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
  # "java" process.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
  if [ "$OS" = "Windows" ]; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
    sleep 2
4663
dfea6ffdb0dc 6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools
ohair
parents: 2
diff changeset
    48
    if [ "${isCygwin}" = "true" ] ; then
dfea6ffdb0dc 6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools
ohair
parents: 2
diff changeset
    49
      realpid=`ps -p ${pid} | tail -1 | awk '{print $4;}'`
dfea6ffdb0dc 6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools
ohair
parents: 2
diff changeset
    50
    else
dfea6ffdb0dc 6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools
ohair
parents: 2
diff changeset
    51
      realpid=`ps -o pid,ppid,comm|grep ${pid}|grep "java"|cut -c1-6`
dfea6ffdb0dc 6911104: Tests do not work with CYGWIN: tools, sun/tools, and com/sun/tools
ohair
parents: 2
diff changeset
    52
    fi
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
    pid=${realpid}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
  fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
                                                                                                     
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
  echo "Waiting for Application to initialize..."
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
  attempts=0
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
  while true; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
    sleep 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
    out=`tail -1 ${OUTPUTFILE}`
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
    if [ ! -z "$out" ]; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
      break
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
    attempts=`expr $attempts + 1`
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
    echo "Waiting $attempts second(s) ..."
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
  done
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
  echo "Application is process $pid"
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
# Stops an application by invoking the given class and argument, usage:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
#   stopApplication <class> <argument>
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
stopApplication()
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
  $JAVA -classpath "${TESTCLASSES}" $1 $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77