#!/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 declare -a args=("$@") debug="no" has_variant="no" has_mode="no" mode="target" has_timeout="no" has_verbose="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 == --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" == "" ]]; then break else shift fi arg_idx=$((arg_idx + 1)) done if [[ "$has_mode" = "no" ]]; then args+=(--mode=device) fi if [[ "$has_variant" = "no" ]]; then args+=(--variant=X32) fi if [[ "$has_timeout" = "no" ]]; then # Double the timeout to 20 seconds args+=(--test-timeout-ms) if [[ "$has_verbose" = "no" ]]; then args+=(20000) else # Even more time if verbose is set since those can be quite heavy. args+=(200000) 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 # 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 expect_path=$PWD/art/tools/external_oj_libjdwp_art_failures.txt function verbose_run() { echo "$@" env "$@" } verbose_run ./art/tools/run-jdwp-tests.sh \ "${args[@]}" \ --jdwp-path "libjdwp.so" \ --vm-arg -Djpda.settings.debuggeeAgentExtraOptions=coredump=y \ --expectations "$expect_path"