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