You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
3.7 KiB
160 lines
3.7 KiB
#!/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.
|
|
#
|
|
# usage: usbtuner-test.sh <test_case> [channel]
|
|
#
|
|
# To test repeated channel change, run:
|
|
#
|
|
# ./usbtuner-test.sh <1 or 3>
|
|
#
|
|
# To test watching a fixed channel, run:
|
|
#
|
|
# ./usbtuner-test.sh 2
|
|
#
|
|
# Case 2 uses the last-viewed channel by TV app. Give a channel number
|
|
# as a 2nd parameter if you want to use the channel for testing, like below:
|
|
#
|
|
# ./usbtuner-test.sh 2 6-1
|
|
#
|
|
# The script assumes that:
|
|
# 1) Browsing by keydown event circulates among the USB input channels only
|
|
# 2) When started, TV app should tune to one of the channels provided by the USB input
|
|
#
|
|
# The test result is logged in the doc: https://goo.gl/MsPBf7
|
|
|
|
function start_tv {
|
|
disable_analytics_report
|
|
adb shell am force-stop com.android.tv
|
|
adb shell am start -n com.android.tv/.MainActivity > /dev/null
|
|
sleep 5
|
|
}
|
|
|
|
function log_begin {
|
|
adb shell dumpsys meminfo -d --package com.android.tv.tuner > meminfo-begin.txt
|
|
}
|
|
|
|
function tune {
|
|
adb shell input text $1
|
|
adb shell input keyevent KEYCODE_DPAD_CENTER
|
|
sleep 5 # Wait enough for tuning
|
|
}
|
|
|
|
function browse {
|
|
for i in {1..50}; do
|
|
adb shell input keyevent DPAD_DOWN
|
|
sleep 10 # Tune and watch the channel for a while
|
|
done;
|
|
}
|
|
|
|
function browse_heavily {
|
|
for i in {1..60}; do
|
|
echo "$(date '+%x %X') ======== Test #$i of 60 ========"
|
|
clear_logcat
|
|
for j in {1..60}; do
|
|
adb shell input keyevent DPAD_DOWN
|
|
sleep $(( $RANDOM % 3 )) # Sleep for 0 - 2 seconds
|
|
done;
|
|
measure_tuning_time
|
|
done;
|
|
}
|
|
|
|
function clear_logcat {
|
|
adb logcat -c
|
|
}
|
|
|
|
function measure_tuning_time {
|
|
timeout 1 adb logcat -s TvInputSessionImpl | awk -f $(dirname $0)/measure-tuning-time.awk
|
|
}
|
|
|
|
function log_end {
|
|
adb shell dumpsys meminfo -d --package com.android.tv.tuner > meminfo-end.txt
|
|
}
|
|
|
|
function stop_tv {
|
|
# Stop TV by running other app (Settings)
|
|
adb shell am start com.android.tv.settings/com.android.tv.settings.MainSettings
|
|
restore_analytics_setting
|
|
}
|
|
|
|
function output {
|
|
echo "Cut and paste this"
|
|
sed -n 33,46p meminfo-begin.txt | cut -f 2 -d ":" -s | awk '{print $1}'
|
|
sed -n 33,46p meminfo-end.txt | cut -f 2 -d ":" -s | awk '{print $1}'
|
|
}
|
|
|
|
function disable_analytics_report {
|
|
tracker=$(adb shell getprop tv_use_tracker | tr -d '[[:space:]]')
|
|
adb shell setprop tv_use_tracker false
|
|
}
|
|
|
|
function restore_analytics_setting {
|
|
if [ "${tracker}" == "" ]; then
|
|
adb shell setprop tv_use_tracker ""
|
|
else
|
|
adb shell setprop tv_use_tracker ${tracker}
|
|
fi
|
|
}
|
|
|
|
function control_c {
|
|
restore_analytics_setting
|
|
echo "Exiting..."
|
|
exit 1
|
|
}
|
|
|
|
# Entry point
|
|
|
|
trap control_c SIGINT
|
|
|
|
case "$1" in
|
|
1)
|
|
echo "Runing test 1"
|
|
start_tv
|
|
log_begin
|
|
clear_logcat
|
|
browse # Repeat channel change for about 10 minutes
|
|
measure_tuning_time
|
|
log_end
|
|
stop_tv
|
|
output
|
|
;;
|
|
2)
|
|
echo "Runing test 2"
|
|
start_tv
|
|
log_begin
|
|
if [ "$2" != "" ]; then
|
|
tune $2
|
|
fi
|
|
sleep 600 # 10 minutes
|
|
log_end
|
|
stop_tv
|
|
output
|
|
;;
|
|
3)
|
|
echo "Runing test 3"
|
|
start_tv
|
|
log_begin
|
|
browse_heavily # Repeat channel change for about 3 hours
|
|
log_end
|
|
stop_tv
|
|
output
|
|
;;
|
|
*)
|
|
echo "usage: usbtuner-test.sh <1|2|3> [channel]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|