blob: d549098b0a5aa7698f2b6fcdedbd7feb34548439 [file] [log] [blame]
Nicolas Geoffrayb2e7e242014-11-28 14:24:28 +00001#!/bin/bash
2#
3# Copyright (C) 2014 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17if [ ! -d libcore ]; then
18 echo "Script needs to be run at the root of the android tree"
19 exit 1
20fi
21
Colin Crossd092e742017-07-27 06:03:00 +000022if [ -z "$ANDROID_JAVA_TOOLCHAIN" ] ; then
23 source build/envsetup.sh
24 setpaths # include platform prebuilt java, javac, etc in $PATH.
25fi
Shubham Ajmerac33c0872017-07-20 18:41:52 -070026
Andreas Gampeebd089d2016-07-18 14:56:56 -070027if [ -z "$ANDROID_PRODUCT_OUT" ] ; then
28 JAVA_LIBRARIES=out/target/common/obj/JAVA_LIBRARIES
29else
30 JAVA_LIBRARIES=${ANDROID_PRODUCT_OUT}/../../common/obj/JAVA_LIBRARIES
31fi
32
Colin Crossd092e742017-07-27 06:03:00 +000033using_jack=true
34if [[ $ANDROID_COMPILE_WITH_JACK == false ]]; then
35 using_jack=false
36fi
Igor Murashkin84f26322017-06-06 11:36:33 -070037
38function classes_jar_path {
39 local var="$1"
40 local suffix="jar"
41
Colin Crossd092e742017-07-27 06:03:00 +000042 if $using_jack; then
Igor Murashkin84f26322017-06-06 11:36:33 -070043 suffix="jack"
44 fi
45
46 echo "${JAVA_LIBRARIES}/${var}_intermediates/classes.${suffix}"
47}
48
Tobias Thiererb3ec0892016-08-03 16:13:04 +010049function cparg {
50 for var
51 do
Igor Murashkin84f26322017-06-06 11:36:33 -070052 printf -- "--classpath $(classes_jar_path "$var") ";
Tobias Thiererb3ec0892016-08-03 16:13:04 +010053 done
54}
Wojciech Staszkiewicz08cf1482015-05-21 17:31:38 +010055
Tobias Thiererb3ec0892016-08-03 16:13:04 +010056DEPS="core-tests jsr166-tests mockito-target"
Wojciech Staszkiewicz08cf1482015-05-21 17:31:38 +010057
Tobias Thiererb3ec0892016-08-03 16:13:04 +010058for lib in $DEPS
59do
Igor Murashkin84f26322017-06-06 11:36:33 -070060 if [[ ! -f "$(classes_jar_path "$lib")" ]]; then
Tobias Thiererb3ec0892016-08-03 16:13:04 +010061 echo "${lib} is missing. Before running, you must run art/tools/buildbot-build.sh"
62 exit 1
63 fi
64done
Nicolas Geoffrayb2e7e242014-11-28 14:24:28 +000065
Roland Levillainafd6f9e2016-01-11 15:51:00 +000066expectations="--expectations art/tools/libcore_failures.txt"
Roland Levillainafd6f9e2016-01-11 15:51:00 +000067
Nicolas Geoffrayf794ad72015-09-11 12:08:49 +010068emulator="no"
69if [ "$ANDROID_SERIAL" = "emulator-5554" ]; then
70 emulator="yes"
71fi
72
Roland Levillain5db109b2016-05-19 12:24:17 +010073# Use JIT compiling by default.
74use_jit=true
75
Nicolas Geoffrayc3837e42014-12-03 11:30:26 +000076# Packages that currently work correctly with the expectation files.
Nicolas Geoffray1f8dbf82015-06-13 13:19:16 +000077working_packages=("dalvik.system"
Brian Carlstrom4c78ffa2015-06-11 07:33:51 -070078 "libcore.icu"
David Brazdil598b2202015-02-24 10:12:06 +000079 "libcore.io"
80 "libcore.java.lang"
Nicolas Geoffrayc3837e42014-12-03 11:30:26 +000081 "libcore.java.math"
David Brazdil598b2202015-02-24 10:12:06 +000082 "libcore.java.text"
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +000083 "libcore.java.util"
David Brazdil4cd7dfd2015-02-24 13:33:01 +000084 "libcore.javax.crypto"
David Brazdil598b2202015-02-24 10:12:06 +000085 "libcore.javax.security"
86 "libcore.javax.sql"
87 "libcore.javax.xml"
88 "libcore.net"
89 "libcore.reflect"
90 "libcore.util"
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +000091 "org.apache.harmony.annotation"
David Brazdil4cd7dfd2015-02-24 13:33:01 +000092 "org.apache.harmony.crypto"
David Brazdile2f28ad2015-02-24 10:44:29 +000093 "org.apache.harmony.luni"
94 "org.apache.harmony.nio"
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +000095 "org.apache.harmony.regex"
David Brazdile2f28ad2015-02-24 10:44:29 +000096 "org.apache.harmony.testframework"
97 "org.apache.harmony.tests.java.io"
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +000098 "org.apache.harmony.tests.java.lang"
Nicolas Geoffrayc3837e42014-12-03 11:30:26 +000099 "org.apache.harmony.tests.java.math"
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +0000100 "org.apache.harmony.tests.java.util"
David Brazdile2f28ad2015-02-24 10:44:29 +0000101 "org.apache.harmony.tests.java.text"
102 "org.apache.harmony.tests.javax.security"
Wojciech Staszkiewicz08cf1482015-05-21 17:31:38 +0100103 "tests.java.lang.String"
104 "jsr166")
Nicolas Geoffrayb2e7e242014-11-28 14:24:28 +0000105
Nicolas Geoffraycdcd0002015-10-31 14:47:36 +0000106# List of packages we could run, but don't have rights to revert
107# changes in case of failures.
108# "org.apache.harmony.security"
109
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100110vogar_args=$@
Nicolas Geoffray622e2e22017-06-15 09:33:01 +0100111gcstress=false
112debug=false
113
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100114while true; do
115 if [[ "$1" == "--mode=device" ]]; then
116 vogar_args="$vogar_args --device-dir=/data/local/tmp"
117 vogar_args="$vogar_args --vm-command=/data/local/tmp/system/bin/art"
Nicolas Geoffrayb76bc782016-09-14 12:33:34 +0000118 vogar_args="$vogar_args --vm-arg -Ximage:/data/art-test/core.art"
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100119 shift
120 elif [[ "$1" == "--mode=host" ]]; then
Andreas Gampe8994a042015-12-30 19:03:17 +0000121 # We explicitly give a wrong path for the image, to ensure vogar
122 # will create a boot image with the default compiler. Note that
123 # giving an existing image on host does not work because of
124 # classpath/resources differences when compiling the boot image.
125 vogar_args="$vogar_args --vm-arg -Ximage:/non/existent/vogar.art"
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100126 shift
Roland Levillain5db109b2016-05-19 12:24:17 +0100127 elif [[ "$1" == "--no-jit" ]]; then
128 # Remove the --no-jit from the arguments.
129 vogar_args=${vogar_args/$1}
130 use_jit=false
131 shift
Nicolas Geoffray7f437912015-06-15 14:35:01 +0100132 elif [[ "$1" == "--debug" ]]; then
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100133 # Remove the --debug from the arguments.
134 vogar_args=${vogar_args/$1}
Andreas Gampe1c5b42f2017-06-15 18:20:45 -0700135 vogar_args="$vogar_args --vm-arg -XXlib:libartd.so --vm-arg -XX:SlowDebug=true"
Nicolas Geoffray622e2e22017-06-15 09:33:01 +0100136 debug=true
137 shift
138 elif [[ "$1" == "-Xgc:gcstress" ]]; then
139 gcstress=true
Nicolas Geoffray9648a632015-06-15 14:35:01 +0100140 shift
141 elif [[ "$1" == "" ]]; then
142 break
143 else
144 shift
145 fi
146done
147
Nicolas Geoffray44368e82015-09-30 12:02:21 +0100148# Increase the timeout, as vogar cannot set individual test
149# timeout when being asked to run packages, and some tests go above
150# the default timeout.
151vogar_args="$vogar_args --timeout 480"
Nicolas Geoffrayf794ad72015-09-11 12:08:49 +0100152
Igor Murashkin84f26322017-06-06 11:36:33 -0700153# Switch between using jack or javac+desugar+dx
Colin Crossd092e742017-07-27 06:03:00 +0000154if $using_jack; then
Igor Murashkin84f26322017-06-06 11:36:33 -0700155 vogar_args="$vogar_args --toolchain jack --language JO"
156else
157 vogar_args="$vogar_args --toolchain jdk --language CUR"
158fi
Neil Fullerb8300fc2016-02-10 13:09:10 +0000159
Roland Levillain5db109b2016-05-19 12:24:17 +0100160# JIT settings.
161if $use_jit; then
Nicolas Geoffray49cda062017-04-21 13:08:25 +0100162 vogar_args="$vogar_args --vm-arg -Xcompiler-option --vm-arg --compiler-filter=quicken"
Roland Levillain5db109b2016-05-19 12:24:17 +0100163fi
164vogar_args="$vogar_args --vm-arg -Xusejit:$use_jit"
165
Nicolas Geoffray5b455d32017-07-05 10:51:06 +0100166# gcstress may lead to timeouts, so we need dedicated expectations files for it.
167if [[ $gcstress ]]; then
168 expectations="$expectations --expectations art/tools/libcore_gcstress_failures.txt"
169 if [[ $debug ]]; then
170 expectations="$expectations --expectations art/tools/libcore_gcstress_debug_failures.txt"
171 fi
Nicolas Geoffray622e2e22017-06-15 09:33:01 +0100172fi
173
Nicolas Geoffrayb2e7e242014-11-28 14:24:28 +0000174# Run the tests using vogar.
Nicolas Geoffray3cdf8182014-12-01 10:12:15 +0000175echo "Running tests for the following test packages:"
176echo ${working_packages[@]} | tr " " "\n"
Tobias Thiererb3ec0892016-08-03 16:13:04 +0100177vogar $vogar_args $expectations $(cparg $DEPS) ${working_packages[@]}