RedefineMethodDelInvoke.sh revision 12973:2e63fa2efdb1
1#
2# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
3# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4#
5# This code is free software; you can redistribute it and/or modify it
6# under the terms of the GNU General Public License version 2 only, as
7# published by the Free Software Foundation.
8#
9# This code is distributed in the hope that it will be useful, but WITHOUT
10# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12# version 2 for more details (a copy is included in the LICENSE file that
13# accompanied this code).
14#
15# You should have received a copy of the GNU General Public License version
16# 2 along with this work; if not, write to the Free Software Foundation,
17# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18#
19# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20# or visit www.oracle.com if you need additional information or have any
21# questions.
22#
23
24# @test
25# @bug 8042796
26# @summary jvmtiRedefineClasses.cpp: guarantee(false) failed: OLD and/or OBSOLETE method(s) found
27# @author Daniel D. Daugherty
28# @author Serguei Spitsyn
29#
30# @run shell MakeJAR3.sh RedefineMethodDelInvokeAgent 'Can-Redefine-Classes: true'
31# @run build RedefineMethodDelInvokeApp
32# @run shell RedefineMethodDelInvoke.sh
33#
34
35if [ "${TESTJAVA}" = "" ]
36then
37  echo "TESTJAVA not set.  Test cannot execute.  Failed."
38  exit 1
39fi
40
41if [ "${COMPILEJAVA}" = "" ]
42then
43  COMPILEJAVA="${TESTJAVA}"
44fi
45echo "COMPILEJAVA=${COMPILEJAVA}"
46
47if [ "${TESTSRC}" = "" ]
48then
49  echo "TESTSRC not set.  Test cannot execute.  Failed."
50  exit 1
51fi
52
53if [ "${TESTCLASSES}" = "" ]
54then
55  echo "TESTCLASSES not set.  Test cannot execute.  Failed."
56  exit 1
57fi
58
59JAVAC="${COMPILEJAVA}"/bin/javac
60JAVA="${TESTJAVA}"/bin/java
61
62cp "${TESTSRC}"/RedefineMethodDelInvokeTarget_1.java \
63    RedefineMethodDelInvokeTarget.java
64"${JAVAC}" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . RedefineMethodDelInvokeTarget.java
65mv RedefineMethodDelInvokeTarget.java RedefineMethodDelInvokeTarget_1.java
66mv RedefineMethodDelInvokeTarget.class RedefineMethodDelInvokeTarget_1.class
67
68cp "${TESTSRC}"/RedefineMethodDelInvokeTarget_2.java \
69    RedefineMethodDelInvokeTarget.java
70"${JAVAC}" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . RedefineMethodDelInvokeTarget.java
71mv RedefineMethodDelInvokeTarget.java RedefineMethodDelInvokeTarget_2.java
72mv RedefineMethodDelInvokeTarget.class RedefineMethodDelInvokeTarget_2.class
73
74"${JAVA}" ${TESTVMOPTS} -javaagent:RedefineMethodDelInvokeAgent.jar \
75    -classpath "${TESTCLASSES}" RedefineMethodDelInvokeApp > output.log 2>&1
76
77result=$?
78if [ "$result" = 0 ]; then
79    echo "The test returned expected exit code: $result"
80else
81    echo "FAIL: the test returned unexpected exit code: $result"
82    exit $result
83fi
84
85cat output.log
86
87MESG="Exception"
88grep "$MESG" output.log
89result=$?
90if [ "$result" = 0 ]; then
91    echo "FAIL: found '$MESG' in the test output"
92    result=1
93else
94    echo "PASS: did NOT find '$MESG' in the test output"
95    result=0
96fi
97
98exit $result
99