xref: /aosp_15_r20/system/extras/tests/workloads/youtube.sh (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Worker#
2*288bf522SAndroid Build Coastguard Worker# Script to play a john oliver youtube video N times.
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 Workerapp=youtube
9*288bf522SAndroid Build Coastguard WorkersearchText="last week tonight with john oliver: online harassment"
10*288bf522SAndroid Build Coastguard WorkervidMinutes=15
11*288bf522SAndroid Build Coastguard Worker
12*288bf522SAndroid Build Coastguard Workerfunction processLocalOption {
13*288bf522SAndroid Build Coastguard Worker	ret=0
14*288bf522SAndroid Build Coastguard Worker	case "$1" in
15*288bf522SAndroid Build Coastguard Worker	(-S) searchText="$2"; shift;;
16*288bf522SAndroid Build Coastguard Worker	(-t) vidMinutes="$2"; shift;;
17*288bf522SAndroid Build Coastguard Worker	(*)
18*288bf522SAndroid Build Coastguard Worker		echo "$0: unrecognized option: $1"
19*288bf522SAndroid Build Coastguard Worker		echo; echo "Usage: $0 [options]"
20*288bf522SAndroid Build Coastguard Worker		echo "-i iterations"
21*288bf522SAndroid Build Coastguard Worker		echo "-S youtube search text"
22*288bf522SAndroid Build Coastguard Worker		echo "-d device"
23*288bf522SAndroid Build Coastguard Worker		echo "-t vidMinutes"
24*288bf522SAndroid Build Coastguard Worker		exit 1;;
25*288bf522SAndroid Build Coastguard Worker	esac
26*288bf522SAndroid Build Coastguard Worker	return $ret
27*288bf522SAndroid Build Coastguard Worker}
28*288bf522SAndroid Build Coastguard Worker
29*288bf522SAndroid Build Coastguard WorkerCMDDIR=$(dirname $0 2>/dev/null)
30*288bf522SAndroid Build Coastguard WorkerCMDDIR=${CMDDIR:=.}
31*288bf522SAndroid Build Coastguard Worker. $CMDDIR/defs.sh
32*288bf522SAndroid Build Coastguard Worker
33*288bf522SAndroid Build Coastguard Workercase $DEVICE in
34*288bf522SAndroid Build Coastguard Worker(angler)
35*288bf522SAndroid Build Coastguard Worker	searchButton="860 177"
36*288bf522SAndroid Build Coastguard Worker	selectFirstVideo="225 400"
37*288bf522SAndroid Build Coastguard Worker	enableControls="1000 610"
38*288bf522SAndroid Build Coastguard Worker	fullScreen="1011 632"
39*288bf522SAndroid Build Coastguard Worker	;;
40*288bf522SAndroid Build Coastguard Worker(shamu)
41*288bf522SAndroid Build Coastguard Worker	searchButton="1200 160"
42*288bf522SAndroid Build Coastguard Worker	selectFirstVideo="480 653"
43*288bf522SAndroid Build Coastguard Worker	enableControls="1377 812"
44*288bf522SAndroid Build Coastguard Worker	fullScreen="1377 812"
45*288bf522SAndroid Build Coastguard Worker	;;
46*288bf522SAndroid Build Coastguard Worker(bullhead|hammerhead)
47*288bf522SAndroid Build Coastguard Worker	searchButton="860 177"
48*288bf522SAndroid Build Coastguard Worker	selectFirstVideo="225 400"
49*288bf522SAndroid Build Coastguard Worker	enableControls="1000 610"
50*288bf522SAndroid Build Coastguard Worker	fullScreen="1011 632"
51*288bf522SAndroid Build Coastguard Worker	;;
52*288bf522SAndroid Build Coastguard Worker(volantis)
53*288bf522SAndroid Build Coastguard Worker	searchButton="1356 93"
54*288bf522SAndroid Build Coastguard Worker	selectFirstVideo="378 264"
55*288bf522SAndroid Build Coastguard Worker	enableControls="1464 812"
56*288bf522SAndroid Build Coastguard Worker	fullScreen="1480 835"
57*288bf522SAndroid Build Coastguard Worker	;;
58*288bf522SAndroid Build Coastguard Worker(ariel)
59*288bf522SAndroid Build Coastguard Worker	searchButton="1440 70"
60*288bf522SAndroid Build Coastguard Worker	selectFirstVideo="228 224"
61*288bf522SAndroid Build Coastguard Worker	enableControls="1528 880"
62*288bf522SAndroid Build Coastguard Worker	fullScreen="1528 880"
63*288bf522SAndroid Build Coastguard Worker	;;
64*288bf522SAndroid Build Coastguard Worker
65*288bf522SAndroid Build Coastguard Worker(*)
66*288bf522SAndroid Build Coastguard Worker	echo "Error: No display information available for $DEVICE"
67*288bf522SAndroid Build Coastguard Worker	exit 1;;
68*288bf522SAndroid Build Coastguard Workeresac
69*288bf522SAndroid Build Coastguard Worker
70*288bf522SAndroid Build Coastguard Workerfunction swipe {
71*288bf522SAndroid Build Coastguard Worker	count=0
72*288bf522SAndroid Build Coastguard Worker	while [ $count -lt $2 ]
73*288bf522SAndroid Build Coastguard Worker	do
74*288bf522SAndroid Build Coastguard Worker		echo doSwipe...
75*288bf522SAndroid Build Coastguard Worker		doSwipe $1
76*288bf522SAndroid Build Coastguard Worker		((count=count+1))
77*288bf522SAndroid Build Coastguard Worker	done
78*288bf522SAndroid Build Coastguard Worker	sleep 1
79*288bf522SAndroid Build Coastguard Worker}
80*288bf522SAndroid Build Coastguard Worker
81*288bf522SAndroid Build Coastguard Workercur=1
82*288bf522SAndroid Build Coastguard WorkerframeSum=0
83*288bf522SAndroid Build Coastguard WorkerjankSum=0
84*288bf522SAndroid Build Coastguard Workerlatency90Sum=0
85*288bf522SAndroid Build Coastguard Workerlatency95Sum=0
86*288bf522SAndroid Build Coastguard Workerlatency99Sum=0
87*288bf522SAndroid Build Coastguard Worker
88*288bf522SAndroid Build Coastguard WorkerdoKeyevent HOME
89*288bf522SAndroid Build Coastguard Workersleep 0.5
90*288bf522SAndroid Build Coastguard WorkerresetJankyFrames $(getPackageName $app)
91*288bf522SAndroid Build Coastguard Worker
92*288bf522SAndroid Build Coastguard Workerwhile [ $cur -le $iterations ]
93*288bf522SAndroid Build Coastguard Workerdo
94*288bf522SAndroid Build Coastguard Worker	t=$(startActivity $app)
95*288bf522SAndroid Build Coastguard Worker	sleep 4.0
96*288bf522SAndroid Build Coastguard Worker	doTap $searchButton
97*288bf522SAndroid Build Coastguard Worker	sleep 1.0
98*288bf522SAndroid Build Coastguard Worker	doText "$searchText"
99*288bf522SAndroid Build Coastguard Worker	sleep 1.0
100*288bf522SAndroid Build Coastguard Worker	doKeyevent ENTER
101*288bf522SAndroid Build Coastguard Worker	sleep 5.0
102*288bf522SAndroid Build Coastguard Worker	doTap $selectFirstVideo
103*288bf522SAndroid Build Coastguard Worker	sleep 10.0
104*288bf522SAndroid Build Coastguard Worker	doTap $fullScreen
105*288bf522SAndroid Build Coastguard Worker	sleep 0.5
106*288bf522SAndroid Build Coastguard Worker	doTap $fullScreen
107*288bf522SAndroid Build Coastguard Worker	# 15 minutes
108*288bf522SAndroid Build Coastguard Worker	((vidTime=60*vidMinutes))
109*288bf522SAndroid Build Coastguard Worker	sleep $vidTime
110*288bf522SAndroid Build Coastguard Worker	doKeyevent BACK
111*288bf522SAndroid Build Coastguard Worker	sleep 0.5
112*288bf522SAndroid Build Coastguard Worker	doKeyevent BACK
113*288bf522SAndroid Build Coastguard Worker	sleep 0.5
114*288bf522SAndroid Build Coastguard Worker	doKeyevent BACK
115*288bf522SAndroid Build Coastguard Worker	sleep 0.5
116*288bf522SAndroid Build Coastguard Worker
117*288bf522SAndroid Build Coastguard Worker	set -- $(getJankyFrames $(getPackageName $app))
118*288bf522SAndroid Build Coastguard Worker	totalDiff=$1
119*288bf522SAndroid Build Coastguard Worker	jankyDiff=$2
120*288bf522SAndroid Build Coastguard Worker	latency90=$3
121*288bf522SAndroid Build Coastguard Worker	latency95=$4
122*288bf522SAndroid Build Coastguard Worker	latency99=$5
123*288bf522SAndroid Build Coastguard Worker	if [ ${totalDiff:=0} -eq 0 ]; then
124*288bf522SAndroid Build Coastguard Worker		echo Error: could not read frame info with \"dumpsys gfxinfo\"
125*288bf522SAndroid Build Coastguard Worker	fi
126*288bf522SAndroid Build Coastguard Worker
127*288bf522SAndroid Build Coastguard Worker	((frameSum=frameSum+totalDiff))
128*288bf522SAndroid Build Coastguard Worker	((jankSum=jankSum+jankyDiff))
129*288bf522SAndroid Build Coastguard Worker	((latency90Sum=latency90Sum+latency90))
130*288bf522SAndroid Build Coastguard Worker	((latency95Sum=latency95Sum+latency95))
131*288bf522SAndroid Build Coastguard Worker	((latency99Sum=latency99Sum+latency99))
132*288bf522SAndroid Build Coastguard Worker	if [ "$totalDiff" -eq 0 ]; then
133*288bf522SAndroid Build Coastguard Worker		echo Error: no frames detected. Is the display off?
134*288bf522SAndroid Build Coastguard Worker	fi
135*288bf522SAndroid Build Coastguard Worker	((jankPct=jankyDiff*100/totalDiff))
136*288bf522SAndroid Build Coastguard Worker	resetJankyFrames $(getPackageName $app)
137*288bf522SAndroid Build Coastguard Worker
138*288bf522SAndroid Build Coastguard Worker
139*288bf522SAndroid Build Coastguard Worker	echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\)
140*288bf522SAndroid Build Coastguard Worker	((cur=cur+1))
141*288bf522SAndroid Build Coastguard Workerdone
142*288bf522SAndroid Build Coastguard WorkerdoKeyevent HOME
143*288bf522SAndroid Build Coastguard Worker((aveJankPct=jankSum*100/frameSum))
144*288bf522SAndroid Build Coastguard Worker((aveJanks=jankSum/iterations))
145*288bf522SAndroid Build Coastguard Worker((aveFrames=frameSum/iterations))
146*288bf522SAndroid Build Coastguard Worker((aveLatency90=latency90Sum/iterations))
147*288bf522SAndroid Build Coastguard Worker((aveLatency95=latency95Sum/iterations))
148*288bf522SAndroid Build Coastguard Worker((aveLatency99=latency99Sum/iterations))
149*288bf522SAndroid Build Coastguard Workerecho AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)
150