11406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff/* 21406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * Copyright (C) 2010 The Android Open Source Project 31406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * 41406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * Licensed under the Apache License, Version 2.0 (the "License"); 51406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * you may not use this file except in compliance with the License. 61406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * You may obtain a copy of the License at 71406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * 81406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * http://www.apache.org/licenses/LICENSE-2.0 91406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * 101406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * Unless required by applicable law or agreed to in writing, software 111406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * distributed under the License is distributed on an "AS IS" BASIS, 121406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * See the License for the specific language governing permissions and 141406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * limitations under the License. 151406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff */ 161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 171406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffpackage com.android.connectivitymanagertest.unit; 181406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 191406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.content.BroadcastReceiver; 201406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.content.Intent; 21b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriffimport android.content.IntentFilter; 221406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.content.Context; 23b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriffimport android.net.NetworkInfo; 241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiManager; 251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration; 261406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration.KeyMgmt; 271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration.Status; 28b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriffimport android.net.wifi.SupplicantState; 291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.test.suitebuilder.annotation.LargeTest; 311406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.test.AndroidTestCase; 321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport java.util.List; 341406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 351406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff/** 361406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * Test wifi client 371406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff */ 381406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffpublic class WifiClientTest extends AndroidTestCase { 391406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 401406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private WifiManager mWifiManager; 411406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 421406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //10s delay for turning on wifi 431406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private static final int DELAY = 10000; 44b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff private WifiStateListener mWifiStateListener; 45b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mWifiState; 46b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mDisableBroadcastCounter = 0; 47b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mEnableBroadcastCounter = 0; 48b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff NetworkInfo mNetworkInfo; 49b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff boolean mSupplicantConnection; 50b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff SupplicantState mSupplicantState; 51b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 52b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff private class WifiStateListener extends BroadcastReceiver { 53b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff @Override 54b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff public void onReceive(Context context, Intent intent) { 55b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff String action = intent.getAction(); 56b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { 57b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 58b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff WifiManager.WIFI_STATE_UNKNOWN); 59b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff switch (mWifiState) { 60b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_DISABLING: 61b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mDisableBroadcastCounter == 0) mDisableBroadcastCounter++; 62b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 63b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_DISABLED: 64b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mDisableBroadcastCounter == 1) mDisableBroadcastCounter++; 65b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 66b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_ENABLING: 67b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mEnableBroadcastCounter == 0) mEnableBroadcastCounter++; 68b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 69b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_ENABLED: 70b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mEnableBroadcastCounter == 1) mEnableBroadcastCounter++; 71b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 72b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 73b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { 74b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mNetworkInfo = (NetworkInfo) 75b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 76b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { 77b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantState = (SupplicantState) 78b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); 79b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) { 80b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantConnection = 81b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); 82b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 83b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 84b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 851406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 861406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @Override 871406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff protected void setUp() throws Exception { 881406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff super.setUp(); 89b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 90b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff // register a connectivity receiver for CONNECTIVITY_ACTION; 91b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 92b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiStateListener = new WifiStateListener(); 93b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff IntentFilter mIntentFilter = new IntentFilter(); 94b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 95b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); 96b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); 97b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); 98b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff getContext().registerReceiver(mWifiStateListener, mIntentFilter); 99b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 1001406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE); 1011406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 1021406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertNotNull(mWifiManager); 1031406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1041406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1051406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private void sleepAfterWifiEnable() { 1061406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff try { 1071406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff Thread.sleep(DELAY); 1081406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } catch (Exception e) { 1091406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff fail("Sleep timeout " + e); 1101406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1111406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1121406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1131406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 1: add/remove a open network 1141406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1151406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testAddRemoveNetwork() { 1161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 1171406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID1\""; 1181406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 1191406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1201406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 1211406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 1221406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 1231406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 1261406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean found = false; 1271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 12858938159ec378670ea784d07aa13ac47f4730cbbIrfan Sheriff if (c.networkId == netId && c.SSID.equals(config.SSID)) { 1291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 1301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1311406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(found); 1331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1341406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //remove 1351406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.removeNetwork(netId); 1361406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1371406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1381406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1391406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 1401406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = false; 1411406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1421406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1431406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 1441406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1451406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1461406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1471406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(found); 1481406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1491406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1501406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 2: enable/disable a open network 1511406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1521406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testEnableDisableNetwork() { 1531406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 1541406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID2\""; 1551406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 1561406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1571406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 1581406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 1591406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 1601406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1611406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //enable network and disable others 1621406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.enableNetwork(netId, true); 1631406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1641406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1651406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1661406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 1671406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1681406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1691406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(c.status == Status.ENABLED); 1701406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } else { 1711406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(c.status == Status.ENABLED); 1721406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1731406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1741406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1751406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //disable network 1761406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff ret = mWifiManager.disableNetwork(netId); 1771406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1781406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1791406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1801406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 1811406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1821406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1831406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(c.status == Status.DISABLED); 1841406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1851406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1861406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1871406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1881406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 3: ping supplicant 1891406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1901406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testPingSupplicant() { 1911406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(mWifiManager.pingSupplicant()); 1921406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(false); 1931406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 1941406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1951406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(mWifiManager.pingSupplicant()); 1961406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 1971406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 1981406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1991406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2001406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 4: save config 2011406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 2021406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testSaveConfig() { 2031406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 2041406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID3\""; 2051406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 2061406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2071406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 2081406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 2091406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 2101406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2111406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.saveConfiguration(); 2121406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2131406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //restart wifi 2141406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(false); 2151406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 2161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2171406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 2181406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2191406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 2201406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 2211406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean found = false; 2221406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 2231406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.SSID.equals("TestSSID3")) { 2241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 2251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 2261406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 2271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(found); 2281406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //restore config 2301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.removeNetwork(netId); 2311406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 2321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.saveConfiguration(); 2331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 234b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 235b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff // Test case 5: test wifi state change broadcasts 236b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff @LargeTest 237b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff public void testWifiBroadcasts() { 238b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 239b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Initialize */ 240b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(false); 241b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 242b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mDisableBroadcastCounter = 0; 243b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mEnableBroadcastCounter = 0; 244b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantConnection = false; 245b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mNetworkInfo = null; 246b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantState = null; 247b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 248b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Enable wifi */ 249b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(true); 250b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 251b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mEnableBroadcastCounter == 2); 252b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantConnection == true); 253b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mNetworkInfo.isConnected()); 254b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantState == SupplicantState.COMPLETED); 255b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 256b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 257b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Disable wifi */ 258b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(false); 259b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 260b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mDisableBroadcastCounter == 2); 261b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantConnection == false); 262b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(!mNetworkInfo.isConnected()); 263b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantState != SupplicantState.COMPLETED); 264b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 265b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 266b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 267cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff // Test case 6: test configured network status 268cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff @LargeTest 269cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff public void testWifiConfiguredNetworkStatus() { 270cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 271cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Initialize */ 272cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(false); 273cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 274cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 275cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure no network is CURRENT */ 276cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 277cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 278cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 279cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 280cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 281cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Enable wifi */ 282cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(true); 283cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 284cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 285cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure connected network is CURRENT */ 286cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff String connectedSSID = mWifiManager.getConnectionInfo().getSSID(); 287cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 288cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 289cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff if (c.SSID.contains(connectedSSID)) { 290cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status == WifiConfiguration.Status.CURRENT); 291cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } else { 292cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 293cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 294cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 295cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 296cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Disable wifi */ 297cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(false); 298cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 299cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 300cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure no network is CURRENT */ 301cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 302cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 303cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 304cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 305cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 306cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 307cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 308cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 3091406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff} 310