1ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Script to gather perf and perf/watt data for several workloads 2ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 3ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Setup: 4ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 5ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - device connected to monsoon with USB passthrough enabled 6ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - network enabled (baseline will be measured and subtracted 7ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# from results) (network needed for chrome, youtube tests) 8ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - the device is rebooted after each test (can be inhibited 9ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# with "-r 0") 10ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 11ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Default behavior is to run each of the known workloads for 12ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 30 minutes gathering both performance and power data. 13ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 14ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# The default time can be overridden with the -t option. To 15ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# change individual test times, a config file can be specifed 16ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# via -f with times for individual tests. Example file contents: 17ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 18ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# idleTime=60 19ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# recentflingTime=60 20ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# chromeTime=60 21ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# youtubeTime=0 22ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# sysappsTime=60 23ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# suntempleTime=5 24ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 25ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Output goes to the current directory. 26ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 27ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# Examples: 28ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 29ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - Run all tests for 15 minutes (default is 30): ./pwrtest.sh -t 15 -R MDA20 30ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 31ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - Use a config file for test times: ./pwrtest.sh -f ./myconfig -R MDA20 32ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 33ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# - Use a init file to setup device tuneables after each restart (this is 34ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# a bash script which should include adb commands to set up device): 35ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# ./pwrtest.sh -F devtunables 36ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# 37a87980f7eba9f0d6119fe0e2200087266c514973Todd Kjos 38ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosdefaultTime=30 39ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosgarbageminutes=8 40ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 41ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction Usage { 42ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "Usage: $0 [OPTIONS]" 43ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-d device : device type (shamu, bullhead, ...)" 44ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-f configFile : config file to override individual test times" 45ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-g garbageMinutes : time to skip power measurement at beginning of test" 46ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo " default=$garbagetime minutes" 47ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-r restart : 0=no reboot between tests, 1=reboot (default)" 48ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-t defaultTimeMin : default time to run each test" 49ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo " default=$defaultTime minutes" 50ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-D cmddir : directory to find defs.sh" 51ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-F restartHookFile : file of commands to set device tunables after restart (optional)" 52ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "-R release : release running on device (MDA20, 2054728, etc)" 53ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 54ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 55ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosrestart=1 56ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoshz=5 57ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosshadowgrid2TimeMax=25 58ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 59ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosCMDDIR=$(dirname $0 2>/dev/null) 60ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosCMDDIR=${CMDDIR:=.} 61ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 62ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosMONSOON=monsoon.par 63ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 64ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoswhile [ $# -gt 0 ] 65ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdo 66ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos case "$1" in 67ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-D) CMDDIR=$2; shift;; 68ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-r) restart=$2; shift;; 69ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-t) defaultTime=$2; shift;; 70ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-F) restartfile=$2; shift;; 71ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-g) garbageminutes=$2; shift;; 72ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-f) 73ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos configFile=$2; 74ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "Reading configs from $configFile..." 75ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos . ./$configFile 76ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos shift;; 77ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (-R) echo $2 > ./build; shift;; 78ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (--) ;; 79ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (--help) 80ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos Usage 81ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos exit 0;; 82ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (*) 83ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo "Unknown option: $1" 84ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos Usage 85ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos exit 1;; 86ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos esac 87ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos shift 88ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdone 89ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 90ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos. $CMDDIR/defs.sh -- 91ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 92ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosdevdir="/data/local/tmp" 93ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjossuntempledir=${CMDDIR}/suntemple 94ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 95ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoscase $DEVICE in 96ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos(shamu|hammerhead) 9793949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyv HWUIMACRO=hwuimacro 98ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos onSwipe="700 1847 700 400 50" 99ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 100ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos(*) 10193949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyv HWUIMACRO=hwuimacro64 102ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos onSwipe="500 1200 500 550 150" 103ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ;; 104ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosesac 105ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 10693949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyvscripts="defs.sh systemapps.sh recentfling.sh youtube.sh chromefling.sh" 107ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 108ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif ! $MONSOON >/dev/null 2>&1; then 109ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $MONSOON must be in your PATH >&2 110ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos exit 1 111ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 112ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 113ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction usbpassthru { 114ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$1" = off ]; then 115ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos state=off 116ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 117ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos state=on 118ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 119ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Setting usb pass-thru to $state 120ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos monsoon.par --usbpassthrough=$state 121ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 122ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 123ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction pwrcollect { 124ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos collectmin=$1 125ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos collectmin=${collectmin:=60} 126ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # samples = hz * 60 * minutes 127ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ((samples=5*60*collectmin)) 128ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos monsoon.par --timestamp --samples $samples --hz 5 129ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 130ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 131ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction copy_files { 132ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell mkdir -p $devdir 133ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos for file in $scripts 134ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos do 135ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb push $CMDDIR/$file $devdir 136ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos done 137ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 138ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 139ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction install_suntemple { 140ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Checking for suntemple installation... 141ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos #stdest=/storage/sdcard0/obb/com.BrueComputing.SunTemple 142ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos stdest=/storage/emulated/0/obb/com.BrueComputing.SunTemple 143ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos dircontents=$(adb ls $stdest 2>/dev/null) 144ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$dircontents" = "" ]; then 145ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Installing suntemple... 146ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb install $suntempledir/*.apk 147ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell mkdir -p $stdest 148ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb push $suntempledir/main*obb $stdest 149ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 150ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo dircontents=$dircontents 151ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Suntemple already installed. 152ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 153ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 154ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 155ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction run_test { 156ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos testName=$1 157ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos collectMinutes=$2 158ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos collectOutput=${testName}-power-raw.out 159ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerOutput=${testName}-power.out 160ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo ----------------------------------------------------- 161ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo TEST: $testName 162ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo enabled Cores $(adb shell "cat /sys/devices/system/cpu/online") 163ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 164ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo ----------------------------------------------------- 165ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos usbpassthru off 166ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos pwrcollect $collectMinutes > $collectOutput 2>/dev/null 167ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # take off the first 2min of samples 168ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos totalSamples=$(cat $collectOutput | wc -l) 169ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # we throw away the first "garbageminutes" of the data 170ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # since it is volatile 171ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ((garbage=hz*60*garbageminutes)) 172ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ((remaining=totalSamples-garbage)) 173ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ $remaining -gt 0 ]; then 174ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tail -$remaining $collectOutput > $powerOutput 175ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 176ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cp $collectOutput $powerOutput 177ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 178ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo power data for $testName copied to $collectOutput 179ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos usbpassthru on 180ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 10 181ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb devices 182ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 10 183ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 184ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 185ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction start_job { 186ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cmdline="$1" 187ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Running $cmdline 188ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos (adb shell "cd $devdir && nohup $cmdline > test.out") & 189ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 5 190ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos kill %1 2>/dev/null 191ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 192ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 193ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction cleanup_job { 194ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos testName=$1 195ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos processName=$2 196ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos processName=${processName:=" sh "} 197ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos set -- $(adb shell ps | tr "\r" " " | grep "$processName") 198ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo killing PID=$2... 199ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell kill $2 200ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 1 201ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo copying test output to $testName... 202ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb pull $devdir/test.out 203ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos mv test.out ${testName}.out 204ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ $restart -gt 0 ]; then 205ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos restart_device 206ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 207ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos doKeyevent HOME 208ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 209ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 210ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 211ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction airplane_mode { 212ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ "$1" = "on" ]; then 213ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos mode=true 214ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos setting=1 215ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 216ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos mode=false 217ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos setting=0 218ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 219ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell settings put global airplane_mode_on $setting 220ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell am broadcast -a android.intent.action.AIRPLANE_MODE --ez state $mode 221ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Set airplane mode to $mode 222ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 223ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 224ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfunction restart_device { 225ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb reboot 226ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Wait 60s for device to restart... 227ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 60 228ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos while ! adb root 229ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos do 230ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Waiting for device to come up... 231ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 10 232ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos done 233ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Wait 30s to complete boot activities... 234ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos sleep 30 235ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Restart complete. 236a87980f7eba9f0d6119fe0e2200087266c514973Todd Kjos doTap 897 1075 237a87980f7eba9f0d6119fe0e2200087266c514973Todd Kjos sleep 2 238ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos doSwipe $onSwipe 239ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos restartfile=${restartfile:="./restarthook"} 240ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ -f $restartfile ]; then 241ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # hook to change tunables after a restart 242ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos . $restartfile 243ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 244ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos} 245ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 246ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosusbpassthru on 247ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosadb devices 2>/dev/null 248ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 249ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosairplane_mode off 250ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $restart -gt 0 ]; then 251ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos restart_device 252ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 253ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 254ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosecho Copying $scripts to device $devdir... 255ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjoscopy_files 25693949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyvadb shell ln -s /data/benchmarktest/hwuimacro/$HWUIMACRO $devdir/$HWUIMACRO 257ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjostests="" 258ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 259ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos# measure background power 260ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosidleTime=${idleTime:=$defaultTime} 261ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $idleTime -gt 0 ]; then 262ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Test 1 : measure idle power for $idleTime minutes 263ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test idle $idleTime 264ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode on 265ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo Restarting for power baseline in airplane mode... 266ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos restart_device 267ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test idle-airplane $idleTime 268ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode off 269ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # the screen blanks after 30 minutes. The first 2 minutes of the test 270ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # have already been filtered off. For our power baseline, keep the first 271ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # 20 minutes of the results 272ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos ((twentyminutes=hz*20*60)) 273ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos powerOutput="idle-power.out" 274ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos displayPowerOutput="idle-display-power.out" 275ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplanePowerOutput="idle-airplane-power.out" 276ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplaneDisplayPowerOutput="idle-airplane-display-power.out" 277ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos totalSamples=$(cat $powerOutput | wc -l) 278ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos if [ $twentyminutes -lt $totalSamples ]; then 279ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos head -$twentyminutes $powerOutput > $displayPowerOutput 280ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos head -$twentyminutes $airplanePowerOutput > $airplaneDisplayPowerOutput 281ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos else 282ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cp $powerOutput $displayPowerOutput 283ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cp $airplanePowerOutput $airplaneDisplayPowerOutput 284ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos fi 285ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests idle" 286ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 287ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 288ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosrecentflingTime=${recentflingTime:=$defaultTime} 289ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $recentflingTime -gt 0 ]; then 290ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 2 : recents fling for $recentflingTime minutes 291ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode on 292ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell "cd $devdir && ./systemapps.sh -A -T -i 1" 293ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos start_job "./recentfling.sh -N -i 1000 -d $DEVICE" 294ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test recentfling $recentflingTime 295ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cleanup_job recentfling 296ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode off 297ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 298ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests recentfling" 299ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 300ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 301ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjossuntempleTime=${suntempleTime:=$defaultTime} 302ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $suntempleTime -gt 0 ]; then 303ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 2 : run Sun Temple $suntempleTime minutes 304ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode on 305ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos install_suntemple 306ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb shell "am start $suntempleActivity" 307ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test suntemple $suntempleTime 308ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos adb pull /sdcard/SunTemple/SunTemple/Saved/Logs/SunTemple.log 309ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cleanup_job suntemple BrueComp 310ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode off 311ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos mv SunTemple.log suntemple.out 312ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # grab the suntemple log 313ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 314ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests suntemple" 315ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 316ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 317ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjoschromeTime=${chromeTime:=$defaultTime} 318ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $chromeTime -gt 0 ]; then 319ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 3 : chrome fling for $chromeTime minutes 320ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos start_job "./chromefling.sh -i 1000 -d $DEVICE" 321ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test chrome $chromeTime 322ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cleanup_job chrome 323ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 324ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests chrome" 325ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 326ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 327ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosshadowgrid2Time=${shadowgrid2Time:=$defaultTime} 328ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $shadowgrid2Time -gt $shadowgrid2TimeMax ]; then 329ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # we cap shadowgrid2 time since the display goes 330ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos # off after 30 minutes 331ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos $shadowgrid2Time=$shadowgrid2TimeMax 332ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 333ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $shadowgrid2Time -gt 0 ]; then 334ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode on 335ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 4 : shadowgrid2 for $shadowgrid2Time minutes 33693949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyv start_job "./$HWUIMACRO --onscreen shadowgrid2 100000" 337ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test shadowgrid2 $shadowgrid2Time 33893949cd41e9fe796060f9a77a30b2a6eb70d52f6sergeyv cleanup_job shadowgrid2 $HWUIMACRO 339ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos airplane_mode off 340ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 341ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests shadowgrid2" 342ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 343ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 344ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjosyoutubeTime=${youtubeTime:=$defaultTime} 345ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $youtubeTime -gt 0 ]; then 346ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 5 : youtube for $youtubeTime minutes 347ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos start_job "./youtube.sh -i 1000 -d $DEVICE" 348ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test youtube $youtubeTime 349ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cleanup_job youtube 350ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 351ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests youtube" 352ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 353ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 354ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd KjossysappsTime=${sysappsTime:=$defaultTime} 355ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosif [ $sysappsTime -gt 0 ]; then 356ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos echo $(date) Test 6 : app switching for $sysappsTime minutes 357ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos start_job "./systemapps.sh -T -i 1000 -d $DEVICE" 358ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos run_test sysapps $sysappsTime 359ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos cleanup_job sysapps 360ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos date 361ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos tests="$tests sysapps" 362ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosfi 363ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 364ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosecho Ran tests: $tests 365ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjosecho $tests > tests 366ffa6c3ac841d16d72ec11eda8b0fd3b6264bab08Todd Kjos 367