#!/bin/bash
#
# Copyright (C) 2017 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
if [[ ! -d libcore ]]; then
echo "Script needs to be run at the root of the android tree"
exit 1
fi
source build/envsetup.sh >&/dev/null # for get_build_var, setpaths
setpaths # include platform prebuilt java, javac, etc in $PATH.
if [[ `uname` != 'Linux' ]]; then
echo "Script cannot be run on $(uname). It is Linux only."
exit 2
fi
jdwp_path=${ANDROID_JAVA_HOME}/jre/lib/amd64/libjdwp.so
if [[ ! -f $jdwp_path ]]; then
echo "Unable to find prebuilts libjdwp.so! Did the version change from jdk8?"
exit 3
fi
args=("$@")
debug="no"
has_variant="no"
has_mode="no"
while true; do
if [[ $1 == "--debug" ]]; then
debug="yes"
shift
elif [[ "$1" == --mode=* ]]; then
has_mode="yes"
if [[ $1 != "--mode=host" ]]; then
# Just print out an actually helpful error message.
echo "Only host tests can be run against prebuilt libjdwp"
exit 4
fi
shift
elif [[ $1 == --variant=* ]]; then
has_variant="yes"
if [[ $1 != "--variant=x64" ]] && [[ $1 != "--variant=X64" ]]; then
# Just print out an actually helpful error message.
echo "Only 64bit runs can be tested against the prebuilt libjdwp!"
exit 5
fi
shift
elif [[ "$1" == "" ]]; then
break
else
shift
fi
done
if [[ "$has_mode" = "no" ]]; then
args+=(--mode=host)
fi
if [[ "$has_variant" = "no" ]]; then
args+=(--variant=X64)
fi
wrapper_name=""
plugin=""
if [[ "$debug" = "yes" ]]; then
wrapper_name=libwrapagentpropertiesd
plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmtid.so"
else
wrapper_name=libwrapagentproperties
plugin="$ANDROID_HOST_OUT/lib64/libopenjdkjvmti.so"
fi
wrapper=$ANDROID_HOST_OUT/lib64/${wrapper_name}.so
if [[ ! -f $wrapper ]]; then
echo "need to build $wrapper to run prebuild-libjdwp-tests!"
echo "m -j40 ${wrapper/.so/}"
exit 6
fi
if [[ ! -f $plugin ]]; then
echo "jvmti plugin not built!"
exit 7
fi
props_path=$PWD/art/tools/libjdwp-compat.props
expect_path=$PWD/art/tools/prebuilt_libjdwp_art_failures.txt
function verbose_run() {
echo "$@"
env "$@"
}
verbose_run LD_LIBRARY_PATH="$(dirname $jdwp_path):$LD_LIBRARY_PATH" \
./art/tools/run-jdwp-tests.sh \
"${args[@]}" \
"-Xplugin:$plugin" \
--agent-wrapper "${wrapper}"="${props_path}" \
--jdwp-path "$jdwp_path" \
--expectations "$expect_path"