| #!/bin/bash |
| |
| # Copyright 2020, 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. |
| |
| # Tails android system logs releven for crash tests |
| |
| show_usage_and_exit() { |
| echo "Tail logcat for NNAPI Crash Test logs, driver error logs and failures. Options:" |
| echo " -e | --show_driver_errors : to enable error log for drivers" |
| echo " -d | --driver_log_tag TAG : to use in conjunction with -e specify the LOG tags used by the target driver." |
| echo " To specify multiple tags just quote them and separate them with a space char." |
| echo " If this option is omitted, a list of known tags is used." |
| echo " -o | --save_output_to FILE : to save logcat output to the given file" |
| echo " -s DEVICE_SERIAL_NUMBER : to specify the serial number of the device to connect to" |
| echo " -h : show this message and exit" |
| exit 1 |
| } |
| |
| OPTS="$(getopt -o heo:s:d: -l show_driver_errors,save_output_to:driver_log_tag: -- "$@")" |
| eval set -- "$OPTS" |
| |
| SHOW_DRIVERS_ERRORS=false |
| OUTPUT_FILE="" |
| DEVICE_ID_OPT="" |
| DRIVER_LOG_TAGS=() |
| while [ $# -gt 0 ] ; do |
| case "$1" in |
| -h) |
| shift |
| show_usage_and_exit |
| ;; |
| -e|--show_driver_errors) |
| SHOW_DRIVERS_ERRORS=true |
| shift |
| ;; |
| -o|--save_output_to) |
| OUTPUT_FILE="$2" |
| shift 2 |
| ;; |
| -s) |
| DEVICE_ID_OPT="-s $2" |
| shift 2 |
| ;; |
| -d|--driver_log_tag) |
| read -a DRIVER_LOG_TAGS <<< "$2" |
| shift 2 |
| ;; |
| -- ) |
| shift |
| break |
| ;; |
| * ) |
| echo "Invalid argument: $1" |
| show_usage_and_exit |
| ;; |
| esac |
| done |
| |
| CRASH_TEST_LOG_TAGS+=("NN_BENCHMARK") |
| while IFS='' read -r tag; do |
| CRASH_TEST_LOG_TAGS+=("$tag"); |
| done <<< $(find src/com/android/nn/crashtest -name '*.java' -exec grep "TAG =" {} \; \ |
| | grep -Po '(?<=")(.+)(?=")') |
| |
| LOG_TAG_FILTER="" |
| |
| # Info level from crash tests source |
| for tag in "${CRASH_TEST_LOG_TAGS[@]}"; do |
| LOG_TAG_FILTER="${LOG_TAG_FILTER} ${tag}:I" |
| done |
| |
| if [[ "$SHOW_DRIVERS_ERRORS" = true ]]; then |
| if [ ${#DRIVER_LOG_TAGS[@]} -eq 0 ]; then |
| # Qualcomm (drivers for NNAPI1.2) |
| # Google |
| # SLSI |
| DRIVER_LOG_TAGS=(\ |
| "android.hardware.neuralnetworks@1.2-service"\ |
| "Darwinn"\ |
| "Eden"\ |
| ) |
| fi |
| |
| # Error level for listed driver processes |
| for tag in "${DRIVER_LOG_TAGS[@]}"; do |
| LOG_TAG_FILTER="${LOG_TAG_FILTER} ${tag}:E" |
| done |
| elif [ ${#DRIVER_LOG_TAGS[@]} -ne 0 ]; then |
| show_usage_and_exit |
| fi |
| |
| # Fatal message for everything else to show crash dumps |
| LOG_TAG_FILTER="${LOG_TAG_FILTER} *:F" |
| |
| export ANDROID_LOG_TAGS="${LOG_TAG_FILTER}" |
| |
| if [[ -z "$OUTPUT_FILE" ]]; then |
| adb ${DEVICE_ID_OPT:+"$DEVICE_ID_OPT"} logcat -v color |
| else |
| adb ${DEVICE_ID_OPT:+"$DEVICE_ID_OPT"} logcat -v color | tee "$OUTPUT_FILE" |
| fi |
| |
| |
| |