1 #!/bin/sh
   2 
   3 #
   4 # Copyright (c) 2005, 2015, 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
  28 # @bug 6173575 6388987
  29 # @summary Unit tests for appendToBootstrapClassLoaderSearch and
  30 #   appendToSystemClasLoaderSearch methods.
  31 #
  32 # @modules java.instrument
  33 # @build Agent AgentSupport BootSupport BasicTest PrematureLoadTest DynamicTest
  34 # @run shell/timeout=240 run_tests.sh
  35 
  36 if [ "${TESTSRC}" = "" ]
  37 then
  38   echo "TESTSRC not set.  Test cannot execute.  Failed."
  39   exit 1
  40 fi
  41 
  42 . ${TESTSRC}/CommonSetup.sh
  43 
  44 
  45 # Simple tests
  46 
  47 echo "Creating jar files for simple tests..."
  48 
  49 cd ${TESTCLASSES}
  50 
  51 "$JAR" ${TESTTOOLVMOPTS} -cfm Agent.jar "${TESTSRC}"/manifest.mf Agent.class
  52 "$JAR" ${TESTTOOLVMOPTS} -cf  AgentSupport.jar AgentSupport.class
  53 "$JAR" ${TESTTOOLVMOPTS} -cf  BootSupport.jar BootSupport.class
  54 "$JAR" ${TESTTOOLVMOPTS} -cf  SimpleTests.jar BasicTest.class PrematureLoadTest.class
  55 
  56 failures=0
  57 
  58 go() {
  59     echo ''
  60     sh -xc "$JAVA ${TESTVMOPTS} -javaagent:Agent.jar -classpath SimpleTests.jar  $1 $2 $3" 2>&1
  61     if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
  62 }
  63 
  64 go BasicTest
  65 go PrematureLoadTest
  66 
  67 # Functional tests
  68 
  69 echo ''
  70 echo "Setup for functional tests..."
  71 
  72 # Create org.tools.Tracer in temp directory so that it's not seen on the
  73 # system class path
  74 
  75 mkdir tmp
  76 "${JAVAC}" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d tmp "${TESTSRC}"/Tracer.java
  77 (cd tmp; "${JAR}" ${TESTTOOLVMOPTS} cf ../Tracer.jar org/tools/Tracer.class)
  78 
  79 # InstrumentedApplication is Application+instrmentation - don't copy as
  80 # we don't want the original file permission
  81 
  82 cat "${TESTSRC}"/InstrumentedApplication.java > ./Application.java
  83 "${JAVAC}" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -classpath Tracer.jar -d . Application.java
  84 mv Application.class InstrumentedApplication.bytes
  85 
  86 cp "${TESTSRC}"/Application.java .
  87 "${JAVAC}" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . Application.java
  88 
  89 sh -xc "$JAVA ${TESTVMOPTS} -classpath . -javaagent:Agent.jar DynamicTest" 2>&1
  90 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
  91 
  92 # Repeat test with security manager
  93 sh -xc "$JAVA ${TESTVMOPTS} -classpath . -javaagent:Agent.jar -Djava.security.manager DynamicTest" 2>&1
  94 if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
  95 
  96 #
  97 # Results
  98 #
  99 echo ''
 100 if [ $failures -gt 0 ];
 101   then echo "$failures test(s) failed";
 102   else echo "All test(s) passed"; fi
 103 exit $failures