1 #!/bin/ksh -p |
|
2 |
|
3 # |
|
4 # Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. |
|
5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
6 # |
|
7 # This code is free software; you can redistribute it and/or modify it |
|
8 # under the terms of the GNU General Public License version 2 only, as |
|
9 # published by the Free Software Foundation. |
|
10 # |
|
11 # This code is distributed in the hope that it will be useful, but WITHOUT |
|
12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
14 # version 2 for more details (a copy is included in the LICENSE file that |
|
15 # accompanied this code). |
|
16 # |
|
17 # You should have received a copy of the GNU General Public License version |
|
18 # 2 along with this work; if not, write to the Free Software Foundation, |
|
19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
20 # |
|
21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
22 # or visit www.oracle.com if you need additional information or have any |
|
23 # questions. |
|
24 # |
|
25 |
|
26 # |
|
27 # @test PrivateTransportTest.sh |
|
28 # @bug 6225664 6220618 |
|
29 # @summary Test for when private transport library outside jdk |
|
30 # @author Kelly O'Hair |
|
31 # |
|
32 # @run compile -g HelloWorld.java |
|
33 # @run shell PrivateTransportTest.sh |
|
34 # |
|
35 |
|
36 # Beginning of subroutines: |
|
37 status=1 |
|
38 |
|
39 #Call this from anywhere to fail the test with an error message |
|
40 # usage: fail "reason why the test failed" |
|
41 fail() |
|
42 { echo "The test failed :-(" |
|
43 echo "$*" 1>&2 |
|
44 echo "exit status was $status" |
|
45 exit $status |
|
46 } #end of fail() |
|
47 |
|
48 #Call this from anywhere to pass the test with a message |
|
49 # usage: pass "reason why the test passed if applicable" |
|
50 pass() |
|
51 { echo "The test passed!!!" |
|
52 echo "$*" 1>&2 |
|
53 exit 0 |
|
54 } #end of pass() |
|
55 |
|
56 # end of subroutines |
|
57 |
|
58 # The beginning of the script proper |
|
59 |
|
60 TARGETCLASS="HelloWorld" |
|
61 if [ -z "${TESTJAVA}" ] ; then |
|
62 # TESTJAVA is not set, so the test is running stand-alone. |
|
63 # TESTJAVA holds the path to the root directory of the build of the JDK |
|
64 # to be tested. That is, any java files run explicitly in this shell |
|
65 # should use TESTJAVA in the path to the java interpreter. |
|
66 # So, we'll set this to the JDK spec'd on the command line. If none |
|
67 # is given on the command line, tell the user that and use a default. |
|
68 # THIS IS THE JDK BEING TESTED. |
|
69 if [ -n "$1" ] ; then |
|
70 TESTJAVA=$1 |
|
71 else |
|
72 TESTJAVA=$JAVA_HOME |
|
73 fi |
|
74 TESTSRC=. |
|
75 TESTCLASSES=. |
|
76 #Deal with .class files: |
|
77 ${TESTJAVA}/bin/javac -d ${TESTCLASSES} \ |
|
78 -classpath "${TESTCLASSES}" -g \ |
|
79 ${TARGETCLASS}.java |
|
80 fi |
|
81 # |
|
82 echo "JDK under test is: $TESTJAVA" |
|
83 |
|
84 # Get flags being sent to debuggee |
|
85 DEBUGGEEFLAGS=$TESTVMOPTS $TESTJAVAOPTS |
|
86 |
|
87 # Figure out what the libarch path is |
|
88 os=`uname -s` |
|
89 |
|
90 jreloc=${TESTJAVA}/jre |
|
91 if [ ! -d ${jreloc} ] ; then |
|
92 jreloc=${TESTJAVA} |
|
93 fi |
|
94 |
|
95 libdir=${TESTCLASSES} |
|
96 |
|
97 is_windows=false |
|
98 is_cygwin=false |
|
99 case `uname -s` in |
|
100 SunOS|Linux|AIX) |
|
101 xx=`find ${jreloc}/lib -name libdt_socket.so` |
|
102 libloc=`dirname ${xx}` |
|
103 ;; |
|
104 Darwin) |
|
105 libloc=${jreloc}/lib |
|
106 ;; |
|
107 Windows*) |
|
108 is_windows=true |
|
109 libloc=${jreloc}/bin |
|
110 sep=';' |
|
111 ;; |
|
112 CYGWIN*) |
|
113 is_windows=true |
|
114 is_cygwin=true |
|
115 libloc=${jreloc}/bin |
|
116 sep=':' |
|
117 |
|
118 # This is going onto PATH and cygwin needs the form |
|
119 # /cygdrive/j/x..... for that. |
|
120 libdir=`cygpath -u "$TESTCLASSES"` |
|
121 ;; |
|
122 *) |
|
123 echo "FAILURE: Unknown uname -s: " `uname -s` |
|
124 exit 1 |
|
125 ;; |
|
126 esac |
|
127 |
|
128 # Create private transport library |
|
129 echo "Setup private transport library by copying an existing one and renaming" |
|
130 private_transport=private_dt_socket |
|
131 if [ -f ${libloc}/dt_socket.dll ] ; then |
|
132 fullpath=${libdir}/${private_transport}.dll |
|
133 rm -f ${fullpath} |
|
134 echo cp ${libloc}/dt_socket.dll ${fullpath} |
|
135 cp ${libloc}/dt_socket.dll ${fullpath} |
|
136 # make sure we can find libraries in current directory |
|
137 PATH="${PATH}${sep}${libdir}" |
|
138 export PATH |
|
139 echo PATH=${PATH} |
|
140 elif [ -f ${libloc}/libdt_socket.dylib ]; then |
|
141 fullpath=${libdir}/lib${private_transport}.dylib |
|
142 rm -f ${fullpath} |
|
143 echo cp ${libloc}/libdt_socket.dylib ${fullpath} |
|
144 cp ${libloc}/libdt_socket.dylib ${fullpath} |
|
145 # make sure we can find libraries in current directory |
|
146 if [ "${LD_LIBRARY_PATH}" = "" ] ; then |
|
147 LD_LIBRARY_PATH=${libdir} |
|
148 else |
|
149 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} |
|
150 fi |
|
151 export LD_LIBRARY_PATH |
|
152 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} |
|
153 elif [ -f ${libloc}/libdt_socket.so ] ; then |
|
154 fullpath=${libdir}/lib${private_transport}.so |
|
155 rm -f ${fullpath} |
|
156 echo cp ${libloc}/libdt_socket.so ${fullpath} |
|
157 cp ${libloc}/libdt_socket.so ${fullpath} |
|
158 # make sure we can find libraries in current directory |
|
159 if [ "$os" = "AIX" ] ; then |
|
160 if [ "${LIBPATH}" = "" ] ; then |
|
161 LIBPATH=${libdir} |
|
162 else |
|
163 LIBPATH=${LIBPATH}:${libdir} |
|
164 fi |
|
165 export LIBPATH |
|
166 echo LIBPATH=${LIBPATH} |
|
167 else |
|
168 if [ "${LD_LIBRARY_PATH}" = "" ] ; then |
|
169 LD_LIBRARY_PATH=${libdir} |
|
170 else |
|
171 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} |
|
172 fi |
|
173 export LD_LIBRARY_PATH |
|
174 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} |
|
175 fi |
|
176 else |
|
177 echo "cannot find dt_socket in ${libloc} for ${private_transport}" |
|
178 fail "cannot find dt_socket in ${libloc} for ${private_transport}" |
|
179 fi |
|
180 |
|
181 # |
|
182 CP="-classpath \"${TESTCLASSES}\"" |
|
183 # |
|
184 if [ "$is_windows" = "true" ]; then |
|
185 if [ "$is_cygwin" = "true" ]; then |
|
186 win_fullpath=`cygpath -m "$fullpath" \ |
|
187 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` |
|
188 else |
|
189 win_fullpath=`echo "$fullpath" \ |
|
190 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` |
|
191 fi |
|
192 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${win_fullpath},server=y,suspend=n" |
|
193 else |
|
194 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${private_transport},server=y,suspend=n" |
|
195 fi |
|
196 |
|
197 echo ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} |
|
198 eval ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} |
|
199 status=$? |
|
200 echo "test status for ${DEBUGGERFLAGS} was: $status" |
|
201 if [ $status -ne 0 ] ; then |
|
202 fail "unspecified test failure" |
|
203 exit 1 |
|
204 fi |
|
205 |
|
206 pass "found private transport library" |
|
207 exit 0 |
|
208 |
|