diff options
author | Les Lee <lesl@google.com> | 2020-06-24 11:31:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-06-24 11:31:24 +0000 |
commit | 698c277154b762ecd788d7d1be69d05899710e28 (patch) | |
tree | d5c018281a07d485fe5c309690f1dabae4399fce /tests | |
parent | a653fc6c062f6fa7ae52e49e0f46f64c3c0f3037 (diff) | |
parent | e81be4c68c3d0bd693dc42220a95f61aa01ba559 (diff) |
Merge changes from topic "sap_blocked_list_enhancement" into rvc-dev
* changes:
wifi: Support blocked list when ClientControlEnabled is false
wifi: Use overlay to control reset SAP configration during restoring
Diffstat (limited to 'tests')
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/SoftApManagerTest.java | 86 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java | 109 |
2 files changed, 182 insertions, 13 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/SoftApManagerTest.java b/tests/wifitests/src/com/android/server/wifi/SoftApManagerTest.java index 99cd2db82..ddd8fe515 100644 --- a/tests/wifitests/src/com/android/server/wifi/SoftApManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/SoftApManagerTest.java @@ -1190,6 +1190,92 @@ public class SoftApManagerTest extends WifiBaseTest { } @Test + public void testClientConnectFailureWhenClientInBlcokedListAndClientAuthorizationDisabled() + throws Exception { + ArrayList<MacAddress> blockedClientList = new ArrayList<>(); + mTestSoftApCapability.setMaxSupportedClients(10); + Builder configBuilder = new SoftApConfiguration.Builder(); + configBuilder.setBand(SoftApConfiguration.BAND_2GHZ); + configBuilder.setSsid(TEST_SSID); + configBuilder.setClientControlByUserEnabled(false); + // Client in blocked list + blockedClientList.add(TEST_MAC_ADDRESS); + configBuilder.setBlockedClientList(blockedClientList); + SoftApModeConfiguration apConfig = + new SoftApModeConfiguration(WifiManager.IFACE_IP_MODE_TETHERED, + configBuilder.build(), mTestSoftApCapability); + startSoftApAndVerifyEnabled(apConfig); + + verify(mCallback).onConnectedClientsChanged(new ArrayList<>()); + + mSoftApListenerCaptor.getValue().onConnectedClientsChanged( + TEST_NATIVE_CLIENT, true); + mLooper.dispatchAll(); + + // Client is not allow verify + verify(mWifiNative).forceClientDisconnect( + TEST_INTERFACE_NAME, TEST_MAC_ADDRESS, + WifiManager.SAP_CLIENT_BLOCK_REASON_CODE_BLOCKED_BY_USER); + verify(mWifiMetrics, never()).addSoftApNumAssociatedStationsChangedEvent( + 1, apConfig.getTargetMode()); + verify(mCallback, never()).onConnectedClientsChanged( + Mockito.argThat((List<WifiClient> clients) -> + clients.contains(TEST_CONNECTED_CLIENT)) + ); + + } + + @Test + public void testClientDisconnectWhenClientInBlcokedLisUpdatedtAndClientAuthorizationDisabled() + throws Exception { + ArrayList<MacAddress> blockedClientList = new ArrayList<>(); + mTestSoftApCapability.setMaxSupportedClients(10); + Builder configBuilder = new SoftApConfiguration.Builder(); + configBuilder.setBand(SoftApConfiguration.BAND_2GHZ); + configBuilder.setSsid(TEST_SSID); + configBuilder.setClientControlByUserEnabled(false); + SoftApModeConfiguration apConfig = + new SoftApModeConfiguration(WifiManager.IFACE_IP_MODE_TETHERED, + configBuilder.build(), mTestSoftApCapability); + startSoftApAndVerifyEnabled(apConfig); + + verify(mCallback).onConnectedClientsChanged(new ArrayList<>()); + + mSoftApListenerCaptor.getValue().onConnectedClientsChanged( + TEST_NATIVE_CLIENT, true); + mLooper.dispatchAll(); + + // Client connected check + verify(mWifiNative, never()).forceClientDisconnect( + TEST_INTERFACE_NAME, TEST_MAC_ADDRESS, + WifiManager.SAP_CLIENT_BLOCK_REASON_CODE_BLOCKED_BY_USER); + verify(mWifiMetrics).addSoftApNumAssociatedStationsChangedEvent( + 1, apConfig.getTargetMode()); + verify(mCallback, times(2)).onConnectedClientsChanged( + Mockito.argThat((List<WifiClient> clients) -> + clients.contains(TEST_CONNECTED_CLIENT)) + ); + + reset(mCallback); + reset(mWifiNative); + // Update configuration + blockedClientList.add(TEST_MAC_ADDRESS); + configBuilder.setBlockedClientList(blockedClientList); + mSoftApManager.updateConfiguration(configBuilder.build()); + mLooper.dispatchAll(); + // Client difconnected + verify(mWifiNative).forceClientDisconnect( + TEST_INTERFACE_NAME, TEST_MAC_ADDRESS, + WifiManager.SAP_CLIENT_BLOCK_REASON_CODE_BLOCKED_BY_USER); + // The callback should not trigger in configuration update case. + verify(mCallback, never()).onBlockedClientConnecting(TEST_CONNECTED_CLIENT, + WifiManager.SAP_CLIENT_BLOCK_REASON_CODE_BLOCKED_BY_USER); + + } + + + + @Test public void testForceClientDisconnectInvokeBecauseClientAuthorizationEnabled() throws Exception { mTestSoftApCapability.setMaxSupportedClients(10); diff --git a/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java b/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java index bc646c1eb..90e01719f 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiApConfigStoreTest.java @@ -659,24 +659,107 @@ public class WifiApConfigStoreTest extends WifiBaseTest { @Test public void testResetToDefaultForUnsupportedConfig() throws Exception { - mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, false); - mResources.setBoolean(R.bool.config_wifi_softap_sae_supported, false); - mResources.setBoolean(R.bool.config_wifiSoftapResetChannelConfig, true); - SoftApConfiguration sae_config = new SoftApConfiguration.Builder() - .setPassphrase("secretsecret", SoftApConfiguration.SECURITY_TYPE_WPA3_SAE) - .setMaxNumberOfClients(10) - .setClientControlByUserEnabled(true) - .setChannel(149, SoftApConfiguration.BAND_5GHZ) - .build(); + mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, true); + mResources.setBoolean(R.bool.config_wifi_softap_sae_supported, true); + mResources.setBoolean(R.bool.config_wifi6ghzSupport, true); + mResources.setBoolean(R.bool.config_wifi5ghzSupport, true); + + // Test all of the features support and all of the reset config are false. + String testPassphrase = "secretsecret"; + SoftApConfiguration.Builder configBuilder = new SoftApConfiguration.Builder(); + configBuilder.setPassphrase(testPassphrase, SoftApConfiguration.SECURITY_TYPE_WPA3_SAE); WifiApConfigStore store = createWifiApConfigStore(); + SoftApConfiguration resetedConfig = store.resetToDefaultForUnsupportedConfig( + configBuilder.build()); + assertEquals(resetedConfig, configBuilder.build()); - SoftApConfiguration resetedConfig = store.resetToDefaultForUnsupportedConfig(sae_config); - assertEquals(resetedConfig.getMaxNumberOfClients(), 0); - assertFalse(resetedConfig.isClientControlByUserEnabled()); + verify(mWifiMetrics).noteSoftApConfigReset(configBuilder.build(), resetedConfig); + + // Test SAE not support case. + mResources.setBoolean(R.bool.config_wifi_softap_sae_supported, false); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertEquals(resetedConfig.getSecurityType(), SoftApConfiguration.SECURITY_TYPE_WPA2_PSK); + // Test force channel + configBuilder.setChannel(149, SoftApConfiguration.BAND_5GHZ); + mResources.setBoolean( + R.bool.config_wifiSoftapResetChannelConfig, true); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); assertEquals(resetedConfig.getChannel(), 0); assertEquals(resetedConfig.getBand(), SoftApConfiguration.BAND_2GHZ | SoftApConfiguration.BAND_5GHZ); - verify(mWifiMetrics).noteSoftApConfigReset(sae_config, resetedConfig); + + // Test forced channel band doesn't support. + mResources.setBoolean(R.bool.config_wifi5ghzSupport, false); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertEquals(resetedConfig.getChannel(), 0); + assertEquals(resetedConfig.getBand(), + SoftApConfiguration.BAND_2GHZ); + + // Test band not support with auto channel + configBuilder.setBand(SoftApConfiguration.BAND_5GHZ); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertEquals(resetedConfig.getBand(), SoftApConfiguration.BAND_2GHZ); + + // Test reset hidden network + mResources.setBoolean( + R.bool.config_wifiSoftapResetHiddenConfig, true); + configBuilder.setHiddenSsid(true); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertFalse(resetedConfig.isHiddenSsid()); + + // Test auto shutdown timer + mResources.setBoolean( + R.bool.config_wifiSoftapResetAutoShutdownTimerConfig, true); + configBuilder.setShutdownTimeoutMillis(8888); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertEquals(resetedConfig.getShutdownTimeoutMillis(), 0); + + // Test max client setting when force client disconnect doesn't support + mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, false); + configBuilder.setMaxNumberOfClients(10); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertEquals(resetedConfig.getMaxNumberOfClients(), 0); + + // Test client control setting when force client disconnect doesn't support + mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, false); + ArrayList<MacAddress> blockedClientList = new ArrayList<>(); + ArrayList<MacAddress> allowedClientList = new ArrayList<>(); + blockedClientList.add(MacAddress.fromString("11:22:33:44:55:66")); + allowedClientList.add(MacAddress.fromString("aa:bb:cc:dd:ee:ff")); + configBuilder.setBlockedClientList(blockedClientList); + configBuilder.setAllowedClientList(allowedClientList); + + configBuilder.setClientControlByUserEnabled(true); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertFalse(resetedConfig.isClientControlByUserEnabled()); + // The blocked list will be clean + assertEquals(resetedConfig.getBlockedClientList().size(), 0); + // The allowed list will be keep + assertEquals(resetedConfig.getAllowedClientList(), allowedClientList); + + // Test max client setting when reset enabled but force client disconnect supported + mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, true); + mResources.setBoolean( + R.bool.config_wifiSoftapResetMaxClientSettingConfig, true); + assertEquals(resetedConfig.getMaxNumberOfClients(), 0); + + // Test client control setting when reset enabled but force client disconnect supported + mResources.setBoolean(R.bool.config_wifiSofapClientForceDisconnectSupported, true); + mResources.setBoolean( + R.bool.config_wifiSoftapResetUserControlConfig, true); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertFalse(resetedConfig.isClientControlByUserEnabled()); + assertEquals(resetedConfig.getBlockedClientList().size(), 0); + assertEquals(resetedConfig.getAllowedClientList(), allowedClientList); + + // Test blocked list setting will be reset even if client control disabled + mResources.setBoolean( + R.bool.config_wifiSoftapResetUserControlConfig, true); + configBuilder.setClientControlByUserEnabled(false); + resetedConfig = store.resetToDefaultForUnsupportedConfig(configBuilder.build()); + assertFalse(resetedConfig.isClientControlByUserEnabled()); + assertEquals(resetedConfig.getBlockedClientList().size(), 0); + assertEquals(resetedConfig.getAllowedClientList(), allowedClientList); } /** |