Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Unified Diff: build/android/adb_profile_chrome

Issue 25044004: android: Reimplement adb_profile_chrome in Python (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits picked. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | build/android/adb_profile_chrome.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/adb_profile_chrome
diff --git a/build/android/adb_profile_chrome b/build/android/adb_profile_chrome
index 46dec3742b0975185bfe44008272063f11a76d9a..00b119918bafbef2bacfc53a86264240ecdd2cf9 100755
--- a/build/android/adb_profile_chrome
+++ b/build/android/adb_profile_chrome
@@ -5,169 +5,4 @@
# found in the LICENSE file.
#
# Start / stop profiling in chrome.
-
-# The profiling data is saved to directory /sdcard/Download. The files
-# are named beginning chrome-profile-results-
-#
-# Assumes you have sourced the android build environment script
-# (e.g. 'adb' is on your path).
-set -e
-
-usage() {
- echo "adb_profile_chrome [--start [-o file] [-c C]|--stop|-d|-t N] [-v N]"
- echo "See http://dev.chromium.org/developers/how-tos/trace-event-profiling-tool for detailed instructions on profiling."
- echo ""
- echo " --start Start profiling."
- echo " --output|-o file Save profile output to file. "
- echo " (Default is /sdcard/Download/chrome-profile-results-*)"
- echo " --categories|-c C Select categories to trace with comma-delimited wildcards."
- echo " e.g. '*', 'cat1*,-cat1a'. Default is '*'."
- echo " --continuous Using the trace buffer as a ring buffer, continuously"
- echo " profile until stopped."
- echo " --stop Stop profiling."
- echo " --download|-d Download latest trace."
- echo " --time|-t N Profile for N seconds and download the resulting trace."
- echo " --version|v N Select among installed browsers."
- echo " One of stable (default), beta, dev, build"
- echo ""
- echo "Profiling data is saved to the device."
- exit 0
-}
-
-send_intent() {
- local PACKAGE=$1
- local INTENT=$2
- shift
- shift
- adb shell am broadcast -a $PACKAGE.$INTENT $*
-}
-
-download_latest_trace() {
- (adb logcat -d | grep -q "Logging performance trace to file") || {
- echo "WARNING: Trace start marker not found. Is the correct version of Chrome running?"
- }
-
- local ITERATION=0
- while true; do
- # Chrome logs two different messages related to tracing:
- #
- # 1. "Logging performance trace to file [...]"
- # 2. "Profiler finished. Results are in [...]"
- #
- # The first one is printed when tracing starts and the second one indicates
- # that the trace file is ready to be downloaded.
- #
- # We have to look for both of these messages to make sure we get the results
- # from the latest trace and that the trace file is complete. This is done by
- # first looking for the last instance of the first message and then checking
- # for the second message in the remaining part of the log.
- TRACE_FILE=$(adb logcat -d | \
- tac | \
- grep --max-count=1 --before-context=100000 "Logging performance trace to file" | \
- tac | \
- grep "Profiler finished[.] Results are in " | \
- perl -pi -e "s{.*/storage/emulated/.+/([^\r]+)[.].*}{/sdcard/Download/\\1}g")
- if [ -n "$TRACE_FILE" ]; then
- break
- fi
- if [ $ITERATION -eq 0 ]; then
- echo -n "Waiting for Chrome to finish tracing..."
- else
- echo -n "."
- fi
- let ITERATION=ITERATION+1
- if [ $ITERATION -eq 60 ]; then
- echo "Timed out"
- exit 1
- fi
- sleep 1
- done
-
- adb pull $TRACE_FILE 2> /dev/null
- LOCAL_TRACE_FILE=$(basename $TRACE_FILE)
- if [ ! -f "$LOCAL_TRACE_FILE" ]; then
- echo "Unable to download trace file"
- exit 1
- fi
-}
-
-do_timed_capture() {
- local PACKAGE=$1
- local INTERVAL=$2
- shift
- shift
- echo -n "Capturing trace..."
- send_intent ${PACKAGE} "GPU_PROFILER_START" $* > /dev/null
- sleep ${INTERVAL}
- send_intent ${PACKAGE} "GPU_PROFILER_STOP" > /dev/null
- echo "done"
-
- echo -n "Downloading trace..."
- sleep $[${INTERVAL} / 4 + 1]
- download_latest_trace
- echo "done"
-
- echo "Trace written to ${PWD}/${LOCAL_TRACE_FILE}"
-}
-
-PACKAGE=${DEFAULT_PACKAGE:-com.android.chrome}
-
-while test -n "$1"; do
- case "$1" in
- -v|--version)
- if [[ -z "$2" ]] ; then
- usage
- fi
- shift
- case "$1" in
- stable) PACKAGE="com.android.chrome" ;;
- beta) PACKAGE="com.chrome.beta" ;;
- dev) PACKAGE="com.google.android.apps.chrome_dev" ;;
- build) PACKAGE="com.google.android.apps.chrome" ;;
- *) usage ;;
- esac
- ;;
- --start) FUNCTION="GPU_PROFILER_START" ;;
- --stop) FUNCTION="GPU_PROFILER_STOP" ;;
- -o|--output)
- if [ -z "$2" ] ; then
- usage
- fi
- OUTPUT="-e file '$2'"
- shift
- ;;
- -c|--categories)
- if [ -z "$2" ]; then
- usage
- fi
- CATEGORIES="-e categories '$2'"
- shift
- ;;
- --continuous) CONTINUOUS="-e continuous ." ;;
- -t|--time)
- shift
- if [ -z "$1" ] ; then
- usage
- fi
- INTERVAL="$1"
- ;;
- -d|--download)
- shift
- download_latest_trace
- echo "Trace written to ${PWD}/${LOCAL_TRACE_FILE}"
- ;;
- *) usage ;;
- esac
- shift
-done
-
-if [ -z "${INTERVAL}" ] ; then
- if [ -z "${FUNCTION}" ] ; then
- usage
- else
- send_intent ${PACKAGE} ${FUNCTION} ${OUTPUT} ${CATEGORIES} ${CONTINUOUS}
- fi
-else
- do_timed_capture ${PACKAGE} ${INTERVAL} ${CATEGORIES} ${CONTINUOUS}
-fi
-exit 0
+exec $(dirname $0)/adb_profile_chrome.py $@
« no previous file with comments | « no previous file | build/android/adb_profile_chrome.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698