#!/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
if [[ `uname` != 'Linux' ]]; then echo"Script cannot be run on $(uname). It is Linux only."
exit 2 fi
# See b/141907697. These tests all crash on both the RI and ART when using the libjdwp agent JDWP # implementation. To avoid them cluttering the log on the buildbot we explicitly skip them. This # list should not be added to.
declare -a known_bad_tests=( 'org.apache.harmony.jpda.tests.jdwp.ClassType_NewInstanceTest#testNewInstance002' 'org.apache.harmony.jpda.tests.jdwp.ObjectReference_GetValues002Test#testGetValues002' 'org.apache.harmony.jpda.tests.jdwp.ObjectReference_SetValuesTest#testSetValues001' 'org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference_NameTest#testName001_NullObject' 'org.apache.harmony.jpda.tests.jdwp.ThreadGroupReference_ParentTest#testParent_NullObject'
)
declare -a args=("$@")
debug="no"
has_variant="no"
has_mode="no"
mode="target"
has_gcstress="no"
has_timeout="no"
has_verbose="no"
has_jdwp_path="no" # The bitmap of log messages in libjdwp. See list in the help message for more # info on what these are. The default is 'errors | callbacks'
verbose_level=0xC0
arg_idx=0 while true; do if [[ $1 == "--debug" ]]; then
debug="yes"
shift elif [[ $1 == --test-timeout-ms ]]; then
has_timeout="yes"
shift
arg_idx=$((arg_idx + 1))
shift elif [[ "$1" == "--mode=jvm" ]]; then
has_mode="yes"
mode="ri"
shift elif [[ "$1" == --mode=host ]]; then
has_mode="yes"
mode="host"
shift elif [[ $1 == --verbose-all ]]; then
has_verbose="yes"
verbose_level=0xFFF
unset args[arg_idx]
shift elif [[ $1 == --no-skips ]]; then
declare -a known_bad_tests=()
unset args[arg_idx]
shift elif [[ $1 == --verbose ]]; then
has_verbose="yes"
shift elif [[ $1 == --verbose-level ]]; then
shift
verbose_level=$1 # remove both the --verbose-level and the argument.
unset args[arg_idx]
arg_idx=$((arg_idx + 1))
unset args[arg_idx]
shift elif [[ $1 == --variant=* ]]; then
has_variant="yes"
shift elif [[ $1 == *gcstress ]]; then
has_gcstress="yes"
shift elif [[ $1 == --jdwp-path* ]]; then
has_jdwp_path="yes"
shift elif [[ "$1" == "" ]]; then
break else
shift fi
arg_idx=$((arg_idx + 1)) done
if [[ "$has_mode" = "no" ]]; then
args+=(--mode=device) fi
if [[ "$has_variant" = "no" && "$mode" != "ri" ]]; then # --mode=jvm doesn't support variant option.
args+=(--variant=X32) fi
if [[ "$has_jdwp_path" = "no" ]]; then if [[ "$mode" == "ri" ]]; then if [ -z "$ANDROID_BUILD_TOP" ]; then echo"Please set ANDROID_BUILD_TOP"
exit 1 fi
args+=(--jdwp-path $ANDROID_BUILD_TOP/"prebuilts/jdk/jdk21/linux-x86/lib/libjdwp.so") else
args+=(--jdwp-path "libjdwp.so") fi fi
if [[ "$has_timeout" = "no" ]]; then # Double the timeout to 20 seconds
args+=(--test-timeout-ms) if [[ "$has_verbose" = "yes" || "$has_gcstress" = "yes" ]]; then # Extra time if verbose or gcstress is set since those can be # quite heavy.
args+=(300000) else
args+=(20000) fi fi
if [[ "$has_verbose" = "yes" ]]; then
args+=(--vm-arg)
args+=(-Djpda.settings.debuggeeAgentExtraOptions=directlog=y,logfile=/proc/self/fd/2,logflags=$verbose_level) fi
if [[ "$mode" != "ri" ]]; then # We don't use full paths since it is difficult to determine them for device # tests and not needed due to resolution rules of dlopen. if [[ "$debug" = "yes" ]]; then
args+=(-Xplugin:libopenjdkjvmtid.so) else
args+=(-Xplugin:libopenjdkjvmti.so) fi fi
if [[ "$debug" = "yes" && "$has_gcstress" = "yes" ]]; then
expectations="$expectations --expectations $PWD/art/tools/external_oj_libjdwp_art_gcstress_debug_failures.txt" fi
if [[ "${ART_USE_READ_BARRIER}" = "false" ]]; then
expectations="$expectations --expectations $PWD/art/tools/external_oj_libjdwp_art_no_read_barrier_failures.txt" fi
function verbose_run() { echo"$@"
env "$@"
}
for skip in "${known_bad_tests[@]}"; do
args+=("--skip-test""$skip") done
# Tell run-jdwp-tests.sh it was called from run-libjdwp-tests.sh export RUN_JDWP_TESTS_CALLED_FROM_LIBJDWP=true
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.