Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/util/ServiceLoader/basic.sh
38812 views
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
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
SEP=':' ;;
48
Linux )
49
SEP=':' ;;
50
* )
51
SEP='\;' ;;
52
esac
53
54
JARD=x.jar
55
EXTD=x.ext
56
TESTD=x.test
57
58
if [ \! -d $EXTD ]; then
59
# Initialize
60
echo Initializing...
61
rm -rf $JARD $EXTD $TESTD
62
mkdir -p $JARD $EXTD $TESTD
63
64
for n in 2 3; do
65
rm -rf $JARD/*; mkdir -p $JARD/META-INF/services
66
echo FooProvider$n \
67
>$JARD/META-INF/services/FooService
68
cp $TESTCLASSES/FooProvider$n.class $JARD
69
if [ $n = 3 ]; then
70
cp $TESTCLASSES/FooService.class $JARD
71
fi
72
(cd $JARD; "$JAR" ${TESTTOOLVMOPTS} -cf ../p$n.jar *)
73
done
74
75
mv p3.jar $EXTD
76
77
cp $TESTCLASSES/Load.class $TESTD
78
cp $TESTCLASSES/FooService.class $TESTD
79
cp $TESTCLASSES/FooProvider1.class $TESTD
80
mkdir -p $TESTD/META-INF/services
81
echo FooProvider1 \
82
>$TESTD/META-INF/services/FooService
83
84
# This gives us:
85
# $TESTD: FooProvider1
86
# . : FooProvider2, in p2.jar
87
# $EXTD: FooProvider3, in p3.jar
88
89
fi
90
91
failures=0
92
93
go() {
94
echo ''
95
cp="$1"; shift
96
if [ -z "$cp" ]; then cp="$TESTCLASSES"; else cp="$TESTCLASSES$SEP$cp"; fi
97
vmargs="$1"; shift
98
sh -xc "'$JAVA' ${TESTVMOPTS} -cp $cp $vmargs $T $*" 2>&1
99
if [ $? != 0 ]; then failures=`expr $failures + 1`; fi
100
}
101
102
103
# Java-level tests
104
105
T=Basic
106
go ".${SEP}$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD"
107
108
109
# Success cases
110
111
T=Load
112
113
go "$TESTD" "" FooProvider1
114
115
go ".${SEP}p2.jar" "" FooProvider2
116
117
go "" "-Djava.ext.dirs=$EXTD" FooProvider3
118
119
go "$TESTD${SEP}p2.jar" "" FooProvider1 FooProvider2
120
121
go "$TESTD" "-Djava.ext.dirs=$EXTD" FooProvider3 FooProvider1
122
123
go "$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" \
124
FooProvider3 FooProvider1 FooProvider2
125
126
# Should only find the installed provider
127
go "$TESTD${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" -i FooProvider3
128
129
130
# Failure cases
131
132
mkdir -p x.meta/META-INF/services
133
134
# Simple failures
135
for p in FooProvider42 'blah blah' 9234 'X!' java.lang.Object; do
136
echo $p >x.meta/META-INF/services/FooService
137
go ".${SEP}x.meta" "" fail
138
done
139
140
# Failures followed by successes
141
echo FooProvider42 >x.meta/META-INF/services/FooService
142
go "$TESTD${SEP}x.meta" "" FooProvider1 fail
143
go "x.meta${SEP}$TESTD" "" fail FooProvider1
144
go "$TESTD${SEP}x.meta${SEP}${SEP}p2.jar" "-Djava.ext.dirs=$EXTD" \
145
FooProvider3 FooProvider1 fail FooProvider2
146
147
148
# Summary
149
150
echo ''
151
if [ $failures -gt 0 ];
152
then echo "$failures case(s) failed";
153
else echo "All cases passed"; fi
154
exit $failures
155
156