xref: /aosp_15_r20/system/extras/tests/workloads/chromefling.sh (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
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