summaryrefslogtreecommitdiffstats
path: root/tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java
diff options
context:
space:
mode:
authorRandy Pan <zpan@google.com>2017-02-23 15:38:44 -0800
committerRandy Pan <zpan@google.com>2017-03-13 09:48:37 -0700
commit9c7730dd2cbf7c8d0d42052bee15a7a1323b8133 (patch)
tree22bc8e4c5f065200d4f6cf2bec257187a4d6ad97 /tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java
parent5a9f890485371054fb52dc7e17478d074ee2e856 (diff)
downloadandroid_frameworks_opt_net_wifi-9c7730dd2cbf7c8d0d42052bee15a7a1323b8133.tar.gz
android_frameworks_opt_net_wifi-9c7730dd2cbf7c8d0d42052bee15a7a1323b8133.tar.bz2
android_frameworks_opt_net_wifi-9c7730dd2cbf7c8d0d42052bee15a7a1323b8133.zip
Helper class for Wifi connectivity operations
Add a helper class for WifiConnectivityManager and WifiNetworkSelector to interface WifiNative for connectivity related operations. Initially implement firmware roaming related methods. Bug: 35643651 Test: frameworks/opt/net/wifi/tests/wifitests/runtests.sh Change-Id: Ie8b6547fdb6cb0026d3746d56db9a9665b840b78
Diffstat (limited to 'tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java')
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java261
1 files changed, 261 insertions, 0 deletions
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java
new file mode 100644
index 000000000..4426ec1c9
--- /dev/null
+++ b/tests/wifitests/src/com/android/server/wifi/WifiConnectivityHelperTest.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2017 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wifi;
+
+import static android.net.wifi.WifiManager.WIFI_FEATURE_CONTROL_ROAMING;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
+
+import android.app.test.MockAnswerUtil.AnswerWithArguments;
+import android.test.suitebuilder.annotation.SmallTest;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Captor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+
+/**
+ * Unit tests for {@link com.android.server.wifi.WifiConnectivityHelper}.
+ */
+@SmallTest
+public class WifiConnectivityHelperTest {
+ /** Sets up test. */
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ setupWifiNative();
+
+ mWifiConnectivityHelper = new WifiConnectivityHelper(mWifiNative);
+ }
+
+ /** Cleans up test. */
+ @After
+ public void cleanup() {
+ validateMockitoUsage();
+ }
+
+ private WifiConnectivityHelper mWifiConnectivityHelper;
+ @Mock private WifiNative mWifiNative;
+ @Captor ArgumentCaptor<WifiNative.RoamingConfig> mRoamingConfigCaptor;
+ private int mFeatureSetValue;
+ private static final String TAG = "WifiConnectivityHelperTest";
+ private static final int MAX_BSSID_BLACKLIST_SIZE = 16;
+ private static final int MAX_SSID_WHITELIST_SIZE = 8;
+
+ private void setupWifiNative() {
+ // Return firmware roaming feature as supported by default.
+ when(mWifiNative.getSupportedFeatureSet()).thenReturn(WIFI_FEATURE_CONTROL_ROAMING);
+
+ doAnswer(new AnswerWithArguments() {
+ public boolean answer(WifiNative.RoamingCapabilities roamCap) throws Exception {
+ roamCap.maxBlacklistSize = MAX_BSSID_BLACKLIST_SIZE;
+ roamCap.maxWhitelistSize = MAX_SSID_WHITELIST_SIZE;
+ return true;
+ }}).when(mWifiNative).getRoamingCapabilities(anyObject());
+
+ when(mWifiNative.configureRoaming(anyObject())).thenReturn(true);
+ }
+
+ private ArrayList<String> buildBssidBlacklist(int size) {
+ ArrayList<String> bssidBlacklist = new ArrayList<String>();
+
+ for (int i = 0; i < size; i++) {
+ StringBuilder bssid = new StringBuilder("11:22:33:44:55:66");
+ bssid.setCharAt(16, (char) ('0' + i));
+ bssidBlacklist.add(bssid.toString());
+ }
+
+ return bssidBlacklist;
+ }
+
+ private ArrayList<String> buildSsidWhitelist(int size) {
+ ArrayList<String> ssidWhitelist = new ArrayList<String>();
+
+ for (int i = 0; i < size; i++) {
+ StringBuilder ssid = new StringBuilder("\"Test_Ap_0\"");
+ ssid.setCharAt(9, (char) ('0' + i));
+ ssidWhitelist.add(ssid.toString());
+ }
+
+ return ssidWhitelist;
+ }
+
+ /**
+ * When WifiNative has WIFI_FEATURE_CONTROL_ROAMING set, verify that
+ * WifiConnectivityHelper#isFirmwareRoamingSupported returns true.
+ */
+ @Test
+ public void returnFirmwareRoamingSupported() {
+ //By default WifiNative has WIFI_FEATURE_CONTROL_ROAMING set in its feature set.
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertTrue(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ }
+
+ /**
+ * When WifiNative doesn't have WIFI_FEATURE_CONTROL_ROAMING set, verify that
+ * WifiConnectivityHelper#isFirmwareRoamingSupported returns false.
+ */
+ @Test
+ public void returnFirmwareRoamingNotSupported() {
+ when(mWifiNative.getSupportedFeatureSet()).thenReturn(~WIFI_FEATURE_CONTROL_ROAMING);
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertFalse(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ }
+
+ /**
+ * Verify that correct firmware roaming capability values are returned if querying
+ * WifiNative for roaming capability succeeded.
+ */
+ @Test
+ public void verifyFirmwareRoamingCapabilityWithSuccessfulNativeCall() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertTrue(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ assertEquals(MAX_BSSID_BLACKLIST_SIZE, mWifiConnectivityHelper.getMaxNumBlacklistBssid());
+ assertEquals(MAX_SSID_WHITELIST_SIZE, mWifiConnectivityHelper.getMaxNumWhitelistSsid());
+ }
+
+ /**
+ * Verify that firmware roaming is set to not supported if WifiNative returned firmware roaming
+ * is supported but failed to return roaming capabilities. Firmware roaming capabilty values
+ * should be reset to INVALID_LIST_SIZE.
+ */
+ @Test
+ public void verifyFirmwareRoamingCapabilityWithFailureNativeCall() {
+ doAnswer(new AnswerWithArguments() {
+ public boolean answer(WifiNative.RoamingCapabilities roamCap) throws Exception {
+ return false;
+ }}).when(mWifiNative).getRoamingCapabilities(anyObject());
+ assertFalse(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertFalse(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumBlacklistBssid());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumWhitelistSsid());
+ }
+
+ /**
+ * Verify that firmware roaming is set to not supported if WifiNative returned firmware roaming
+ * is supported but returned invalid max BSSID balcklist size. Firmware roaming capabilty values
+ * should be reset to INVALID_LIST_SIZE.
+ */
+ @Test
+ public void verifyFirmwareRoamingCapabilityWithInvalidMaxBssidBlacklistSize() {
+ doAnswer(new AnswerWithArguments() {
+ public boolean answer(WifiNative.RoamingCapabilities roamCap) throws Exception {
+ roamCap.maxBlacklistSize = -5;
+ roamCap.maxWhitelistSize = MAX_SSID_WHITELIST_SIZE;
+ return true;
+ }}).when(mWifiNative).getRoamingCapabilities(anyObject());
+ assertFalse(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertFalse(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumBlacklistBssid());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumWhitelistSsid());
+ }
+
+ /**
+ * Verify that firmware roaming is set to not supported if WifiNative returned firmware roaming
+ * is supported but returned invalid max SSID whitelist size. Firmware roaming capabilty values
+ * should be reset to INVALID_LIST_SIZE.
+ */
+ @Test
+ public void verifyFirmwareRoamingCapabilityWithInvalidMaxSsidWhitelistSize() {
+ doAnswer(new AnswerWithArguments() {
+ public boolean answer(WifiNative.RoamingCapabilities roamCap) throws Exception {
+ roamCap.maxBlacklistSize = MAX_BSSID_BLACKLIST_SIZE;
+ roamCap.maxWhitelistSize = -2;
+ return true;
+ }}).when(mWifiNative).getRoamingCapabilities(anyObject());
+ assertFalse(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ assertFalse(mWifiConnectivityHelper.isFirmwareRoamingSupported());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumBlacklistBssid());
+ assertEquals(WifiConnectivityHelper.INVALID_LIST_SIZE,
+ mWifiConnectivityHelper.getMaxNumWhitelistSsid());
+ }
+
+ /**
+ * Verify that correct size BSSID blacklist and SSID whitelist are accepted.
+ */
+ @Test
+ public void verifySetFirmwareRoamingConfigurationWithGoodInput() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ ArrayList<String> blacklist = buildBssidBlacklist(MAX_BSSID_BLACKLIST_SIZE);
+ ArrayList<String> whitelist = buildSsidWhitelist(MAX_SSID_WHITELIST_SIZE);
+ assertTrue(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, whitelist));
+
+ blacklist = buildBssidBlacklist(MAX_BSSID_BLACKLIST_SIZE - 2);
+ whitelist = buildSsidWhitelist(MAX_SSID_WHITELIST_SIZE - 3);
+ assertTrue(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, whitelist));
+ }
+
+ /**
+ * Verify that null BSSID blacklist or SSID whitelist is rejected.
+ */
+ @Test
+ public void verifySetFirmwareRoamingConfigurationWithNullInput() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ ArrayList<String> blacklist = buildBssidBlacklist(MAX_BSSID_BLACKLIST_SIZE);
+ ArrayList<String> whitelist = buildSsidWhitelist(MAX_SSID_WHITELIST_SIZE);
+ assertFalse(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(null, whitelist));
+ assertFalse(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, null));
+ }
+
+ /**
+ * Verify that incorrect size BSSID blacklist is rejected.
+ */
+ @Test
+ public void verifySetFirmwareRoamingConfigurationWithIncorrectBlacklist() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ ArrayList<String> blacklist = buildBssidBlacklist(MAX_BSSID_BLACKLIST_SIZE + 1);
+ ArrayList<String> whitelist = buildSsidWhitelist(MAX_SSID_WHITELIST_SIZE);
+ assertFalse(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, whitelist));
+ }
+
+ /**
+ * Verify that incorrect size SSID whitelist is rejected.
+ */
+ @Test
+ public void verifySetFirmwareRoamingConfigurationWithIncorrectWhitelist() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ ArrayList<String> blacklist = buildBssidBlacklist(MAX_BSSID_BLACKLIST_SIZE);
+ ArrayList<String> whitelist = buildSsidWhitelist(MAX_SSID_WHITELIST_SIZE + 1);
+ assertFalse(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, whitelist));
+ }
+
+ /**
+ * Verify that empty BSSID blacklist and SSID whitelist are sent to WifiNative
+ * to reset the firmware roaming configuration.
+ */
+ @Test
+ public void verifySetFirmwareRoamingConfigurationWithEmptyBlacklistAndWhitelist() {
+ assertTrue(mWifiConnectivityHelper.getFirmwareRoamingInfo());
+ ArrayList<String> blacklist = buildBssidBlacklist(0);
+ ArrayList<String> whitelist = buildSsidWhitelist(0);
+ assertTrue(mWifiConnectivityHelper.setFirmwareRoamingConfiguration(blacklist, whitelist));
+ verify(mWifiNative).configureRoaming(mRoamingConfigCaptor.capture());
+ assertEquals(0, mRoamingConfigCaptor.getValue().blacklistBssids.size());
+ assertEquals(0, mRoamingConfigCaptor.getValue().whitelistSsids.size());
+ }
+}