diff options
author | Randy Pan <zpan@google.com> | 2017-02-24 15:08:35 -0800 |
---|---|---|
committer | Randy Pan <zpan@google.com> | 2017-03-21 16:11:22 -0700 |
commit | 167b90b5e002698378728a54a417a08c317d29dc (patch) | |
tree | 3a2fbe45da70fae0e0e3f8d16de0e3d4057473b3 /tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java | |
parent | 168fba718720b54cf0a88cfad7f96948925fb1e3 (diff) | |
download | android_frameworks_opt_net_wifi-167b90b5e002698378728a54a417a08c317d29dc.tar.gz android_frameworks_opt_net_wifi-167b90b5e002698378728a54a417a08c317d29dc.tar.bz2 android_frameworks_opt_net_wifi-167b90b5e002698378728a54a417a08c317d29dc.zip |
Move BSSID blacklist to WifiConnectivityManager
Now the BSSID blacklist is managed by WifiConnectivityManager and
passed to WifiNetworkSelector for scan results filtration.
Bug: 35642214
Test: runtests.sh and manual tests
Change-Id: I7afb5e66be471f3582075adb687a7d85ba49a80b
Diffstat (limited to 'tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java | 89 |
1 files changed, 33 insertions, 56 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java index 4a38f402f..73469a386 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiNetworkSelectorTest.java @@ -41,6 +41,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.HashSet; import java.util.List; /** @@ -176,8 +177,9 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); assertEquals("Expect null configuration", null, candidate); } @@ -204,8 +206,9 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); assertEquals("Expect null configuration", null, candidate); } @@ -233,15 +236,16 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); when(mClock.getElapsedSinceBootMillis()).thenReturn(SystemClock.elapsedRealtime() + WifiNetworkSelector.MINIMUM_NETWORK_SELECTION_INTERVAL_MS - 2000); // Do another network selection with WSM in CONNECTED state. candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, true, false, false); + blacklist, mWifiInfo, true, false, false); assertEquals("Expect null configuration", null, candidate); } @@ -271,8 +275,9 @@ public class WifiNetworkSelectorTest { freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); WifiConfiguration[] savedConfigs = scanDetailsAndConfigs.getWifiConfigs(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate); when(mClock.getElapsedSinceBootMillis()).thenReturn(SystemClock.elapsedRealtime() @@ -280,7 +285,7 @@ public class WifiNetworkSelectorTest { // Do another network selection with WSM in DISCONNECTED state. candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); ScanResult chosenScanResult = scanDetails.get(0).getScanResult(); WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate); @@ -310,9 +315,10 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); // connect to test1 - mWifiNetworkSelector.selectNetwork(scanDetails, mWifiInfo, false, true, false); + mWifiNetworkSelector.selectNetwork(scanDetails, blacklist, mWifiInfo, false, true, false); when(mWifiInfo.getNetworkId()).thenReturn(0); when(mWifiInfo.getBSSID()).thenReturn(bssids[0]); when(mWifiInfo.is24GHz()).thenReturn(false); @@ -327,7 +333,7 @@ public class WifiNetworkSelectorTest { scanDetails = scanDetailsAndConfigs.getScanDetails(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, true, false, false); + blacklist, mWifiInfo, true, false, false); assertEquals("Expect null configuration", null, candidate); } @@ -354,10 +360,11 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration[] savedConfigs = scanDetailsAndConfigs.getWifiConfigs(); // connect to test1 - mWifiNetworkSelector.selectNetwork(scanDetails, mWifiInfo, false, true, false); + mWifiNetworkSelector.selectNetwork(scanDetails, blacklist, mWifiInfo, false, true, false); when(mWifiInfo.getNetworkId()).thenReturn(0); when(mWifiInfo.getBSSID()).thenReturn(bssids[0]); when(mWifiInfo.is24GHz()).thenReturn(true); @@ -367,7 +374,7 @@ public class WifiNetworkSelectorTest { // Do another network selection. WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, true, false, false); + blacklist, mWifiInfo, true, false, false); ScanResult chosenScanResult = scanDetails.get(0).getScanResult(); WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate); @@ -399,10 +406,11 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration[] savedConfigs = scanDetailsAndConfigs.getWifiConfigs(); // connect to test1 - mWifiNetworkSelector.selectNetwork(scanDetails, mWifiInfo, false, true, false); + mWifiNetworkSelector.selectNetwork(scanDetails, blacklist, mWifiInfo, false, true, false); when(mWifiInfo.getNetworkId()).thenReturn(0); when(mWifiInfo.getBSSID()).thenReturn(bssids[0]); when(mWifiInfo.is24GHz()).thenReturn(false); @@ -413,7 +421,7 @@ public class WifiNetworkSelectorTest { // Do another network selection. WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, true, false, false); + blacklist, mWifiInfo, true, false, false); ScanResult chosenScanResult = scanDetails.get(0).getScanResult(); WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate); @@ -444,10 +452,11 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration[] savedConfigs = scanDetailsAndConfigs.getWifiConfigs(); // connect to test1 - mWifiNetworkSelector.selectNetwork(scanDetails, mWifiInfo, false, true, false); + mWifiNetworkSelector.selectNetwork(scanDetails, blacklist, mWifiInfo, false, true, false); when(mWifiInfo.getNetworkId()).thenReturn(0); when(mWifiInfo.getBSSID()).thenReturn(bssids[0]); when(mWifiInfo.is24GHz()).thenReturn(false); @@ -459,7 +468,7 @@ public class WifiNetworkSelectorTest { // Do another network selection. WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, true, false, false); + blacklist, mWifiInfo, true, false, false); ScanResult chosenScanResult = scanDetails.get(0).getScanResult(); WifiConfigurationTestUtil.assertConfigurationEqual(savedConfigs[0], candidate); @@ -488,15 +497,11 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); - - // Disable this network for BSSID_BLACKLIST_THRESHOLD times so it gets - // blacklisted by WNS. - for (int i = 0; i < WifiNetworkSelector.BSSID_BLACKLIST_THRESHOLD; i++) { - mWifiNetworkSelector.enableBssidForNetworkSelection(bssids[0], false, 1); - } + HashSet<String> blacklist = new HashSet<String>(); + blacklist.add(bssids[0]); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); assertEquals("Expect null configuration", null, candidate); } @@ -524,8 +529,9 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); when(mWifiInfo.getNetworkId()).thenReturn(0); when(mWifiInfo.getBSSID()).thenReturn(bssids[0]); @@ -543,7 +549,8 @@ public class WifiNetworkSelectorTest { int[] levelsNew = {mThresholdMinimumRssi2G + 40}; scanDetails = WifiNetworkSelectorTestUtil.buildScanDetails(ssidsNew, bssidsNew, freqsNew, capsNew, levelsNew, mClock); - candidate = mWifiNetworkSelector.selectNetwork(scanDetails, mWifiInfo, true, false, false); + candidate = mWifiNetworkSelector.selectNetwork(scanDetails, blacklist, mWifiInfo, + true, false, false); // The second network selection is skipped since current connected network is // missing from the scan results. @@ -618,6 +625,7 @@ public class WifiNetworkSelectorTest { WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, freqs, caps, levels, securities, mWifiConfigManager, mClock); List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); + HashSet<String> blacklist = new HashSet<String>(); // DummyEvaluator always selects the first network in the list. WifiConfiguration networkSelectorChoice = scanDetailsAndConfigs.getWifiConfigs()[0]; @@ -630,7 +638,7 @@ public class WifiNetworkSelectorTest { // With no user choice set, networkSelectorChoice should be chosen. WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); WifiConfigurationTestUtil.assertConfigurationEqual(networkSelectorChoice, candidate); @@ -641,39 +649,8 @@ public class WifiNetworkSelectorTest { // After user connect choice is set, userChoice should override networkSelectorChoice. candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); + blacklist, mWifiInfo, false, true, false); WifiConfigurationTestUtil.assertConfigurationEqual(userChoice, candidate); } - - /** - * Wifi network selector blacklists a BSSID immediately if it's unable to handle - * new stations. - * - * Expected behavior: no network recommended by Network Selector - */ - @Test - public void blacklistNetworkImmediatelyIfApHasNoCapacityForNewStation() { - String[] ssids = {"\"test1\""}; - String[] bssids = {"6c:f3:7f:ae:99:f3"}; - int[] freqs = {2437}; - String[] caps = {"[WPA2-EAP-CCMP][ESS]"}; - int[] levels = {mThresholdMinimumRssi2G + 20}; - int[] securities = {SECURITY_PSK}; - - // Disable test1 with reason code indicating it is unable to handle new stations. - mWifiNetworkSelector.enableBssidForNetworkSelection(bssids[0], false, - WifiNetworkSelector.REASON_CODE_AP_UNABLE_TO_HANDLE_NEW_STA); - - // Make a network selection with test1 in the scan results. - ScanDetailsAndWifiConfigs scanDetailsAndConfigs = - WifiNetworkSelectorTestUtil.setupScanDetailsAndConfigStore(ssids, bssids, - freqs, caps, levels, securities, mWifiConfigManager, mClock); - List<ScanDetail> scanDetails = scanDetailsAndConfigs.getScanDetails(); - WifiConfiguration candidate = mWifiNetworkSelector.selectNetwork(scanDetails, - mWifiInfo, false, true, false); - - // No network recommended by WNS as test1 is blacklisted. - assertEquals("Expect null configuration", null, candidate); - } } |