summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorOscar Shu <xshu@google.com>2018-10-02 18:11:48 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2018-10-02 18:11:48 +0000
commit91c4e97cd423872b3b9e0358efb9081ee7344890 (patch)
treeeaa11d44bc7943248a2ca4bc7455041cd235215c /tests
parent666a511081fd80908ab7ce437d35a48a07791df5 (diff)
parentf5e766890949a9abc6079678b0d36b52d4b5c483 (diff)
Merge "Metrics for wifi link layer stats usage"
Diffstat (limited to 'tests')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java87
2 files changed, 89 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index 1dade80db..e7a80bfc0 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -2696,6 +2696,7 @@ public class ClientModeImplTest {
/**
* Verify that we check for data stall during rssi poll
+ * and then check that wifi link layer usage data are being updated.
*/
@Test
public void verifyRssiPollChecksDataStall() throws Exception {
@@ -2711,5 +2712,6 @@ public class ClientModeImplTest {
mCmi.sendMessage(ClientModeImpl.CMD_RSSI_POLL, 1);
mLooper.dispatchAll();
verify(mWifiDataStall).checkForDataStall(oldLLStats, newLLStats);
+ verify(mWifiMetrics).incrementWifiLinkLayerUsageStats(newLLStats);
}
}
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
index f566d0286..ba74089a9 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
@@ -72,6 +72,7 @@ import java.util.BitSet;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -84,6 +85,7 @@ public class WifiMetricsTest {
WifiMetrics mWifiMetrics;
WifiMetricsProto.WifiLog mDecodedProto;
TestLooper mTestLooper;
+ Random mRandom = new Random();
@Mock Context mContext;
@Mock FrameworkFacade mFacade;
@Mock Clock mClock;
@@ -2288,4 +2290,89 @@ public class WifiMetricsTest {
assertEquals("LinkSpeedCounts should not be logged for out of bound values",
0, mDecodedProto.linkSpeedCounts.length);
}
+
+ private int nextRandInt() {
+ return mRandom.nextInt(10000);
+ }
+
+ private WifiLinkLayerStats nextRandomStats(WifiLinkLayerStats current) {
+ WifiLinkLayerStats out = new WifiLinkLayerStats();
+ out.timeStampInMs = current.timeStampInMs + nextRandInt();
+ out.on_time = current.on_time + nextRandInt();
+ out.tx_time = current.tx_time + nextRandInt();
+ out.rx_time = current.rx_time + nextRandInt();
+ out.on_time_scan = current.on_time_scan + nextRandInt();
+ return out;
+ }
+
+ private void assertWifiLinkLayerUsageHasDiff(WifiLinkLayerStats oldStats,
+ WifiLinkLayerStats newStats) {
+ assertEquals(newStats.timeStampInMs - oldStats.timeStampInMs,
+ mDecodedProto.wifiLinkLayerUsageStats.loggingDurationMs);
+ assertEquals(newStats.on_time - oldStats.on_time,
+ mDecodedProto.wifiLinkLayerUsageStats.radioOnTimeMs);
+ assertEquals(newStats.tx_time - oldStats.tx_time,
+ mDecodedProto.wifiLinkLayerUsageStats.radioTxTimeMs);
+ assertEquals(newStats.rx_time - oldStats.rx_time,
+ mDecodedProto.wifiLinkLayerUsageStats.radioRxTimeMs);
+ assertEquals(newStats.on_time_scan - oldStats.on_time_scan,
+ mDecodedProto.wifiLinkLayerUsageStats.radioScanTimeMs);
+ }
+
+ /**
+ * Verify that WifiMetrics is counting link layer usage correctly when given a series of
+ * valid input.
+ * @throws Exception
+ */
+ @Test
+ public void testWifiLinkLayerUsageStats() throws Exception {
+ WifiLinkLayerStats stat1 = nextRandomStats(new WifiLinkLayerStats());
+ WifiLinkLayerStats stat2 = nextRandomStats(stat1);
+ WifiLinkLayerStats stat3 = nextRandomStats(stat2);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat1);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat2);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat3);
+ dumpProtoAndDeserialize();
+
+ // After 2 increments, the counters should have difference between |stat1| and |stat3|
+ assertWifiLinkLayerUsageHasDiff(stat1, stat3);
+ }
+
+ /**
+ * Verify that null input is handled and wifi link layer usage stats are not incremented.
+ * @throws Exception
+ */
+ @Test
+ public void testWifiLinkLayerUsageStatsNullInput() throws Exception {
+ WifiLinkLayerStats stat1 = nextRandomStats(new WifiLinkLayerStats());
+ WifiLinkLayerStats stat2 = null;
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat1);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat2);
+ dumpProtoAndDeserialize();
+
+ // Counter should be zero
+ assertWifiLinkLayerUsageHasDiff(stat1, stat1);
+ }
+
+ /**
+ * Verify that when the new data appears to be bad link layer usage stats are not being
+ * incremented and the buffered WifiLinkLayerStats get cleared.
+ * @throws Exception
+ */
+ @Test
+ public void testWifiLinkLayerUsageStatsChipReset() throws Exception {
+ WifiLinkLayerStats stat1 = nextRandomStats(new WifiLinkLayerStats());
+ WifiLinkLayerStats stat2 = nextRandomStats(stat1);
+ stat2.on_time = stat1.on_time - 1;
+ WifiLinkLayerStats stat3 = nextRandomStats(stat2);
+ WifiLinkLayerStats stat4 = nextRandomStats(stat3);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat1);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat2);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat3);
+ mWifiMetrics.incrementWifiLinkLayerUsageStats(stat4);
+ dumpProtoAndDeserialize();
+
+ // Should only count the difference between |stat3| and |stat4|
+ assertWifiLinkLayerUsageHasDiff(stat3, stat4);
+ }
}