summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java
diff options
context:
space:
mode:
authorMichael Plass <mplass@google.com>2019-03-21 17:36:46 -0700
committerMichael Plass <mplass@google.com>2019-04-01 14:52:11 +0000
commit037c689b8afd5c15eb9bbf292202e45a1c34fd5e (patch)
treeeaee7075f2578c56a1d6a07a7adf23193fcc517b /tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java
parent07a52ceffc20da8debb38bca977d6f662c798892 (diff)
downloadandroid_frameworks_opt_net_wifi-037c689b8afd5c15eb9bbf292202e45a1c34fd5e.tar.gz
android_frameworks_opt_net_wifi-037c689b8afd5c15eb9bbf292202e45a1c34fd5e.tar.bz2
android_frameworks_opt_net_wifi-037c689b8afd5c15eb9bbf292202e45a1c34fd5e.zip
Check that network evaluators have reported their choice.
Network evaluators are supposed to call onConnectableListener to report all networks they want as candidates. This should include the one that they return. Add a check in WifiNetworkSelector to ensure this is the case, and Log.wtf if not. Add checks to ScoredNetworkEvaluatorTest for all the non-null choices in the previously existing unit tests. Add a new unit test to cover the case where a new ephemeral network is created. Fix ScoredNetworkEvaluator to call onConnectableListener in case of a new ephemeral network. Bug: 128938468 Test: atest ScoredNetworkEvaluatorTest Change-Id: I539dfaa7e5951e19d319a95a90d0b7cc5f3d1a06
Diffstat (limited to 'tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java b/tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java
index 4643876c0..d1de03cbc 100644
--- a/tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/ScoredNetworkEvaluatorTest.java
@@ -75,6 +75,7 @@ public class ScoredNetworkEvaluatorTest {
@Mock private WifiPermissionsUtil mWifiPermissionsUtil;
@Mock private OnConnectableListener mOnConnectableListener;
@Captor private ArgumentCaptor<NetworkKey[]> mNetworkKeyArrayCaptor;
+ @Captor private ArgumentCaptor<WifiConfiguration> mWifiConfigCaptor;
private WifiNetworkScoreCache mScoreCache;
private ScoredNetworkEvaluator mScoredNetworkEvaluator;
@@ -272,6 +273,51 @@ public class ScoredNetworkEvaluatorTest {
}
/**
+ * When we have created a new ephemeral network, make sure that mOnConnectableListener
+ * is called.
+ */
+ @Test
+ public void testEvaluateNetworks_newEphemeralNetworkMustBeReportedAsConnectable() {
+ String[] ssids = {"\"test1\"", "\"test2\""};
+ String[] bssids = {"6c:f3:7f:ae:8c:f3", "6c:f3:7f:ae:8c:f4"};
+ int[] freqs = {2470, 2437};
+ String[] caps = {"[WPA2-PSK][ESS]", "[ESS]"};
+ int[] levels = {mThresholdQualifiedRssi2G + 8, mThresholdQualifiedRssi2G + 10};
+ Integer[] scores = {null, 120};
+ boolean[] meteredHints = {false, false};
+
+ List<ScanDetail> scanDetails = WifiNetworkSelectorTestUtil.buildScanDetails(
+ ssids, bssids, freqs, caps, levels, mClock);
+ WifiNetworkSelectorTestUtil.configureScoreCache(mScoreCache,
+ scanDetails, scores, meteredHints);
+
+ ScanResult scanResult = scanDetails.get(1).getScanResult();
+ WifiConfiguration ephemeralNetworkConfig = WifiNetworkSelectorTestUtil
+ .setupEphemeralNetwork(mWifiConfigManager, 1, scanDetails.get(1), meteredHints[1]);
+
+ // No saved networks.
+ when(mWifiConfigManager.getConfiguredNetworkForScanDetailAndCache(any(ScanDetail.class)))
+ .thenReturn(null);
+
+ // But when we create one, this is should be it.
+ when(mWifiConfigManager.addOrUpdateNetwork(any(), anyInt()))
+ .thenReturn(new NetworkUpdateResult(1));
+
+ // Untrusted networks allowed.
+ WifiConfiguration candidate = mScoredNetworkEvaluator.evaluateNetworks(scanDetails,
+ null, null, false, true, mOnConnectableListener);
+
+ WifiConfigurationTestUtil.assertConfigurationEqual(ephemeralNetworkConfig, candidate);
+ WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
+ scanResult, candidate);
+ assertEquals(meteredHints[1], candidate.meteredHint);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
+ }
+
+ /**
* When no saved networks available, choose the available ephemeral networks
* if untrusted networks are allowed.
*/
@@ -306,6 +352,10 @@ public class ScoredNetworkEvaluatorTest {
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanResult, candidate);
assertEquals(meteredHints[1], candidate.meteredHint);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -346,6 +396,10 @@ public class ScoredNetworkEvaluatorTest {
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanResults[1], candidate);
assertEquals(meteredHints[1], candidate.meteredHint);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -411,6 +465,10 @@ public class ScoredNetworkEvaluatorTest {
WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate);
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanDetails.get(0).getScanResult(), candidate);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -443,6 +501,10 @@ public class ScoredNetworkEvaluatorTest {
WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[1], candidate);
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanDetails.get(1).getScanResult(), candidate);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -476,6 +538,10 @@ public class ScoredNetworkEvaluatorTest {
WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate);
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanDetails.get(0).getScanResult(), candidate);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -529,6 +595,10 @@ public class ScoredNetworkEvaluatorTest {
WifiConfigurationTestUtil.assertConfigurationEqual(ephemeralNetworkConfig, candidate);
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
ephemeralScanResult, candidate);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -601,6 +671,10 @@ public class ScoredNetworkEvaluatorTest {
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanResults[1], candidate);
assertEquals(meteredHints[1], candidate.meteredHint);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
}
/**
@@ -633,5 +707,10 @@ public class ScoredNetworkEvaluatorTest {
WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[1], candidate);
WifiNetworkSelectorTestUtil.verifySelectedScanResult(mWifiConfigManager,
scanDetails.get(1).getScanResult(), candidate);
+ verify(mOnConnectableListener, atLeastOnce())
+ .onConnectable(any(), mWifiConfigCaptor.capture(), anyInt());
+ assertTrue(mWifiConfigCaptor.getAllValues().stream()
+ .anyMatch(c -> c.networkId == candidate.networkId));
+
}
}