shill: Add metrics for recording termination/suspend time
Added the following metrics:
- Network.Shill.TerminationActionResult.OnSuspend,
- Network.Shill.TerminationActionResult.OnTerminate,
which log success/failure;
- Network.Shill.TerminationActionTime.OnSuspend,
- Network.Shill.TerminationActionTime.OnTerminate,
which measure the time it takes to complete the termination actions.
BUG=chromium-os:35029
TEST=Manually suspended machine and terminated shill on separate
occasions and observed the output on chrome://histograms
Change-Id: I5183d7c3dd5d4633f661598b7a0cacab6d205d8b
Reviewed-on: https://gerrit.chromium.org/gerrit/34975
Reviewed-by: Ben Chan <benchan@chromium.org>
Commit-Ready: Arman Uguray <armansito@chromium.org>
Tested-by: Arman Uguray <armansito@chromium.org>
diff --git a/metrics.h b/metrics.h
index d0d070c..a6c8cf8 100644
--- a/metrics.h
+++ b/metrics.h
@@ -140,11 +140,16 @@
};
enum TerminationActionResult {
- kTerminationActionSuccess,
- kTerminationActionFailure,
+ kTerminationActionResultSuccess,
+ kTerminationActionResultFailure,
kTerminationActionResultMax
};
+ enum TerminationActionReason {
+ kTerminationActionReasonSuspend,
+ kTerminationActionReasonTerminate
+ };
+
static const char kMetricDisconnect[];
static const int kMetricDisconnectMax;
static const int kMetricDisconnectMin;
@@ -220,7 +225,12 @@
static const char kMetricLinkApDisconnectType[];
// Shill termination action statistics.
- static const char kMetricTerminationActionResult[];
+ static const char kMetricTerminationActionTimeOnTerminate[];
+ static const char kMetricTerminationActionResultOnTerminate[];
+ static const char kMetricTerminationActionTimeOnSuspend[];
+ static const char kMetricTerminationActionResultOnSuspend[];
+ static const int kMetricTerminationActionTimeMillisecondsMax;
+ static const int kMetricTerminationActionTimeMillisecondsMin;
Metrics();
virtual ~Metrics();
@@ -268,6 +278,14 @@
// Notifies this object of a power management state change.
void NotifyPowerStateChange(PowerManager::SuspendState new_state);
+ // Notifies this object that termination actions started executing.
+ void NotifyTerminationActionsStarted(TerminationActionReason reason);
+
+ // Notifies this object that termination actions have been completed.
+ // |success| is true, if the termination actions completed successfully.
+ void NotifyTerminationActionsCompleted(
+ TerminationActionReason reason, bool success);
+
// Notifies this object of a failure in LinkMonitor.
void NotifyLinkMonitorFailure(
Technology::Identifier technology,
@@ -354,6 +372,10 @@
void set_time_resume_to_ready_timer(chromeos_metrics::Timer *timer) {
time_resume_to_ready_timer_.reset(timer); // Passes ownership
}
+ void set_time_termination_actions_timer(
+ chromeos_metrics::Timer *timer) {
+ time_termination_actions_timer.reset(timer); // Passes ownership
+ }
// |library_| points to |metrics_library_| when shill runs normally.
// However, in order to allow for unit testing, we point |library_| to a
@@ -366,6 +388,7 @@
scoped_ptr<chromeos_metrics::Timer> time_online_timer_;
scoped_ptr<chromeos_metrics::Timer> time_to_drop_timer_;
scoped_ptr<chromeos_metrics::Timer> time_resume_to_ready_timer_;
+ scoped_ptr<chromeos_metrics::Timer> time_termination_actions_timer;
bool collect_bootstats_;
DISALLOW_COPY_AND_ASSIGN(Metrics);