test/jdk/java/util/ServiceLoader/basic/basic.sh
branchJDK-8200758-branch
changeset 56884 0b2da0fd5363
parent 56883 0d9b95700522
parent 51765 e10ade04afe5
child 56885 4c56efca06ca
equal deleted inserted replaced
56883:0d9b95700522 56884:0b2da0fd5363
     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     cp p2.jar p2dup.jar
       
    80     mv p3.jar $EXTD
       
    81 
       
    82     cp $TESTCLASSES/Load.class $TESTD
       
    83     cp $TESTCLASSES/FooService.class $TESTD
       
    84     cp $TESTCLASSES/FooProvider1.class $TESTD
       
    85     mkdir -p $TESTD/META-INF/services
       
    86     echo FooProvider1 \
       
    87       >$TESTD/META-INF/services/FooService
       
    88 
       
    89     # This gives us:
       
    90     #   $TESTD: FooProvider1
       
    91     #   .     : FooProvider2, in p2.jar
       
    92     #   $EXTD:  FooProvider3, in p3.jar
       
    93 
       
    94 fi
       
    95 
       
    96 failures=0
       
    97 
       
    98 go() {
       
    99   echo ''
       
   100   cp="$1"; shift
       
   101   if [ -z "$cp" ]; then cp="$TESTCLASSES"; else cp="$TESTCLASSES$SEP$cp"; fi
       
   102   vmargs="$1"; shift
       
   103   sh -xc "'$JAVA' ${TESTVMOPTS} -cp $cp $vmargs $T $*" 2>&1
       
   104   if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
       
   105 }
       
   106 
       
   107 
       
   108 # Java-level tests
       
   109 
       
   110 T=Basic
       
   111 go ".${SEP}$TESTD${SEP}p2.jar" ""
       
   112 
       
   113 # Success cases
       
   114 
       
   115 T=Load
       
   116 
       
   117 go "$TESTD" "" FooProvider1
       
   118 
       
   119 go ".${SEP}p2.jar" "" FooProvider2
       
   120 
       
   121 go ".${SEP}p2.jar${SEP}p2dup.jar" "" FooProvider2
       
   122 
       
   123 go "${P3JAR}${SEP}p2.jar" "" FooProvider3 FooProvider2
       
   124 
       
   125 go "$TESTD${SEP}p2.jar" "" FooProvider1 FooProvider2
       
   126 
       
   127 go "${P3JAR}${SEP}$TESTD" "" FooProvider3 FooProvider1
       
   128 
       
   129 go "${P3JAR}${SEP}$TESTD${SEP}p2.jar" "" \
       
   130   FooProvider3 FooProvider1 FooProvider2
       
   131 
       
   132 # Failure cases
       
   133 
       
   134 mkdir -p x.meta/META-INF/services
       
   135 
       
   136 # Simple failures
       
   137 for p in FooProvider42 'blah blah' 9234 'X!' BarProvider; do
       
   138   echo $p >x.meta/META-INF/services/FooService
       
   139   go ".${SEP}x.meta" "" fail
       
   140 done
       
   141 
       
   142 # Failures followed by successes
       
   143 echo FooProvider42 >x.meta/META-INF/services/FooService
       
   144 go "$TESTD${SEP}x.meta" "" FooProvider1 fail
       
   145 go "x.meta${SEP}$TESTD" "" fail FooProvider1
       
   146 go "$TESTD${SEP}x.meta${SEP}${SEP}p2.jar" "" \
       
   147   FooProvider1 fail FooProvider2
       
   148 
       
   149 
       
   150 # Summary
       
   151 
       
   152 echo ''
       
   153 if [ $failures -gt 0 ];
       
   154   then echo "$failures case(s) failed";
       
   155   else echo "All cases passed"; fi
       
   156 exit $failures