metrics: Add UpdateEngine.Rollback.Result metric.
Add a metric to track if rollback succeeds or fails. The main use case
for this metric is to record how often rollback actually happens.
Right now we only track success/failure but if we see a lot of
failures in the future, we could add a new metric, for example
UpdateEngine.Rollback.FailureErrorCode
to convey more detail.
BUG=None
TEST=New unit test + unit tests pass.
Change-Id: I5c32d8585dc8e4b6d38c540d2f754ede5b2ad50b
Reviewed-on: https://chromium-review.googlesource.com/195203
Reviewed-by: David Zeuthen <zeuthen@chromium.org>
Commit-Queue: David Zeuthen <zeuthen@chromium.org>
Tested-by: David Zeuthen <zeuthen@chromium.org>
diff --git a/metrics.cc b/metrics.cc
index 72a83bd..9bcb859 100644
--- a/metrics.cc
+++ b/metrics.cc
@@ -88,6 +88,9 @@
const char kMetricSuccessfulUpdateUrlSwitchCount[] =
"UpdateEngine.SuccessfulUpdate.UrlSwitchCount";
+// UpdateEngine.Rollback.* metric.
+const char kMetricRollbackResult[] = "UpdateEngine.Rollback.Result";
+
// UpdateEngine.* metrics.
const char kMetricFailedUpdateCount[] = "UpdateEngine.FailedUpdateCount";
const char kMetricInstallDateProvisioningSource[] =
@@ -451,6 +454,20 @@
50); // num_buckets
}
+void ReportRollbackMetrics(SystemState *system_state,
+ RollbackResult result) {
+ string metric;
+ int value;
+
+ metric = metrics::kMetricRollbackResult;
+ value = static_cast<int>(result);
+ LOG(INFO) << "Sending " << value << " for metric " << metric << " (enum)";
+ system_state->metrics_lib()->SendEnumToUMA(
+ metric,
+ value,
+ static_cast<int>(metrics::RollbackResult::kNumConstants));
+}
+
} // namespace metrics
} // namespace chromeos_update_engine