shill: Add code to track disconnect metric.
BUG=chromium-os:25958
TEST=Unit tests, network_WiFiManager
Change-Id: I4cee4d4380dc822c9bed61e006df304c6c6fbdde
Reviewed-on: https://gerrit.chromium.org/gerrit/15850
Commit-Ready: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/metrics.cc b/metrics.cc
index 629a10c..7eb631b 100644
--- a/metrics.cc
+++ b/metrics.cc
@@ -20,6 +20,11 @@
static base::LazyInstance<Metrics> g_metrics(base::LINKER_INITIALIZED);
// static
+const char Metrics::kMetricDisconnect[] = "Network.Shill.%s.Disconnect";
+const int Metrics::kMetricDisconnectMax = 1;
+const int Metrics::kMetricDisconnectMin = 0;
+const int Metrics::kMetricDisconnectNumBuckets = 2;
+
const char Metrics::kMetricNetworkChannel[] = "Network.Shill.%s.Channel";
const int Metrics::kMetricNetworkChannelMax = Metrics::kWiFiChannelMax;
const char Metrics::kMetricNetworkPhyMode[] = "Network.Shill.%s.PhyMode";
@@ -252,10 +257,14 @@
return base::StringPrintf(metric_name, technology.c_str());
}
-void Metrics::NotifyServiceDisconnect(const Service */*service*/,
- bool /*manual_disconnect*/) {
- // TODO(thieule): Handle service disconnects.
- // crosbug.com/23253
+void Metrics::NotifyServiceDisconnect(const Service *service) {
+ Technology::Identifier technology = service->technology();
+ string histogram = GetFullMetricName(kMetricDisconnect, technology);
+ SendToUMA(histogram,
+ service->explicitly_disconnected(),
+ kMetricDisconnectMin,
+ kMetricDisconnectMax,
+ kMetricDisconnectNumBuckets);
}
void Metrics::NotifyPower() {