test/jdk/com/sun/jdi/PrivateTransportTest.sh
branchJEP-230-microbenchmarks-branch
changeset 56921 69544f53b8bf
parent 56920 e0750e33f818
parent 51997 9ce37fa2e179
child 56922 4219852032ba
equal deleted inserted replaced
56920:e0750e33f818 56921:69544f53b8bf
     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