PrivateTransportTest.sh revision 5116:d45bc4307996
1#!/bin/ksh -p 2 3# 4# Copyright (c) 2005, 2011, 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: 37status=1 38 39#Call this from anywhere to fail the test with an error message 40# usage: fail "reason why the test failed" 41fail() 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" 50pass() 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 60TARGETCLASS="HelloWorld" 61if [ -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 80fi 81# 82echo "JDK under test is: $TESTJAVA" 83 84# Get flags being sent to debuggee 85DEBUGGEEFLAGS= 86if [ -r $TESTCLASSES/@debuggeeVMOptions ] ; then 87 DEBUGGEEFLAGS=`cat $TESTCLASSES/@debuggeeVMOptions` 88elif [ -r $TESTCLASSES/../@debuggeeVMOptions ] ; then 89 DEBUGGEEFLAGS=`cat $TESTCLASSES/../@debuggeeVMOptions` 90fi 91 92# Figure out what the libarch path is 93os=`uname -s` 94 95jreloc=${TESTJAVA}/jre 96if [ ! -d ${jreloc} ] ; then 97 jreloc=${TESTJAVA} 98fi 99 100libdir=${TESTCLASSES} 101 102is_windows=false 103is_cygwin=false 104case `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 ;; 152esac 153 154# Create private transport library 155echo "Setup private transport library by copying an existing one and renaming" 156private_transport=private_dt_socket 157if [ -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} 166elif [ -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} 179elif [ -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} 192else 193 echo "cannot find dt_socket in ${libloc} for ${private_transport}" 194 fail "cannot find dt_socket in ${libloc} for ${private_transport}" 195fi 196 197# 198CP="-classpath \"${TESTCLASSES}\"" 199# 200if [ "$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" 209else 210 DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${private_transport},server=y,suspend=n" 211fi 212 213echo ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 214eval ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS} 215status=$? 216echo "test status for ${DEBUGGERFLAGS} was: $status" 217if [ $status -ne 0 ] ; then 218 fail "unspecified test failure" 219 exit 1 220fi 221 222pass "found private transport library" 223exit 0 224 225