blob: bcab21ea9c013304e5be00bbd89bc675432f8cc8 [file] [log] [blame]
#!/bin/sh
# Copyright 2016 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
set -e
# Records the difference between two timestamps in milliseconds.
# Only emits metrics if none of the three arguments are empty.
# Arguments are <starting point> <ending point> <metric name>
record_delta() {
if [ $# -eq 3 ]; then
metrics_client $3 $(($2 - $1)) 1 1000000 50
fi
}
# logout-started signal is written asynchronously after Chrome starts.
# Wait for new signal to appear for 10 seconds.
FLAG_FILE=/tmp/stats-logout-started.written
for i in $(seq 10) ; do
if mv -f "$FLAG_FILE" "$FLAG_FILE".done 2> /dev/null ; then
FOUND=true
break;
fi
sleep 1
done
# Report infinite value when there was no recent logout-started.
# Max histograms value is 1000000ms, which is calculated from the device uptime.
# Set "impossible" start value to -1000000 to force out-of-bounds histogram
# result.
if [ -z "$FOUND" ] ; then
CHROME_LOGOUT_STARTED=-1000000
else
CHROME_LOGOUT_STARTED=$(bootstat_get_last logout-started time-ms)
fi
# Only record restart statistics if chrome performed a logout.
if [ -n "$CHROME_LOGOUT_STARTED" ]; then
CHROME_UI_POST_STOP=$(bootstat_get_last ui-post-stop time-ms)
CHROME_PROCESSES_TERMINATED=$(bootstat_get_last \
other-processes-terminated time-ms)
# Stub this out since X no longer exists, but the stats below are defined
# as transitions to/from the X kill phase.
CHROME_X_TERMINATED=${CHROME_PROCESSES_TERMINATED}
CHROME_CRYPTOHOME_UNMOUNTED=$(bootstat_get_last \
cryptohome-unmounted time-ms)
CHROME_EXEC=$(bootstat_get_last chrome-exec time-ms)
CHROME_LOGIN_PROMPT_VISIBLE=$(bootstat_get_last \
login-prompt-visible time-ms)
# Record deltas between some interesting steps.
record_delta $CHROME_LOGOUT_STARTED $CHROME_UI_POST_STOP \
Uptime.LogoutToUIStopAfterLogout
record_delta $CHROME_UI_POST_STOP $CHROME_PROCESSES_TERMINATED \
Uptime.UIStopToProcessesTerminatedAfterLogout
record_delta $CHROME_PROCESSES_TERMINATED $CHROME_EXEC \
Uptime.OtherProcessesTerminatedToChromeExecAfterLogout
record_delta $CHROME_EXEC $CHROME_LOGIN_PROMPT_VISIBLE \
Uptime.ChromeExecToLoginPromptVisibleAfterLogout
# Some summary statistics so we can account for everything.
record_delta $CHROME_LOGOUT_STARTED $CHROME_CRYPTOHOME_UNMOUNTED \
Uptime.Logout
record_delta $CHROME_CRYPTOHOME_UNMOUNTED $CHROME_LOGIN_PROMPT_VISIBLE \
Uptime.LoginPromptSetupTimeAfterLogout
record_delta $CHROME_LOGOUT_STARTED $CHROME_LOGIN_PROMPT_VISIBLE \
Uptime.LogoutToLoginPromptVisible
fi