UMA metric reporting for WIFI TX bitrate.
Added UMA metric for WIFI TX bitrate, which is reported every
minute when wifi is connected.
BUG=chromium:368761
TEST=unit tests, manual
Manual Test:
1. Connect a chrome device to a wireless AP
2. Browse to "chrome://histograms", and verify there is a histogram
for "Network.Shill.WiFi.TXBitrate"
Conflicts:
metrics.cc
metrics.h
metrics_unittest.cc
mock_metrics.h
Change-Id: Ib4280f2df89269f30fb988904b97d35c16569218
Reviewed-on: https://chromium-review.googlesource.com/197731
Reviewed-by: Peter Qiu <zqiu@chromium.org>
Commit-Queue: Peter Qiu <zqiu@chromium.org>
Tested-by: Peter Qiu <zqiu@chromium.org>
diff --git a/metrics.cc b/metrics.cc
index 6efc711..1f6f52e 100644
--- a/metrics.cc
+++ b/metrics.cc
@@ -289,6 +289,12 @@
const char Metrics::kMetricUserInitiatedEvents[] =
"Network.Shill.UserInitatedEvents";
+const char Metrics::kMetricWifiTxBitrate[] =
+ "Network.Shill.WiFi.TransmitBitrateMbps";
+const int Metrics::kMetricWifiTxBitrateMax = 7000;
+const int Metrics::kMetricWifiTxBitrateMin = 1;
+const int Metrics::kMetricWifiTxBitrateNumBuckets = 100;
+
Metrics::Metrics(EventDispatcher *dispatcher)
: dispatcher_(dispatcher),
library_(&metrics_library_),
@@ -1098,6 +1104,14 @@
kUserInitiatedEventMax);
}
+void Metrics::NotifyWifiTxBitrate(int bitrate) {
+ SendToUMA(kMetricWifiTxBitrate,
+ bitrate,
+ kMetricWifiTxBitrateMin,
+ kMetricWifiTxBitrateMax,
+ kMetricWifiTxBitrateNumBuckets);
+}
+
bool Metrics::SendEnumToUMA(const string &name, int sample, int max) {
SLOG(Metrics, 5)
<< "Sending enum " << name << " with value " << sample << ".";
diff --git a/metrics.h b/metrics.h
index 67ba3ce..1d9c03a 100644
--- a/metrics.h
+++ b/metrics.h
@@ -469,6 +469,12 @@
// Metric for user-initiated events.
static const char kMetricUserInitiatedEvents[];
+ // Wifi TX bitrate in Mbps.
+ static const char kMetricWifiTxBitrate[];
+ static const int kMetricWifiTxBitrateMax;
+ static const int kMetricWifiTxBitrateMin;
+ static const int kMetricWifiTxBitrateNumBuckets;
+
explicit Metrics(EventDispatcher *dispatcher);
virtual ~Metrics();
@@ -638,6 +644,9 @@
// currently connected network.
virtual void NotifyServicesOnSameNetwork(int num_services);
+ // Notifies this object about WIFI TX bitrate in Mbps.
+ virtual void NotifyWifiTxBitrate(int bitrate);
+
// Notifies this object about a corrupted profile.
virtual void NotifyCorruptedProfile();
diff --git a/metrics_unittest.cc b/metrics_unittest.cc
index e3dbbd0..c804952 100644
--- a/metrics_unittest.cc
+++ b/metrics_unittest.cc
@@ -771,6 +771,16 @@
metrics_.NotifyUserInitiatedEvent(Metrics::kUserInitiatedEventWifiScan);
}
+TEST_F(MetricsTest, NotifyWifiTxBitrate) {
+ EXPECT_CALL(library_,
+ SendToUMA(Metrics::kMetricWifiTxBitrate,
+ 1,
+ Metrics::kMetricWifiTxBitrateMin,
+ Metrics::kMetricWifiTxBitrateMax,
+ Metrics::kMetricWifiTxBitrateNumBuckets));
+ metrics_.NotifyWifiTxBitrate(1);
+}
+
#ifndef NDEBUG
typedef MetricsTest MetricsDeathTest;
diff --git a/mock_metrics.h b/mock_metrics.h
index fc874ff..013143c 100644
--- a/mock_metrics.h
+++ b/mock_metrics.h
@@ -46,6 +46,7 @@
MOCK_METHOD1(NotifyWifiAvailableBSSes, void(int num_bss));
MOCK_METHOD1(NotifyServicesOnSameNetwork, void(int num_service));
MOCK_METHOD1(NotifyUserInitiatedEvent, void(int event));
+ MOCK_METHOD1(NotifyWifiTxBitrate, void(int bitrate));
private:
DISALLOW_COPY_AND_ASSIGN(MockMetrics);
diff --git a/wifi.cc b/wifi.cc
index 5a92983..51b05c7 100644
--- a/wifi.cc
+++ b/wifi.cc
@@ -2481,6 +2481,7 @@
band_info.c_str(),
is_short_gi ? " short GI" : "",
nss_info.c_str()));
+ metrics()->NotifyWifiTxBitrate(rate/10);
}
}
}
diff --git a/wifi_unittest.cc b/wifi_unittest.cc
index c0c5ab5..1aa66ec 100644
--- a/wifi_unittest.cc
+++ b/wifi_unittest.cc
@@ -2895,6 +2895,7 @@
EXPECT_NE(kSignalValue, endpoint->signal_strength());
EXPECT_CALL(*wifi_provider(), OnEndpointUpdated(EndpointMatch(endpoint)));
+ EXPECT_CALL(*metrics(), NotifyWifiTxBitrate(kBitrate/10));
AttributeListConstRefPtr station_info_prime;
ReportReceivedStationInfo(new_station);
EXPECT_EQ(kSignalValue, endpoint->signal_strength());
@@ -2962,6 +2963,8 @@
new_vht_station.attributes()->SetNestedAttributeHasAValue(
NL80211_ATTR_STA_INFO);
+ EXPECT_CALL(*metrics(), NotifyWifiTxBitrate(kVhtBitrate/10));
+
ReportReceivedStationInfo(new_vht_station);
link_statistics = GetLinkStatistics();