jdk/test/com/sun/jdi/ShellScaffold.sh
author amenkov
Tue, 14 Sep 2010 12:38:49 +0400
changeset 6505 b1faae5e44a3
parent 6119 296bbd35a3f4
child 10151 7a81b6428d3b
permissions -rw-r--r--
6944033: RFE: add PCM_FLOAT support Reviewed-by: dav
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
#
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
     4
# Copyright (c) 2002, 2010, 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: 4325
diff changeset
    21
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4325
diff changeset
    22
# or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 4325
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
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
# jtreg runs this in a scratch dir.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    29
# It (and runregress -no) sets these env vars:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
#    TESTSRC:      The dir that contains this file
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
#    TESTCLASSES:  Where .class files are compiled to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
#    TESTJAVA:     The jdk to run
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
# This is a 'library' script that is included by
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
# shell script test cases that want to run a .java file as the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
# and use jdb as the debugger.  This file contains
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
# several functions that support such a test.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
# The caller script can also set these shell vars before
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
# including this file:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    41
#    pkg=<package name>       To use a package, define it here and put
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
#                                package $pkg
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
#                             in your java file
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
#    classname=<classnam>     Omit this to use the default class name, 'shtest'.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
#    compileOptions=<string>  compile options for at least the first compile, 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
#                             eg, compileOptions=-g
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
#    compileOptions2=<string> Options for the 2nd, ..., compile. compileOptions1
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
#                             is used if this is not set.  To use no compile
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
#                             options for the 2nd ... compiles, do 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
#                             compileOptions2=none
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
#    mode=-Xcomp or mode=-Xint to run in these modes.  These should not
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
#                              really be used since the tests are normally
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
#                              run in both modes.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
#    javacCmd=path-to-javac    to use a non-standard javac for compiling
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
#    compileOptions=<string>   Options to pass to javac
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
# See RedefineException.sh as an example of a caller script.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
# To do RedefineClasses operations, embed @1 tags in the .java
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
# file to tell this script how to modify it to produce the 2nd
90ce3da70b43 Initial load
duke
parents:
diff changeset
    63
# version of the .class file to be used in the redefine operation.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    64
# Here are examples of each editting tag and what change
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
# it causes in the new file.  Note that blanks are not preserved
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
# in these editing operations.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
# @1 uncomment
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
#  orig:   // @1 uncomment   gus = 89;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
#  new:         gus = 89;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
# @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
#  orig:   gus = 89      // @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
#  new: // gus = 89      // @1 commentout
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
# @1 delete
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
#  orig:  gus = 89      // @1 delete
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
#  new:   entire line deleted
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
# @1 newline
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
#  orig:  gus = 89;     // @1 newline gus++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
#  new:   gus = 89;     //
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
#         gus++;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
# @1 replace
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
#  orig:  gus = 89;     // @1 replace gus = 90;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
#  new:   gus = 90;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
# The only other tag supported is @1 breakpoint.  The setbkpts function
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
# sets bkpts at all lines that contain this string.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
# 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
# Currently, all these tags are start with @1.  It is envisioned that this script
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
# could be ehanced to allow multiple cycles of redefines by allowing
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
# @2, @3, ... tags.  IE, processing the @i tags in the ith version of
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
# the file will produce the i+1th version of the file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
# 
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
# There are problem with jtreg leaving behind orphan java and jdb processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
# when this script is run.  Sometimes, on some platforms, it just doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
# get them all killed properly.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
# The solution is to put a magic word in the cmd lines of background java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
# and jdb processes this script launches.  We can then do the right kind
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
# of ps cmds to find all these processes and kill them.  We do this by
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
# trapping the completion of this script.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
# An associated problem is that our trap handler (cleanup) doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
# always get called when jtreg terminates a test.  This can leave tests
90ce3da70b43 Initial load
duke
parents:
diff changeset
   107
# hanging but following tests should run ok because each test uses
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
# unique names for the port and temp files (based on the PID returned
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
# by $$).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
# mks 6.2a on win 98 presents two problems:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
#   $! returns the PID as a negative number whereas ps returns
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
#      it in the form 0xFFF....  This means our trick of 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
#      of using $! to get the PIDs of the jdb and debuggee processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
#      doesn't work.  This will cause some error cases to fail
90ce3da70b43 Initial load
duke
parents:
diff changeset
   116
#      with a jtreg timeout instead of failing more gracefully.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
#   There is no form of the ps command that will show the whole
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
#   cmd line.  Thus, the magic keyword trick doesn't work.  We
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
#   resort to just killing java.exe and jdb.exes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
# pid usage:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
#   debuggeepid: used in jdb process to detect if debuggee has died.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
#                - waitForDebuggeeMsg: fail if debuggee is gone
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
#
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
#   jdbpid:   dofail: used to detect if in main process or jdb process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
#             waitforfinish: quit if the jdb process is gone
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
#killcmd=/bin/kill
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
killcmd=kill
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
# This can be increased if timing seems to be an issue.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   133
sleep_seconds=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   134
90ce3da70b43 Initial load
duke
parents:
diff changeset
   135
echo "ShellScaffold.sh: Version" >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
topPid=$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
# Be careful to echo to >& in these general functions.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
# If they are called from the functions that are sending
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
# cmds to jdb, then stdout is redirected to jdb.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
cleanup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
    if [ -r "$failFile" ] ; then
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   144
        ls -l "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   145
        echo "<cleanup:_begin_failFile_contents>" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   146
        cat "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   147
        echo "<cleanup:_end_failFile_contents>" >&2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
    # Kill all processes that have our special
90ce3da70b43 Initial load
duke
parents:
diff changeset
   151
    # keyword in their cmd line.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   152
    killOrphans cleanup $jdbKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
    killOrphans cleanup $debuggeeKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
# Kill all processes with $2 in their cmd lines
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
# Print a msg about this using $1 as the prefix
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
killOrphans()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
    str=$2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
    if [ -z "$isCygwin" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   163
        toBeKilled=`$psCmd | $grep -v grep | $grep -i $str | awk '{print $1}' | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
        # The cygwin ps command doesn't show the options passed to a cmd.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
        # We will use jps to get the win PID of the command, and
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
        # then use ps to find the cygwin pid to be killed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   168
        # The form of a ps output line is
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
        # ^   ddddd    dddd    dddd    dddd.*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
        # where the 4th digits are the win pid and the first 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
        # are the cygwin pid.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
        if [ -r "$jdk/bin/$jstack" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
            winPid=`$jdk/bin/jps -v | $grep -i $str | sed -e 's@ .*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
            if [ ! -z "$winPid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
                # Here is a way to kill using a win cmd and the win PID.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
                #echo "$1: taskkill /F $winPid"  >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
                #taskkill /F /PID $winPid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
                toBeKilled=`$psCmd | $grep -v grep | \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
                            $grep '^ +[0-9]+ +[0-9]+ +[0-9]+ +'"$winPid" |\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
                            awk '{print $1}' | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
            # Well, too bad - we can't find what to kill.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
            toBeKilled=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
    if [ ! -z "$toBeKilled" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
        echo "$1: kill -9 $toBeKilled"  >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
        kill -9 $toBeKilled
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
}    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
findPid()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
    # Return 0 if $1 is the pid of a running process.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
    if [ -z "$isWin98" ] ; then
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   199
        if [ "$osname" = SunOS ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   200
            # Solaris and OpenSolaris use pgrep and not ps in psCmd
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   201
            findPidCmd="$psCmd"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   202
        else
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   203
            #   Never use plain 'ps', which requires a "controlling terminal"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   204
            #     and will fail  with a "ps: no controlling terminal" error.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   205
            #     Running under 'rsh' will cause this ps error.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   206
            # cygwin ps puts an I in column 1 for some reason.
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   207
            findPidCmd="$psCmd -e"
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   208
        fi
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   209
	$findPidCmd | $grep '^I* *'"$1 " > $devnull 2>&1
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   210
        return $?
90ce3da70b43 Initial load
duke
parents:
diff changeset
   211
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   212
90ce3da70b43 Initial load
duke
parents:
diff changeset
   213
    # mks 6.2a on win98 has $! getting a negative
90ce3da70b43 Initial load
duke
parents:
diff changeset
   214
    # number and in ps, it shows up as 0x...
90ce3da70b43 Initial load
duke
parents:
diff changeset
   215
    # Thus, we can't search in ps output for 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   216
    # PIDs gotten via $!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   217
    # We don't know if it is running or not - assume it is.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   218
    # We don't really care about win98 anymore.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   219
    return 0
90ce3da70b43 Initial load
duke
parents:
diff changeset
   220
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   221
90ce3da70b43 Initial load
duke
parents:
diff changeset
   222
setup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   223
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   224
    failed=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   225
    # This is used to tag each java and jdb cmd we issue so
90ce3da70b43 Initial load
duke
parents:
diff changeset
   226
    # we can kill them at the end of the run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   227
90ce3da70b43 Initial load
duke
parents:
diff changeset
   228
    orphanKeyword=HANGINGJAVA-$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   229
    debuggeeKeyword=${orphanKeyword}_DEB
90ce3da70b43 Initial load
duke
parents:
diff changeset
   230
    jdbKeyword=${orphanKeyword}_JDB
90ce3da70b43 Initial load
duke
parents:
diff changeset
   231
    baseArgs=-D${debuggeeKeyword}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
    if [ -z "$TESTCLASSES" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   233
        echo "--Warning:  TESTCLASSES is not defined; using TESTCLASSES=."
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
        echo "  You should run: "
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
        echo "    runregress $0 -no"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
        echo "  or"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
        echo "    (setenv TESTCLASSES .; $0 $*)"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
        TESTCLASSES=.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
    if [ ! -z "$TESTJAVA" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
        jdk="$TESTJAVA"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   242
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   243
        echo "--Error: TESTJAVA must be defined as the pathname of a jdk to test."
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
    ulimitCmd=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
    osname=`uname -s`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
    isWin98=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
    isCygwin=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   251
    case "$osname" in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
       Windows* | CYGWIN*)	   
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
	 if [ "$osname" = Windows_98 -o "$osname" = Windows_ME ]; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
             isWin98=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
             debuggeeKeyword='we_cant_kill_debuggees_on_win98'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
             jdbKeyword='jdb\.exe'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
	 fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   258
90ce3da70b43 Initial load
duke
parents:
diff changeset
   259
         case "$osname" in
90ce3da70b43 Initial load
duke
parents:
diff changeset
   260
           CYGWIN*)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   261
             isCygwin=1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   262
             ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   263
         esac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   264
90ce3da70b43 Initial load
duke
parents:
diff changeset
   265
         if [ -r $jdk/bin/dt_shmem.dll -o -r $jdk/jre/bin/dt_shmem.dll ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   266
            transport=dt_shmem
90ce3da70b43 Initial load
duke
parents:
diff changeset
   267
            address=kkkk.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   268
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   269
            transport=dt_socket
90ce3da70b43 Initial load
duke
parents:
diff changeset
   270
            address=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   271
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   272
         devnull=NUL
90ce3da70b43 Initial load
duke
parents:
diff changeset
   273
         baseArgs="$baseArgs -XX:-ShowMessageBoxOnError"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   274
         # jtreg puts \\s in TESTCLASSES and some uses, eg. echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
   275
         # treat them as control chars on mks (eg \t is tab)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   276
         # Oops; windows mks really seems to want this cat line
90ce3da70b43 Initial load
duke
parents:
diff changeset
   277
         # to start in column 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   278
         if [ -w "$SystemRoot" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   279
            tmpFile=$SystemRoot/tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   280
         elif [ -w "$SYSTEMROOT" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   281
            tmpFile=$SYSTEMROOT/tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   282
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   283
            tmpFile=tmp.$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   284
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   285
cat <<EOF >$tmpFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   286
$TESTCLASSES
90ce3da70b43 Initial load
duke
parents:
diff changeset
   287
EOF
90ce3da70b43 Initial load
duke
parents:
diff changeset
   288
         TESTCLASSES=`cat $tmpFile | sed -e 's@\\\\@/@g'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   289
         rm -f $tmpFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   290
         # on mks
90ce3da70b43 Initial load
duke
parents:
diff changeset
   291
         grep=egrep
90ce3da70b43 Initial load
duke
parents:
diff changeset
   292
         psCmd=ps
90ce3da70b43 Initial load
duke
parents:
diff changeset
   293
         jstack=jstack.exe
90ce3da70b43 Initial load
duke
parents:
diff changeset
   294
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   295
       SunOS | Linux)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   296
         transport=dt_socket
90ce3da70b43 Initial load
duke
parents:
diff changeset
   297
         address=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   298
         devnull=/dev/null
90ce3da70b43 Initial load
duke
parents:
diff changeset
   299
         grep=egrep
90ce3da70b43 Initial load
duke
parents:
diff changeset
   300
         jstack=jstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   301
         # On linux, core files take a long time, and can leave
90ce3da70b43 Initial load
duke
parents:
diff changeset
   302
         # zombie processes
90ce3da70b43 Initial load
duke
parents:
diff changeset
   303
         if [ "$osname" = SunOS ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   304
             # Experiments show Solaris '/usr/ucb/ps -axwww' and
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   305
             # '/usr/bin/pgrep -f -l' provide the same small amount of the
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   306
             # argv string (PRARGSZ=80 in /usr/include/sys/procfs.h)
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   307
             #  1) This seems to have been working OK in ShellScaffold.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   308
             #  2) OpenSolaris does not provide /usr/ucb/ps, so use pgrep
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   309
             #     instead
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   310
             # The alternative would be to use /usr/bin/pargs [pid] to get
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   311
             # all the args for a process, splice them back into one
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   312
             # long string, then grep.
4153
c019b5df1bf5 6893426: ShellScaffold.sh fails on Solaris 10 update releases: /usr/bin/id: illegal option -- u
tbell
parents: 3954
diff changeset
   313
             UU=`/usr/xpg4/bin/id -u -n`
3954
19ed60dbd0b7 6787605: OpenSolaris doesn't have /usr/ucb/ps so ShellScaffold fails
tbell
parents: 2
diff changeset
   314
             psCmd="pgrep -f -l -U $UU"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   315
         else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   316
             ulimit -c 0
90ce3da70b43 Initial load
duke
parents:
diff changeset
   317
             # See bug 6238593.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   318
             psCmd="ps axwww"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   319
         fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   320
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   321
       *)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   322
         echo "--Error:  Unknown result from 'uname -s':  $osname"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   323
         exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   324
         ;;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   325
    esac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   326
90ce3da70b43 Initial load
duke
parents:
diff changeset
   327
90ce3da70b43 Initial load
duke
parents:
diff changeset
   328
    tmpFileDir=$TESTCLASSES/aa$$
90ce3da70b43 Initial load
duke
parents:
diff changeset
   329
    TESTCLASSES=$tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   330
90ce3da70b43 Initial load
duke
parents:
diff changeset
   331
    mkdir -p $tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   332
90ce3da70b43 Initial load
duke
parents:
diff changeset
   333
    # This must not contain 'jdb' or it shows up
90ce3da70b43 Initial load
duke
parents:
diff changeset
   334
    # in grep of ps output for some platforms
90ce3da70b43 Initial load
duke
parents:
diff changeset
   335
    jdbOutFile=$tmpFileDir/jxdbOutput.txt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   336
    rm -f $jdbOutFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   337
    touch $jdbOutFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   338
90ce3da70b43 Initial load
duke
parents:
diff changeset
   339
    debuggeeOutFile=$tmpFileDir/debuggeeOutput.txt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   340
    failFile=$tmpFileDir/testFailed
90ce3da70b43 Initial load
duke
parents:
diff changeset
   341
    debuggeepidFile=$tmpFileDir/debuggeepid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   342
    rm -f $failFile $debuggeepidFile
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   343
    if [ -f "$failFile" ]; then
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   344
        echo "ERROR: unable to delete existing failFile:" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   345
        ls -l "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   346
    fi
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   347
90ce3da70b43 Initial load
duke
parents:
diff changeset
   348
    if [ -z "$pkg" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   349
        pkgSlash=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   350
        pkgDot=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   351
        redefineSubdir=.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   352
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   353
        pkgSlash=$pkg/
90ce3da70b43 Initial load
duke
parents:
diff changeset
   354
        pkgDot=$pkg.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   355
        redefineSubdir=$pkgSlash
90ce3da70b43 Initial load
duke
parents:
diff changeset
   356
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   357
    if [ -z "$classname" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   358
        classname=shtest
90ce3da70b43 Initial load
duke
parents:
diff changeset
   359
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   360
90ce3da70b43 Initial load
duke
parents:
diff changeset
   361
    if [ -z "$java" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   362
        java=java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   363
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   364
90ce3da70b43 Initial load
duke
parents:
diff changeset
   365
    if [ -z "$jdb" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   366
        jdb=$jdk/bin/jdb
90ce3da70b43 Initial load
duke
parents:
diff changeset
   367
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   368
90ce3da70b43 Initial load
duke
parents:
diff changeset
   369
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   370
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   371
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   372
####################################################3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   373
#  sol:  this gets all processes killed but 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   374
#        no jstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   375
#  linux same as above
90ce3da70b43 Initial load
duke
parents:
diff changeset
   376
#  win mks:  No dice; processes still running
90ce3da70b43 Initial load
duke
parents:
diff changeset
   377
    trap "cleanup" 0 1 2 3 4 6 9 10 15
90ce3da70b43 Initial load
duke
parents:
diff changeset
   378
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   379
    jdbOptions="$jdbOptions -J-D${jdbKeyword}"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   380
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   381
90ce3da70b43 Initial load
duke
parents:
diff changeset
   382
docompile()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   383
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   384
    if [ "$compile" = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   385
        return
90ce3da70b43 Initial load
duke
parents:
diff changeset
   386
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   387
    saveDir=`pwd`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   388
    cd $tmpFileDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   389
    rm -f *.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   390
    createJavaFile $classname
90ce3da70b43 Initial load
duke
parents:
diff changeset
   391
90ce3da70b43 Initial load
duke
parents:
diff changeset
   392
    # Compile two versions of the file, the original and with the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   393
    # indicated lines modified.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   394
    cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   395
    echo "--Compiling first version of `pwd`/$classname.java with options: $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   396
    # Result is in $pkgSlash$classname.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   397
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   398
    if [ -z "$javacCmd" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   399
        javacCmd=$jdk/bin/javac
90ce3da70b43 Initial load
duke
parents:
diff changeset
   400
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   401
90ce3da70b43 Initial load
duke
parents:
diff changeset
   402
    echo "compiling " `ls *.java`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   403
    $javacCmd $compileOptions -d . *.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   404
    if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   405
       dofail "First compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   406
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   407
    if [ -r vers1 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   408
        rm -rf vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   409
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   410
    mkdir -p vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   411
    mv *.class vers1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   412
    if [ ! -z "$compileOptions2" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   413
        if [ "$compileOptions2" = none ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   414
            compileOptions=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   415
        else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   416
            compileOptions=$compileOptions2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   417
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   418
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   419
90ce3da70b43 Initial load
duke
parents:
diff changeset
   420
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   421
        # Not really a loop; just a way to avoid goto
90ce3da70b43 Initial load
duke
parents:
diff changeset
   422
        # by using breaks
90ce3da70b43 Initial load
duke
parents:
diff changeset
   423
        sed -e '/@1 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   424
            -e 's! *// *@1 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   425
            -e 's!\(.*@1 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   426
            -e 's/@1 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   427
                 /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   428
            -e 's/.*@1 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   429
            $classname.java.1  >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   430
90ce3da70b43 Initial load
duke
parents:
diff changeset
   431
        cmp -s $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   432
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   433
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   434
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   435
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   436
        echo "--Compiling second version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   437
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   438
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   439
            dofail "Second compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   440
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   441
        if [ -r vers2 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   442
            rm -rf vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   443
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   444
        mkdir -p vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   445
        mv *.class vers2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   446
        mv $classname.java $classname.java.2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   447
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   448
90ce3da70b43 Initial load
duke
parents:
diff changeset
   449
        ###### Do the same for @2, and @3 allowing 3 redefines to occur.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   450
        ###### If I had more time to write sed cmds, I would do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   451
        ###### this in a loop.  But, I don't think we will ever need
90ce3da70b43 Initial load
duke
parents:
diff changeset
   452
        ###### more than 3 redefines.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   453
        sed -e '/@2 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   454
            -e 's! *// *@2 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   455
            -e 's!\(.*@2 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   456
            -e 's/@2 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   457
                 /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   458
            -e 's/.*@2 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   459
            $classname.java.2 >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   460
        cmp -s $classname.java.2 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   461
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   462
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   463
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   464
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   465
        echo "--Compiling third version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   466
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   467
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   468
            dofail "Third compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   469
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   470
        if [ -r vers3 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   471
            rm -rf vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   472
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   473
        mkdir -p vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   474
        mv *.class vers3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   475
        mv $classname.java $classname.java.3
90ce3da70b43 Initial load
duke
parents:
diff changeset
   476
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   477
90ce3da70b43 Initial load
duke
parents:
diff changeset
   478
        ########
90ce3da70b43 Initial load
duke
parents:
diff changeset
   479
        sed -e '/@3 *delete/ d' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   480
            -e 's! *// *@3 *uncomment!     !' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   481
            -e 's!\(.*@3 *commentout\)!//\1!' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   482
            -e 's/@3 *newline/\
90ce3da70b43 Initial load
duke
parents:
diff changeset
   483
                    /' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   484
            -e 's/.*@3 *replace//' \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   485
            $classname.java.3 >$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   486
        cmp -s $classname.java.3 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   487
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   488
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   489
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   490
        echo 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   491
        echo "--Compiling fourth version of `pwd`/$classname.java with $compileOptions"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   492
        $javacCmd $compileOptions -d . $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   493
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   494
            dofail "fourth compile failed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   495
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   496
        if [ -r vers4 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   497
            rm -rf vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   498
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   499
        mkdir -p vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   500
        mv *.class vers4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   501
        mv $classname.java $classname.java.4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   502
        cp $classname.java.1 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   503
        break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   504
        fgrep @4 $classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   505
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   506
            echo "--Error: @4 and above are not yet allowed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   507
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   508
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   509
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   510
90ce3da70b43 Initial load
duke
parents:
diff changeset
   511
    cp vers1/* $redefineSubdir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   512
    cd $saveDir
90ce3da70b43 Initial load
duke
parents:
diff changeset
   513
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   514
90ce3da70b43 Initial load
duke
parents:
diff changeset
   515
# Send a cmd to jdb and wait for the jdb prompt to appear.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   516
# We don't want to allow > as a prompt because if the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   517
# runs for awhile after a command, jdb will show this prompt
90ce3da70b43 Initial load
duke
parents:
diff changeset
   518
# but is not really ready to accept another command for the
90ce3da70b43 Initial load
duke
parents:
diff changeset
   519
# debuggee - ie, a cont in this state will be ignored.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   520
# If it ever becomes necessary to send a jdb command before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   521
# a  main[10] form of prompt appears, then this
90ce3da70b43 Initial load
duke
parents:
diff changeset
   522
# code will have to be modified.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   523
cmd() 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   524
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   525
    if [ $1 = quit -o -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   526
        # if jdb got a cont cmd that caused the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   527
        # to run to completion, jdb can be gone before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   528
        # we get here.
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   529
        echo "--Sending cmd: quit" >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   530
        echo quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   531
        # See 6562090. Maybe there is a way that the exit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   532
        # can cause jdb to not get the quit.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   533
        sleep 5
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   534
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   535
        # The exit code value here doesn't matter since this function
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   536
        # is called as part of a pipeline and it is not the last command
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   537
        # in the pipeline.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   538
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   539
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   540
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   541
    # $jdbOutFile always exists here and is non empty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   542
    # because after starting jdb, we waited 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   543
    # for the prompt.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   544
    fileSize=`wc -c $jdbOutFile | awk '{ print $1 }'`
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   545
    echo "--Sending cmd: " $* >&2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   546
90ce3da70b43 Initial load
duke
parents:
diff changeset
   547
    # jjh: We have a few intermittent failures here.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   548
    # It is as if every so often, jdb doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   549
    # get the first cmd that is sent to it here.  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   550
    # (actually, I have seen it get the first cmd ok,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   551
    # but then not get some subsequent cmd).
90ce3da70b43 Initial load
duke
parents:
diff changeset
   552
    # It seems like jdb really doesn't get the cmd; jdb's response
90ce3da70b43 Initial load
duke
parents:
diff changeset
   553
    # does not appear in the jxdboutput file. It contains:
90ce3da70b43 Initial load
duke
parents:
diff changeset
   554
    # main[1] 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   555
    # The application has been disconnected
90ce3da70b43 Initial load
duke
parents:
diff changeset
   556
90ce3da70b43 Initial load
duke
parents:
diff changeset
   557
    # Is it possible
90ce3da70b43 Initial load
duke
parents:
diff changeset
   558
    # that jdb got the cmd ok, but its response didn't make
90ce3da70b43 Initial load
duke
parents:
diff changeset
   559
    # it to the jxdboutput file?  If so, why did 'The application
90ce3da70b43 Initial load
duke
parents:
diff changeset
   560
    # has been disconnected' make it?
90ce3da70b43 Initial load
duke
parents:
diff changeset
   561
90ce3da70b43 Initial load
duke
parents:
diff changeset
   562
    # This causes the following loop to timeout and the test to fail.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   563
    # The above echo works because the cmd (stop at ...)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   564
    # is in the System.err shown in the .jtr file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   565
    # Also, the cmd is shown in the 'jdb never responded ...'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   566
    # msg output below after the timeout.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   567
    # And, we know jdb is started because the main[1] output is in the .jtr
90ce3da70b43 Initial load
duke
parents:
diff changeset
   568
    # file.  And, we wouldn't have gotten here if mydojdbcmds hadn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   569
    # seen the ].  
90ce3da70b43 Initial load
duke
parents:
diff changeset
   570
    echo $*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   571
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   572
    # Now we have to wait for the next jdb prompt.  We wait for a pattern
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   573
    # to appear in the last line of jdb output.  Normally, the prompt is
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   574
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   575
    # 1) ^main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   576
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   577
    # where ^ means start of line, and @ means end of file with no end of line
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   578
    # and 89 is the current command counter. But we have complications e.g.,
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   579
    # the following jdb output can appear:
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   580
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   581
    # 2) a[89] = 10
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   582
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   583
    # The above form is an array assignment and not a prompt.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   584
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   585
    # 3) ^main[89] main[89] ...
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   586
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   587
    # This occurs if the next cmd is one that causes no jdb output, e.g.,
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   588
    # 'trace methods'.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   589
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   590
    # 4) ^main[89] [main[89]] .... > @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   591
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   592
    # jdb prints a > as a prompt after something like a cont.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   593
    # Thus, even though the above is the last 'line' in the file, it
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   594
    # isn't the next prompt we are waiting for after the cont completes.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   595
    # HOWEVER, sometimes we see this for a cont command:
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   596
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   597
    #   ^main[89] $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   598
    #      <lines output for hitting a bkpt>
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   599
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   600
    # 5) ^main[89] > @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   601
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   602
    # i.e., the > prompt comes out AFTER the prompt we we need to wait for.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   603
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   604
    # So, how do we know when the next prompt has appeared??
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   605
    # 1.  Search for 
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   606
    #         main[89] $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   607
    #     This will handle cases 1, 2, 3
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   608
    # 2.  This leaves cases 4 and 5.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   609
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   610
    # What if we wait for 4 more chars to appear and then search for
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   611
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   612
    #    main[89] [>]$
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   613
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   614
    # on the last line?
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   615
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   616
    # a.  if we are currently at
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   617
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   618
    #       ^main[89] main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   619
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   620
    #     and a 'trace methods comes in, we will wait until at least
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   621
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   622
    #       ^main[89] main[89] main@
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   623
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   624
    #     and then the search will find the new prompt when it completes.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   625
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   626
    # b.  if we are currently at
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   627
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   628
    #       ^main[89] main[89] @
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   629
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   630
    #     and the first form of cont comes in, then we will see
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   631
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   632
    #       ^main[89] main[89] > $
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   633
    #       ^x@
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   634
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   635
    #     where x is the first char of the msg output when the bkpt is hit
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   636
    #     and we will start our search, which will find the prompt
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   637
    #     when it comes out after the bkpt output, with or without the
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   638
    #     trailing >
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   639
    #
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   640
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   641
    # wait for 4 new chars to appear in the jdb output
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   642
    count=0
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   643
    desiredFileSize=`expr $fileSize + 4`
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   644
    msg1=`echo At start: cmd/size/waiting : $* / $fileSize / \`date\``
90ce3da70b43 Initial load
duke
parents:
diff changeset
   645
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   646
        newFileSize=`wc -c $jdbOutFile | awk '{ print $1 } '`
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   647
        #echo jj: desired = $desiredFileSize, new = $newFileSize >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   648
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   649
        done=`expr $newFileSize \>= $desiredFileSize`
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   650
        if [ $done = 1 ] ; then
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   651
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   652
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   653
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   654
        count=`expr $count + 1`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   655
        if [ $count = 30 -o $count = 60 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   656
            # record some debug info.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   657
            echo "--DEBUG: jdb $$ didn't responded to command in $count secs: $*" >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   658
            echo "--DEBUG:" $msg1 >& 2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   659
            echo "--DEBUG: "done size/waiting : / $newFileSize  / `date` >& 2
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   660
            echo "-- $jdbOutFile follows-------------------------------" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   661
            cat $jdbOutFile >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   662
            echo "------------------------------------------" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   663
            dojstack
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   664
            #$psCmd | sed -e '/com.sun.javatest/d' -e '/nsk/d' >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   665
            if [ $count = 60 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   666
                dofail "jdb never responded to command: $*"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   667
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   668
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   669
    done
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   670
    # Note that this assumes just these chars in thread names.
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   671
    waitForJdbMsg '[a-zA-Z0-9_-][a-zA-Z0-9_-]*\[[1-9][0-9]*\] [ >]*$' \
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   672
        1 allowExit
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   673
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   674
90ce3da70b43 Initial load
duke
parents:
diff changeset
   675
setBkpts()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   676
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   677
    # Can set multiple bkpts, but only in one class.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   678
    # $1 is the bkpt name, eg, @1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   679
    allLines=`$grep -n "$1 *breakpoint" $tmpFileDir/$classname.java.1 | sed -e 's@^\([0-9]*\).*@\1@g'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   680
    for ii in $allLines ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   681
        cmd stop at $pkgDot$classname:$ii
90ce3da70b43 Initial load
duke
parents:
diff changeset
   682
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   683
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   684
90ce3da70b43 Initial load
duke
parents:
diff changeset
   685
runToBkpt()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   686
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   687
    cmd run
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   688
    # Don't need to do this - the above waits for the next prompt which comes out
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   689
    # AFTER the Breakpoint hit message.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   690
    # Wait for jdb to hit the bkpt
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   691
    #waitForJdbMsg "Breakpoint hit" 5
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   692
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   693
90ce3da70b43 Initial load
duke
parents:
diff changeset
   694
contToBkpt()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   695
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   696
    cmd cont
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   697
    # Don't need to do this - the above waits for the next prompt which comes out
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   698
    # AFTER the Breakpoint hit message.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   699
    # Wait for jdb to hit the bkpt
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   700
    #waitForJdbMsg "Breakpoint hit" 5
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   701
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   702
90ce3da70b43 Initial load
duke
parents:
diff changeset
   703
90ce3da70b43 Initial load
duke
parents:
diff changeset
   704
# Wait until string $1 appears in the output file, within the last $2 lines
90ce3da70b43 Initial load
duke
parents:
diff changeset
   705
# If $3 is allowExit, then don't fail if jdb exits before
90ce3da70b43 Initial load
duke
parents:
diff changeset
   706
# the desired string appears.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   707
waitForJdbMsg()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   708
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   709
    # This can be called from the jdb thread which doesn't
90ce3da70b43 Initial load
duke
parents:
diff changeset
   710
    # have access to $debuggeepid, so we have to read it from the file.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   711
    nlines=$2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   712
    allowExit="$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   713
    myCount=0
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   714
    timeLimit=40  # wait a max of this many secs for a response from a jdb command
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   715
    while [ 1 = 1 ] ; do 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   716
        if [  -r $jdbOutFile ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   717
            # Something here causes jdb to complain about Unrecognized cmd on x86.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   718
            tail -$nlines $jdbOutFile | $grep -s "$1" > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   719
            if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   720
                # Found desired string
90ce3da70b43 Initial load
duke
parents:
diff changeset
   721
                break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   722
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   723
	fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   724
	tail -2 $jdbOutFile | $grep -s "The application exited" > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   725
	if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   726
            # Found 'The application exited'
90ce3da70b43 Initial load
duke
parents:
diff changeset
   727
            if [ ! -z "$allowExit" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   728
                break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   729
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   730
            # Otherwise, it is an error if we don't find $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   731
	    if [  -r $jdbOutFile ] ; then 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   732
		tail -$nlines $jdbOutFile | $grep -s "$1" > $devnull 2>&1		
90ce3da70b43 Initial load
duke
parents:
diff changeset
   733
                if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   734
		   break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   735
		fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   736
	    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   737
            dofail "Waited for jdb msg $1, but it never appeared"	            
90ce3da70b43 Initial load
duke
parents:
diff changeset
   738
	fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   739
90ce3da70b43 Initial load
duke
parents:
diff changeset
   740
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   741
        findPid $topPid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   742
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   743
            # Top process is dead.  We better die too
90ce3da70b43 Initial load
duke
parents:
diff changeset
   744
            dojstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   745
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   746
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   747
90ce3da70b43 Initial load
duke
parents:
diff changeset
   748
        myCount=`expr $myCount + ${sleep_seconds}`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   749
        if [ $myCount -gt $timeLimit ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   750
            echo "--Fail: waitForJdbMsg timed out after $timeLimit seconds, looking for /$1/, in $nlines lines; exitting" >> $failFile
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   751
            echo "vv jdbOutFile  vvvvvvvvvvvvvvvvvvvvvvvvvvvv" >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   752
            cat $jdbOutFile >& 2
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   753
            echo "^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" >& 2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   754
            dojstack
90ce3da70b43 Initial load
duke
parents:
diff changeset
   755
            exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   756
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   757
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   758
90ce3da70b43 Initial load
duke
parents:
diff changeset
   759
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   760
90ce3da70b43 Initial load
duke
parents:
diff changeset
   761
# $1 is the string to print.  If $2 exists,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   762
# it is the name of a file to print, ie, the name
90ce3da70b43 Initial load
duke
parents:
diff changeset
   763
# of the file that contains the $1 string.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   764
dofail()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   765
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   766
    if [ ! -z "$jdbpid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   767
        # we are in the main process instead of the jdb process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   768
        echo " " >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   769
        echo "--Fail: main: $*" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   770
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   771
        # Kill the debuggee ; it could be hung so
90ce3da70b43 Initial load
duke
parents:
diff changeset
   772
        # we want to get rid of it as soon as possible.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   773
        killOrphans "killing debuggee" $debuggeeKeyword
90ce3da70b43 Initial load
duke
parents:
diff changeset
   774
90ce3da70b43 Initial load
duke
parents:
diff changeset
   775
        echo " "  >>$failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   776
        echo "--Fail: $*" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   777
        echo quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   778
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   779
    if [ ! -z "$2" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   780
        echo  "---- contents of $2 follows -------" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   781
        cat "$2" >> $failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   782
        echo "---------------" >>$failFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   783
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   784
    exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   785
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   786
90ce3da70b43 Initial load
duke
parents:
diff changeset
   787
90ce3da70b43 Initial load
duke
parents:
diff changeset
   788
redefineClass() 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   789
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   790
    if [ -z "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   791
        vers=2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   792
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   793
        vers=`echo $1 | sed -e 's/@//'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   794
        vers=`expr $vers + 1`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   795
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   796
        
90ce3da70b43 Initial load
duke
parents:
diff changeset
   797
    cmd redefine $pkgDot$classname $tmpFileDir/vers$vers/$classname.class
90ce3da70b43 Initial load
duke
parents:
diff changeset
   798
90ce3da70b43 Initial load
duke
parents:
diff changeset
   799
    cp $tmpFileDir/$classname.java.$vers \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   800
       $tmpFileDir/$classname.java
90ce3da70b43 Initial load
duke
parents:
diff changeset
   801
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   802
90ce3da70b43 Initial load
duke
parents:
diff changeset
   803
mydojdbCmds()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   804
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   805
   # Wait for jdb to start before we start sending cmds
90ce3da70b43 Initial load
duke
parents:
diff changeset
   806
   waitForJdbMsg ']' 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   807
   dojdbCmds
90ce3da70b43 Initial load
duke
parents:
diff changeset
   808
   cmd quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   809
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   810
90ce3da70b43 Initial load
duke
parents:
diff changeset
   811
startJdb()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   812
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   813
    if [ ! -r "$jdb" -a ! -r "$jdb.exe" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   814
        dofail "$jdb does not exist"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   815
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   816
    echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
   817
    echo "--Starting jdb, address=$address"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   818
    if [ -z "$address" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   819
       # Let jdb choose the port and write it to stdout
90ce3da70b43 Initial load
duke
parents:
diff changeset
   820
       mydojdbCmds | $jdb $jdbOptions -listenany | tee $jdbOutFile &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   821
90ce3da70b43 Initial load
duke
parents:
diff changeset
   822
       while [ 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   823
           lastLine=`$grep 'Listening at address' $jdbOutFile`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   824
           if [ ! -z "$lastLine" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   825
               break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   826
           fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   827
           sleep 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   828
       done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   829
       # jjh: we got the address ok, and seemed to start the debuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
   830
       address=`echo $lastLine | sed -e 's@.*: *@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   831
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   832
       mydojdbCmds | $jdb $jdbOptions -listen $address | tee $jdbOutFile &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   833
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   834
    #echo address = $address
90ce3da70b43 Initial load
duke
parents:
diff changeset
   835
90ce3da70b43 Initial load
duke
parents:
diff changeset
   836
90ce3da70b43 Initial load
duke
parents:
diff changeset
   837
    # this gets the pid of tee, at least it does on solaris
90ce3da70b43 Initial load
duke
parents:
diff changeset
   838
    jdbpid=$!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   839
90ce3da70b43 Initial load
duke
parents:
diff changeset
   840
    # This fails on linux because there is an entry for each thread in jdb
90ce3da70b43 Initial load
duke
parents:
diff changeset
   841
    # so we get a list of numbers in jdbpid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   842
    # jdbpid=`$psCmd | $grep -v grep | $grep ${orphanKeyword}_JDB | awk '{print $1}'  | tr '\n\r' '  '`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   843
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   844
90ce3da70b43 Initial load
duke
parents:
diff changeset
   845
startDebuggee()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   846
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   847
    args=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   848
    # Note that @debuggeeVMOptions is unique to a test run instead of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   849
    # a test in a run.  It is not modified during a test run.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   850
    if [ -r $TESTCLASSES/../@debuggeeVMOptions ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   851
       args=`cat $TESTCLASSES/../@debuggeeVMOptions`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   852
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   853
    
90ce3da70b43 Initial load
duke
parents:
diff changeset
   854
    if [ ! -z "$args" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   855
       echo "--Starting debuggee with args from @debuggeeVMOptions: $args"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   856
    else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   857
       echo "--Starting debuggee"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   858
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   859
90ce3da70b43 Initial load
duke
parents:
diff changeset
   860
    debuggeepid=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   861
    waitForJdbMsg Listening 4
90ce3da70b43 Initial load
duke
parents:
diff changeset
   862
90ce3da70b43 Initial load
duke
parents:
diff changeset
   863
    beOption="-agentlib:jdwp=transport=$transport,address=$address,server=n,suspend=y"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   864
#   beOption="-Xdebug -Xrunjdwp:transport=$transport,address=$address,server=n,suspend=y"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   865
90ce3da70b43 Initial load
duke
parents:
diff changeset
   866
    thecmd="$jdk/bin/$java $mode -classpath $tmpFileDir $baseArgs $args \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   867
            -Djtreg.classDir=$TESTCLASSES \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   868
            -showversion \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   869
             $beOption \
90ce3da70b43 Initial load
duke
parents:
diff changeset
   870
             $pkgDot$classname"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   871
    echo "Cmd: $thecmd"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   872
90ce3da70b43 Initial load
duke
parents:
diff changeset
   873
    sh -c "$thecmd | tee $debuggeeOutFile" &
90ce3da70b43 Initial load
duke
parents:
diff changeset
   874
90ce3da70b43 Initial load
duke
parents:
diff changeset
   875
    # Note that the java cmd and the tee cmd will be children of
90ce3da70b43 Initial load
duke
parents:
diff changeset
   876
    # the sh process.  We can use that to find them to kill them.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   877
    debuggeepid=$!
90ce3da70b43 Initial load
duke
parents:
diff changeset
   878
90ce3da70b43 Initial load
duke
parents:
diff changeset
   879
    # Save this in a place where the jdb process can find it.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   880
    # Note that it is possible for the java cmd to abort during startup
90ce3da70b43 Initial load
duke
parents:
diff changeset
   881
    # due to a bad classpath or whatever.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   882
    echo $debuggeepid > $debuggeepidFile
90ce3da70b43 Initial load
duke
parents:
diff changeset
   883
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   884
90ce3da70b43 Initial load
duke
parents:
diff changeset
   885
dojstack()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   886
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   887
    if [ -r "$jdk/bin/$jstack" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   888
        # If jstack exists, so will jps
90ce3da70b43 Initial load
duke
parents:
diff changeset
   889
        # Show stack traces of jdb and debuggee as a possible debugging aid.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   890
        jdbCmd=`$jdk/bin/jps -v | $grep $jdbKeyword`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   891
        realJdbPid=`echo "$jdbCmd" | sed -e 's@ TTY.*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   892
        if [ ! -z "$realJdbPid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   893
            echo "-- jdb process info ----------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   894
            echo "      $jdbCmd"                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   895
            echo "-- jdb threads: jstack $realJdbPid"         >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   896
            $jdk/bin/$jstack $realJdbPid                      >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   897
            echo "------------------------------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   898
            echo                                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   899
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   900
        debuggeeCmd=`$jdk/bin/jps -v | $grep $debuggeeKeyword`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   901
        realDebuggeePid=`echo "$debuggeeCmd" | sed -e 's@ .*@@'`
90ce3da70b43 Initial load
duke
parents:
diff changeset
   902
        if [ ! -z "$realDebuggeePid" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   903
            if [ -r "$jdk/lib/sa-jdi.jar" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   904
                # disableVersionCheck can be removed after 6475822
90ce3da70b43 Initial load
duke
parents:
diff changeset
   905
                # is fixed.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   906
                moption="-m -J-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   907
            else
90ce3da70b43 Initial load
duke
parents:
diff changeset
   908
                moption=
90ce3da70b43 Initial load
duke
parents:
diff changeset
   909
            fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   910
90ce3da70b43 Initial load
duke
parents:
diff changeset
   911
            echo "-- debuggee process info ----------------------" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   912
            echo "      $debuggeeCmd"                              >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   913
            echo "-- debuggee threads: jstack $moption $realDebuggeePid" >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   914
            $jdk/bin/$jstack $moption $realDebuggeePid             >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   915
            echo "============================================="   >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   916
            echo                                                   >&2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   917
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   918
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   919
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   920
90ce3da70b43 Initial load
duke
parents:
diff changeset
   921
waitForFinish()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   922
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   923
    # This is the main process
90ce3da70b43 Initial load
duke
parents:
diff changeset
   924
    # Wait for the jdb process to finish, or some error to occur
90ce3da70b43 Initial load
duke
parents:
diff changeset
   925
90ce3da70b43 Initial load
duke
parents:
diff changeset
   926
    while [ 1 = 1 ] ; do
90ce3da70b43 Initial load
duke
parents:
diff changeset
   927
        findPid $jdbpid
90ce3da70b43 Initial load
duke
parents:
diff changeset
   928
        if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   929
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   930
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   931
        if [ ! -z "$isWin98" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   932
           $psCmd | $grep -i 'JDB\.EXE' >$devnull 2>&1 
90ce3da70b43 Initial load
duke
parents:
diff changeset
   933
           if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   934
               break;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   935
           fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   936
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   937
        $grep -s 'Input stream closed' $jdbOutFile > $devnull 2>&1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   938
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   939
            #something went wrong
90ce3da70b43 Initial load
duke
parents:
diff changeset
   940
            dofail "jdb input stream closed prematurely"
90ce3da70b43 Initial load
duke
parents:
diff changeset
   941
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   942
90ce3da70b43 Initial load
duke
parents:
diff changeset
   943
        # If a failure has occured, quit
90ce3da70b43 Initial load
duke
parents:
diff changeset
   944
        if [ -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
   945
            break
90ce3da70b43 Initial load
duke
parents:
diff changeset
   946
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   947
90ce3da70b43 Initial load
duke
parents:
diff changeset
   948
        sleep ${sleep_seconds}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   949
    done
90ce3da70b43 Initial load
duke
parents:
diff changeset
   950
90ce3da70b43 Initial load
duke
parents:
diff changeset
   951
    if [ -r "$failFile" ] ; then
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   952
        ls -l "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   953
        echo "<waitForFinish:_begin_failFile_contents>" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   954
        cat "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   955
        echo "<waitForFinish:_end_failFile_contents>" >&2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   956
        exit 1
90ce3da70b43 Initial load
duke
parents:
diff changeset
   957
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
   958
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
   959
90ce3da70b43 Initial load
duke
parents:
diff changeset
   960
# $1 is the filename, $2 is the string to look for,
90ce3da70b43 Initial load
duke
parents:
diff changeset
   961
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
   962
grepForString()
90ce3da70b43 Initial load
duke
parents:
diff changeset
   963
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
   964
    if [ -z "$3" ] ; then
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   965
        theCmd=cat
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   966
    else
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   967
        theCmd="tail -$3"
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   968
    fi
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   969
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   970
    case "$2" in 
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   971
    *\>*)
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   972
        # Target string contains a '>' so we better not ignore it
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   973
        $theCmd $1 | $grep -s "$2"  > $devnull 2>&1
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   974
        stat="$?"
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
   975
        ;;
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   976
    *)
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   977
        # Target string does not contain a '>'.
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   978
        # NOTE:  if $1 does not end with a new line, piping it to sed
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   979
        # doesn't include the chars on the last line.  Detect this
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   980
        # case, and add a new line.
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   981
        theFile="$1"
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   982
        if [ `tail -1 "$theFile" | wc -l | sed -e 's@ @@g'` = 0 ] ; then
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   983
            # The target file doesn't end with a new line so we have
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   984
            # add one to a copy of the target file so the sed command
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   985
            # below can filter that last line.
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   986
            cp "$theFile" "$theFile.tmp"
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   987
            theFile="$theFile.tmp"
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   988
            echo >> "$theFile"
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   989
        fi
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   990
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   991
        # See bug 6220903. Sometimes the jdb prompt chars ('> ') can
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   992
        # get interleaved in the target file which can keep us from
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   993
        # matching the target string.
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   994
        $theCmd "$theFile" | sed -e 's@> @@g' -e 's@>@@g' \
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   995
            | $grep -s "$2" > $devnull 2>&1
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   996
        stat=$?
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   997
        if [ "$theFile" != "$1" ]; then
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   998
            # remove the copy of the target file
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
   999
            rm -f "$theFile"
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1000
        fi
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1001
        unset theFile
4325
38a035021ba1 6903102: 3/3 fixes in nightly testing version of ShellScaffold.sh need to be committed
dcubed
parents: 4153
diff changeset
  1002
    esac
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1003
    return $stat
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1004
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1005
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1006
# $1 is the filename, $2 is the string to look for,
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1007
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1008
failIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1009
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1010
    if [ -r "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1011
        grepForString "$1" "$2" "$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1012
        if [ $? = 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1013
            dofail "Error output found: \"$2\" in $1" $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1014
        fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1015
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1016
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1017
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1018
# $1 is the filename, $2 is the string to look for
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1019
# $3 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1020
failIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1021
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1022
    if [ ! -r "$1" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1023
        dofail "Required output \"$2\" not found in $1"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1024
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1025
    grepForString "$1" "$2" "$3"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1026
    if [ $? != 0 ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1027
        dofail "Required output \"$2\" not found in $1" $1
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1028
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1029
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1030
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1031
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1032
# fail if $1 is not in the jdb output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1033
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1034
jdbFailIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1035
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1036
    failIfNotPresent $jdbOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1037
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1038
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1039
# fail if $1 is not in the debuggee output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1040
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1041
debuggeeFailIfNotPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1042
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1043
    failIfNotPresent $debuggeeOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1044
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1045
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1046
# fail if $1 is in the jdb output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1047
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1048
jdbFailIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1049
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1050
    failIfPresent $jdbOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1051
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1052
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1053
# fail if $1 is in the debuggee output
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1054
# $2 is the number of lines to search (from the end)
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1055
debuggeeFailIfPresent()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1056
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1057
    failIfPresent $debuggeeOutFile "$1" $2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1058
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1059
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1060
# This should really be named 'done' instead of pass.
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1061
pass()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1062
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1063
    if [ ! -r "$failFile" ] ; then
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1064
        echo
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1065
        echo "--Done: test passed"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1066
        exit 0
6119
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1067
    else
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1068
        ls -l "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1069
        echo "<pass:_begin_failFile_contents>" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1070
        cat "$failFile" >&2
296bbd35a3f4 6962804: 4/4 ShellScaffold tests can fail without a specific reason
dcubed
parents: 5506
diff changeset
  1071
        echo "<pass:_end_failFile_contents>" >&2
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1072
    fi
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1073
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1074
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1075
runit()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1076
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1077
    setup
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1078
    runitAfterSetup
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1079
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1080
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1081
runitAfterSetup()
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1082
{
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1083
    docompile
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1084
    startJdb 
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1085
    startDebuggee
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1086
    waitForFinish
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1087
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1088
    # in hs_err file from 1.3.1
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1089
    debuggeeFailIfPresent "Virtual Machine Error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1090
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1091
    # in hs_err file from 1.4.2, 1.5:  An unexpected error
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1092
    debuggeeFailIfPresent "An unexpected error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1093
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1094
    # in hs_err file from 1.4.2, 1.5:  Internal error
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1095
    debuggeeFailIfPresent "Internal error"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1096
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1097
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1098
    # Don't know how this arises
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1099
    debuggeeFailIfPresent "An unexpected exception"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1100
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1101
    # Don't know how this arises
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1102
    debuggeeFailIfPresent "Internal exception"
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1103
}
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1104
90ce3da70b43 Initial load
duke
parents:
diff changeset
  1105