changeset 52637:46ca82c15f6c

8210760: [TEST] rewrite com/sun/jdi shell tests to java version - step4 Reviewed-by: jcbeyler, sspitsyn, cjplummer
author amenkov
date Fri, 21 Sep 2018 11:28:14 -0700
parents d62ebdfd8f18
children f8af1f1f3518
files test/jdk/ProblemList.txt test/jdk/com/sun/jdi/RedefineException.java test/jdk/com/sun/jdi/RedefineException.sh test/jdk/com/sun/jdi/RedefineFinal.java test/jdk/com/sun/jdi/RedefineFinal.sh test/jdk/com/sun/jdi/RedefineIntConstantToLong.java test/jdk/com/sun/jdi/RedefineIntConstantToLong.sh test/jdk/com/sun/jdi/RedefineMulti.java test/jdk/com/sun/jdi/RedefineMulti.sh test/jdk/com/sun/jdi/RedefinePop.java test/jdk/com/sun/jdi/RedefinePop.sh test/jdk/com/sun/jdi/RedefineStep.java test/jdk/com/sun/jdi/RedefineStep.sh test/jdk/com/sun/jdi/RedefineTTYLineNumber.java test/jdk/com/sun/jdi/RedefineTTYLineNumber.sh test/jdk/com/sun/jdi/StringConvertTest.java test/jdk/com/sun/jdi/StringConvertTest.sh test/jdk/com/sun/jdi/WatchFramePop.java test/jdk/com/sun/jdi/WatchFramePop.sh
diffstat 19 files changed, 1005 insertions(+), 1121 deletions(-) [+]
line wrap: on
line diff
--- a/test/jdk/ProblemList.txt	Fri Sep 21 10:18:12 2018 -0700
+++ b/test/jdk/ProblemList.txt	Fri Sep 21 11:28:14 2018 -0700
@@ -836,8 +836,6 @@
 
 com/sun/jdi/BasicJDWPConnectionTest.java                        8195703 generic-all
 
-com/sun/jdi/RedefineImplementor.sh                              8004127 generic-all
-
 com/sun/jdi/RepStep.java                                        8043571 generic-all
 
 com/sun/jdi/sde/SourceDebugExtensionTest.java                   8158066 windows-all
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineException.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4559100
+ * @summary The VM crashes when a method in a redefined class throws an exception.
+ * @comment converted from test/jdk/com/sun/jdi/RedefineException.sh
+ *
+ * @library /test/lib
+ * @run main/othervm RedefineException
+ */
+
+/* This is another symptomm of 4559100
+ * This causes a bus error on solsparc:
+ *  ---- called from signal handler with signal 10 (SIGBUS) ------
+ *    [11] constantPoolOopDesc::klass_at_if_loaded(0xffbed4d8, 0x16, 0xffbed5cc, 0x0, 0x1, 0xfa40b330), at 0xfe11568c
+ *    [12] methodOopDesc::fast_exception_handler_bci_for(0x6, 0x1, 0xfe400a0c, 0x0, 0x2d1f0, 0x0), at 0xfe12e620
+ *    [13] jvmdi::post_exception_throw_event(0x2d1f0, 0xf61036f8, 0xf6103752, 0xf20414a8, 0x2e2928, 0xfe12e190), at 0xfe2a4fa4
+ */
+
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class RedefineExceptionTarg {
+    String str;
+    int ii;
+    static public void main(String[] args) {
+        System.out.println("In Main");
+        RedefineExceptionTarg mine = new RedefineExceptionTarg();
+        mine.a1();
+    }
+
+    public void a1() {
+        int a1local = 1;
+        String a1string = "a1";
+
+        ii = 89;                                 // @1 delete this line
+        str = "foo";
+        System.out.println("a1: Calling the original a2/a3.  'The @@@ deleted lines should appear");
+        System.out.println("ii = " + ii);        // @1 delete this line
+        a2();
+    }
+
+    public void a2() {
+        int a2local = 2;
+        String a2string = "a2";
+        //System.out.println("a2: @ @@delete this line");
+        try {
+            a3();
+        } catch (Exception ee) {
+            System.out.println("a2: Exception caught");
+        }
+        System.out.println("a2: done");
+    }
+
+    public void a3() throws Exception {
+        int a3local = 3;
+        String a3string = "a3";
+        System.out.println("a3: @@ delete this line");   // If this line is deleted, the test passes!
+        System.out.println("a3: @1 breakpoint here a3");
+        throw new Exception("This is the exception");
+    }
+}
+
+public class RedefineException extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineException().run();
+    }
+
+    private RedefineException() {
+        super(RedefineExceptionTarg.class.getName(), "RedefineException.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        redefineClass(1);
+        jdb.command(JdbCommand.pop());
+        jdb.contToExit(1);
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineException.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,119 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4559100
-#  @summary The VM crashes when a method in a redefined class throws an exception.
-#  @author Jim Holmlund
-#
-#  @key intermittent
-#  @run shell RedefineException.sh
-
-# This is another symptomm of 4559100
-# This causes a bus error on solsparc:
-#  ---- called from signal handler with signal 10 (SIGBUS) ------
-#  [11] constantPoolOopDesc::klass_at_if_loaded(0xffbed4d8, 0x16, 0xffbed5cc, 0x0, 0x1, 0xfa40b330), at 0xfe11568c
-#  [12] methodOopDesc::fast_exception_handler_bci_for(0x6, 0x1, 0xfe400a0c, 0x0, 0x2d1f0, 0x0), at 0xfe12e620
-#  [13] jvmdi::post_exception_throw_event(0x2d1f0, 0xf61036f8, 0xf6103752, 0xf20414a8, 0x2e2928, 0xfe12e190), at 0xfe2a4fa4
-
-# These are variables that can be set to control execution
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-    String str;
-    int ii;
-    static public void main(String[] args) {
-       System.out.println("In Main");
-       $1 mine = new $1();
-       mine.a1();
-    }
-
-    public void a1() {
-      int a1local = 1;
-      String a1string = "a1";
-
-      ii = 89;                                 // @1 delete this line
-      str = "foo";
-      System.out.println("a1: Calling the original a2/a3.  'The @@@ deleted lines should appear");
-      System.out.println("ii = " + ii);        // @1 delete this line
-      a2();
-    }
-
-    public void a2() {
-      int a2local = 2;
-      String a2string = "a2";
-      //System.out.println("a2: @ @@delete this line");
-      try {
-        a3();
-      } catch (Exception ee) {
-        System.out.println("a2: Exception caught");
-      }
-      System.out.println("a2: done");
-    }
-
-    public void a3() throws Exception {
-      int a3local = 3;
-      String a3string = "a3";
-      System.out.println("a3: @@ delete this line");   // If this line is deleted, the test passes!
-      System.out.println("a3: @1 breakpoint here a3");
-      throw new Exception("This is the exception");
-    }
-}
-EOF
-}
-
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt
-    redefineClass @1
-    cmd pop
-    cmd allowExit cont
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineFinal.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,86 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4788344
+ * @summary RedefineClasses is an apparent no-op if instance method is final
+ * @comment converted from test/jdk/com/sun/jdi/RedefineFinal.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefineFinal.java
+ * @run main/othervm RedefineFinal
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+final class RedefineFinalTarg {
+
+    public int m1(int i) {
+        // @1 uncomment System.out.println("I'm here");
+        return m2(i, 1000);
+    }
+
+    public int m2(int i, int j) {
+        if (i < 0 || j < 0) {   // @1 breakpoint
+            throw new IllegalArgumentException();
+        }
+        return i+j;
+    }
+
+    RedefineFinalTarg() {
+        m1(0);
+        m1(0);
+    }
+
+    public static void main(String args[]) {
+        new RedefineFinalTarg();
+    }
+}
+
+public class RedefineFinal extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineFinal().run();
+    }
+
+    private RedefineFinal() {
+        super(RedefineFinalTarg.class.getName(), "RedefineFinal.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        redefineClass(1, "-g");
+        setBreakpoints(1);
+        jdb.command(JdbCommand.cont());
+        jdb.command(JdbCommand.where(""));
+        jdb.contToExit(1);
+
+        new OutputAnalyzer(getJdbOutput())
+                .shouldNotContain("obsolete");
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineFinal.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4788344
-#  @summary RedefineClasses is an apparent no-op if instance method is final
-#
-#  @key intermittent
-#  @run shell RedefineFinal.sh
-
-compileOptions=-g
-compileOptions2=-g
-
-# Uncomment this to see the JDI trace
-#jdbOptions=-dbgtrace
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public final class $1 {
-
-    public int m1(int i) {
-        // @1 uncomment System.out.println("I'm here");
-        return m2(i, 1000);
-    }
-
-    public int m2(int i, int j) {
-        if (i < 0 || j < 0) {   // @1 breakpoint
-            throw new IllegalArgumentException();
-        }
-        return i+j;
-    }
-
-    $1() {
-        m1(0);
-        m1(0);
-    }
-
-    public static void main(String args[]) {
-        new $1();
-    }
-}
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    redefineClass @1
-    setBkpts @1
-    contToBkpt
-    cmd where
-    cmd allowExit cont
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh 
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-
-jdbFailIfPresent 'obsolete'
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineIntConstantToLong.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 6394084
+ * @summary Redefine class can't handle addition of 64 bit constants in JDK1.5.0_05
+ * @comment converted from test/jdk/com/sun/jdi/RedefineIntConstantToLong.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefineIntConstantToLong.java
+ * @run main/othervm RedefineIntConstantToLong
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+final class RedefineIntConstantToLongTarg {
+
+    public long m1(int i) {
+        long r=0;
+        r = m2(i * 2); // @1 commentout
+        // @1 uncomment      r =m2(i * 2L);
+        return r;
+    }
+
+    public long m2(int j) {
+        System.out.println(System.getProperty("line.separator") +
+                           "**** public long m2(int j) with value: " + j);
+        return j;
+    }
+
+    public long m2(long j) {
+        System.out.println(System.getProperty("line.separator") +
+                           "**** public long m2(long j) with value: " + j);
+        return j;
+    }
+
+    public void doit() throws Exception {
+        long r1 = 0;
+        long r2;
+        r1 = m1(1000);
+        r2 = 0;         // @1 breakpoint
+        r2 = m1(1000);
+        if (r1 != r2) { // @1 breakpoint
+             throw new Exception("FAILURE: Expected value: " + r1 + " Actual value: " + r2);
+        } else {
+             System.out.println("SUCCESS: Expected value: " + r1 + " Actual value: " + r2);
+        }
+    }
+
+    public static void main(String args[]) throws Exception {
+        new RedefineIntConstantToLongTarg().doit();
+    }
+}
+
+public class RedefineIntConstantToLong extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineIntConstantToLong().run();
+    }
+
+    private RedefineIntConstantToLong() {
+        super(RedefineIntConstantToLongTarg.class.getName(), "RedefineIntConstantToLong.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        redefineClass(1, "-g");
+        setBreakpoints(1);
+        jdb.command(JdbCommand.cont());
+        jdb.command(JdbCommand.where(""));
+        jdb.contToExit(1);
+
+        new OutputAnalyzer(getJdbOutput())
+                .shouldNotContain("FAILURE:");
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineIntConstantToLong.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,118 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 6394084
-#  @summary Redefine class can't handle addition of 64 bit constants in JDK1.5.0_05
-#
-#  @key intermittent
-#  @run shell RedefineIntConstantToLong.sh
-
-compileOptions=-g
-compileOptions2=-g
-
-# Uncomment this to see the JDI trace
-#jdbOptions=-dbgtrace
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public final class $1 {
-
-    public long m1(int i) {
-        long r=0;
-        r = m2(i * 2); // @1 commentout
-        // @1 uncomment      r =m2(i * 2L);
-        return r;
-    }
-
-    public long m2(int j) {
-        System.out.println(System.getProperty("line.separator") +
-                           "**** public long m2(int j) with value: " + j);
-        return j;
-    }
-
-    public long m2(long j) {
-        System.out.println(System.getProperty("line.separator") +
-                           "**** public long m2(long j) with value: " + j);
-        return j;
-    }
-
-    public void doit() throws Exception {
-        long r1 = 0;
-        long r2;
-        r1 = m1(1000);
-        r2 = 0;         // @1 breakpoint
-        r2 = m1(1000);
-        if (r1 != r2) { // @1 breakpoint
-             throw new Exception("FAILURE: Expected value: " + r1 + " Actual value: " + r2);
-        } else {
-             System.out.println("SUCCESS: Expected value: " + r1 + " Actual value: " + r2);
-        }
-    }
-
-    public static void main(String args[]) throws Exception {
-        new $1().doit();
-    }
-}
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    redefineClass @1
-    setBkpts @1
-    contToBkpt
-    cmd where
-    cmd allowExit cont
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-
-jdbFailIfPresent 'FAILURE:'
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineMulti.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4724076
+ * @summary Redefine does not work in for/while loop
+ * @comment converted from test/jdk/com/sun/jdi/RedefineMulti.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefineMulti.java
+ * @run main/othervm RedefineMulti
+ */
+
+/*
+ * The failure occurs when a method is active and
+ * a method that it calls multiple times is redefined
+ * more than once.
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class RedefineMultiTarg {
+
+    String field1;
+    String field2;
+
+    // The first time thru the loop in start,
+    // "Before update..." should be printed.
+    // After the first redefine, "After update..." should be printed
+    // After the 2nd redefine, "abcde..." should be printed.
+    // The bug is that "After update..." is printed instead because
+    // stat() calls version 2 of doSomething() instead of
+    // version 3.
+    private void doSomething()  {
+        System.out.println("Before update...");  // @1 commentout
+        // @1 uncomment System.out.println("After update...");  // @2 commentout
+        // @2 uncomment System.out.println("abcde...");
+    }
+
+    public void start() {
+        for (int i=0; i < 3; i++)   {
+            doSomething();      // @1 breakpoint here  line 16
+            System.out.println("field1 = " + field1);
+            System.out.println("field2 = " + field2);
+        }
+        // Redefinex myx = new Redefinex();
+        //  for (int i = 0; i < 5; i++) {
+        //    myx.methodx1();                     // line 22
+        //    System.out.println("fieldx1 = " + myx.fieldx1);
+        //    System.out.println("fieldx2 = " + myx.fieldx2);
+        //  }
+    }
+
+    public static void main(String[] args) {
+        RedefineMultiTarg xxx = new RedefineMultiTarg();
+        xxx.field1 = "field1";
+        xxx.field2 = "field2";
+        xxx.start();
+    }
+}
+
+class Redefinex {
+    public String fieldx1;
+    public String fieldx2;
+
+    Redefinex() {
+        fieldx1 = "fieldx1";
+        fieldx2 = "fieldx2";
+    }
+
+    public void methodx1() {
+        System.out.println("redefinex 1");
+        //System.out.println("redefinex 2");
+        //System.out.println("redefinex 3");
+    }
+}
+
+/*********
+Steps to reproduce this problem:
+   a. add line breakpoint  in start()
+   b. debug
+   c. when breakpoint is hit, type continue. You should see output "Before update..."
+   d. change "Before update" to  "After update"
+   e. redefine,  and set line breakpoint (see step a)
+   f. type continue. You should see output "After update"
+   g. change "After update" to "abcde"
+   h. redefine, and set line breakpoint (see step a)
+   i.  type continue. The output is shown as "After update"
+   j. to see "abcde" output,  users will have to pop the stack, and re-execute method start().
+************/
+
+public class RedefineMulti extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineMulti().run();
+    }
+
+    private RedefineMulti() {
+        super(RedefineMultiTarg.class.getName(), "RedefineMulti.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        jdb.command(JdbCommand.cont());
+        redefineClass(1, "-g");
+        setBreakpoints(1);
+        jdb.command(JdbCommand.cont());
+        redefineClass(2, "-g");
+        jdb.contToExit(1);
+
+        new OutputAnalyzer(getDebuggeeOutput())
+                .shouldNotContain("Internal exception:")
+                .shouldContain("abcde");
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineMulti.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,154 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4724076
-#  @summary Redefine does not work in for/while loop
-#  @author Jim Holmlund/Swamy Venkataramanappa
-#
-#  The failure occurs when a method is active and
-#  a method that it calls multiple times is redefined
-#  more than once.
-#  @run shell/timeout=240 RedefineMulti.sh
-
-compileOptions=-g
-#java=java_g
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-
-    String field1;
-    String field2;
-
-    // The first time thru the loop in start,
-    // "Before update..." should be printed.
-    // After the first redefine, "After update..." should be printed
-    // After the 2nd redefine, "abcde..." should be printed.
-    // The bug is that "After update..." is printed instead because
-    // stat() calls version 2 of doSomething() instead of
-    // version 3.
-    private void doSomething()  {
-        System.out.println("Before update...");  // @1 commentout
-        // @1 uncomment System.out.println("After update...");  // @2 commentout
-        // @2 uncomment System.out.println("abcde...");
-    }
-
-    public void start() {
-        for (int i=0; i < 3; i++)   {
-            doSomething();      // @1 breakpoint here  line 16
-            System.out.println("field1 = " + field1);
-            System.out.println("field2 = " + field2);
-        }
-        // Redefinex myx = new Redefinex();
-        //  for (int i = 0; i < 5; i++) {
-        //    myx.methodx1();                     // line 22
-        //    System.out.println("fieldx1 = " + myx.fieldx1);
-        //    System.out.println("fieldx2 = " + myx.fieldx2);
-        //  }
-    }
-
-    public static void main(String[] args) {
-        $1 xxx = new $1();
-        xxx.field1 = "field1";
-        xxx.field2 = "field2";
-        xxx.start();
-    }
-}
-
-class Redefinex {
-    public String fieldx1;
-    public String fieldx2;
-
-    Redefinex() {
-        fieldx1 = "fieldx1";
-        fieldx2 = "fieldx2";
-    }
-
-    public void methodx1() {
-        System.out.println("redefinex 1");
-        //System.out.println("redefinex 2");
-        //System.out.println("redefinex 3");
-    }
-     
-}
-
-    /*********
-Steps to reproduce this problem:
-   a. add line breakpoint  in start()
-   b. debug
-   c. when breakpoint is hit, type continue. You should see output
-"Before update..."
-   d. change "Before update" to  "After update"
-   e. redefine,  and set line breakpoint (see step a)
-   f. type continue. You should see output "After update"
-   g. change "After update" to "abcde"
-   h. redefine, and set line breakpoint (see step a)
-   i.  type continue. The output is shown as "After update"
-
-   j. to see "abcde" output,  users will have to pop the stack, and
-re-execute method start().
-    ************/
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    contToBkpt
-    redefineClass @1
-    setBkpts @1
-    contToBkpt
-    redefineClass @2
-    cmd allowExit cont
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh 
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-debuggeeFailIfPresent "Internal exception:"
-debuggeeFailIfNotPresent "abcde"
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefinePop.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,91 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4622663
+ * @summary redefine and pop top frame from jdb gets assertion failure
+ * @comment converted from test/jdk/com/sun/jdi/RedefinePop.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefinePop.java
+ * @run main/othervm RedefinePop
+ */
+
+/*
+ * The failure occurs with debug java when the pop deletes the
+ * line that called the method which is being popped.
+ */
+
+/*
+ * assert(index<len, "should have found method")
+ * [8] report_assertion_failure(0xfe2a54d9, 0xfe2a54e3, 0x2cc, 0xfe2a5527, 0xfffffff8, 0x3f2b8), at 0xfda1e5e8
+ * [9] methodOopDesc::jni_id(0xf590a2f0, 0x3e868, 0x8, 0xffbed760, 0xf590a3ac, 0xffbed664), at 0xfdcd7a2c
+ * [10] JvmdiThreadState::compare_and_set_current_location(0x3f450, 0xf590a2f0, 0xf590a33f, 0x1, 0x1, 0x3e868), at 0xfdc0f670
+ * [11] jvmdi::at_single_stepping_point(0x3e868, 0xf590a2f0, 0xf590a33f, 0x5, 0x0, 0x0), at 0xfdc29184
+ * [12] InterpreterRuntime::at_safepoint(0x3e868, 0xb6, 0x2, 0xf9c28744, 0xf590a038, 0xffbed880), at 0xfdb0d590
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class RedefinePopTarg {
+    static public void main(String[] args) {
+        RedefinePopTarg mine = new RedefinePopTarg();
+        mine.a1(44);   // @1 delete the call that we are in when the pop occurs
+        mine.a4();
+    }
+
+    public void a1(int p1) {
+        System.out.println("a1: @1 breakpoint here");
+    }
+
+    public void a4() {
+        System.out.println("a4: The next line should not say Ni!");
+        System.out.println("a4: Ni!");   // @1 delete
+    }
+}
+
+public class RedefinePop extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefinePop().run();
+    }
+
+    private RedefinePop() {
+        super(RedefinePopTarg.class.getName(), "RedefinePop.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        redefineClass(1, "-g");
+        jdb.command(JdbCommand.pop());
+        jdb.contToExit(1);
+
+        new OutputAnalyzer(getDebuggeeOutput())
+                .shouldNotContain("Internal exception:");
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefinePop.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4622663
-#  @summary redefine and pop top frame from jdb gets assertion failure
-#  @author Jim Holmlund/Swamy Venkataramanappa
-#
-#  The failure occurs with debug java when the pop deletes the
-#  line that called the method which is being popped.
-#  @key intermittent
-#  @run shell RedefinePop.sh
-
-
-# assert(index<len, "should have found method")
-#  [8] report_assertion_failure(0xfe2a54d9, 0xfe2a54e3, 0x2cc, 0xfe2a5527, 0xfffffff8, 0x3f2b8), at 0xfda1e5e8
-# [9] methodOopDesc::jni_id(0xf590a2f0, 0x3e868, 0x8, 0xffbed760, 0xf590a3ac, 0xffbed664), at 0xfdcd7a2c
- # [10] JvmdiThreadState::compare_and_set_current_location(0x3f450, 0xf590a2f0, 0xf590a33f, 0x1, 0x1, 0x3e868), at 0xfdc0f670
-#  [11] jvmdi::at_single_stepping_point(0x3e868, 0xf590a2f0, 0xf590a33f, 0x5, 0x0, 0x0), at 0xfdc29184
-#  [12] InterpreterRuntime::at_safepoint(0x3e868, 0xb6, 0x2, 0xf9c28744, 0xf590a038, 0xffbed880), at 0xfdb0d590
-
-# These are variables that can be set to control execution
-
-compileOptions=-g
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-    static public void main(String[] args) {
-       $1 mine = new $1();
-       mine.a1(44);   // @1 delete the call that we are in when the pop occurs
-       mine.a4();
-    }
-
-    public void a1(int p1) {
-      System.out.println("a1: @1 breakpoint here");
-    }
-
-    public void a4() {
-      System.out.println("a4: The next line should not say Ni!");
-      System.out.println("a4: Ni!");   // @1 delete
-    }
-}
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    redefineClass @1
-    cmd pop
-    cmd allowExit cont
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh 
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-debuggeeFailIfPresent "Internal exception:"
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineStep.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4689395
+ * @summary "step over" after a class is redefined acts like "step out"
+ * @comment converted from test/jdk/com/sun/jdi/RedefineStep.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefineStep.java
+ * @run main/othervm RedefineStep
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class RedefineStepTarg {
+    static int counter;
+    static public void main(String[] args) {
+        RedefineStepTarg mine = new RedefineStepTarg();
+        mine.a1(10);
+        System.out.println("done");  // should not see this
+    }
+
+    public void a1(int p1) {
+        System.out.println("jj0");   // @1 breakpoint   line 10
+        a2();
+        System.out.println("jj3");    // @1 delete
+    }
+    public void a2() {
+        System.out.println("a2");
+    }
+}
+
+public class RedefineStep extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineStep().run();
+    }
+
+    private RedefineStep() {
+        super(RedefineStepTarg.class.getName(), "RedefineStep.java");
+    }
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        redefineClass(1, "-g");
+
+        jdb.command(JdbCommand.next());
+        jdb.command(JdbCommand.next());
+        jdb.command(JdbCommand.next());
+        jdb.command(JdbCommand.next());
+        jdb.command(JdbCommand.next());
+
+        new OutputAnalyzer(getJdbOutput())
+                .shouldNotContain("should not see this");
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineStep.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,102 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4689395
-#  @summary "step over" after a class is redefined acts like "step out"
-#  @author Jim Holmlund
-#  @key intermittent
-#  @run shell RedefineStep.sh
-#
-
-#pkg=untitled7
-classname=gus1
-compileOptions=-g
-#java=java_g
-
-# Uncomment this to see the JDI trace
-#jdbOptions=-dbgtrace
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-    static int counter;
-    static public void main(String[] args) {
-       $1 mine = new $1();
-       mine.a1(10);
-       System.out.println("done");  // should not see this
-    }
-
-    public void a1(int p1) {
-        System.out.println("jj0");   // @1 breakpoint   line 10
-        a2();
-        System.out.println("jj3");    // @1 delete
-    }
-    public void a2() {
-        System.out.println("a2");
-    }
-}
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    redefineClass @1
-
-    cmd next
-    cmd next
-    cmd next
-    cmd next
-    cmd next
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh 
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-
-jdbFailIfPresent 'should not see this'
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/RedefineTTYLineNumber.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4660756
+ * @summary TTY: Need to clear source cache after doing a redefine class
+ * @comment converted from test/jdk/com/sun/jdi/RedefineTTYLineNumber.sh
+ *
+ * @library /test/lib
+ * @compile -g RedefineTTYLineNumber.java
+ * @run main/othervm RedefineTTYLineNumber
+ */
+
+import jdk.test.lib.Asserts;
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+class RedefineTTYLineNumberTarg {
+
+    public void B() {
+        System.out.println("in B: @1 delete"); // delete 1 line before A method
+    }
+
+    public void A() {
+        System.out.println("expected statement printed by jdb");
+    }
+
+    public static void main(String[] args) {
+        RedefineTTYLineNumberTarg untitled41 = new RedefineTTYLineNumberTarg();
+        untitled41.A();
+        System.out.println("done");
+    }
+}
+
+public class RedefineTTYLineNumber extends JdbTest {
+
+    public static void main(String argv[]) {
+        new RedefineTTYLineNumber().run();
+    }
+
+    private RedefineTTYLineNumber() {
+        super(DEBUGGEE_CLASS, SOURCE_FILE);
+    }
+
+    private final static String DEBUGGEE_CLASS = RedefineTTYLineNumberTarg.class.getName();
+    private final static String SOURCE_FILE = "RedefineTTYLineNumber.java";
+
+    // parses line number from the jdb "Breakpoint hit" message
+    private static int parseLineNum(String s) {
+        // Breakpoint hit: "thread=main", RedefineTTYLineNumberTarg.A(), line=49 bci=0
+        // 49            System.out.println("expected statement printed by jdb");
+        Matcher m = Pattern.compile("\\bline=(\\d+)\\b").matcher(s);
+        if (!m.find()) {
+            throw new RuntimeException("could not parse line number");
+        }
+        return Integer.parseInt(m.group(1));
+    }
+
+    private void verifyBPSource(int n, String reply) {
+        if (!reply.contains("expected statement printed by jdb")) {
+            throw new RuntimeException("Breakpoint source (" + n + ") is not correct");
+        }
+    }
+
+    @Override
+    protected void runCases() {
+        jdb.command(JdbCommand.stopIn(DEBUGGEE_CLASS, "A"));
+        String bp1Reply = execCommand(JdbCommand.run()).getStdout();
+        int bp1Line = parseLineNum(bp1Reply);
+        redefineClass(1, "-g");
+        jdb.command(JdbCommand.pop());
+        jdb.command(JdbCommand.stopIn(DEBUGGEE_CLASS, "A"));
+        String bp2Reply = execCommand(JdbCommand.cont()).getStdout();
+        int bp2Line = parseLineNum(bp2Reply);
+
+        new OutputAnalyzer(getDebuggeeOutput())
+                .shouldNotContain("Internal exception:");
+        // 1 line is deleted before RedefineTTYLineNumberTarg.A(),
+        // so bp2Line should be equals bp1Line-1
+        Asserts.assertEquals(bp2Line, bp1Line - 1, "BP line numbers");
+        verifyBPSource(1, bp1Reply);
+        // uncomment the following line to reproduce JDK-8210927
+        //verifyBPSource(2, bp2Reply);
+    }
+}
--- a/test/jdk/com/sun/jdi/RedefineTTYLineNumber.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4660756
-#  @summary TTY: Need to clear source cache after doing a redefine class
-#  @author Jim Holmlund
-#  @key intermittent
-#  @run shell/timeout=240 RedefineTTYLineNumber.sh
-
-#set -x
-# These are variables that can be set to control execution
-
-#pkg=untitled7
-#classname=Untitled3
-compileOptions=-g
-#java=java_g
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-
-  public void B() {
-    System.out.println("in B");
-    System.out.println("in B: @1 delete");
-  }
-
-  // line number sensitive!!! Next line must be line 10.
-  public void A() {
-    System.out.println("in A, about to call B");  // 11 before, 10 afterward
-    System.out.println("out from B");
-  }
-
-  public static void main(String[] args) {
-    $1 untitled41 = new $1();
-    untitled41.A();
-    System.out.println("done");
-  }
-}
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    cmd stop in shtest.A
-    runToBkpt
-    #jdbFailIfNotPresent "System\.out\.println" 3
-    redefineClass @1
-    cmd pop
-    cmd stop in shtest.A
-    contToBkpt
-    #jdbFailIfNotPresent "System\.out\.println" 3
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    if [ -r $TESTSRC/ShellScaffold.sh ] ; then
-        . $TESTSRC/ShellScaffold.sh 
-    elif [ -r $TESTSRC/../ShellScaffold.sh ] ; then
-        . $TESTSRC/../ShellScaffold.sh
-    fi
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-debuggeeFailIfPresent "Internal exception:"
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/StringConvertTest.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,198 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4511950 4843082
+ * @summary 1. jdb's expression evaluation doesn't perform string conversion properly
+ *          2. TTY: run on expression evaluation
+ * @comment converted from test/jdk/com/sun/jdi/StringConvertTest.sh
+ *
+ * @library /test/lib
+ * @compile -g StringConvertTest.java
+ * @run main/othervm StringConvertTest
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class StringConvertTarg {
+    String me;
+    static JJ1 x1;
+    static JJ2 x2;
+    static JJ2[] x3 = new JJ2[2];
+    static String x4 = "abc";
+    static int ii = 89;
+    static String grower = "grower";
+    static StringBuffer sbGrower = new StringBuffer("sbGrower");
+    int ivar = 89;
+    StringConvertTarg(String xx) {
+        me = xx;
+    }
+
+    static String fred() {
+        return "a static method";
+    }
+
+    void  gus() {
+        int gusLoc = 1;
+        StringBuffer sbTim = new StringBuffer("tim");
+        int kk = 1;                          //@1 breakpoint
+    }
+
+    static String growit(String extra) {
+        grower += extra;
+        return grower;
+    }
+
+    static String sbGrowit(String extra) {
+        sbGrower.append(extra);
+        return sbGrower.toString();
+    }
+
+    public static void main(String[] args) {
+        x1 = new JJ1("first JJ1");
+        x2 = new JJ2("first JJ2");
+        x3[0] = new JJ2("array0");
+        x3[1] = new JJ2("array1");
+        StringConvertTarg loc1 = new StringConvertTarg("first me");
+
+        // These just show what output should look like
+        System.out.println("x1 = " + x1);
+        System.out.println("x2 = " + x2);
+        System.out.println("x3.toString = " + x3.toString());
+        System.out.println("x4.toString = " + x4.toString());
+
+        // Dont want to call growit since it would change
+        // the value.
+
+        System.out.println("loc1 = " + loc1);
+        System.out.println("-" + loc1);
+        loc1.gus();
+     }
+
+    // This does not have a toString method
+    static class JJ1 {
+        String me;
+
+        JJ1(String whoAmI) {
+            me = whoAmI;
+        }
+    }
+
+    // This has a toString method
+    static class JJ2 {
+        String me;
+
+        JJ2(String whoAmI) {
+            me = whoAmI;
+        }
+        public String toString() {
+            return me;
+        }
+
+        public int meth1() {
+            return 89;
+        }
+    }
+}
+
+public class StringConvertTest extends JdbTest {
+    public static void main(String argv[]) {
+        new StringConvertTest().run();
+    }
+
+    private StringConvertTest() {
+        super(DEBUGGEE_CLASS, SOURCE_FILE);
+    }
+
+    private static final String DEBUGGEE_CLASS = StringConvertTarg.class.getName();
+    private static final String SOURCE_FILE = "StringConvertTest.java";
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        // Run to breakpoint #1
+        jdb.command(JdbCommand.run());
+
+        // Each print without the 'toString()' should print the
+        // same thing as the following print with the toString().
+        // The "print 1"s are just spacers
+        jdb.command(JdbCommand.print("StringConvertTarg.x1"));
+        jdb.command(JdbCommand.print("StringConvertTarg.x1.toString()"));
+        jdb.command(JdbCommand.print("1"));
+
+        jdb.command(JdbCommand.print("StringConvertTarg.x2"));
+        jdb.command(JdbCommand.print("StringConvertTarg.x2.toString()"));
+        jdb.command(JdbCommand.print("1"));
+
+        // arrays is a special case.
+        // StringConvertTarg prints:
+        //      x3.toString = [LStringConvertTarg$JJ2;@61443d8f
+        // jdb "print ((Object)StringConvertTarg.x3).toString()" prints:
+        //      com.sun.tools.example.debug.expr.ParseException:
+        //              No instance field or method with the name toString in StringConvertTarg$JJ2[]
+        //      ((Object)StringConvertTarg.x3).toString() = null
+        // jdb "print (Object)(StringConvertTarg.x3)" prints:
+        //      (Object)(StringConvertTarg.x3) = instance of StringConvertTarg$JJ2[2] (id=624)
+        /*
+        jdb.command(JdbCommand.print("(Object)(StringConvertTarg.x3)"));
+        jdb.command(JdbCommand.print("((Object)StringConvertTarg.x3).toString()"));
+        jdb.command(JdbCommand.print("1"));
+        */
+
+        jdb.command(JdbCommand.print("StringConvertTarg.x4"));
+        jdb.command(JdbCommand.print("StringConvertTarg.x4.toString()"));
+        jdb.command(JdbCommand.print("1"));
+
+        // Make sure jdb doesn't call a method multiple times.
+        jdb.command(JdbCommand.print("StringConvertTarg.growit(\"xyz\")"));
+        jdb.command(JdbCommand.eval("StringConvertTarg.sbGrower.append(\"xyz\")"));
+        jdb.command(JdbCommand.print("1"));
+
+        jdb.command(JdbCommand.eval("sbTim.toString()"));
+        jdb.command(JdbCommand.print("1"));
+
+        jdb.command(JdbCommand.print("this"));
+        jdb.command(JdbCommand.print("this.toString()"));
+        jdb.command(JdbCommand.print("1"));
+
+        // A possible bug is that this ends up with multiple "s
+        jdb.command(JdbCommand.print("\"--\"StringConvertTarg.x1"));
+        jdb.command(JdbCommand.print("1"));
+
+        // This too
+        jdb.command(JdbCommand.print("StringConvertTarg.x4 + 2"));
+        jdb.command(JdbCommand.print("1"));
+
+        jdb.command(JdbCommand.print("this.ivar"));
+        jdb.command(JdbCommand.print("gusLoc"));
+        jdb.command(JdbCommand.print("1"));
+
+        new OutputAnalyzer(jdb.getJdbOutput())
+                .shouldNotContain("\"\"")
+                .shouldNotContain("instance of")
+                .shouldNotContain("xyzxyz");
+    }
+}
--- a/test/jdk/com/sun/jdi/StringConvertTest.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,211 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4511950 4843082
-#  @summary 1. jdb's expression evaluation doesn't perform string conversion properly
-#           2. TTY: run on expression evaluation
-#  @author jim/suvasis mukherjee
-#
-#  @key intermittent
-#  @run shell StringConvertTest.sh
-
-#  Run this script to see the bug.  See comments at the end
-#  of the .java file for info on what the bug looks like.
-
-# These are variables that can be set to control execution
-
-#pkg=untitled7
-classname=StringConvertTest
-compileOptions=-g
-#java=java_g
-#mode=-Xcomp
-
-#jdbOptions=-dbgtrace
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-class $classname {
-    String me;
-    static JJ1 x1;
-    static JJ2 x2;
-    static JJ2[] x3 = new JJ2[2];
-    static String x4 = "abc";
-    static int ii = 89;
-    static String grower = "grower";
-    static StringBuffer sbGrower = new StringBuffer("sbGrower");
-    int ivar = 89;
-    $classname(String xx) {
-        me = xx;
-    }
-
-    static String fred() {
-        return "a static method";
-    }
-
-    void  gus() {
-        int gusLoc = 1;
-        StringBuffer sbTim = new StringBuffer("tim");
-        int kk = 1;                          //@1 breakpoint
-    }
-
-    static String growit(String extra) {
-        grower += extra;
-        return grower;
-    }
-
-    static String sbGrowit(String extra) {
-        sbGrower.append(extra);
-        return sbGrower.toString();
-    }
-
-    public static void main(String[] args) {
-        x1 = new JJ1("first JJ1");
-        x2 = new JJ2("first JJ2");
-        x3[0] = new JJ2("array0");
-        x3[1] = new JJ2("array1");
-        $classname  loc1 = new $classname("first me");
-        
-        // These just show what output should look like
-        System.out.println("x1 = " + x1);
-        System.out.println("x2 = " + x2);
-        System.out.println("x3.toString = " + x3.toString());
-        System.out.println("x4.toString = " + x4.toString());
-
-        // Dont want to call growit since it would change
-        // the value.
-
-        System.out.println("loc1 = " + loc1);
-        System.out.println("-" + loc1);
-        loc1.gus();
-     }
-
-  // This does not have a toString method
-  static class JJ1 {
-    String me;
-
-    JJ1(String whoAmI) {
-        me = whoAmI;
-    }
-  }
-
-  // This has a toString method
-  static class JJ2 {
-    String me;
-
-    JJ2(String whoAmI) {
-        me = whoAmI;
-    }
-    public String toString() {
-        return me;
-    }
-
-    public int meth1() {
-        return 89;
-    }
-  }
-}
-
-EOF
-}
-
-# This is called to feed cmds to jdb.
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-
-    # Each print without the 'toString()' should print the
-    # same thing as the following print with the toString().
-    # The print 1s are just spacers
-
-    cmd print $classname.x1
-    cmd print "$classname.x1.toString()"
-    cmd print 1
-
-    cmd print $classname.x2
-    cmd print "$classname.x2.toString()"
-    cmd print 1
-
-    # An unreported bug: this isn't handled correctly.
-    # If we uncomment this line, we will get an 'instance of...'  line
-    # which will cause the test to fail.
-    #cmd print "(Object)($classname.x3)"
-    cmd print "((Object)$classname.x3).toString()"
-    cmd print 1
-
-    cmd print $classname.x4
-    cmd print "$classname.x4.toString()"
-    cmd print 1
-
-    # Make sure jdb doesn't call a method multiple times.
-    cmd print "$classname.growit(\"xyz\")"
-    cmd eval  "$classname.sbGrower.append(\"xyz\")"
-    cmd print 1
-
-    cmd eval "sbTim.toString()"
-    cmd print 1
-
-    cmd print this
-    cmd print "this.toString()"
-    cmd print 1
-
-    # A possible bug is that this ends up with multiple "s
-    cmd print '"--" + '$classname.x1
-    cmd print 1
-
-    # This too
-    cmd print "$classname.x4 + 2"
-    cmd print 1
-
-    cmd print "this.ivar"
-    cmd print gusLoc
-    cmd print 1
-}
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-jdbFailIfPresent '""'
-jdbFailIfPresent 'instance of'
-jdbFailIfPresent 'xyzxyz'
-pass
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/jdk/com/sun/jdi/WatchFramePop.java	Fri Sep 21 11:28:14 2018 -0700
@@ -0,0 +1,93 @@
+/*
+ * Copyright (c) 2002, 2018, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 4546478
+ * @summary Enabling a watchpoint can kill following NotifyFramePops
+ * @comment converted from test/jdk/com/sun/jdi/WatchFramePop.sh
+ *
+ * @library /test/lib
+ * @run main/othervm WatchFramePop
+ */
+
+import jdk.test.lib.process.OutputAnalyzer;
+import lib.jdb.JdbCommand;
+import lib.jdb.JdbTest;
+
+class WatchFramePopTarg {
+    int watchMe;
+    static public void main(String[] args) {
+        System.out.println("In Main");
+        WatchFramePopTarg mine = new WatchFramePopTarg();
+        mine.a1();
+        System.out.println("Test completed");
+    }
+
+    public void a1() {
+        a2();                           // @1 breakpoint. We'll do a watch of watchMe here
+    }
+
+    public void a2() {
+        System.out.println("in a2");
+        a3();
+    }                                   // line 18
+
+    public void a3() {
+        System.out.println("in a3");    // After the watch, we'll run to here, line 21
+        a4();                           // We'll do a 'next' to here.  The failure is that this
+    }                                   // runs to completion, or asserts with java_g
+
+    public void a4() {
+        System.out.println("in a4");
+    }
+
+}
+
+public class WatchFramePop extends JdbTest {
+    public static void main(String argv[]) {
+        new WatchFramePop().run();
+    }
+
+    private WatchFramePop() {
+        super(DEBUGGEE_CLASS, SOURCE_FILE);
+    }
+
+    private static final String DEBUGGEE_CLASS = WatchFramePopTarg.class.getName();
+    private static final String SOURCE_FILE = "WatchFramePop.java";
+
+    @Override
+    protected void runCases() {
+        setBreakpoints(1);
+        jdb.command(JdbCommand.run());
+        jdb.command(JdbCommand.watch(DEBUGGEE_CLASS, "watchMe"));
+        jdb.command(JdbCommand.stopIn(DEBUGGEE_CLASS, "a3"));
+        jdb.command(JdbCommand.cont());                             // stops at the bkpt
+        jdb.command(JdbCommand.next());                             // The bug is that this next runs to completion
+        // In which case, so does jdb
+        // so we never get here.
+
+        new OutputAnalyzer(jdb.getJdbOutput())
+                .shouldNotContain("The application exited");
+    }
+}
--- a/test/jdk/com/sun/jdi/WatchFramePop.sh	Fri Sep 21 10:18:12 2018 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,110 +0,0 @@
-#!/bin/sh
-
-#
-# Copyright (c) 2002, 2014, Oracle and/or its affiliates. All rights reserved.
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# This code is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License version 2 only, as
-# published by the Free Software Foundation.
-#
-# This code is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
-# version 2 for more details (a copy is included in the LICENSE file that
-# accompanied this code).
-#
-# You should have received a copy of the GNU General Public License version
-# 2 along with this work; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
-# or visit www.oracle.com if you need additional information or have any
-# questions.
-#
-
-#  @test
-#  @bug 4546478
-#  @summary Enabling a watchpoint can kill following NotifyFramePops
-#  @author Jim Holmlund
-#
-#  @run shell WatchFramePop.sh
-
-# These are variables that can be set to control execution
-
-#pkg=untitled7
-#classname=Untitled3
-#compileOptions=-g
-#java="java_g"
-
-createJavaFile()
-{
-    cat <<EOF > $1.java.1
-
-public class $1 {
-    int watchMe;
-    static public void main(String[] args) {
-       System.out.println("In Main");
-       $1 mine = new $1();
-       mine.a1();
-       System.out.println("Test completed");
-    }
-
-    public void a1() {
-      a2();                            // @1 breakpoint. We'll do a watch of watchMe here
-    }
-
-    public void a2() {
-      System.out.println("in a2");
-      a3();
-    }                                  // line 18
-
-    public void a3() {
-      System.out.println("in a3");     // After the watch, we'll run to here, line 21
-      a4();                            // We'll do a 'next' to here.  The failure is that this
-    }                                  // runs to completion, or asserts with java_g
-                                       
-
-    public void a4() {
-      System.out.println("in a4");
-    }
-
-}
-EOF
-}
-
-# drive jdb by sending cmds to it and examining its output
-dojdbCmds()
-{
-    setBkpts @1
-    runToBkpt @1
-    cmd watch  shtest.watchMe
-    cmd stop in shtest.a3   # bkpt at line 17
-    contToBkpt              # stops at the bkpt at 
-    cmd next                # The bug is that this next runs to completion
-                            # In which case, so does jdb
-                            # so we never get here.
-}
-
-
-mysetup()
-{
-    if [ -z "$TESTSRC" ] ; then
-        TESTSRC=.
-    fi
-
-    for ii in . $TESTSRC $TESTSRC/.. ; do
-        if [ -r "$ii/ShellScaffold.sh" ] ; then
-            . $ii/ShellScaffold.sh 
-            break
-        fi
-    done
-}
-
-# You could replace this next line with the contents
-# of ShellScaffold.sh and this script will run just the same.
-mysetup
-
-runit
-jdbFailIfPresent 'The application exited'
-pass