summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src
diff options
context:
space:
mode:
authorDavid Su <dysu@google.com>2019-04-29 17:05:49 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-04-29 17:05:49 +0000
commit95ef27547b59861dc58ee67003f4f03cce5051ce (patch)
tree9a932325c16e7f22229afd0ccdfd4a3fb8701feb /tests/wifitests/src
parent650e2eb73ad4335f64b7d25e83bfb628f13e1cb3 (diff)
parent7742c758bcea64b00d0aac2a25140eab9c89d8e5 (diff)
downloadandroid_frameworks_opt_net_wifi-95ef27547b59861dc58ee67003f4f03cce5051ce.tar.gz
android_frameworks_opt_net_wifi-95ef27547b59861dc58ee67003f4f03cce5051ce.tar.bz2
android_frameworks_opt_net_wifi-95ef27547b59861dc58ee67003f4f03cce5051ce.zip
Merge "Link Probing: Experiments to vary trigger criteria" into qt-dev
Diffstat (limited to 'tests/wifitests/src')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java6
-rw-r--r--tests/wifitests/src/com/android/server/wifi/LinkProbeManagerTest.java22
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java29
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiMetricsTestUtil.java38
4 files changed, 88 insertions, 7 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
index 46fce6aa4..69dff1edd 100644
--- a/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ClientModeImplTest.java
@@ -3274,7 +3274,8 @@ public class ClientModeImplTest {
connect();
// reset() should be called when RSSI polling is enabled and entering L2ConnectedState
- verify(mLinkProbeManager).reset();
+ verify(mLinkProbeManager).resetOnNewConnection(); // called first time here
+ verify(mLinkProbeManager, never()).resetOnScreenTurnedOn(); // not called
verify(mLinkProbeManager).updateConnectionStats(any(), any());
mCmi.enableRssiPolling(false);
@@ -3283,7 +3284,8 @@ public class ClientModeImplTest {
// becomes enabled
mCmi.enableRssiPolling(true);
mLooper.dispatchAll();
- verify(mLinkProbeManager, times(2)).reset();
+ verify(mLinkProbeManager, times(1)).resetOnNewConnection(); // verify not called again
+ verify(mLinkProbeManager).resetOnScreenTurnedOn(); // verify called here
}
/**
diff --git a/tests/wifitests/src/com/android/server/wifi/LinkProbeManagerTest.java b/tests/wifitests/src/com/android/server/wifi/LinkProbeManagerTest.java
index 614ec7e57..35f63149c 100644
--- a/tests/wifitests/src/com/android/server/wifi/LinkProbeManagerTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/LinkProbeManagerTest.java
@@ -16,9 +16,12 @@
package com.android.server.wifi;
+import static junit.framework.Assert.assertEquals;
+
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyInt;
+import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
@@ -40,6 +43,8 @@ import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import java.util.HashSet;
+
/**
* Unit tests for LinkProbeManager
*/
@@ -102,7 +107,7 @@ public class LinkProbeManagerTest {
*/
@Test
public void testLinkProbeTriggeredAndAcked() throws Exception {
- mLinkProbeManager.reset();
+ mLinkProbeManager.resetOnNewConnection();
// initialize tx success counter
mWifiInfo.txSuccess = 50;
@@ -111,6 +116,7 @@ public class LinkProbeManagerTest {
mLinkProbeManager.updateConnectionStats(mWifiInfo, TEST_IFACE_NAME);
// should not probe yet
verify(mWifiNative, never()).probeLink(any(), any(), any(), anyInt());
+ verify(mWifiMetrics, never()).incrementLinkProbeExperimentProbeCount(any());
// tx success counter did not change since last update
mWifiInfo.txSuccess = 50;
@@ -130,6 +136,12 @@ public class LinkProbeManagerTest {
ArgumentCaptor.forClass(WifiNative.SendMgmtFrameCallback.class);
verify(mWifiNative).probeLink(eq(TEST_IFACE_NAME), any(), callbackCaptor.capture(),
anyInt());
+ ArgumentCaptor<String> experimentIdCaptor = ArgumentCaptor.forClass(String.class);
+ verify(mWifiMetrics, atLeastOnce()).incrementLinkProbeExperimentProbeCount(
+ experimentIdCaptor.capture());
+ int len = LinkProbeManager.EXPERIMENT_DELAYS_MS.length;
+ int numExperimentIds = len * len * len;
+ assertEquals(numExperimentIds, new HashSet<>(experimentIdCaptor.getAllValues()).size());
callbackCaptor.getValue().onAck(TEST_ELAPSED_TIME_MS);
verify(mWifiMetrics).logLinkProbeSuccess(TEST_TIMESTAMP_MS, timeDelta, rssi, linkSpeed,
@@ -142,7 +154,7 @@ public class LinkProbeManagerTest {
*/
@Test
public void testLinkProbeTriggeredAndFailed() throws Exception {
- mLinkProbeManager.reset();
+ mLinkProbeManager.resetOnNewConnection();
// initialize tx success counter
mWifiInfo.txSuccess = 50;
@@ -203,7 +215,7 @@ public class LinkProbeManagerTest {
*/
@Test
public void testLinkProbeNotTriggeredWhenTxSucceeded() throws Exception {
- mLinkProbeManager.reset();
+ mLinkProbeManager.resetOnNewConnection();
// initialize tx success counter
mWifiInfo.txSuccess = 50;
@@ -243,7 +255,7 @@ public class LinkProbeManagerTest {
eq(Settings.Global.WIFI_LINK_PROBING_ENABLED), anyInt())).thenReturn(0);
mContentObserver.onChange(false);
- mLinkProbeManager.reset();
+ mLinkProbeManager.resetOnNewConnection();
// initialize tx success counter
mWifiInfo.txSuccess = 50;
@@ -278,7 +290,7 @@ public class LinkProbeManagerTest {
mResources.setBoolean(R.bool.config_wifi_link_probing_supported, false);
initLinkProbeManager();
- mLinkProbeManager.reset();
+ mLinkProbeManager.resetOnNewConnection();
// initialize tx success counter
mWifiInfo.txSuccess = 50;
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
index 4fa4e48bb..88ff48838 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTest.java
@@ -21,11 +21,13 @@ import static android.net.wifi.WifiManager.DEVICE_MOBILITY_STATE_STATIONARY;
import static android.net.wifi.WifiManager.DEVICE_MOBILITY_STATE_UNKNOWN;
import static com.android.server.wifi.WifiMetricsTestUtil.assertDeviceMobilityStatePnoScanStatsEqual;
+import static com.android.server.wifi.WifiMetricsTestUtil.assertExperimentProbeCountsEqual;
import static com.android.server.wifi.WifiMetricsTestUtil.assertHistogramBucketsEqual;
import static com.android.server.wifi.WifiMetricsTestUtil.assertKeyCountsEqual;
import static com.android.server.wifi.WifiMetricsTestUtil.assertLinkProbeFailureReasonCountsEqual;
import static com.android.server.wifi.WifiMetricsTestUtil.assertLinkProbeStaEventsEqual;
import static com.android.server.wifi.WifiMetricsTestUtil.buildDeviceMobilityStatePnoScanStats;
+import static com.android.server.wifi.WifiMetricsTestUtil.buildExperimentProbeCounts;
import static com.android.server.wifi.WifiMetricsTestUtil.buildHistogramBucketInt32;
import static com.android.server.wifi.WifiMetricsTestUtil.buildInt32Count;
import static com.android.server.wifi.WifiMetricsTestUtil.buildLinkProbeFailureReasonCount;
@@ -85,6 +87,7 @@ import com.android.server.wifi.nano.WifiMetricsProto.DeviceMobilityStatePnoScanS
import com.android.server.wifi.nano.WifiMetricsProto.HistogramBucketInt32;
import com.android.server.wifi.nano.WifiMetricsProto.Int32Count;
import com.android.server.wifi.nano.WifiMetricsProto.LinkProbeStats;
+import com.android.server.wifi.nano.WifiMetricsProto.LinkProbeStats.ExperimentProbeCounts;
import com.android.server.wifi.nano.WifiMetricsProto.LinkProbeStats.LinkProbeFailureReasonCount;
import com.android.server.wifi.nano.WifiMetricsProto.NetworkSelectionExperimentDecisions;
import com.android.server.wifi.nano.WifiMetricsProto.PasspointProfileTypeCount;
@@ -3457,6 +3460,32 @@ public class WifiMetricsTest {
}
/**
+ * Tests counting the number of link probes triggered per day for each experiment.
+ */
+ @Test
+ public void testIncrementLinkProbeExperimentProbeCount() throws Exception {
+ String experimentId1 = "screenOnDelay=6000,noTxDelay=3000,delayBetweenProbes=9000,"
+ + "rssiThreshold=-70,linkSpeedThreshold=15,";
+ mWifiMetrics.incrementLinkProbeExperimentProbeCount(experimentId1);
+
+ String experimentId2 = "screenOnDelay=9000,noTxDelay=12000,delayBetweenProbes=15000,"
+ + "rssiThreshold=-72,linkSpeedThreshold=20,";
+ mWifiMetrics.incrementLinkProbeExperimentProbeCount(experimentId2);
+ mWifiMetrics.incrementLinkProbeExperimentProbeCount(experimentId2);
+
+ dumpProtoAndDeserialize();
+
+ ExperimentProbeCounts[] actual = mDecodedProto.linkProbeStats.experimentProbeCounts;
+
+ ExperimentProbeCounts[] expected = {
+ buildExperimentProbeCounts(experimentId1, 1),
+ buildExperimentProbeCounts(experimentId2, 2)
+ };
+
+ assertExperimentProbeCountsEqual(expected, actual);
+ }
+
+ /**
* Tests logNetworkSelectionDecision()
*/
@Test
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTestUtil.java b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTestUtil.java
index 407d20932..0e9f661ca 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiMetricsTestUtil.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiMetricsTestUtil.java
@@ -23,6 +23,7 @@ import android.net.wifi.WifiManager;
import com.android.server.wifi.nano.WifiMetricsProto.DeviceMobilityStatePnoScanStats;
import com.android.server.wifi.nano.WifiMetricsProto.HistogramBucketInt32;
import com.android.server.wifi.nano.WifiMetricsProto.Int32Count;
+import com.android.server.wifi.nano.WifiMetricsProto.LinkProbeStats.ExperimentProbeCounts;
import com.android.server.wifi.nano.WifiMetricsProto.LinkProbeStats.LinkProbeFailureReasonCount;
import com.android.server.wifi.nano.WifiMetricsProto.StaEvent;
@@ -227,4 +228,41 @@ public class WifiMetricsTestUtil {
}
}
}
+
+ /**
+ * The constructor we wish ExperimentProbeCounts had.
+ */
+ public static ExperimentProbeCounts buildExperimentProbeCounts(
+ String experimentId, int probeCount) {
+ ExperimentProbeCounts counts = new ExperimentProbeCounts();
+ counts.experimentId = experimentId;
+ counts.probeCount = probeCount;
+ return counts;
+ }
+
+ /**
+ * Asserts that the two arrays are equal (ignoring order),
+ * reporting any difference between them.
+ */
+ public static void assertExperimentProbeCountsEqual(
+ ExperimentProbeCounts[] expected, ExperimentProbeCounts[] actual) {
+
+ assertEquals("Number of ExperimentProbeCounts do not match!",
+ expected.length, actual.length);
+
+ Arrays.sort(expected, Comparator.comparing(x -> x.experimentId));
+ Arrays.sort(actual, Comparator.comparing(x -> x.experimentId));
+
+ for (int i = 0; i < expected.length; i++) {
+ ExperimentProbeCounts expectedCounts = expected[i];
+ ExperimentProbeCounts actualCounts = actual[i];
+
+ assertEquals(String.format(
+ "ExperimentProbeCounts[%d].experimentId does not match!", i),
+ expectedCounts.experimentId, actualCounts.experimentId);
+ assertEquals(String.format(
+ "ExperimentProbeCounts[%d].probeCount does not match!", i),
+ expectedCounts.probeCount, actualCounts.probeCount);
+ }
+ }
}