1 #!/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 17 if [ ! -d libcore ]; then 18 echo "Script needs to be run at the root of the android tree" 19 exit 1 20 fi 21 22 if [ -z "$ANDROID_PRODUCT_OUT" ] ; then 23 JAVA_LIBRARIES=out/target/common/obj/JAVA_LIBRARIES 24 else 25 JAVA_LIBRARIES=${ANDROID_PRODUCT_OUT}/../../common/obj/JAVA_LIBRARIES 26 fi 27 28 function cparg { 29 for var 30 do 31 printf -- "--classpath ${JAVA_LIBRARIES}/${var}_intermediates/classes.jack "; 32 done 33 } 34 35 DEPS="core-tests jsr166-tests mockito-target" 36 37 for lib in $DEPS 38 do 39 if [ ! -f "${JAVA_LIBRARIES}/${lib}_intermediates/classes.jack" ]; then 40 echo "${lib} is missing. Before running, you must run art/tools/buildbot-build.sh" 41 exit 1 42 fi 43 done 44 45 expectations="--expectations art/tools/libcore_failures.txt" 46 47 emulator="no" 48 if [ "$ANDROID_SERIAL" = "emulator-5554" ]; then 49 emulator="yes" 50 fi 51 52 # Use JIT compiling by default. 53 use_jit=true 54 55 # Packages that currently work correctly with the expectation files. 56 working_packages=("dalvik.system" 57 "libcore.icu" 58 "libcore.io" 59 "libcore.java.lang" 60 "libcore.java.math" 61 "libcore.java.text" 62 "libcore.java.util" 63 "libcore.javax.crypto" 64 "libcore.javax.security" 65 "libcore.javax.sql" 66 "libcore.javax.xml" 67 "libcore.net" 68 "libcore.reflect" 69 "libcore.util" 70 "org.apache.harmony.annotation" 71 "org.apache.harmony.crypto" 72 "org.apache.harmony.luni" 73 "org.apache.harmony.nio" 74 "org.apache.harmony.regex" 75 "org.apache.harmony.testframework" 76 "org.apache.harmony.tests.java.io" 77 "org.apache.harmony.tests.java.lang" 78 "org.apache.harmony.tests.java.math" 79 "org.apache.harmony.tests.java.util" 80 "org.apache.harmony.tests.java.text" 81 "org.apache.harmony.tests.javax.security" 82 "tests.java.lang.String" 83 "jsr166") 84 85 # List of packages we could run, but don't have rights to revert 86 # changes in case of failures. 87 # "org.apache.harmony.security" 88 89 vogar_args=$@ 90 while true; do 91 if [[ "$1" == "--mode=device" ]]; then 92 vogar_args="$vogar_args --device-dir=/data/local/tmp" 93 vogar_args="$vogar_args --vm-command=/data/local/tmp/system/bin/art" 94 vogar_args="$vogar_args --vm-arg -Ximage:/data/art-test/core.art" 95 shift 96 elif [[ "$1" == "--mode=host" ]]; then 97 # We explicitly give a wrong path for the image, to ensure vogar 98 # will create a boot image with the default compiler. Note that 99 # giving an existing image on host does not work because of 100 # classpath/resources differences when compiling the boot image. 101 vogar_args="$vogar_args --vm-arg -Ximage:/non/existent/vogar.art" 102 shift 103 elif [[ "$1" == "--no-jit" ]]; then 104 # Remove the --no-jit from the arguments. 105 vogar_args=${vogar_args/$1} 106 use_jit=false 107 shift 108 elif [[ "$1" == "--debug" ]]; then 109 # Remove the --debug from the arguments. 110 vogar_args=${vogar_args/$1} 111 vogar_args="$vogar_args --vm-arg -XXlib:libartd.so" 112 shift 113 elif [[ "$1" == "" ]]; then 114 break 115 else 116 shift 117 fi 118 done 119 120 # Increase the timeout, as vogar cannot set individual test 121 # timeout when being asked to run packages, and some tests go above 122 # the default timeout. 123 vogar_args="$vogar_args --timeout 480" 124 125 # Use Jack with "1.8" configuration. 126 vogar_args="$vogar_args --toolchain jack --language JO" 127 128 # JIT settings. 129 if $use_jit; then 130 vogar_args="$vogar_args --vm-arg -Xcompiler-option --vm-arg --compiler-filter=quicken" 131 fi 132 vogar_args="$vogar_args --vm-arg -Xusejit:$use_jit" 133 134 # Run the tests using vogar. 135 echo "Running tests for the following test packages:" 136 echo ${working_packages[@]} | tr " " "\n" 137 vogar $vogar_args $expectations $(cparg $DEPS) ${working_packages[@]} 138