jdk/test/java/util/ServiceLoader/basic/basic.sh
changeset 42338 a60f280f803c
child 44359 c6761862ca0b
equal deleted inserted replaced
42148:7a4a59859ac0 42338:a60f280f803c
       
     1 #
       
     2 # Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.
       
     3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       
     4 #
       
     5 # This code is free software; you can redistribute it and/or modify it
       
     6 # under the terms of the GNU General Public License version 2 only, as
       
     7 # published by the Free Software Foundation.
       
     8 #
       
     9 # This code is distributed in the hope that it will be useful, but WITHOUT
       
    10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
       
    11 # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
       
    12 # version 2 for more details (a copy is included in the LICENSE file that
       
    13 # accompanied this code).
       
    14 #
       
    15 # You should have received a copy of the GNU General Public License version
       
    16 # 2 along with this work; if not, write to the Free Software Foundation,
       
    17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
       
    18 #
       
    19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
       
    20 # or visit www.oracle.com if you need additional information or have any
       
    21 # questions.
       
    22 #
       
    23 
       
    24 # @test
       
    25 # @bug 4640520 6354623 7198496
       
    26 # @summary Unit test for java.util.ServiceLoader
       
    27 #
       
    28 # @build Basic Load FooService FooProvider1 FooProvider2 FooProvider3 BarProvider
       
    29 # @run shell basic.sh
       
    30 
       
    31 # Command-line usage: sh basic.sh /path/to/build
       
    32 
       
    33 if [ -z "$TESTJAVA" ]; then
       
    34   if [ $# -lt 1 ]; then exit 1; fi
       
    35   TESTJAVA="$1"; shift
       
    36   COMPILEJAVA="${TESTJAVA}"
       
    37   TESTSRC="`pwd`"
       
    38   TESTCLASSES="`pwd`"
       
    39 fi
       
    40 
       
    41 JAVA="$TESTJAVA/bin/java"
       
    42 JAR="$COMPILEJAVA/bin/jar"
       
    43 
       
    44 OS=`uname -s`
       
    45 case "$OS" in
       
    46     SunOS | Darwin | AIX )
       
    47       FS='/'
       
    48       SEP=':' ;;
       
    49     Linux )
       
    50       FS='/'
       
    51       SEP=':' ;;
       
    52     * )
       
    53       FS='\\'
       
    54       SEP='\;' ;;
       
    55 esac
       
    56 
       
    57 JARD=x.jar
       
    58 EXTD=x.ext
       
    59 TESTD=x.test
       
    60 P3JAR=${EXTD}${FS}p3.jar
       
    61 
       
    62 if [ \! -d $EXTD ]; then
       
    63     # Initialize
       
    64     echo Initializing...
       
    65     rm -rf $JARD $EXTD $TESTD
       
    66     mkdir -p $JARD $EXTD $TESTD
       
    67 
       
    68     for n in 2 3; do
       
    69       rm -rf $JARD/*; mkdir -p $JARD/META-INF/services
       
    70       echo FooProvider$n \
       
    71         >$JARD/META-INF/services/FooService
       
    72       cp $TESTCLASSES/FooProvider$n.class $JARD
       
    73       if [ $n = 3 ]; then
       
    74         cp $TESTCLASSES/FooService.class $JARD
       
    75       fi
       
    76       (cd $JARD; "$JAR" ${TESTTOOLVMOPTS} -cf ../p$n.jar *)
       
    77     done
       
    78 
       
    79     mv p3.jar $EXTD
       
    80 
       
    81     cp $TESTCLASSES/Load.class $TESTD
       
    82     cp $TESTCLASSES/FooService.class $TESTD
       
    83     cp $TESTCLASSES/FooProvider1.class $TESTD
       
    84     mkdir -p $TESTD/META-INF/services
       
    85     echo FooProvider1 \
       
    86       >$TESTD/META-INF/services/FooService
       
    87 
       
    88     # This gives us:
       
    89     #   $TESTD: FooProvider1
       
    90     #   .     : FooProvider2, in p2.jar
       
    91     #   $EXTD:  FooProvider3, in p3.jar
       
    92 
       
    93 fi
       
    94 
       
    95 failures=0
       
    96 
       
    97 go() {
       
    98   echo ''
       
    99   cp="$1"; shift
       
   100   if [ -z "$cp" ]; then cp="$TESTCLASSES"; else cp="$TESTCLASSES$SEP$cp"; fi
       
   101   vmargs="$1"; shift
       
   102   sh -xc "'$JAVA' ${TESTVMOPTS} -cp $cp $vmargs $T $*" 2>&1
       
   103   if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
       
   104 }
       
   105 
       
   106 
       
   107 # Java-level tests
       
   108 
       
   109 T=Basic
       
   110 go ".${SEP}$TESTD${SEP}p2.jar" ""
       
   111 
       
   112 # Success cases
       
   113 
       
   114 T=Load
       
   115 
       
   116 go "$TESTD" "" FooProvider1
       
   117 
       
   118 go ".${SEP}p2.jar" "" FooProvider2
       
   119 
       
   120 go "${P3JAR}${SEP}p2.jar" "" FooProvider3 FooProvider2
       
   121 
       
   122 go "$TESTD${SEP}p2.jar" "" FooProvider1 FooProvider2
       
   123 
       
   124 go "${P3JAR}${SEP}$TESTD" "" FooProvider3 FooProvider1
       
   125 
       
   126 go "${P3JAR}${SEP}$TESTD${SEP}p2.jar" "" \
       
   127   FooProvider3 FooProvider1 FooProvider2
       
   128 
       
   129 # Failure cases
       
   130 
       
   131 mkdir -p x.meta/META-INF/services
       
   132 
       
   133 # Simple failures
       
   134 for p in FooProvider42 'blah blah' 9234 'X!' BarProvider; do
       
   135   echo $p >x.meta/META-INF/services/FooService
       
   136   go ".${SEP}x.meta" "" fail
       
   137 done
       
   138 
       
   139 # Failures followed by successes
       
   140 echo FooProvider42 >x.meta/META-INF/services/FooService
       
   141 go "$TESTD${SEP}x.meta" "" FooProvider1 fail
       
   142 go "x.meta${SEP}$TESTD" "" fail FooProvider1
       
   143 go "$TESTD${SEP}x.meta${SEP}${SEP}p2.jar" "" \
       
   144   FooProvider1 fail FooProvider2
       
   145 
       
   146 
       
   147 # Summary
       
   148 
       
   149 echo ''
       
   150 if [ $failures -gt 0 ];
       
   151   then echo "$failures case(s) failed";
       
   152   else echo "All cases passed"; fi
       
   153 exit $failures