blob: 558e53c3b4d7c54cc8908811c8b9dc81f1bb5946 [file] [log] [blame]
Todd Kjosffa6c3a2015-07-22 09:04:20 -07001#
2# Script to play a john oliver youtube video N times.
3# For each iteration, Total frames and janky frames are reported.
4#
5# Options are described below.
6#
7iterations=10
8app=youtube
9searchText="last week tonight with john oliver: online harassment"
Todd Kjosa87980f2016-02-10 16:52:36 -080010vidMinutes=15
Todd Kjosffa6c3a2015-07-22 09:04:20 -070011
12function processLocalOption {
13 ret=0
14 case "$1" in
15 (-S) searchText="$2"; shift;;
Todd Kjosa87980f2016-02-10 16:52:36 -080016 (-t) vidMinutes="$2"; shift;;
Todd Kjosffa6c3a2015-07-22 09:04:20 -070017 (*)
18 echo "$0: unrecognized option: $1"
19 echo; echo "Usage: $0 [options]"
20 echo "-i iterations"
21 echo "-S youtube search text"
22 echo "-d device"
Todd Kjosa87980f2016-02-10 16:52:36 -080023 echo "-t vidMinutes"
Todd Kjosffa6c3a2015-07-22 09:04:20 -070024 exit 1;;
25 esac
26 return $ret
27}
28
29CMDDIR=$(dirname $0 2>/dev/null)
30CMDDIR=${CMDDIR:=.}
31. $CMDDIR/defs.sh
32
33case $DEVICE in
34(angler)
35 searchButton="860 177"
36 selectFirstVideo="225 400"
37 enableControls="1000 610"
38 fullScreen="1011 632"
39 ;;
40(shamu)
41 searchButton="1200 160"
42 selectFirstVideo="480 653"
43 enableControls="1377 812"
44 fullScreen="1377 812"
45 ;;
46(bullhead|hammerhead)
47 searchButton="860 177"
48 selectFirstVideo="225 400"
49 enableControls="1000 610"
50 fullScreen="1011 632"
51 ;;
52(volantis)
53 searchButton="1356 93"
54 selectFirstVideo="378 264"
55 enableControls="1464 812"
56 fullScreen="1480 835"
57 ;;
Todd Kjosa87980f2016-02-10 16:52:36 -080058(ariel)
59 searchButton="1440 70"
60 selectFirstVideo="228 224"
61 enableControls="1528 880"
62 fullScreen="1528 880"
63 ;;
64
Todd Kjosffa6c3a2015-07-22 09:04:20 -070065(*)
66 echo "Error: No display information available for $DEVICE"
67 exit 1;;
68esac
69
70function swipe {
71 count=0
72 while [ $count -lt $2 ]
73 do
74 echo doSwipe...
75 doSwipe $1
76 ((count=count+1))
77 done
78 sleep 1
79}
80
81cur=1
82frameSum=0
83jankSum=0
84latency90Sum=0
85latency95Sum=0
86latency99Sum=0
87
88doKeyevent HOME
89sleep 0.5
90resetJankyFrames $(getPackageName $app)
91
92while [ $cur -le $iterations ]
93do
94 t=$(startActivity $app)
95 sleep 4.0
96 doTap $searchButton
97 sleep 1.0
98 doText "$searchText"
99 sleep 1.0
100 doKeyevent ENTER
101 sleep 5.0
102 doTap $selectFirstVideo
103 sleep 10.0
104 doTap $fullScreen
105 sleep 0.5
106 doTap $fullScreen
107 # 15 minutes
Todd Kjosa87980f2016-02-10 16:52:36 -0800108 ((vidTime=60*vidMinutes))
Todd Kjosffa6c3a2015-07-22 09:04:20 -0700109 sleep $vidTime
110 doKeyevent BACK
111 sleep 0.5
112 doKeyevent BACK
113 sleep 0.5
114 doKeyevent BACK
115 sleep 0.5
116
117 set -- $(getJankyFrames $(getPackageName $app))
118 totalDiff=$1
119 jankyDiff=$2
120 latency90=$3
121 latency95=$4
122 latency99=$5
123 if [ ${totalDiff:=0} -eq 0 ]; then
124 echo Error: could not read frame info with \"dumpsys gfxinfo\"
125 fi
126
127 ((frameSum=frameSum+totalDiff))
128 ((jankSum=jankSum+jankyDiff))
129 ((latency90Sum=latency90Sum+latency90))
130 ((latency95Sum=latency95Sum+latency95))
131 ((latency99Sum=latency99Sum+latency99))
132 if [ "$totalDiff" -eq 0 ]; then
133 echo Error: no frames detected. Is the display off?
134 fi
135 ((jankPct=jankyDiff*100/totalDiff))
136 resetJankyFrames $(getPackageName $app)
137
138
139 echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\)
140 ((cur=cur+1))
141done
142doKeyevent HOME
143((aveJankPct=jankSum*100/frameSum))
144((aveJanks=jankSum/iterations))
145((aveFrames=frameSum/iterations))
146((aveLatency90=latency90Sum/iterations))
147((aveLatency95=latency95Sum/iterations))
148((aveLatency99=latency99Sum/iterations))
149echo AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)