1#!/bin/bash 2# 3# Copyright (C) 2017 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 22source build/envsetup.sh >&/dev/null # for get_build_var, setpaths 23setpaths # include platform prebuilt java, javac, etc in $PATH. 24 25if [[ `uname` != 'Linux' ]]; then 26 echo "Script cannot be run on $(uname). It is Linux only." 27 exit 2 28fi 29 30jdwp_path=${ANDROID_JAVA_HOME}/jre/lib/amd64/libjdwp.so 31if [[ ! -f $jdwp_path ]]; then 32 echo "Unable to find prebuilts libjdwp.so! Did the version change from jdk8?" 33 exit 3 34fi 35 36args=("$@") 37debug="no" 38has_variant="no" 39has_mode="no" 40 41while true; do 42 if [[ $1 == "--debug" ]]; then 43 debug="yes" 44 shift 45 elif [[ "$1" == --mode=* ]]; then 46 has_mode="yes" 47 if [[ $1 != "--mode=host" ]]; then 48 # Just print out an actually helpful error message. 49 echo "Only host tests can be run against prebuilt libjdwp" 50 exit 4 51 fi 52 shift 53 elif [[ $1 == --variant=* ]]; then 54 has_variant="yes" 55 if [[ $1 != "--variant=x64" ]] && [[ $1 != "--variant=X64" ]]; then 56 # Just print out an actually helpful error message. 57 echo "Only 64bit runs can be tested against the prebuilt libjdwp!" 58 exit 5 59 fi 60 shift 61 elif [[ "$1" == "" ]]; then 62 break 63 else 64 shift 65 fi 66done 67 68if [[ "$has_mode" = "no" ]]; then 69 args+=(--mode=host) 70fi 71 72if [[ "$has_variant" = "no" ]]; then 73 args+=(--variant=X64) 74fi 75 76wrapper_name="" 77plugin="" 78if [[ "$debug" = "yes" ]]; then 79 wrapper_name=libwrapagentpropertiesd 80 plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmtid.so" 81else 82 wrapper_name=libwrapagentproperties 83 plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so" 84fi 85wrapper=$ANDROID_HOST_OUT/lib64/${wrapper_name}.so 86 87if [[ ! -f $wrapper ]]; then 88 echo "need to build $wrapper to run prebuild-libjdwp-tests!" 89 echo "m -j40 ${wrapper/.so/}" 90 exit 6 91fi 92 93if [[ ! -f $plugin ]]; then 94 echo "jvmti plugin not built!" 95 exit 7 96fi 97 98props_path=$PWD/art/tools/libjdwp-compat.props 99expect_path=$PWD/art/tools/prebuilt_libjdwp_art_failures.txt 100 101function verbose_run() { 102 echo "$@" 103 env "$@" 104} 105 106verbose_run LD_LIBRARY_PATH="$(dirname $jdwp_path):$LD_LIBRARY_PATH" \ 107 ./art/tools/run-jdwp-tests.sh \ 108 "${args[@]}" \ 109 "-Xplugin:$plugin" \ 110 --agent-wrapper "${wrapper}"="${props_path}" \ 111 --jdwp-path "$jdwp_path" \ 112 --expectations "$expect_path" 113