Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/util/ServiceLoader/basic.sh
38812 views
#1# Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved.2# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.3#4# This code is free software; you can redistribute it and/or modify it5# under the terms of the GNU General Public License version 2 only, as6# published by the Free Software Foundation.7#8# This code is distributed in the hope that it will be useful, but WITHOUT9# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or10# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License11# version 2 for more details (a copy is included in the LICENSE file that12# accompanied this code).13#14# You should have received a copy of the GNU General Public License version15# 2 along with this work; if not, write to the Free Software Foundation,16# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.17#18# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA19# or visit www.oracle.com if you need additional information or have any20# questions.21#2223# @test24# @bug 4640520 6354623 719849625# @summary Unit test for java.util.ServiceLoader26#27# @build Basic Load FooService FooProvider1 FooProvider2 FooProvider328# @run shell basic.sh2930# Command-line usage: sh basic.sh /path/to/build3132if [ -z "$TESTJAVA" ]; then33if [ $# -lt 1 ]; then exit 1; fi34TESTJAVA="$1"; shift35COMPILEJAVA="${TESTJAVA}"36TESTSRC="`pwd`"37TESTCLASSES="`pwd`"38fi3940JAVA="$TESTJAVA/bin/java"41JAR="$COMPILEJAVA/bin/jar"4243OS=`uname -s`44case "$OS" in45SunOS | Darwin | AIX )46SEP=':' ;;47Linux )48SEP=':' ;;49* )50SEP='\;' ;;51esac5253JARD=x.jar54EXTD=x.ext55TESTD=x.test5657if [ \! -d $EXTD ]; then58# Initialize59echo Initializing...60rm -rf $JARD $EXTD $TESTD61mkdir -p $JARD $EXTD $TESTD6263for n in 2 3; do64rm -rf $JARD/*; mkdir -p $JARD/META-INF/services65echo FooProvider$n \66>$JARD/META-INF/services/FooService67cp $TESTCLASSES/FooProvider$n.class $JARD68if [ $n = 3 ]; then69cp $TESTCLASSES/FooService.class $JARD70fi71(cd $JARD; "$JAR" ${TESTTOOLVMOPTS} -cf ../p$n.jar *)72done7374mv p3.jar $EXTD7576cp $TESTCLASSES/Load.class $TESTD77cp $TESTCLASSES/FooService.class $TESTD78cp $TESTCLASSES/FooProvider1.class $TESTD79mkdir -p $TESTD/META-INF/services80echo FooProvider1 \81>$TESTD/META-INF/services/FooService8283# This gives us:84# $TESTD: FooProvider185# . : FooProvider2, in p2.jar86# $EXTD: FooProvider3, in p3.jar8788fi8990failures=09192go() {93echo ''94cp="$1"; shift95if [ -z "$cp" ]; then cp="$TESTCLASSES"; else cp="$TESTCLASSES$SEP$cp"; fi96vmargs="$1"; shift97sh -xc "'$JAVA' ${TESTVMOPTS} -cp $cp $vmargs $T $*" 2>&198if [ $? != 0 ]; then failures=`expr $failures + 1`; fi99}100101102# Java-level tests103104T=Basic105go ".${SEP}$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD"106107108# Success cases109110T=Load111112go "$TESTD" "" FooProvider1113114go ".${SEP}p2.jar" "" FooProvider2115116go "" "-Djava.ext.dirs=$EXTD" FooProvider3117118go "$TESTD${SEP}p2.jar" "" FooProvider1 FooProvider2119120go "$TESTD" "-Djava.ext.dirs=$EXTD" FooProvider3 FooProvider1121122go "$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" \123FooProvider3 FooProvider1 FooProvider2124125# Should only find the installed provider126go "$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" -i FooProvider3127128129# Failure cases130131mkdir -p x.meta/META-INF/services132133# Simple failures134for p in FooProvider42 'blah blah' 9234 'X!' java.lang.Object; do135echo $p >x.meta/META-INF/services/FooService136go ".${SEP}x.meta" "" fail137done138139# Failures followed by successes140echo FooProvider42 >x.meta/META-INF/services/FooService141go "$TESTD${SEP}x.meta" "" FooProvider1 fail142go "x.meta${SEP}$TESTD" "" fail FooProvider1143go "$TESTD${SEP}x.meta${SEP}${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" \144FooProvider3 FooProvider1 fail FooProvider2145146147# Summary148149echo ''150if [ $failures -gt 0 ];151then echo "$failures case(s) failed";152else echo "All cases passed"; fi153exit $failures154155156