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= 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|Linux) 106 xx=`find ${jreloc}/lib -name libdt_socket.so` 107 libloc=`dirname ${xx}` 108 ;; 109 Darwin) 110 libloc=${jreloc}/lib 111 ;; 112 Windows*) 113 is_windows=true 114 libloc=${jreloc}/bin 115 sep=';' 116 ;; 117 CYGWIN*) 118 is_windows=true 119 is_cygwin=true 120 libloc=${jreloc}/bin 121 sep=':' 122 123 # This is going onto PATH and cygwin needs the form 124 # /cygdrive/j/x..... for that. 125 libdir=`cygpath -u "$TESTCLASSES"` 126 ;; 127 *) 128 echo "FAILURE: Unknown uname -s: " `uname -s` 129 exit 1 130 ;; 131 esac 132 133 # Create private transport library 134 echo "Setup private transport library by copying an existing one and renaming" 135 private_transport=private_dt_socket 136 if [ -f ${libloc}/dt_socket.dll ] ; then 137 fullpath=${libdir}/${private_transport}.dll 138 rm -f ${fullpath} 139 echo cp ${libloc}/dt_socket.dll ${fullpath} 140 cp ${libloc}/dt_socket.dll ${fullpath} 141 # make sure we can find libraries in current directory 142 PATH="${PATH}${sep}${libdir}" 143 export PATH 144 echo PATH=${PATH} 145 elif [ -f ${libloc}/libdt_socket.dylib ]; then 146 fullpath=${libdir}/lib${private_transport}.dylib 147 rm -f ${fullpath} 148 echo cp ${libloc}/libdt_socket.dylib ${fullpath} 149 cp ${libloc}/libdt_socket.dylib ${fullpath} 150 # make sure we can find libraries in current directory 151 if [ "${LD_LIBRARY_PATH}" = "" ] ; then 152 LD_LIBRARY_PATH=${libdir} 153 else 154 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} 155 fi 156 export LD_LIBRARY_PATH 157 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} 158 elif [ -f ${libloc}/libdt_socket.so ] ; then 159 fullpath=${libdir}/lib${private_transport}.so 160 rm -f ${fullpath} 161 echo cp ${libloc}/libdt_socket.so ${fullpath} 162 cp ${libloc}/libdt_socket.so ${fullpath} 163 # make sure we can find libraries in current directory 164 if [ "${LD_LIBRARY_PATH}" = "" ] ; then 165 LD_LIBRARY_PATH=${libdir} 166 else 167 LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${libdir} 168 fi 169 export LD_LIBRARY_PATH 170 echo LD_LIBRARY_PATH=${LD_LIBRARY_PATH} 171 else 172 echo "cannot find dt_socket in ${libloc} for ${private_transport}" 173 fail "cannot find dt_socket in ${libloc} for ${private_transport}" 174 fi 175 176 # 177 CP="-classpath \"${TESTCLASSES}\"" 178 # 179 if [ "$is_windows" = "true" ]; then 180 if [ "$is_cygwin" = "true" ]; then 181 win_fullpath=`cygpath -m "$fullpath" \ 182 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` 183 else 184 win_fullpath=`echo "$fullpath" \ 185 | sed -e 's#/#\\\\\\\\#g' -e 's/\.dll//'` 186 fi 187 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${win_fullpath},server=y,suspend=n" 188 else 189 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${private_transport},server=y,suspend=n" 190 fi 191 192 echo ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 193 eval ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 194 status=$? 195 echo "test status for ${DEBUGGERFLAGS} was: $status" 196 if [ $status -ne 0 ] ; then 197 fail "unspecified test failure" 198 exit 1 199 fi 200 201 pass "found private transport library" 202 exit 0 203