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; 231406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.app.Instrumentation; 241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.os.Handler; 251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.os.Message; 26b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriffimport android.net.NetworkInfo; 271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiManager; 281406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration; 291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration.KeyMgmt; 301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.net.wifi.WifiConfiguration.Status; 31b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriffimport android.net.wifi.SupplicantState; 321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.test.suitebuilder.annotation.LargeTest; 341406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.test.AndroidTestCase; 351406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 361406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport java.util.ArrayList; 371406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport java.util.List; 381406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 391406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffimport android.util.Log; 401406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 411406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff/** 421406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff * Test wifi client 431406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff */ 441406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriffpublic class WifiClientTest extends AndroidTestCase { 451406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 461406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private WifiManager mWifiManager; 471406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private final String TAG = "WifiClientTest"; 481406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 491406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //10s delay for turning on wifi 501406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private static final int DELAY = 10000; 51b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff private WifiStateListener mWifiStateListener; 52b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mWifiState; 53b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mDisableBroadcastCounter = 0; 54b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff int mEnableBroadcastCounter = 0; 55b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff NetworkInfo mNetworkInfo; 56b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff boolean mSupplicantConnection; 57b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff SupplicantState mSupplicantState; 58b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 59b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff private class WifiStateListener extends BroadcastReceiver { 60b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff @Override 61b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff public void onReceive(Context context, Intent intent) { 62b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff String action = intent.getAction(); 63b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (action.equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) { 64b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, 65b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff WifiManager.WIFI_STATE_UNKNOWN); 66b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff switch (mWifiState) { 67b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_DISABLING: 68b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mDisableBroadcastCounter == 0) mDisableBroadcastCounter++; 69b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 70b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_DISABLED: 71b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mDisableBroadcastCounter == 1) mDisableBroadcastCounter++; 72b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 73b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_ENABLING: 74b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mEnableBroadcastCounter == 0) mEnableBroadcastCounter++; 75b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 76b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff case WifiManager.WIFI_STATE_ENABLED: 77b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff if (mEnableBroadcastCounter == 1) mEnableBroadcastCounter++; 78b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff break; 79b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 80b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) { 81b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mNetworkInfo = (NetworkInfo) 82b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO); 83b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION)) { 84b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantState = (SupplicantState) 85b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getParcelableExtra(WifiManager.EXTRA_NEW_STATE); 86b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } else if (action.equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)) { 87b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantConnection = 88b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED, false); 89b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 90b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 91b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 921406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 931406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @Override 941406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff protected void setUp() throws Exception { 951406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff super.setUp(); 96b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 97b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff // register a connectivity receiver for CONNECTIVITY_ACTION; 98b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 99b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiStateListener = new WifiStateListener(); 100b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff IntentFilter mIntentFilter = new IntentFilter(); 101b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION); 102b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); 103b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION); 104b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); 105b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff getContext().registerReceiver(mWifiStateListener, mIntentFilter); 106b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 1071406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE); 1081406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 1091406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertNotNull(mWifiManager); 1101406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1111406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1121406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff private void sleepAfterWifiEnable() { 1131406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff try { 1141406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff Thread.sleep(DELAY); 1151406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } catch (Exception e) { 1161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff fail("Sleep timeout " + e); 1171406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1181406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1191406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1201406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 1: add/remove a open network 1211406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1221406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testAddRemoveNetwork() { 1231406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 1241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID1\""; 1251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 1261406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 1281406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 1291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 1301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1311406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 1331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean found = false; 1341406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 13558938159ec378670ea784d07aa13ac47f4730cbbIrfan Sheriff if (c.networkId == netId && c.SSID.equals(config.SSID)) { 1361406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 1371406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1381406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1391406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(found); 1401406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1411406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //remove 1421406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.removeNetwork(netId); 1431406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1441406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1451406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1461406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 1471406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = false; 1481406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1491406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1501406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 1511406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1521406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1531406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1541406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(found); 1551406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1561406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1571406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 2: enable/disable a open network 1581406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1591406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testEnableDisableNetwork() { 1601406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 1611406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID2\""; 1621406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 1631406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1641406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 1651406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 1661406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 1671406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1681406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //enable network and disable others 1691406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.enableNetwork(netId, true); 1701406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1711406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1721406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1731406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 1741406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1751406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1761406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(c.status == Status.ENABLED); 1771406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } else { 1781406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(c.status == Status.ENABLED); 1791406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1801406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1811406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1821406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //disable network 1831406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff ret = mWifiManager.disableNetwork(netId); 1841406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 1851406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1861406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 1871406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 1881406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 1891406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.networkId == netId) { 1901406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(c.status == Status.DISABLED); 1911406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1921406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1931406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 1941406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 1951406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 3: ping supplicant 1961406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 1971406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testPingSupplicant() { 1981406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(mWifiManager.pingSupplicant()); 1991406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(false); 2001406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 2011406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2021406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertFalse(mWifiManager.pingSupplicant()); 2031406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 2041406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 2051406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 2061406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2071406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff // Test case 4: save config 2081406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff @LargeTest 2091406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff public void testSaveConfig() { 2101406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff WifiConfiguration config = new WifiConfiguration(); 2111406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.SSID = "\"TestSSID3\""; 2121406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff config.allowedKeyManagement.set(KeyMgmt.NONE); 2131406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2141406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //add 2151406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff int netId = mWifiManager.addNetwork(config); 2161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(netId != -1); 2171406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2181406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.saveConfiguration(); 2191406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2201406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //restart wifi 2211406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(false); 2221406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.setWifiEnabled(true); 2231406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2241406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff sleepAfterWifiEnable(); 2251406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2261406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //check config list 2271406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 2281406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean found = false; 2291406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff for (WifiConfiguration c : configList) { 2301406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff if (c.SSID.equals("TestSSID3")) { 2311406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff found = true; 2321406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 2331406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 2341406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(found); 2351406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff 2361406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff //restore config 2371406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff boolean ret = mWifiManager.removeNetwork(netId); 2381406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff assertTrue(ret); 2391406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff mWifiManager.saveConfiguration(); 2401406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff } 241b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 242b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff // Test case 5: test wifi state change broadcasts 243b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff @LargeTest 244b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff public void testWifiBroadcasts() { 245b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 246b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Initialize */ 247b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(false); 248b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 249b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mDisableBroadcastCounter = 0; 250b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mEnableBroadcastCounter = 0; 251b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantConnection = false; 252b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mNetworkInfo = null; 253b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mSupplicantState = null; 254b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 255b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Enable wifi */ 256b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(true); 257b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 258b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mEnableBroadcastCounter == 2); 259b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantConnection == true); 260b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mNetworkInfo.isConnected()); 261b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantState == SupplicantState.COMPLETED); 262b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 263b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 264b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff /* Disable wifi */ 265b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff mWifiManager.setWifiEnabled(false); 266b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff sleepAfterWifiEnable(); 267b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mDisableBroadcastCounter == 2); 268b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantConnection == false); 269b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(!mNetworkInfo.isConnected()); 270b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff assertTrue(mSupplicantState != SupplicantState.COMPLETED); 271b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 272b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff } 273b45e726bf5df9650e8a67a7c05bf2f41f414c07dIrfan Sheriff 274cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff // Test case 6: test configured network status 275cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff @LargeTest 276cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff public void testWifiConfiguredNetworkStatus() { 277cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 278cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Initialize */ 279cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(false); 280cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 281cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 282cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure no network is CURRENT */ 283cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff List<WifiConfiguration> configList = mWifiManager.getConfiguredNetworks(); 284cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 285cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 286cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 287cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 288cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Enable wifi */ 289cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(true); 290cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 291cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 292cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure connected network is CURRENT */ 293cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff String connectedSSID = mWifiManager.getConnectionInfo().getSSID(); 294cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 295cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 296cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff if (c.SSID.contains(connectedSSID)) { 297cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status == WifiConfiguration.Status.CURRENT); 298cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } else { 299cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 300cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 301cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 302cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 303cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Disable wifi */ 304cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff mWifiManager.setWifiEnabled(false); 305cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff sleepAfterWifiEnable(); 306cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 307cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff /* Ensure no network is CURRENT */ 308cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff configList = mWifiManager.getConfiguredNetworks(); 309cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff for (WifiConfiguration c : configList) { 310cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff assertTrue(c.status != WifiConfiguration.Status.CURRENT); 311cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 312cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff } 313cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 314cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 315cdc077c9dd6473b5abfad4edfaf1ff41a436caafIrfan Sheriff 3161406bcb75150e8386b4d858f27089cc1359e7f14Irfan Sheriff} 317