# # Script to play a john oliver youtube video N times. # For each iteration, Total frames and janky frames are reported. # # Options are described below. # iterations=10 app=youtube searchText="last week tonight with john oliver: online harassment" vidMinutes=15 function processLocalOption { ret=0 case "$1" in (-S) searchText="$2"; shift;; (-t) vidMinutes="$2"; shift;; (*) echo "$0: unrecognized option: $1" echo; echo "Usage: $0 [options]" echo "-i iterations" echo "-S youtube search text" echo "-d device" echo "-t vidMinutes" exit 1;; esac return $ret } CMDDIR=$(dirname $0 2>/dev/null) CMDDIR=${CMDDIR:=.} . $CMDDIR/defs.sh case $DEVICE in (angler) searchButton="860 177" selectFirstVideo="225 400" enableControls="1000 610" fullScreen="1011 632" ;; (shamu) searchButton="1200 160" selectFirstVideo="480 653" enableControls="1377 812" fullScreen="1377 812" ;; (bullhead|hammerhead) searchButton="860 177" selectFirstVideo="225 400" enableControls="1000 610" fullScreen="1011 632" ;; (volantis) searchButton="1356 93" selectFirstVideo="378 264" enableControls="1464 812" fullScreen="1480 835" ;; (ariel) searchButton="1440 70" selectFirstVideo="228 224" enableControls="1528 880" fullScreen="1528 880" ;; (*) echo "Error: No display information available for $DEVICE" exit 1;; esac function swipe { count=0 while [ $count -lt $2 ] do echo doSwipe... doSwipe $1 ((count=count+1)) done sleep 1 } cur=1 frameSum=0 jankSum=0 latency90Sum=0 latency95Sum=0 latency99Sum=0 doKeyevent HOME sleep 0.5 resetJankyFrames $(getPackageName $app) while [ $cur -le $iterations ] do t=$(startActivity $app) sleep 4.0 doTap $searchButton sleep 1.0 doText "$searchText" sleep 1.0 doKeyevent ENTER sleep 5.0 doTap $selectFirstVideo sleep 10.0 doTap $fullScreen sleep 0.5 doTap $fullScreen # 15 minutes ((vidTime=60*vidMinutes)) sleep $vidTime doKeyevent BACK sleep 0.5 doKeyevent BACK sleep 0.5 doKeyevent BACK sleep 0.5 set -- $(getJankyFrames $(getPackageName $app)) totalDiff=$1 jankyDiff=$2 latency90=$3 latency95=$4 latency99=$5 if [ ${totalDiff:=0} -eq 0 ]; then echo Error: could not read frame info with \"dumpsys gfxinfo\" fi ((frameSum=frameSum+totalDiff)) ((jankSum=jankSum+jankyDiff)) ((latency90Sum=latency90Sum+latency90)) ((latency95Sum=latency95Sum+latency95)) ((latency99Sum=latency99Sum+latency99)) if [ "$totalDiff" -eq 0 ]; then echo Error: no frames detected. Is the display off? fi ((jankPct=jankyDiff*100/totalDiff)) resetJankyFrames $(getPackageName $app) echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\) ((cur=cur+1)) done doKeyevent HOME ((aveJankPct=jankSum*100/frameSum)) ((aveJanks=jankSum/iterations)) ((aveFrames=frameSum/iterations)) ((aveLatency90=latency90Sum/iterations)) ((aveLatency95=latency95Sum/iterations)) ((aveLatency99=latency99Sum/iterations)) echo AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)