blob: 64bef3fa95eba2d2290b155b9f2678b320cd3804 [file] [log] [blame]
#!/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