xref: /aosp_15_r20/system/extras/tests/workloads/recentfling.sh (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Worker#
2*288bf522SAndroid Build Coastguard Worker# Script to start a set of apps, switch to recents and fling it back and forth.
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 Worker# Works for volantis, shamu, and hammerhead. Can be pushed and executed on
8*288bf522SAndroid Build Coastguard Worker# the device.
9*288bf522SAndroid Build Coastguard Worker#
10*288bf522SAndroid Build Coastguard Workeriterations=10
11*288bf522SAndroid Build Coastguard Workerstartapps=1
12*288bf522SAndroid Build Coastguard Workercapturesystrace=0
13*288bf522SAndroid Build Coastguard Worker
14*288bf522SAndroid Build Coastguard Workerfunction processLocalOption {
15*288bf522SAndroid Build Coastguard Worker	ret=0
16*288bf522SAndroid Build Coastguard Worker	case "$1" in
17*288bf522SAndroid Build Coastguard Worker	(-N) startapps=0;;
18*288bf522SAndroid Build Coastguard Worker	(-A) unset appList;;
19*288bf522SAndroid Build Coastguard Worker	(-L) appList=$2; shift; ret=1;;
20*288bf522SAndroid Build Coastguard Worker	(-T) capturesystrace=1;;
21*288bf522SAndroid Build Coastguard Worker	(-B) echo $$ > /dev/cpuset/background/tasks;;
22*288bf522SAndroid Build Coastguard Worker	(*)
23*288bf522SAndroid Build Coastguard Worker		echo "$0: unrecognized option: $1"
24*288bf522SAndroid Build Coastguard Worker		echo; echo "Usage: $0 [options]"
25*288bf522SAndroid Build Coastguard Worker		echo "-A : use all known applications"
26*288bf522SAndroid Build Coastguard Worker		echo "-B : run in background cpuset"
27*288bf522SAndroid Build Coastguard Worker		echo "-L applist : list of applications"
28*288bf522SAndroid Build Coastguard Worker		echo "   default: $appList"
29*288bf522SAndroid Build Coastguard Worker		echo "-N : no app startups, just fling"
30*288bf522SAndroid Build Coastguard Worker		echo "-g : generate activity strings"
31*288bf522SAndroid Build Coastguard Worker		echo "-i iterations"
32*288bf522SAndroid Build Coastguard Worker		echo "-T : capture systrace on each iteration"
33*288bf522SAndroid Build Coastguard Worker		exit 1;;
34*288bf522SAndroid Build Coastguard Worker	esac
35*288bf522SAndroid Build Coastguard Worker	return $ret
36*288bf522SAndroid Build Coastguard Worker}
37*288bf522SAndroid Build Coastguard Worker
38*288bf522SAndroid Build Coastguard WorkerCMDDIR=$(dirname $0 2>/dev/null)
39*288bf522SAndroid Build Coastguard WorkerCMDDIR=${CMDDIR:=.}
40*288bf522SAndroid Build Coastguard Worker. $CMDDIR/defs.sh
41*288bf522SAndroid Build Coastguard Worker
42*288bf522SAndroid Build Coastguard Workercase $DEVICE in
43*288bf522SAndroid Build Coastguard Worker(shamu|hammerhead)
44*288bf522SAndroid Build Coastguard Worker	flingtime=300
45*288bf522SAndroid Build Coastguard Worker	downCount=2
46*288bf522SAndroid Build Coastguard Worker	upCount=6
47*288bf522SAndroid Build Coastguard Worker	UP="70 400 70 100 $flingtime"
48*288bf522SAndroid Build Coastguard Worker	DOWN="70 100 70 400 $flingtime";;
49*288bf522SAndroid Build Coastguard Worker(angler|ariel|mtp8996)
50*288bf522SAndroid Build Coastguard Worker	flingtime=150
51*288bf522SAndroid Build Coastguard Worker	downCount=4
52*288bf522SAndroid Build Coastguard Worker	upCount=3
53*288bf522SAndroid Build Coastguard Worker	UP="500 1200 500 550 $flingtime"
54*288bf522SAndroid Build Coastguard Worker	DOWN="500 550 500 1200 $flingtime";;
55*288bf522SAndroid Build Coastguard Worker(bullhead)
56*288bf522SAndroid Build Coastguard Worker	flingtime=200
57*288bf522SAndroid Build Coastguard Worker	downCount=5
58*288bf522SAndroid Build Coastguard Worker	upCount=5
59*288bf522SAndroid Build Coastguard Worker	UP="500 1200 500 550 $flingtime"
60*288bf522SAndroid Build Coastguard Worker	DOWN="500 550 500 1200 $flingtime";;
61*288bf522SAndroid Build Coastguard Worker(volantis)
62*288bf522SAndroid Build Coastguard Worker	flingtime=400
63*288bf522SAndroid Build Coastguard Worker	downCount=5
64*288bf522SAndroid Build Coastguard Worker	upCount=6
65*288bf522SAndroid Build Coastguard Worker	UP="70 400 70 70 $flingtime"
66*288bf522SAndroid Build Coastguard Worker	DOWN="70 70 70 400 $flingtime";;
67*288bf522SAndroid Build Coastguard Worker(*)
68*288bf522SAndroid Build Coastguard Worker	echo "Error: No display information available for $DEVICE"
69*288bf522SAndroid Build Coastguard Worker	exit 1;;
70*288bf522SAndroid Build Coastguard Workeresac
71*288bf522SAndroid Build Coastguard Worker
72*288bf522SAndroid Build Coastguard WorkerdoKeyevent HOME
73*288bf522SAndroid Build Coastguard Workerif [ $startapps -gt 0 ]; then
74*288bf522SAndroid Build Coastguard Worker
75*288bf522SAndroid Build Coastguard Worker	# start a bunch of apps
76*288bf522SAndroid Build Coastguard Worker	for app in $appList
77*288bf522SAndroid Build Coastguard Worker	do
78*288bf522SAndroid Build Coastguard Worker		echo Starting $app ...
79*288bf522SAndroid Build Coastguard Worker		t=$(startActivity $app)
80*288bf522SAndroid Build Coastguard Worker	done
81*288bf522SAndroid Build Coastguard Workerfi
82*288bf522SAndroid Build Coastguard Worker
83*288bf522SAndroid Build Coastguard Workerfunction swipe {
84*288bf522SAndroid Build Coastguard Worker	count=0
85*288bf522SAndroid Build Coastguard Worker	while [ $count -lt $2 ]
86*288bf522SAndroid Build Coastguard Worker	do
87*288bf522SAndroid Build Coastguard Worker		doSwipe $1
88*288bf522SAndroid Build Coastguard Worker		((count=count+1))
89*288bf522SAndroid Build Coastguard Worker	done
90*288bf522SAndroid Build Coastguard Worker}
91*288bf522SAndroid Build Coastguard Worker
92*288bf522SAndroid Build Coastguard Workercur=1
93*288bf522SAndroid Build Coastguard WorkerframeSum=0
94*288bf522SAndroid Build Coastguard WorkerjankSum=0
95*288bf522SAndroid Build Coastguard Workerlatency90Sum=0
96*288bf522SAndroid Build Coastguard Workerlatency95Sum=0
97*288bf522SAndroid Build Coastguard Workerlatency99Sum=0
98*288bf522SAndroid Build Coastguard Worker
99*288bf522SAndroid Build Coastguard Workerecho Fling recents...
100*288bf522SAndroid Build Coastguard WorkerdoKeyevent HOME
101*288bf522SAndroid Build Coastguard Workersleep 0.5
102*288bf522SAndroid Build Coastguard WorkerresetJankyFrames
103*288bf522SAndroid Build Coastguard Worker
104*288bf522SAndroid Build Coastguard Workerwhile [ $cur -le $iterations ]
105*288bf522SAndroid Build Coastguard Workerdo
106*288bf522SAndroid Build Coastguard Worker	if [ $capturesystrace -gt 0 ]; then
107*288bf522SAndroid Build Coastguard Worker		${ADB}atrace --async_start -z -c -b 16000 freq gfx view idle sched
108*288bf522SAndroid Build Coastguard Worker	fi
109*288bf522SAndroid Build Coastguard Worker	doKeyevent APP_SWITCH
110*288bf522SAndroid Build Coastguard Worker	sleep 0.5
111*288bf522SAndroid Build Coastguard Worker	swipe "$DOWN" $downCount
112*288bf522SAndroid Build Coastguard Worker	sleep 1
113*288bf522SAndroid Build Coastguard Worker	swipe "$UP" $upCount
114*288bf522SAndroid Build Coastguard Worker	sleep 1
115*288bf522SAndroid Build Coastguard Worker	swipe "$DOWN" $downCount
116*288bf522SAndroid Build Coastguard Worker	sleep 1
117*288bf522SAndroid Build Coastguard Worker	swipe "$UP" $upCount
118*288bf522SAndroid Build Coastguard Worker	sleep 1
119*288bf522SAndroid Build Coastguard Worker	if [ $capturesystrace -gt 0 ]; then
120*288bf522SAndroid Build Coastguard Worker		${ADB}atrace --async_dump -z -c -b 16000 freq gfx view idle sched > trace.${cur}.out
121*288bf522SAndroid Build Coastguard Worker	fi
122*288bf522SAndroid Build Coastguard Worker	doKeyevent HOME
123*288bf522SAndroid Build Coastguard Worker	sleep 0.5
124*288bf522SAndroid Build Coastguard Worker
125*288bf522SAndroid Build Coastguard Worker	set -- $(getJankyFrames)
126*288bf522SAndroid Build Coastguard Worker	totalDiff=$1
127*288bf522SAndroid Build Coastguard Worker	jankyDiff=$2
128*288bf522SAndroid Build Coastguard Worker	latency90=$3
129*288bf522SAndroid Build Coastguard Worker	latency95=$4
130*288bf522SAndroid Build Coastguard Worker	latency99=$5
131*288bf522SAndroid Build Coastguard Worker	if [ ${totalDiff:=0} -eq 0 ]; then
132*288bf522SAndroid Build Coastguard Worker		echo Error: could not read frame info with \"dumpsys gfxinfo\"
133*288bf522SAndroid Build Coastguard Worker	fi
134*288bf522SAndroid Build Coastguard Worker
135*288bf522SAndroid Build Coastguard Worker	((frameSum=frameSum+totalDiff))
136*288bf522SAndroid Build Coastguard Worker	((jankSum=jankSum+jankyDiff))
137*288bf522SAndroid Build Coastguard Worker	((latency90Sum=latency90Sum+latency90))
138*288bf522SAndroid Build Coastguard Worker	((latency95Sum=latency95Sum+latency95))
139*288bf522SAndroid Build Coastguard Worker	((latency99Sum=latency99Sum+latency99))
140*288bf522SAndroid Build Coastguard Worker	if [ "$totalDiff" -eq 0 ]; then
141*288bf522SAndroid Build Coastguard Worker		echo Error: no frames detected. Is the display off?
142*288bf522SAndroid Build Coastguard Worker	fi
143*288bf522SAndroid Build Coastguard Worker	((jankPct=jankyDiff*100/totalDiff))
144*288bf522SAndroid Build Coastguard Worker	resetJankyFrames
145*288bf522SAndroid Build Coastguard Worker
146*288bf522SAndroid Build Coastguard Worker	echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\)
147*288bf522SAndroid Build Coastguard Worker	((cur=cur+1))
148*288bf522SAndroid Build Coastguard Workerdone
149*288bf522SAndroid Build Coastguard WorkerdoKeyevent HOME
150*288bf522SAndroid Build Coastguard Worker((aveJankPct=jankSum*100/frameSum))
151*288bf522SAndroid Build Coastguard Worker((aveJanks=jankSum/iterations))
152*288bf522SAndroid Build Coastguard Worker((aveFrames=frameSum/iterations))
153*288bf522SAndroid Build Coastguard Worker((aveLatency90=latency90Sum/iterations))
154*288bf522SAndroid Build Coastguard Worker((aveLatency95=latency95Sum/iterations))
155*288bf522SAndroid Build Coastguard Worker((aveLatency99=latency99Sum/iterations))
156*288bf522SAndroid Build Coastguard Workerecho AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)
157