1 #!/bin/sh -x 2 3 # Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. 4 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 # 6 # This code is free software; you can redistribute it and/or modify it 7 # under the terms of the GNU General Public License version 2 only, as 8 # published by the Free Software Foundation. 9 # 10 # This code is distributed in the hope that it will be useful, but WITHOUT 11 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 # version 2 for more details (a copy is included in the LICENSE file that 14 # accompanied this code). 15 # 16 # You should have received a copy of the GNU General Public License version 17 # 2 along with this work; if not, write to the Free Software Foundation, 18 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 # 20 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 # or visit www.oracle.com if you need additional information or have any 22 # questions. 23 24 # @test 25 # @bug 7169888 26 # @compile -XDignore.symbol.file JdpUnitTest.java JdpClient.java JdpDoSomething.java 27 # @run shell JdpTest.sh --jtreg --no-compile 28 # @summary No word Failed expected in the test output 29 30 _verbose=no 31 _jtreg=no 32 _compile=yes 33 34 # temporary disable jcmd related tests 35 # _testsuite="01,02,03,04,05" 36 _testsuite="01" 37 38 _pwd=`pwd` 39 40 _testclasses=".classes" 41 _testsrc="${_pwd}" 42 _lockFileName="JdpDoSomething.lck" 43 44 _logname=".classes/output.txt" 45 _last_pid="" 46 47 _ip="224.0.23.178" 48 _port="7095" 49 _jmxport="4545" 50 51 _do_compile(){ 52 # If the test run without JTReg, we have to compile it by our self 53 # Under JTReg see @compile statement above 54 # sun.* packages is not included to symbol file lib/ct.sym so we have 55 # to ignore it 56 57 if [ ! -d ${_testclasses} ] 58 then 59 mkdir -p ${_testclasses} 60 fi 61 62 rm -f ${_testclasses}/*.class 63 64 # Compile testcase 65 ${COMPILEJAVA}/bin/javac -XDignore.symbol.file -d ${_testclasses} \ 66 JdpUnitTest.java \ 67 JdpDoSomething.java \ 68 JdpClient.java 69 70 71 if [ ! -f ${_testclasses}/JdpDoSomething.class -o ! -f ${_testclasses}/JdpClient.class -o ! -f ${_testclasses}/JdpUnitTest.class ] 72 then 73 echo "ERROR: Can't compile" 74 exit 255 75 fi 76 } 77 78 79 _app_start(){ 80 81 testappname=$1 82 shift 83 84 ${TESTJAVA}/bin/java -server $* -cp ${_testclasses} ${testappname} >> ${_logname} 2>&1 & 85 _last_pid=$! 86 87 # wait until VM is actually starts. 88 # please note, if vm doesn't start for some reason 89 # jtreg kills the test by timeout. Don't file a bug. 90 cnt=1 91 while true 92 do 93 npid=`_get_pid` 94 if [ "${npid}" != "" ] 95 then 96 break 97 fi 98 if [ "${cnt}" = "10" ] 99 then 100 echo "ERROR: Test app not started. Please check machine resources before filing a bug." 101 if [ "${_jtreg}" = "yes" ] 102 then 103 exit 255 104 fi 105 break 106 fi 107 cnt=`expr $cnt + 1` 108 sleep 1 109 done 110 } 111 112 _get_pid(){ 113 ${TESTJAVA}/bin/jps | sed -n "/Jdp/s/ .*//p" 114 } 115 116 _app_stop(){ 117 rm ${_lockFileName} 118 119 # wait until VM is actually shuts down 120 while true 121 do 122 npid=`_get_pid` 123 if [ "${npid}" = "" ] 124 then 125 break 126 fi 127 sleep 1 128 done 129 } 130 131 _testme(){ 132 ${TESTJAVA}/bin/java \ 133 -cp ${_testclasses} \ 134 $* \ 135 -Dcom.sun.management.jdp.port=${_port} \ 136 -Dcom.sun.management.jdp.address=${_ip} \ 137 JdpClient 138 } 139 140 141 _jcmd(){ 142 ${TESTJAVA}/bin/jcmd JdpDoSomething $* > /dev/null 2>/dev/null 143 } 144 145 146 _echo(){ 147 echo "$*" 148 echo "$*" >> ${_logname} 149 } 150 151 # ============= TESTS ====================================== 152 153 test_01(){ 154 155 _echo "**** Test one ****" 156 157 _app_start JdpUnitTest \ 158 -Dcom.sun.management.jdp.port=${_port} \ 159 -Dcom.sun.management.jdp.address=${_ip} \ 160 -Dcom.sun.management.jdp.name=testme \ 161 -Djava.rmi.server.hostname=localhost \ 162 -Dcom.sun.management.jdp.pause=5 163 164 res=`_testme` 165 166 case "${res}" in 167 OK*) 168 _echo "Passed" 169 ;; 170 *) 171 _echo "Failed!" 172 ;; 173 esac 174 175 _app_stop 176 } 177 178 test_02(){ 179 180 _echo "**** Test two ****" 181 182 _app_start JdpDoSomething \ 183 -Dcom.sun.management.jdp.port=${_port} \ 184 -Dcom.sun.management.jdp.address=${_ip} \ 185 -Dcom.sun.management.jdp.pause=5 \ 186 -Dcom.sun.management.jdp.name=testme \ 187 -Djava.rmi.server.hostname=localhost \ 188 -Dcom.sun.management.jmxremote.port=${_jmxport} \ 189 -Dcom.sun.management.jmxremote.authenticate=false \ 190 -Dcom.sun.management.jmxremote.ssl=false 191 192 res=`_testme` 193 194 case "${res}" in 195 OK*) 196 _echo "Passed" 197 ;; 198 *) 199 _echo "Failed!" 200 ;; 201 esac 202 203 _app_stop 204 } 205 206 test_03(){ 207 208 _echo "**** Test three ****" 209 210 _app_start JdpDoSomething 211 212 _jcmd ManagementAgent.start\ 213 jdp.port=${_port} \ 214 jdp.address=${_ip} \ 215 jdp.pause=5 \ 216 jdp.name=jcmdtest \ 217 jmxremote.port=${_jmxport} \ 218 jmxremote.authenticate=false \ 219 jmxremote.ssl=false 220 221 res=`_testme` 222 223 case "${res}" in 224 OK*) 225 _echo "Passed" 226 ;; 227 *) 228 _echo "Failed!" 229 ;; 230 esac 231 232 _app_stop 233 } 234 235 test_04(){ 236 237 _echo "**** Test four ****" 238 239 _app_start JdpDoSomething \ 240 -Dcom.sun.management.jmxremote.autodiscovery=true \ 241 -Dcom.sun.management.jdp.name=testme \ 242 -Djava.rmi.server.hostname=localhost \ 243 -Dcom.sun.management.jmxremote.port=${_jmxport} \ 244 -Dcom.sun.management.jmxremote.authenticate=false \ 245 -Dcom.sun.management.jmxremote.ssl=false 246 247 res=`_testme` 248 249 case "${res}" in 250 OK*) 251 _echo "Passed" 252 ;; 253 *) 254 _echo "Failed!" 255 ;; 256 esac 257 258 _app_stop 259 } 260 261 test_05(){ 262 263 _echo "**** Test five ****" 264 265 _app_start JdpDoSomething 266 267 _jcmd ManagementAgent.start\ 268 jmxremote.autodiscovery=true \ 269 jmxremote.port=${_jmxport} \ 270 jmxremote.authenticate=false \ 271 jmxremote.ssl=false 272 273 274 res=`_testme` 275 276 case "${res}" in 277 OK*) 278 _echo "Passed" 279 ;; 280 *) 281 _echo "Failed!" 282 ;; 283 esac 284 285 _app_stop 286 } 287 288 289 # ============= MAIN ======================================= 290 291 if [ "x${TESTJAVA}" = "x" ] 292 then 293 echo "TESTJAVA env have to be set" 294 exit 295 fi 296 297 # COMPILEJAVA variable is set when we test jre 298 if [ "x${COMPILEJAVA}" = "x" ] 299 then 300 COMPILEJAVA="${TESTJAVA}" 301 fi 302 303 304 #------------------------------------------------------------------------------ 305 # reading parameters 306 307 for parm in "$@" 308 do 309 case $parm in 310 --verbose) _verbose=yes ;; 311 --jtreg) _jtreg=yes ;; 312 --no-compile) _compile=no ;; 313 --testsuite=*) _testsuite=`_echo $parm | sed "s,^--.*=\(.*\),\1,"` ;; 314 *) 315 echo "Undefined parameter $parm. Try --help for help" 316 exit 317 ;; 318 esac 319 done 320 321 if [ "${_compile}" = "yes" ] 322 then 323 _do_compile 324 fi 325 326 if [ "${_jtreg}" = "yes" ] 327 then 328 _testclasses=${TESTCLASSES} 329 _testsrc=${TESTSRC} 330 _logname="output.txt" 331 fi 332 333 # Make sure _tesclasses is absolute path 334 tt=`echo ${_testclasses} | sed -e 's,/,,'` 335 if [ "${tt}" = "${_testclasses}" ] 336 then 337 _testclasses="${_pwd}/${_testclasses}" 338 fi 339 340 _policyname="${_testclasses}/policy" 341 342 rm -f ${_logname} 343 rm -f ${_policyname} 344 345 if [ -f ${_testsrc}/policy.tpl ] 346 then 347 348 cat ${_testsrc}/policy.tpl | \ 349 sed -e "s,@_TESTCLASSES@,${_testclasses},g" -e "s,@TESTJAVA@,${TESTJAVA},g" \ 350 > ${_policyname} 351 352 fi 353 354 # Local mode tests 355 for i in `echo ${_testsuite} | sed -e "s/,/ /g"` 356 do 357 test_${i} 358 done