1 # 2 # Script to start 3 chrome tabs, fling each of them, repeat 3 # For each iteration, Total frames and janky frames are reported. 4 # 5 # Options are described below. 6 # 7 iterations=10 8 startapps=1 9 capturesystrace=0 10 waittime=4 11 app=chrome 12 13 function processLocalOption { 14 ret=0 15 case "$1" in 16 (-N) startapps=0;; 17 (-A) unset appList;; 18 (-L) appList=$2; shift; ret=1;; 19 (-T) capturesystrace=1;; 20 (-W) waittime=$2; shift; ret=1;; 21 (*) 22 echo "$0: unrecognized option: $1" 23 echo; echo "Usage: $0 [options]" 24 echo "-A : use all known applications" 25 echo "-L applist : list of applications" 26 echo " default: $appList" 27 echo "-N : no app startups, just fling" 28 echo "-g : generate activity strings" 29 echo "-i iterations" 30 echo "-T : capture systrace on each iteration" 31 echo "-d device : device type (shamu, volantis, bullhead,...)" 32 exit 1;; 33 esac 34 return $ret 35 } 36 37 CMDDIR=$(dirname $0 2>/dev/null) 38 CMDDIR=${CMDDIR:=.} 39 . $CMDDIR/defs.sh 40 41 case $DEVICE in 42 (hammerhead) 43 flingtime=300 44 downCount=2 45 upCount=6 46 UP="70 400 70 100 $flingtime" 47 DOWN="70 100 70 400 $flingtime";; 48 (shamu) 49 flingtime=100 50 downCount=2 51 upCount=2 52 UP="700 1847 700 400 $flingtime" 53 DOWN="700 400 700 1847 $flingtime";; 54 (angler) 55 flingtime=150 56 downCount=4 57 upCount=3 58 UP="500 1200 500 550 $flingtime" 59 DOWN="500 550 500 1200 $flingtime";; 60 (bullhead|volantis) 61 flingtime=200 62 downCount=5 63 upCount=5 64 UP="500 1400 500 400 $flingtime" 65 DOWN="500 400 500 1400 $flingtime";; 66 (ariel) 67 flingtime=200 68 downCount=5 69 upCount=5 70 UP="500 1560 500 530 $flingtime" 71 DOWN="500 530 500 1560 $flingtime";; 72 (*) 73 echo "Error: No display information available for $DEVICE" 74 exit 1;; 75 esac 76 77 function swipe { 78 count=0 79 while [ $count -lt $2 ] 80 do 81 doSwipe $1 82 ((count=count+1)) 83 done 84 sleep 1 85 } 86 87 cur=1 88 frameSum=0 89 jankSum=0 90 latency90Sum=0 91 latency95Sum=0 92 latency99Sum=0 93 94 doKeyevent HOME 95 sleep 0.5 96 resetJankyFrames $(getPackageName $app) 97 98 while [ $cur -le $iterations ] 99 do 100 if [ $capturesystrace -gt 0 ]; then 101 ${ADB}atrace --async_start -z -c -b 16000 freq gfx view idle sched 102 fi 103 t=$(startActivity $app) 104 sleep $waittime 105 swipe "$UP" $upCount 106 107 sleep $waittime 108 swipe "$DOWN" $downCount 109 110 doKeyevent BACK 111 sleep 0.5 112 113 if [ $capturesystrace -gt 0 ]; then 114 ${ADB}atrace --async_dump -z -c -b 16000 freq gfx view idle sched > trace.${cur}.out 115 fi 116 doKeyevent HOME 117 sleep 0.5 118 119 set -- $(getJankyFrames $(getPackageName $app)) 120 totalDiff=$1 121 jankyDiff=$2 122 latency90=$3 123 latency95=$4 124 latency99=$5 125 if [ ${totalDiff:=0} -eq 0 ]; then 126 echo Error: could not read frame info with \"dumpsys gfxinfo\" 127 exit 1 128 fi 129 130 ((frameSum=frameSum+totalDiff)) 131 ((jankSum=jankSum+jankyDiff)) 132 ((latency90Sum=latency90Sum+latency90)) 133 ((latency95Sum=latency95Sum+latency95)) 134 ((latency99Sum=latency99Sum+latency99)) 135 if [ "$totalDiff" -eq 0 ]; then 136 echo Error: no frames detected. Is the display off? 137 exit 1 138 fi 139 ((jankPct=jankyDiff*100/totalDiff)) 140 resetJankyFrames $(getPackageName $app) 141 142 143 echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\) 144 ((cur=cur+1)) 145 done 146 doKeyevent HOME 147 ((aveJankPct=jankSum*100/frameSum)) 148 ((aveJanks=jankSum/iterations)) 149 ((aveFrames=frameSum/iterations)) 150 ((aveLatency90=latency90Sum/iterations)) 151 ((aveLatency95=latency95Sum/iterations)) 152 ((aveLatency99=latency99Sum/iterations)) 153 echo AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\) 154