blob: 49551f848e59fbb74a3a6c302eaf37f6bf05e3e2 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001#!/bin/ksh -p
2
3#
4# Copyright 2005-2006 Sun Microsystems, Inc. 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
22# CA 95054 USA or visit www.sun.com if you need additional information or
23# have any 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
102case `uname -s` in
103 SunOS)
104 libarch=`uname -p`
105 d64=`echo "${DEBUGGEEFLAGS}" | fgrep -- -d64`
106 case `uname -p` in
107 sparc)
108 if [ "${d64}" != "" ] ; then
109 libarch=sparcv9
110 fi
111 ;;
112 i386)
113 if [ "${d64}" != "" ] ; then
114 libarch=amd64
115 fi
116 ;;
117 *)
118 echo "FAILURE: Unknown uname -p: " `uname -p`
119 exit 1
120 ;;
121 esac
122 libloc=${jreloc}/lib/${libarch}
123 ;;
124 Linux)
125 xx=`find ${jreloc}/lib -name libdt_socket.so`
126 libloc=`dirname ${xx}`
127 ;;
128 Windows*)
129 libloc=${jreloc}/bin
130 sep=';'
131 ;;
132 CYGWIN*)
133 libloc=${jreloc}/bin
134 sep=':'
135
136 # This is going onto PATH and cygwin needs the form
137 # /cygdrive/j/x..... for that.
138 libdir=`cygpath -u "$TESTCLASSES"`
139 ;;
140 *)
141 echo "FAILURE: Unknown uname -s: " `uname -s`
142 exit 1
143 ;;
144esac
145
146# Create private transport library
147echo "Setup private transport library by copying an existing one and renaming"
148private_transport=private_dt_socket
149if [ -f ${libloc}/dt_socket.dll ] ; then
150 fullpath=${libdir}/${private_transport}.dll
151 rm -f ${fullpath}
152 echo cp ${libloc}/dt_socket.dll ${fullpath}
153 cp ${libloc}/dt_socket.dll ${fullpath}
154 # make sure we can find libraries in current directory
155 PATH="${PATH}${sep}${libdir}"
156 export PATH
157 echo PATH=${PATH}
158elif [ -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}
171else
172 echo "cannot find dt_socket in ${libloc} for ${private_transport}"
173 fail "cannot find dt_socket in ${libloc} for ${private_transport}"
174fi
175
176#
177CP="-classpath \"${TESTCLASSES}\""
178#
179DEBUGGEEFLAGS="$DEBUGGEEFLAGS -agentlib:jdwp=transport=${private_transport},server=y,suspend=n"
180
181echo ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS}
182eval ${TESTJAVA}/bin/java ${DEBUGGEEFLAGS} ${CP} ${TARGETCLASS}
183status=$?
184echo "test status for ${DEBUGGERFLAGS} was: $status"
185if [ $status -ne 0 ] ; then
186 fail "unspecified test failure"
187 exit 1
188fi
189
190pass "found private transport library"
191exit 0
192