Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/lang/instrument/ManifestTest.sh
41152 views
1
#
2
# Copyright (c) 2008, 2015, 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 6274276
26
# @summary JLI JAR manifest processing should ignore leading and trailing white space.
27
# @author Daniel D. Daugherty
28
#
29
# @key intermittent
30
# @run build ManifestTestApp ExampleForBootClassPath
31
# @run shell/timeout=900 ManifestTest.sh
32
#
33
34
make_a_JAR() {
35
# version_line and premain_line are required
36
version_line="Manifest-Version: 1.0"
37
premain_line="Premain-Class: ${AGENT}"
38
boot_cp_line=""
39
expect_boot_cp_line="ExampleForBootClassPath was not loaded."
40
can_redef_line=""
41
expect_redef_line="isRedefineClassesSupported()=false"
42
can_retrans_line=""
43
expect_retrans_line="isRetransformClassesSupported()=false"
44
can_set_nmp_line=""
45
expect_set_nmp_line="isNativeMethodPrefixSupported()=false"
46
# some tests create directories with spaces in their name,
47
# explicitly delete these.
48
to_be_deleted=""
49
50
while [ $# != 0 ] ; do
51
case "$1" in
52
defaults)
53
# just use the defaults for the test
54
;;
55
56
boot_cp_line1)
57
boot_cp_line="Boot-Class-Path: no_white_space"
58
expect_boot_cp_line="ExampleForBootClassPath was loaded."
59
mkdir -p no_white_space
60
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class no_white_space
61
;;
62
63
boot_cp_line2)
64
boot_cp_line="Boot-Class-Path: has_leading_blank"
65
expect_boot_cp_line="ExampleForBootClassPath was loaded."
66
to_be_deleted=" has_leading_blank"
67
mkdir -p has_leading_blank " has_leading_blank"
68
# the good class is in the directory without the blank
69
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class \
70
has_leading_blank
71
# the bad class is in the directory with the blank
72
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \
73
" has_leading_blank/ExampleForBootClassPath.class"
74
;;
75
76
boot_cp_line3)
77
boot_cp_line="Boot-Class-Path: has_trailing_blank "
78
expect_boot_cp_line="ExampleForBootClassPath was loaded."
79
to_be_deleted="has_trailing_blank "
80
mkdir -p has_trailing_blank "has_trailing_blank "
81
# the good class is in the directory without the blank
82
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class \
83
has_trailing_blank
84
# the bad class is in the directory with the blank
85
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \
86
"has_trailing_blank /ExampleForBootClassPath.class"
87
;;
88
89
boot_cp_line4)
90
boot_cp_line="Boot-Class-Path: has_leading_and_trailing_blank "
91
expect_boot_cp_line="ExampleForBootClassPath was loaded."
92
to_be_deleted=" has_leading_and_trailing_blank "
93
mkdir -p has_leading_and_trailing_blank \
94
" has_leading_and_trailing_blank "
95
# the good class is in the directory without the blanks
96
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class \
97
has_leading_and_trailing_blank
98
# the bad class is in the directory with the blanks
99
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \
100
" has_leading_and_trailing_blank /ExampleForBootClassPath.class"
101
;;
102
103
boot_cp_line5)
104
boot_cp_line="Boot-Class-Path: has_embedded blank"
105
expect_boot_cp_line="ExampleForBootClassPath was loaded."
106
to_be_deleted="has_embedded blank"
107
mkdir -p has_embedded "has_embedded blank"
108
# the good class is in the first blank separated word
109
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class has_embedded
110
# the bad class is in the directory with the blank
111
cp -p $OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad \
112
"has_embedded blank/ExampleForBootClassPath.class"
113
;;
114
115
can_redef_line1)
116
can_redef_line="Can-Redefine-Classes: true"
117
expect_redef_line="isRedefineClassesSupported()=true"
118
;;
119
120
can_redef_line2)
121
can_redef_line="Can-Redefine-Classes: true"
122
expect_redef_line="isRedefineClassesSupported()=true"
123
;;
124
125
can_redef_line3)
126
can_redef_line="Can-Redefine-Classes: true "
127
expect_redef_line="isRedefineClassesSupported()=true"
128
;;
129
130
can_redef_line4)
131
can_redef_line="Can-Redefine-Classes: true "
132
expect_redef_line="isRedefineClassesSupported()=true"
133
;;
134
135
can_redef_line5)
136
can_redef_line="Can-Redefine-Classes: false"
137
;;
138
139
can_redef_line6)
140
can_redef_line="Can-Redefine-Classes: false"
141
;;
142
143
can_redef_line7)
144
can_redef_line="Can-Redefine-Classes: false "
145
;;
146
147
can_redef_line8)
148
can_redef_line="Can-Redefine-Classes: false "
149
;;
150
151
can_redef_line9)
152
# this line makes the jar command unhappy and that's
153
# not what we're testing so skip this case
154
can_redef_line="Can-Redefine-Classes:"
155
;;
156
157
can_redef_line10)
158
can_redef_line="Can-Redefine-Classes: "
159
;;
160
161
can_redef_line11)
162
can_redef_line="Can-Redefine-Classes: "
163
;;
164
165
can_retrans_line1)
166
can_retrans_line="Can-Retransform-Classes: true"
167
expect_retrans_line="isRetransformClassesSupported()=true"
168
;;
169
170
can_retrans_line2)
171
can_retrans_line="Can-Retransform-Classes: true"
172
expect_retrans_line="isRetransformClassesSupported()=true"
173
;;
174
175
can_retrans_line3)
176
can_retrans_line="Can-Retransform-Classes: true "
177
expect_retrans_line="isRetransformClassesSupported()=true"
178
;;
179
180
can_retrans_line4)
181
can_retrans_line="Can-Retransform-Classes: true "
182
expect_retrans_line="isRetransformClassesSupported()=true"
183
;;
184
185
can_retrans_line5)
186
can_retrans_line="Can-Retransform-Classes: false"
187
;;
188
189
can_retrans_line6)
190
can_retrans_line="Can-Retransform-Classes: false"
191
;;
192
193
can_retrans_line7)
194
can_retrans_line="Can-Retransform-Classes: false "
195
;;
196
197
can_retrans_line8)
198
can_retrans_line="Can-Retransform-Classes: false "
199
;;
200
201
can_retrans_line9)
202
# this line makes the jar command unhappy and that's
203
# not what we're testing so skip this case
204
can_retrans_line="Can-Retransform-Classes:"
205
;;
206
207
can_retrans_line10)
208
can_retrans_line="Can-Retransform-Classes: "
209
;;
210
211
can_retrans_line11)
212
can_retrans_line="Can-Retransform-Classes: "
213
;;
214
215
can_set_nmp_line1)
216
can_set_nmp_line="Can-Set-Native-Method-Prefix: true"
217
expect_set_nmp_line="isNativeMethodPrefixSupported()=true"
218
;;
219
220
can_set_nmp_line2)
221
can_set_nmp_line="Can-Set-Native-Method-Prefix: true"
222
expect_set_nmp_line="isNativeMethodPrefixSupported()=true"
223
;;
224
225
can_set_nmp_line3)
226
can_set_nmp_line="Can-Set-Native-Method-Prefix: true "
227
expect_set_nmp_line="isNativeMethodPrefixSupported()=true"
228
;;
229
230
can_set_nmp_line4)
231
can_set_nmp_line="Can-Set-Native-Method-Prefix: true "
232
expect_set_nmp_line="isNativeMethodPrefixSupported()=true"
233
;;
234
235
can_set_nmp_line5)
236
can_set_nmp_line="Can-Set-Native-Method-Prefix: false"
237
;;
238
239
can_set_nmp_line6)
240
can_set_nmp_line="Can-Set-Native-Method-Prefix: false"
241
;;
242
243
can_set_nmp_line7)
244
can_set_nmp_line="Can-Set-Native-Method-Prefix: false "
245
;;
246
247
can_set_nmp_line8)
248
can_set_nmp_line="Can-Set-Native-Method-Prefix: false "
249
;;
250
251
can_set_nmp_line9)
252
# this line makes the jar command unhappy and that's
253
# not what we're testing so skip this case
254
can_set_nmp_line="Can-Set-Native-Method-Prefix:"
255
;;
256
257
can_set_nmp_line10)
258
can_set_nmp_line="Can-Set-Native-Method-Prefix: "
259
;;
260
261
can_set_nmp_line11)
262
can_set_nmp_line="Can-Set-Native-Method-Prefix: "
263
;;
264
265
premain_line1)
266
premain_line="Premain-Class: ${AGENT}"
267
;;
268
269
premain_line2)
270
premain_line="Premain-Class: ${AGENT} "
271
;;
272
273
premain_line3)
274
premain_line="Premain-Class: ${AGENT} "
275
;;
276
277
version_line1)
278
version_line="Manifest-Version: 1.0"
279
;;
280
281
version_line2)
282
version_line="Manifest-Version: 1.0 "
283
;;
284
285
version_line3)
286
version_line="Manifest-Version: 1.0 "
287
;;
288
289
*)
290
echo "ERROR: invalid test token"
291
exit 1
292
esac
293
shift
294
done
295
296
echo "${version_line}" > ${AGENT}.mf
297
echo "${premain_line}" >> ${AGENT}.mf
298
299
if [ -n "$boot_cp_line" ]; then
300
echo "${boot_cp_line}" >> ${AGENT}.mf
301
fi
302
303
if [ -n "$can_redef_line" ]; then
304
echo "${can_redef_line}" >> ${AGENT}.mf
305
fi
306
307
if [ -n "$can_retrans_line" ]; then
308
echo "${can_retrans_line}" >> ${AGENT}.mf
309
fi
310
311
if [ -n "$can_set_nmp_line" ]; then
312
echo "${can_set_nmp_line}" >> ${AGENT}.mf
313
fi
314
315
rm -f ${AGENT}.jar
316
${JAR} ${TESTTOOLVMOPTS} cvfm ${AGENT}.jar ${AGENT}.mf ${AGENT}.class
317
318
echo "$expect_boot_cp_line" > expect_boot_cp_line
319
echo "$expect_redef_line" > expect_redef_line
320
echo "$expect_retrans_line" > expect_retrans_line
321
echo "$expect_set_nmp_line" > expect_set_nmp_line
322
}
323
324
if [ "${TESTJAVA}" = "" ]
325
then
326
echo "TESTJAVA not set. Test cannot execute. Failed."
327
exit 1
328
fi
329
330
if [ "${COMPILEJAVA}" = "" ]
331
then
332
COMPILEJAVA="${TESTJAVA}"
333
fi
334
echo "COMPILEJAVA=${COMPILEJAVA}"
335
336
if [ "${TESTSRC}" = "" ]
337
then
338
echo "TESTSRC not set. Test cannot execute. Failed."
339
exit 1
340
fi
341
342
if [ "${TESTCLASSES}" = "" ]
343
then
344
echo "TESTCLASSES not set. Test cannot execute. Failed."
345
exit 1
346
fi
347
348
JAR="${COMPILEJAVA}/bin/jar"
349
JAVAC="${COMPILEJAVA}"/bin/javac
350
JAVA="${TESTJAVA}"/bin/java
351
352
# Now that ManifestTestApp.class is built, we move
353
# ExampleForBootClassPath.class so that it cannot be found
354
# by default
355
OUT_OF_THE_WAY=out_of_the_way
356
mkdir $OUT_OF_THE_WAY
357
mv "${TESTCLASSES}/ExampleForBootClassPath.class" $OUT_OF_THE_WAY
358
359
# create a bad version of ExampleForBootClassPath.class
360
# so we can tell when the wrong version is run
361
sed 's/return 15/return 42/' "${TESTSRC}"/ExampleForBootClassPath.java \
362
> ExampleForBootClassPath.java
363
"$JAVAC" ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} ExampleForBootClassPath.java
364
mv ExampleForBootClassPath.class \
365
$OUT_OF_THE_WAY/ExampleForBootClassPath.class.bad
366
mv ExampleForBootClassPath.java \
367
$OUT_OF_THE_WAY/ExampleForBootClassPath.java.bad
368
369
AGENT=ManifestTestAgent
370
# We compile the agent in the working directory instead of with
371
# a build task because we construct a different agent JAR file
372
# for each test case.
373
${JAVAC} ${TESTJAVACOPTS} ${TESTTOOLVMOPTS} -d . ${TESTSRC}/${AGENT}.java
374
375
FAIL_MARKER=fail_marker
376
rm -f $FAIL_MARKER
377
378
while read token; do
379
echo
380
echo "===== begin test case: $token ====="
381
make_a_JAR "$token"
382
383
"${JAVA}" ${TESTVMOPTS} -javaagent:${AGENT}.jar \
384
-classpath "${TESTCLASSES}" ManifestTestApp > output.log 2>&1
385
result=$?
386
387
cat output.log
388
389
if [ "$result" = 0 ]; then
390
echo "PASS: ManifestTestApp exited with status of 0."
391
else
392
echo "FAIL: ManifestTestApp exited with status of $result"
393
touch $FAIL_MARKER
394
fi
395
396
MESG="Hello from ${AGENT}!"
397
grep -s "$MESG" output.log > /dev/null
398
result=$?
399
if [ "$result" = 0 ]; then
400
echo "PASS: found '$MESG' in the test output"
401
else
402
echo "FAIL: did NOT find '$MESG' in the test output"
403
touch $FAIL_MARKER
404
fi
405
406
MESG=`cat expect_boot_cp_line | tr -d '\n\r'`
407
grep -s "$MESG" output.log > /dev/null
408
result=$?
409
if [ "$result" = 0 ]; then
410
echo "PASS: found '$MESG' in the test output"
411
else
412
echo "FAIL: did NOT find '$MESG' in the test output"
413
touch $FAIL_MARKER
414
fi
415
416
MESG=`cat expect_redef_line | tr -d '\n\r'`
417
grep -s "$MESG" output.log > /dev/null
418
result=$?
419
if [ "$result" = 0 ]; then
420
echo "PASS: found '$MESG' in the test output"
421
else
422
echo "FAIL: did NOT find '$MESG' in the test output"
423
touch $FAIL_MARKER
424
fi
425
426
MESG=`cat expect_retrans_line | tr -d '\n\r'`
427
grep -s "$MESG" output.log > /dev/null
428
result=$?
429
if [ "$result" = 0 ]; then
430
echo "PASS: found '$MESG' in the test output"
431
else
432
echo "FAIL: did NOT find '$MESG' in the test output"
433
touch $FAIL_MARKER
434
fi
435
436
MESG=`cat expect_set_nmp_line | tr -d '\n\r'`
437
grep -s "$MESG" output.log > /dev/null
438
result=$?
439
if [ "$result" = 0 ]; then
440
echo "PASS: found '$MESG' in the test output"
441
else
442
echo "FAIL: did NOT find '$MESG' in the test output"
443
touch $FAIL_MARKER
444
fi
445
446
#clean up any problematic directories
447
if [ -n "$to_be_deleted" ]; then
448
echo "Test removing [$to_be_deleted]"
449
rm -rf "$to_be_deleted"
450
fi
451
452
echo "===== end test case: $token ====="
453
echo
454
done << EOF
455
defaults
456
version_line1
457
version_line2
458
version_line3
459
premain_line1
460
premain_line2
461
premain_line3
462
boot_cp_line1
463
boot_cp_line2
464
boot_cp_line3
465
boot_cp_line4
466
boot_cp_line5
467
can_redef_line1
468
can_redef_line2
469
can_redef_line3
470
can_redef_line4
471
can_redef_line5
472
can_redef_line6
473
can_redef_line7
474
can_redef_line8
475
can_redef_line10
476
can_redef_line11
477
can_retrans_line1
478
can_retrans_line2
479
can_retrans_line3
480
can_retrans_line4
481
can_retrans_line5
482
can_retrans_line6
483
can_retrans_line7
484
can_retrans_line8
485
can_retrans_line10
486
can_retrans_line11
487
can_set_nmp_line1
488
can_set_nmp_line2
489
can_set_nmp_line3
490
can_set_nmp_line4
491
can_set_nmp_line5
492
can_set_nmp_line6
493
can_set_nmp_line7
494
can_set_nmp_line8
495
can_set_nmp_line10
496
can_set_nmp_line11
497
EOF
498
499
if [ -f $FAIL_MARKER ]; then
500
exit 1
501
else
502
exit 0
503
fi
504
505