summaryrefslogtreecommitdiff
path: root/automated/android/bootchart/bootchart.sh
blob: b34e35ba349225252b34861f6dc063550b9e815b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/bin/sh -e
# shellcheck disable=SC1091

SKIP_INSTALL='false'
ANDROID_SERIAL=""
BOOT_TIMEOUT="300"
OPERATION="start"
BOOTCHART_TIME="120"
OUTPUT="$(pwd)/output"
RESULT_FILE="${OUTPUT}/result.txt"

. ../../lib/sh-test-lib
. ../../lib/android-test-lib

usage() {
    echo "Usage: $0 [-S <skip_install>] [-s <android_serial>] [-t <boot_timeout>] [-o <stop|start>] [-T <bootchart_time>]" 1>&2
    exit 1
}

while getopts ":S:s:t:o:T:" o; do
  case "$o" in
    S) SKIP_INSTALL="${OPTARG}" ;;
    s) ANDROID_SERIAL="${OPTARG}" ;;
    t) BOOT_TIMEOUT="${OPTARG}" ;;
    o) OPERATION="${OPTARG}" ;;
    T) BOOTCHART_TIME="${OPTARG}" ;;
    *) usage ;;
  esac
done

initialize_adb
wait_boot_completed "${BOOT_TIMEOUT}"
create_out_dir "${OUTPUT}"
install_deps 'curl tar xz-utils bootchart pybootchartgui' "${SKIP_INSTALL}"

adb_push "./device-script.sh" "/data/local/tmp/"
info_msg "device-${ANDROID_SERIAL}: About to run bootchart ${OPERATION}..."
adb shell "echo /data/local/tmp/device-script.sh ${OPERATION} ${BOOTCHART_TIME} | su" \
    | tee "${OUTPUT}/device-stdout.log"

grep -E "^[a-z_]+: (pass|fail)" "${OUTPUT}/device-stdout.log"\
    | sed 's/://g' >> "${RESULT_FILE}"

# Retrieving the collected data from target, and generate bootchart graphic.
if [ "${OPERATION}" = "stop" ]; then
    FILES="header proc_stat.log proc_ps.log proc_diskstats.log"
    for f in $FILES; do
        adb_pull "/data/local/tmp/bootchart/$f" "${OUTPUT}"
    done

    cd "${OUTPUT}"
    # shellcheck disable=SC2086
    tar -czf "bootchart.tgz" $FILES
    bootchart bootchart.tgz
    if [ -f bootchart.png ]; then
        report_pass "generate-bootchart-graphic"
    else
        report_fail "generate-bootchart-graphic"
    fi

    # Compress raw data and bootchart graphic for file uploading.
    tar caf "output-bootchart.tar.xz" bootchart.tgz bootchart.png
fi