summaryrefslogtreecommitdiffstats
path: root/third_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh')
-rwxr-xr-xthird_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh154
1 files changed, 154 insertions, 0 deletions
diff --git a/third_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh b/third_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh
new file mode 100755
index 0000000000..46a97b8142
--- /dev/null
+++ b/third_party/libwebrtc/tools_webrtc/android/profiling/utilities.sh
@@ -0,0 +1,154 @@
+#!/bin/bash
+
+# Copyright (c) 2017 The WebRTC project authors. All Rights Reserved.
+#
+# Use of this source code is governed by a BSD-style license
+# that can be found in the LICENSE file in the root of the source
+# tree. An additional intellectual property rights grant can be found
+# in the file PATENTS. All contributing project authors may
+# be found in the AUTHORS file in the root of the source tree.
+
+# Utility functions to be used by perf_setup.sh.
+# Contains helper methods and functions that wraps usage of adb.
+
+function error() {
+ echo "[ERROR] "$@"" >&2
+}
+
+function warning() {
+ echo "[WARNING] "$@"" >&1
+}
+
+function ok() {
+ echo "[OK] "$@"" >&1
+}
+
+function abs_path {
+ (cd $1; pwd)
+}
+
+function is_set() {
+ local var="$1"
+ [[ -n "${var}" ]]
+}
+
+function is_file() {
+ local file="$1"
+ [[ -f "${file}" ]]
+}
+
+function is_not_file() {
+ local file="$1"
+ [[ ! -f "${file}" ]]
+}
+
+function is_dir() {
+ local dir="$1"
+ [[ -d "${dir}" ]]
+}
+
+function is_not_dir() {
+ local dir="$1"
+ [[ ! -d "${dir}" ]]
+}
+
+# Adds (prepends) the PATH environment variable while avoid duplicates.
+function path_add() {
+ case ":${PATH:=$1}:" in
+ *:$1:*) ;;
+ *) PATH="$1:$PATH" ;;
+ esac
+}
+
+# Removes a path from the PATH environment variable using search-and-replace
+# parameter expansion.
+function path_remove {
+ local path="$1"
+ # Substitute first occurrence of ":path" in PATH with an empty string.
+ # Deletes instances in the middle or at the end.
+ PATH=${PATH/":$path"/}
+ # Substitute first occurrence of "path:" in PATH with an empty string.
+ # Delete instances at the beginning.
+ PATH=${PATH/"$path:"/}
+}
+
+# Returns the process ID (PID) of the process that corresponds to the
+# application name given as input parameter.
+function find_app_pid() {
+ local app_name="$1"
+ adb shell ps | grep "${app_name}" | awk '{print $2}'
+}
+
+function app_is_installed() {
+ local app_name="$1"
+ local installed_app_name=$(adb shell pm list packages \
+ | grep "${app_name}" | awk -F':' '{print $2}')
+ is_set "${installed_app_name}" \
+ && [[ "${installed_app_name}" = "${app_name}" ]]
+}
+
+function app_is_running() {
+ local app_name="$1"
+ local app_pid=$(find_app_pid "${app_name}")
+ is_set "${app_pid}"
+}
+
+function app_start() {
+ local app_name="$1"
+ adb shell am start \
+ -n "${app_name}/.ConnectActivity" \
+ -a android.intent.action.MAIN
+}
+
+function app_stop() {
+ local app_name="$1"
+ adb shell am force-stop "${app_name}"
+}
+
+function app_uninstall() {
+ local app_name="$1"
+ adb uninstall "${app_name}"
+}
+
+function dev_arch() {
+ adb shell uname -m
+}
+
+function dev_ls() {
+ local dir="$1"
+ adb shell ls "${dir}"
+}
+
+# Returns true if exactly on device is connected.
+function one_device_connected() {
+ [[ $(adb devices | wc -l) = 3 ]]
+}
+
+# Returns true if device is rooted.
+function image_is_root() {
+ [[ $(adb shell getprop ro.build.type) = "userdebug" ]]
+}
+
+# Returns true if device is not rooted.
+function image_is_not_root() {
+ [[ $(adb shell getprop ro.build.type) = "user" ]]
+}
+
+# Returns true if adb is not already running as root.
+# Should only be called on rooted devices.
+function adb_has_no_root_permissions() {
+ [[ $(adb shell getprop service.adb.root) = 0 ]]
+}
+
+# Android devices may disable profiling by default. We must enable it.
+function enable_profiling() {
+ adb shell setprop security.perf_harden 0
+}
+
+# To make the report of symbols on device successful, we need to execute
+# `echo 0 >/proc/sys/kernel/kptr_restrict`.
+# Only needed if we run report commands on the same machine as we run
+# record commands.
+function enable_report_symbols() {
+ adb shell "echo 0 > /proc/sys/kernel/kptr_restrict"
+}