Bash程序  |  150行  |  2.99 KB

#
# Script to play a john oliver youtube video N times.
# For each iteration, Total frames and janky frames are reported.
#
# Options are described below.
#
iterations=10
app=youtube
searchText="last week tonight with john oliver: online harassment"
vidMinutes=15

function processLocalOption {
	ret=0
	case "$1" in
	(-S) searchText="$2"; shift;;
	(-t) vidMinutes="$2"; shift;;
	(*)
		echo "$0: unrecognized option: $1"
		echo; echo "Usage: $0 [options]"
		echo "-i iterations"
		echo "-S youtube search text"
		echo "-d device"
		echo "-t vidMinutes"
		exit 1;;
	esac
	return $ret
}

CMDDIR=$(dirname $0 2>/dev/null)
CMDDIR=${CMDDIR:=.}
. $CMDDIR/defs.sh

case $DEVICE in
(angler)
	searchButton="860 177"
	selectFirstVideo="225 400"
	enableControls="1000 610"
	fullScreen="1011 632"
	;;
(shamu)
	searchButton="1200 160"
	selectFirstVideo="480 653"
	enableControls="1377 812"
	fullScreen="1377 812"
	;;
(bullhead|hammerhead)
	searchButton="860 177"
	selectFirstVideo="225 400"
	enableControls="1000 610"
	fullScreen="1011 632"
	;;
(volantis)
	searchButton="1356 93"
	selectFirstVideo="378 264"
	enableControls="1464 812"
	fullScreen="1480 835"
	;;
(ariel)
	searchButton="1440 70"
	selectFirstVideo="228 224"
	enableControls="1528 880"
	fullScreen="1528 880"
	;;

(*)
	echo "Error: No display information available for $DEVICE"
	exit 1;;
esac

function swipe {
	count=0
	while [ $count -lt $2 ]
	do
		echo doSwipe...
		doSwipe $1
		((count=count+1))
	done
	sleep 1
}

cur=1
frameSum=0
jankSum=0
latency90Sum=0
latency95Sum=0
latency99Sum=0

doKeyevent HOME
sleep 0.5
resetJankyFrames $(getPackageName $app)

while [ $cur -le $iterations ]
do
	t=$(startActivity $app)
	sleep 4.0
	doTap $searchButton
	sleep 1.0
	doText "$searchText"
	sleep 1.0
	doKeyevent ENTER
	sleep 5.0
	doTap $selectFirstVideo
	sleep 10.0
	doTap $fullScreen
	sleep 0.5
	doTap $fullScreen
	# 15 minutes
	((vidTime=60*vidMinutes))
	sleep $vidTime
	doKeyevent BACK
	sleep 0.5
	doKeyevent BACK
	sleep 0.5
	doKeyevent BACK
	sleep 0.5

	set -- $(getJankyFrames $(getPackageName $app))
	totalDiff=$1
	jankyDiff=$2
	latency90=$3
	latency95=$4
	latency99=$5
	if [ ${totalDiff:=0} -eq 0 ]; then
		echo Error: could not read frame info with \"dumpsys gfxinfo\"
	fi

	((frameSum=frameSum+totalDiff))
	((jankSum=jankSum+jankyDiff))
	((latency90Sum=latency90Sum+latency90))
	((latency95Sum=latency95Sum+latency95))
	((latency99Sum=latency99Sum+latency99))
	if [ "$totalDiff" -eq 0 ]; then
		echo Error: no frames detected. Is the display off?
	fi
	((jankPct=jankyDiff*100/totalDiff))
	resetJankyFrames $(getPackageName $app)


	echo Frames: $totalDiff latency: $latency90/$latency95/$latency99 Janks: $jankyDiff\(${jankPct}%\)
	((cur=cur+1))
done
doKeyevent HOME
((aveJankPct=jankSum*100/frameSum))
((aveJanks=jankSum/iterations))
((aveFrames=frameSum/iterations))
((aveLatency90=latency90Sum/iterations))
((aveLatency95=latency95Sum/iterations))
((aveLatency99=latency99Sum/iterations))
echo AVE: Frames: $aveFrames latency: $aveLatency90/$aveLatency95/$aveLatency99 Janks: $aveJanks\(${aveJankPct}%\)