1#
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"
10vidMinutes=15
11
12function processLocalOption {
13	ret=0
14	case "$1" in
15	(-S) searchText="$2"; shift;;
16	(-t) vidMinutes="$2"; shift;;
17	(*)
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"
23		echo "-t vidMinutes"
24		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	;;
58(ariel)
59	searchButton="1440 70"
60	selectFirstVideo="228 224"
61	enableControls="1528 880"
62	fullScreen="1528 880"
63	;;
64
65(*)
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
108	((vidTime=60*vidMinutes))
109	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}%\)
150