1 #!/bin/ksh -p 2 3 # 4 # Copyright (c) 2005, 2012, 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= 86 if [ -r $TESTCLASSES/@debuggeeVMOptions ] ; then 87 DEBUGGEEFLAGS=`cat $TESTCLASSES/@debuggeeVMOptions` 88 elif [ -r $TESTCLASSES/../@debuggeeVMOptions ] ; then 89 DEBUGGEEFLAGS=`cat $TESTCLASSES/../@debuggeeVMOptions` 90 fi 91 92 # Figure out what the libarch path is 93 os=`uname -s` 94 95 jreloc=${TESTJAVA}/jre 96 if [ ! -d ${jreloc} ] ; then 97 jreloc=${TESTJAVA} 98 fi 99 100 libdir=${TESTCLASSES} 101 102 is_windows=false 103 is_cygwin=false 104 case `uname -s` in 105 SunOS) 106 libarch=`uname -p` 107 d64=`echo "${DEBUGGEEFLAGS}" | fgrep -- -d64` 108 case `uname -p` in 109 sparc) 110 if [ "${d64}" != "" ] ; then 111 libarch=sparcv9 112 fi 113 ;; 114 i386) 115 if [ "${d64}" != "" ] ; then 116 libarch=amd64 117 fi 118 ;; 119 *) 120 echo "FAILURE: Unknown uname -p: " `uname -p` 121 exit 1 122 ;; 123 esac 124 libloc=${jreloc}/lib/${libarch} 125 ;; 126 Linux) 127 xx=`find ${jreloc}/lib -name libdt_socket.so` 128 libloc=`dirname ${xx}` 129 ;; 130 Darwin) 131 libloc=${jreloc}/lib 132 ;; 133 Windows*) 134 is_windows=true 135 libloc=${jreloc}/bin 136 sep=';' 137 ;; 138 CYGWIN*) 139 is_windows=true 140 is_cygwin=true 141 libloc=${jreloc}/bin 142 sep=':' 143 144 # This is going onto PATH and cygwin needs the form 145 # /cygdrive/j/x..... for that. 146 libdir=`cygpath -u "$TESTCLASSES"` 147 ;; 148 *) 149 echo "FAILURE: Unknown uname -s: " `uname -s` 150 exit 1 151 ;; 152 esac 153 154 # Create private transport library 155 echo "Setup private transport library by copying an existing one and renaming" 156 private_transport=private_dt_socket 157 if [ -f ${libloc}/dt_socket.dll ] ; then 158 fullpath=${libdir}/${private_transport}.dll 159 rm -f ${fullpath} 160 echo cp ${libloc}/dt_socket.dll ${fullpath} 161 cp ${libloc}/dt_socket.dll ${fullpath} 162 # make sure we can find libraries in current directory 163 PATH="${PATH}${sep}${libdir}" 164 export PATH 165 echo PATH=${PATH} 166 elif [ -f ${libloc}/libdt_socket.dylib ]; then 167 fullpath=${libdir}/lib${private_transport}.dylib 168 rm -f ${fullpath} 169 echo cp ${libloc}/libdt_socket.dylib ${fullpath} 170 cp ${libloc}/libdt_socket.dylib ${fullpath} 171 # make sure we can find libraries in current directory 172 if [ "${LD_LIBRARY_PATH}" = "" ] ; then 173 LD_LIBRARY_PATH=${libdir} 174 else 175 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} 176 fi 177 export LD_LIBRARY_PATH 178 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} 179 elif [ -f ${libloc}/libdt_socket.so ] ; then 180 fullpath=${libdir}/lib${private_transport}.so 181 rm -f ${fullpath} 182 echo cp ${libloc}/libdt_socket.so ${fullpath} 183 cp ${libloc}/libdt_socket.so ${fullpath} 184 # make sure we can find libraries in current directory 185 if [ "${LD_LIBRARY_PATH}" = "" ] ; then 186 LD_LIBRARY_PATH=${libdir} 187 else 188 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} 189 fi 190 export LD_LIBRARY_PATH 191 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} 192 else 193 echo "cannot find dt_socket in ${libloc} for ${private_transport}" 194 fail "cannot find dt_socket in ${libloc} for ${private_transport}" 195 fi 196 197 # 198 CP="-classpath \"${TESTCLASSES}\"" 199 # 200 if [ "$is_windows" = "true" ]; then 201 if [ "$is_cygwin" = "true" ]; then 202 win_fullpath=`cygpath -m "$fullpath" \ 203 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` 204 else 205 win_fullpath=`echo "$fullpath" \ 206 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` 207 fi 208 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${win_fullpath},server=y,suspend=n" 209 else 210 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${private_transport},server=y,suspend=n" 211 fi 212 213 echo ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 214 eval ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 215 status=$? 216 echo "test status for ${DEBUGGERFLAGS} was: $status" 217 if [ $status -ne 0 ] ; then 218 fail "unspecified test failure" 219 exit 1 220 fi 221 222 pass "found private transport library" 223 exit 0 224