ConnectivityManagerMobileTest.java revision 8efaeb03ea1ecd633f61bdb03bb90393887f08df
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package com.android.connectivitymanagertest.functional; 18 19import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; 20 21import android.content.Intent; 22import android.content.Context; 23import android.os.PowerManager; 24import android.os.PowerManager.WakeLock; 25import android.app.Instrumentation; 26import android.os.Handler; 27import android.os.Message; 28import android.provider.Settings; 29import android.net.ConnectivityManager; 30import android.net.NetworkInfo; 31import android.net.NetworkInfo.State; 32import android.net.NetworkInfo.DetailedState; 33import android.net.wifi.WifiManager; 34 35import android.test.suitebuilder.annotation.LargeTest; 36import android.test.ActivityInstrumentationTestCase2; 37import com.android.connectivitymanagertest.ConnectivityManagerTestRunner; 38import com.android.connectivitymanagertest.NetworkState; 39import android.util.Log; 40 41public class ConnectivityManagerMobileTest 42 extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> { 43 private static final String LOG_TAG = "ConnectivityManagerMobileTest"; 44 private static final String PKG_NAME = "com.android.connectivitymanagertest"; 45 46 private String TEST_ACCESS_POINT; 47 private ConnectivityManagerTestActivity cmActivity; 48 private WakeLock wl; 49 50 public ConnectivityManagerMobileTest() { 51 super(PKG_NAME, ConnectivityManagerTestActivity.class); 52 } 53 54 @Override 55 public void setUp() throws Exception { 56 super.setUp(); 57 cmActivity = getActivity(); 58 ConnectivityManagerTestRunner mRunner = 59 (ConnectivityManagerTestRunner)getInstrumentation(); 60 TEST_ACCESS_POINT = mRunner.TEST_SSID; 61 PowerManager pm = (PowerManager)getInstrumentation(). 62 getContext().getSystemService(Context.POWER_SERVICE); 63 wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "CMWakeLock"); 64 wl.acquire(); 65 // Each test case will start with cellular connection 66 if (!cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 67 ConnectivityManagerTestActivity.LONG_TIMEOUT)) { 68 // Note: When the test fails in setUp(), tearDown is not called. In that case, 69 // the activity is destroyed which blocks the next test at "getActivity()". 70 // tearDown() is called hear to avoid that situation. 71 tearDown(); 72 fail("Device is not connected to Mobile, setUp failed"); 73 } 74 } 75 76 @Override 77 public void tearDown() throws Exception { 78 cmActivity.finish(); 79 Log.v(LOG_TAG, "tear down ConnectivityManagerTestActivity"); 80 wl.release(); 81 cmActivity.removeConfiguredNetworksAndDisableWifi(); 82 // if airplane mode is set, disable it. 83 if (Settings.System.getInt(getInstrumentation().getContext().getContentResolver(), 84 Settings.System.AIRPLANE_MODE_ON) == 1) { 85 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 86 } 87 super.tearDown(); 88 } 89 90 // help function to verify 3G connection 91 public void verifyCellularConnection() { 92 NetworkInfo extraNetInfo = cmActivity.mCM.getActiveNetworkInfo(); 93 assertEquals("network type is not MOBILE", ConnectivityManager.TYPE_MOBILE, 94 extraNetInfo.getType()); 95 assertTrue("not connected to cellular network", extraNetInfo.isConnected()); 96 assertTrue("no data connection", cmActivity.mState.equals(State.CONNECTED)); 97 } 98 99 // Test case 1: Test enabling Wifi without associating with any AP 100 @LargeTest 101 public void test3GToWifiNotification() { 102 // To avoid UNKNOWN state when device boots up 103 cmActivity.enableWifi(); 104 try { 105 Thread.sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); 106 } catch (Exception e) { 107 Log.v(LOG_TAG, "exception: " + e.toString()); 108 } 109 110 cmActivity.disableWifi(); 111 // As Wifi stays in DISCONNECTED, the connectivity manager will not broadcast 112 // any network connectivity event for Wifi 113 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 114 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(), 115 NetworkState.DO_NOTHING, State.CONNECTED); 116 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 117 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 118 NetworkState.DO_NOTHING, State.DISCONNECTED); 119 // Eanble Wifi 120 cmActivity.enableWifi(); 121 try { 122 Thread.sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); 123 } catch (Exception e) { 124 Log.v(LOG_TAG, "exception: " + e.toString()); 125 } 126 127 // validate state and broadcast 128 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 129 Log.v(LOG_TAG, "the state for WIFI is changed"); 130 Log.v(LOG_TAG, "reason: " + 131 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 132 assertTrue("state validation fail", false); 133 } 134 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 135 Log.v(LOG_TAG, "the state for MOBILE is changed"); 136 Log.v(LOG_TAG, "reason: " + 137 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 138 assertTrue("state validation fail", false); 139 } 140 // Verify that the device is still connected to MOBILE 141 verifyCellularConnection(); 142 } 143 144 // Test case 2: test connection to a given AP 145 @LargeTest 146 public void testConnectToWifi() { 147 assertNotNull("SSID is null", TEST_ACCESS_POINT); 148 //Prepare for connectivity verification 149 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 150 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(), 151 NetworkState.TO_DISCONNECTION, State.DISCONNECTED); 152 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 153 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 154 NetworkState.TO_CONNECTION, State.CONNECTED); 155 156 // Enable Wifi and connect to a test access point 157 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 158 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 159 160 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 161 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 162 Log.v(LOG_TAG, "wifi state is enabled"); 163 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 164 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 165 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 166 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 167 168 // validate states 169 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 170 Log.v(LOG_TAG, "Wifi state transition validation failed."); 171 Log.v(LOG_TAG, "reason: " + 172 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 173 assertTrue(false); 174 } 175 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 176 Log.v(LOG_TAG, "Mobile state transition validation failed."); 177 Log.v(LOG_TAG, "reason: " + 178 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 179 assertTrue(false); 180 } 181 } 182 183 // Test case 3: connect to Wifi with known AP 184 @LargeTest 185 public void testConnectToWifWithKnownAP() { 186 assertNotNull("SSID is null", TEST_ACCESS_POINT); 187 // Connect to TEST_ACCESS_POINT 188 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 189 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 190 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 191 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 192 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 193 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 194 195 try { 196 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 197 } catch (Exception e) { 198 Log.v(LOG_TAG, "exception: " + e.toString()); 199 } 200 201 // Disable Wifi 202 Log.v(LOG_TAG, "Disable Wifi"); 203 if (!cmActivity.disableWifi()) { 204 Log.v(LOG_TAG, "disable Wifi failed"); 205 return; 206 } 207 208 // Wait for the Wifi state to be DISABLED 209 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, 210 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 211 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 212 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 213 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 214 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 215 216 //Prepare for connectivity state verification 217 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 218 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 219 networkInfo.getState(), NetworkState.DO_NOTHING, 220 State.DISCONNECTED); 221 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 222 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 223 NetworkState.TO_CONNECTION, State.CONNECTED); 224 225 // Enable Wifi again 226 Log.v(LOG_TAG, "Enable Wifi again"); 227 cmActivity.enableWifi(); 228 229 // Wait for Wifi to be connected and mobile to be disconnected 230 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 231 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 232 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 233 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 234 235 // validate wifi states 236 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 237 Log.v(LOG_TAG, "Wifi state transition validation failed."); 238 Log.v(LOG_TAG, "reason: " + 239 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 240 assertTrue(false); 241 } 242 } 243 244 // Test case 4: test disconnect Wifi 245 @LargeTest 246 public void testDisconnectWifi() { 247 assertNotNull("SSID is null", TEST_ACCESS_POINT); 248 249 // connect to Wifi 250 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 251 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 252 253 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 254 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 255 256 // Wait for a few seconds to avoid the state that both Mobile and Wifi is connected 257 try { 258 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 259 } catch (Exception e) { 260 Log.v(LOG_TAG, "exception: " + e.toString()); 261 } 262 263 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 264 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 265 networkInfo.getState(), 266 NetworkState.TO_CONNECTION, 267 State.CONNECTED); 268 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 269 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 270 NetworkState.TO_DISCONNECTION, State.DISCONNECTED); 271 272 // clear Wifi 273 cmActivity.removeConfiguredNetworksAndDisableWifi(); 274 275 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 276 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 277 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 278 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 279 280 // validate states 281 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 282 Log.v(LOG_TAG, "Wifi state transition validation failed."); 283 Log.v(LOG_TAG, "reason: " + 284 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 285 assertTrue(false); 286 } 287 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 288 Log.v(LOG_TAG, "Mobile state transition validation failed."); 289 Log.v(LOG_TAG, "reason: " + 290 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 291 assertTrue(false); 292 } 293 } 294 295 // Test case 5: test connectivity from 3G to airplane mode, then to 3G again 296 @LargeTest 297 public void testDataConnectionWith3GToAmTo3G() { 298 //Prepare for state verification 299 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 300 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 301 networkInfo.getState(), 302 NetworkState.TO_DISCONNECTION, 303 State.DISCONNECTED); 304 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 305 assertEquals(State.DISCONNECTED, networkInfo.getState()); 306 307 // Enable airplane mode 308 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 309 try { 310 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 311 } catch (Exception e) { 312 Log.v(LOG_TAG, "exception: " + e.toString()); 313 } 314 315 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 316 assertEquals(State.DISCONNECTED, networkInfo.getState()); 317 318 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 319 Log.v(LOG_TAG, "Mobile state transition validation failed."); 320 Log.v(LOG_TAG, "reason: " + 321 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 322 assertTrue(false); 323 } 324 325 // reset state recorder 326 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 327 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 328 networkInfo.getState(), 329 NetworkState.TO_CONNECTION, 330 State.CONNECTED); 331 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 332 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 333 NetworkState.DO_NOTHING, State.DISCONNECTED); 334 335 // disable airplane mode 336 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 337 338 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 339 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 340 341 // Validate the state transition 342 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 343 Log.v(LOG_TAG, "Mobile state transition validation failed."); 344 Log.v(LOG_TAG, "reason: " + 345 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 346 assertTrue(false); 347 } 348 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 349 Log.v(LOG_TAG, "Wifi state transition validation failed."); 350 Log.v(LOG_TAG, "reason: " + 351 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 352 assertTrue(false); 353 } 354 } 355 356 // Test case 6: test connectivity with airplane mode Wifi connected 357 @LargeTest 358 public void testDataConnectionOverAMWithWifi() { 359 assertNotNull("SSID is null", TEST_ACCESS_POINT); 360 // Eanble airplane mode 361 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 362 363 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 364 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 365 366 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 367 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 368 networkInfo.getState(), 369 NetworkState.DO_NOTHING, 370 State.DISCONNECTED); 371 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 372 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 373 NetworkState.TO_CONNECTION, State.CONNECTED); 374 375 // Connect to Wifi 376 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 377 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 378 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 379 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 380 381 // validate state and broadcast 382 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 383 Log.v(LOG_TAG, "state validate for Wifi failed"); 384 Log.v(LOG_TAG, "reason: " + 385 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 386 assertTrue("State validation failed", false); 387 } 388 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 389 Log.v(LOG_TAG, "state validation for Mobile failed"); 390 Log.v(LOG_TAG, "reason: " + 391 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 392 assertTrue("state validation failed", false); 393 } 394 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 395 } 396 397 // Test case 7: test connectivity while transit from Wifi->AM->Wifi 398 @LargeTest 399 public void testDataConnectionWithWifiToAMToWifi () { 400 // Connect to TEST_ACCESS_POINT 401 assertNotNull("SSID is null", TEST_ACCESS_POINT); 402 // Connect to Wifi 403 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 404 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 405 406 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 407 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 408 409 try { 410 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 411 } catch (Exception e) { 412 Log.v(LOG_TAG, "exception: " + e.toString()); 413 } 414 415 // Enable airplane mode without clearing Wifi 416 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 417 418 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 419 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 420 421 try { 422 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 423 } catch (Exception e) { 424 Log.v(LOG_TAG, "exception: " + e.toString()); 425 } 426 427 // Prepare for state validation 428 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 429 assertEquals(State.DISCONNECTED, networkInfo.getState()); 430 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, 431 networkInfo.getState(), NetworkState.TO_CONNECTION, State.CONNECTED); 432 433 // Disable airplane mode 434 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 435 436 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 437 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 438 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 439 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 440 441 // validate the state transition 442 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 443 Log.v(LOG_TAG, "Wifi state transition validation failed."); 444 Log.v(LOG_TAG, "reason: " + 445 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 446 assertTrue(false); 447 } 448 } 449 450 // Test case 8: test wifi state change while connecting/disconnecting to/from an AP 451 @LargeTest 452 public void testWifiStateChange () { 453 assertNotNull("SSID is null", TEST_ACCESS_POINT); 454 //Connect to TEST_ACCESS_POINT 455 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 456 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 457 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 458 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 459 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 460 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 461 assertNotNull("Not associated with any AP", 462 cmActivity.mWifiManager.getConnectionInfo().getBSSID()); 463 464 try { 465 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 466 } catch (Exception e) { 467 Log.v(LOG_TAG, "exception: " + e.toString()); 468 } 469 470 // Disconnect from the current AP 471 Log.v(LOG_TAG, "disconnect from the AP"); 472 if (!cmActivity.disconnectAP()) { 473 Log.v(LOG_TAG, "failed to disconnect from " + TEST_ACCESS_POINT); 474 } 475 476 // Verify the connectivity state for Wifi is DISCONNECTED 477 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 478 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 479 480 if (!cmActivity.disableWifi()) { 481 Log.v(LOG_TAG, "disable Wifi failed"); 482 return; 483 } 484 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, 485 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 486 } 487} 488