1*795d594fSAndroid Build Coastguard Worker#!/bin/bash 2*795d594fSAndroid Build Coastguard Worker# 3*795d594fSAndroid Build Coastguard Worker# Copyright (C) 2017 The Android Open Source Project 4*795d594fSAndroid Build Coastguard Worker# 5*795d594fSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 6*795d594fSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 7*795d594fSAndroid Build Coastguard Worker# You may obtain a copy of the License at 8*795d594fSAndroid Build Coastguard Worker# 9*795d594fSAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 10*795d594fSAndroid Build Coastguard Worker# 11*795d594fSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 12*795d594fSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 13*795d594fSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*795d594fSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 15*795d594fSAndroid Build Coastguard Worker# limitations under the License. 16*795d594fSAndroid Build Coastguard Worker 17*795d594fSAndroid Build Coastguard Workerif [[ ! -d libcore ]]; then 18*795d594fSAndroid Build Coastguard Worker echo "Script needs to be run at the root of the android tree" 19*795d594fSAndroid Build Coastguard Worker exit 1 20*795d594fSAndroid Build Coastguard Workerfi 21*795d594fSAndroid Build Coastguard Worker 22*795d594fSAndroid Build Coastguard Workersource build/envsetup.sh >&/dev/null # for get_build_var, setpaths 23*795d594fSAndroid Build Coastguard Workerset_lunch_paths # include platform prebuilt java, javac, etc in $PATH. 24*795d594fSAndroid Build Coastguard Worker 25*795d594fSAndroid Build Coastguard Workerif [[ `uname` != 'Linux' ]]; then 26*795d594fSAndroid Build Coastguard Worker echo "Script cannot be run on $(uname). It is Linux only." 27*795d594fSAndroid Build Coastguard Worker exit 2 28*795d594fSAndroid Build Coastguard Workerfi 29*795d594fSAndroid Build Coastguard Worker 30*795d594fSAndroid Build Coastguard Workerjdwp_path=${ANDROID_JAVA_HOME}/jre/lib/amd64/libjdwp.so 31*795d594fSAndroid Build Coastguard Workerif [[ ! -f $jdwp_path ]]; then 32*795d594fSAndroid Build Coastguard Worker echo "Unable to find prebuilts libjdwp.so! Did the version change from jdk8?" 33*795d594fSAndroid Build Coastguard Worker exit 3 34*795d594fSAndroid Build Coastguard Workerfi 35*795d594fSAndroid Build Coastguard Worker 36*795d594fSAndroid Build Coastguard Workerargs=("$@") 37*795d594fSAndroid Build Coastguard Workerdebug="no" 38*795d594fSAndroid Build Coastguard Workerhas_variant="no" 39*795d594fSAndroid Build Coastguard Workerhas_mode="no" 40*795d594fSAndroid Build Coastguard Worker 41*795d594fSAndroid Build Coastguard Workerwhile true; do 42*795d594fSAndroid Build Coastguard Worker if [[ $1 == "--debug" ]]; then 43*795d594fSAndroid Build Coastguard Worker debug="yes" 44*795d594fSAndroid Build Coastguard Worker shift 45*795d594fSAndroid Build Coastguard Worker elif [[ "$1" == --mode=* ]]; then 46*795d594fSAndroid Build Coastguard Worker has_mode="yes" 47*795d594fSAndroid Build Coastguard Worker if [[ $1 != "--mode=host" ]]; then 48*795d594fSAndroid Build Coastguard Worker # Just print out an actually helpful error message. 49*795d594fSAndroid Build Coastguard Worker echo "Only host tests can be run against prebuilt libjdwp" 50*795d594fSAndroid Build Coastguard Worker exit 4 51*795d594fSAndroid Build Coastguard Worker fi 52*795d594fSAndroid Build Coastguard Worker shift 53*795d594fSAndroid Build Coastguard Worker elif [[ $1 == --variant=* ]]; then 54*795d594fSAndroid Build Coastguard Worker has_variant="yes" 55*795d594fSAndroid Build Coastguard Worker if [[ $1 != "--variant=x64" ]] && [[ $1 != "--variant=X64" ]]; then 56*795d594fSAndroid Build Coastguard Worker # Just print out an actually helpful error message. 57*795d594fSAndroid Build Coastguard Worker echo "Only 64bit runs can be tested against the prebuilt libjdwp!" 58*795d594fSAndroid Build Coastguard Worker exit 5 59*795d594fSAndroid Build Coastguard Worker fi 60*795d594fSAndroid Build Coastguard Worker shift 61*795d594fSAndroid Build Coastguard Worker elif [[ "$1" == "" ]]; then 62*795d594fSAndroid Build Coastguard Worker break 63*795d594fSAndroid Build Coastguard Worker else 64*795d594fSAndroid Build Coastguard Worker shift 65*795d594fSAndroid Build Coastguard Worker fi 66*795d594fSAndroid Build Coastguard Workerdone 67*795d594fSAndroid Build Coastguard Worker 68*795d594fSAndroid Build Coastguard Workerif [[ "$has_mode" = "no" ]]; then 69*795d594fSAndroid Build Coastguard Worker args+=(--mode=host) 70*795d594fSAndroid Build Coastguard Workerfi 71*795d594fSAndroid Build Coastguard Worker 72*795d594fSAndroid Build Coastguard Workerif [[ "$has_variant" = "no" ]]; then 73*795d594fSAndroid Build Coastguard Worker args+=(--variant=X64) 74*795d594fSAndroid Build Coastguard Workerfi 75*795d594fSAndroid Build Coastguard Worker 76*795d594fSAndroid Build Coastguard Workerwrapper_name="" 77*795d594fSAndroid Build Coastguard Workerplugin="" 78*795d594fSAndroid Build Coastguard Workerif [[ "$debug" = "yes" ]]; then 79*795d594fSAndroid Build Coastguard Worker wrapper_name=libwrapagentpropertiesd 80*795d594fSAndroid Build Coastguard Worker plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmtid.so" 81*795d594fSAndroid Build Coastguard Workerelse 82*795d594fSAndroid Build Coastguard Worker wrapper_name=libwrapagentproperties 83*795d594fSAndroid Build Coastguard Worker plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so" 84*795d594fSAndroid Build Coastguard Workerfi 85*795d594fSAndroid Build Coastguard Workerwrapper=$ANDROID_HOST_OUT/lib64/${wrapper_name}.so 86*795d594fSAndroid Build Coastguard Worker 87*795d594fSAndroid Build Coastguard Workerif [[ ! -f $wrapper ]]; then 88*795d594fSAndroid Build Coastguard Worker echo "need to build $wrapper to run prebuild-libjdwp-tests!" 89*795d594fSAndroid Build Coastguard Worker echo "m -j40 ${wrapper/.so/}" 90*795d594fSAndroid Build Coastguard Worker exit 6 91*795d594fSAndroid Build Coastguard Workerfi 92*795d594fSAndroid Build Coastguard Worker 93*795d594fSAndroid Build Coastguard Workerif [[ ! -f $plugin ]]; then 94*795d594fSAndroid Build Coastguard Worker echo "jvmti plugin not built!" 95*795d594fSAndroid Build Coastguard Worker exit 7 96*795d594fSAndroid Build Coastguard Workerfi 97*795d594fSAndroid Build Coastguard Worker 98*795d594fSAndroid Build Coastguard Workerprops_path=$PWD/art/tools/libjdwp-compat.props 99*795d594fSAndroid Build Coastguard Workerexpect_path=$PWD/art/tools/prebuilt_libjdwp_art_failures.txt 100*795d594fSAndroid Build Coastguard Worker 101*795d594fSAndroid Build Coastguard Workerfunction verbose_run() { 102*795d594fSAndroid Build Coastguard Worker echo "$@" 103*795d594fSAndroid Build Coastguard Worker env "$@" 104*795d594fSAndroid Build Coastguard Worker} 105*795d594fSAndroid Build Coastguard Worker 106*795d594fSAndroid Build Coastguard Workerverbose_run LD_LIBRARY_PATH="$(dirname $jdwp_path):$LD_LIBRARY_PATH" \ 107*795d594fSAndroid Build Coastguard Worker ./art/tools/run-jdwp-tests.sh \ 108*795d594fSAndroid Build Coastguard Worker "${args[@]}" \ 109*795d594fSAndroid Build Coastguard Worker "-Xplugin:$plugin" \ 110*795d594fSAndroid Build Coastguard Worker --agent-wrapper "${wrapper}"="${props_path}" \ 111*795d594fSAndroid Build Coastguard Worker --jdwp-path "$jdwp_path" \ 112*795d594fSAndroid Build Coastguard Worker --expectations "$expect_path" 113