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