ConnectivityManagerMobileTest.java revision 2dc2991f5833c9ca72e5e4d1f7bdc1c6c8caca91
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 (Settings.System.getInt(getInstrumentation().getContext().getContentResolver(), 67 Settings.System.AIRPLANE_MODE_ON) == 1) { 68 Log.v(LOG_TAG, "airplane is not disabled, disable it."); 69 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 70 } 71 if (!cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 72 ConnectivityManagerTestActivity.LONG_TIMEOUT)) { 73 // Note: When the test fails in setUp(), tearDown is not called. In that case, 74 // the activity is destroyed which blocks the next test at "getActivity()". 75 // tearDown() is called here to avoid that situation. 76 tearDown(); 77 fail("Device is not connected to Mobile, setUp failed"); 78 } 79 } 80 81 @Override 82 public void tearDown() throws Exception { 83 cmActivity.finish(); 84 Log.v(LOG_TAG, "tear down ConnectivityManagerTestActivity"); 85 wl.release(); 86 cmActivity.removeConfiguredNetworksAndDisableWifi(); 87 // if airplane mode is set, disable it. 88 if (Settings.System.getInt(getInstrumentation().getContext().getContentResolver(), 89 Settings.System.AIRPLANE_MODE_ON) == 1) { 90 Log.v(LOG_TAG, "disable airplane mode if it is enabled"); 91 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 92 } 93 super.tearDown(); 94 } 95 96 // help function to verify 3G connection 97 public void verifyCellularConnection() { 98 NetworkInfo extraNetInfo = cmActivity.mCM.getActiveNetworkInfo(); 99 assertEquals("network type is not MOBILE", ConnectivityManager.TYPE_MOBILE, 100 extraNetInfo.getType()); 101 assertTrue("not connected to cellular network", extraNetInfo.isConnected()); 102 } 103 104 // Test case 1: Test enabling Wifi without associating with any AP 105 @LargeTest 106 public void test3GToWifiNotification() { 107 cmActivity.enableWifi(); 108 try { 109 Thread.sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); 110 } catch (Exception e) { 111 Log.v(LOG_TAG, "exception: " + e.toString()); 112 } 113 114 cmActivity.disableWifi(); 115 116 cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, 117 State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT); 118 // As Wifi stays in DISCONNETED, the connectivity manager will not broadcast 119 // any network connectivity event for Wifi 120 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 121 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(), 122 NetworkState.DO_NOTHING, State.CONNECTED); 123 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 124 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 125 NetworkState.DO_NOTHING, State.DISCONNECTED); 126 // Eanble Wifi 127 cmActivity.enableWifi(); 128 try { 129 Thread.sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); 130 } catch (Exception e) { 131 Log.v(LOG_TAG, "exception: " + e.toString()); 132 } 133 134 // validate state and broadcast 135 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 136 Log.v(LOG_TAG, "the state for WIFI is changed"); 137 Log.v(LOG_TAG, "reason: " + 138 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 139 assertTrue("state validation fail", false); 140 } 141 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 142 Log.v(LOG_TAG, "the state for MOBILE is changed"); 143 Log.v(LOG_TAG, "reason: " + 144 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 145 assertTrue("state validation fail", false); 146 } 147 // Verify that the device is still connected to MOBILE 148 verifyCellularConnection(); 149 } 150 151 // Test case 2: test connection to a given AP 152 @LargeTest 153 public void testConnectToWifi() { 154 assertNotNull("SSID is null", TEST_ACCESS_POINT); 155 //Prepare for connectivity verification 156 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 157 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(), 158 NetworkState.TO_DISCONNECTION, State.DISCONNECTED); 159 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 160 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 161 NetworkState.TO_CONNECTION, State.CONNECTED); 162 163 // Enable Wifi and connect to a test access point 164 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 165 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 166 167 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 168 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 169 Log.v(LOG_TAG, "wifi state is enabled"); 170 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 171 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 172 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 173 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 174 175 // validate states 176 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 177 Log.v(LOG_TAG, "Wifi state transition validation failed."); 178 Log.v(LOG_TAG, "reason: " + 179 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 180 assertTrue(false); 181 } 182 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 183 Log.v(LOG_TAG, "Mobile state transition validation failed."); 184 Log.v(LOG_TAG, "reason: " + 185 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 186 assertTrue(false); 187 } 188 } 189 190 // Test case 3: connect to Wifi with known AP 191 @LargeTest 192 public void testConnectToWifWithKnownAP() { 193 assertNotNull("SSID is null", TEST_ACCESS_POINT); 194 // Connect to TEST_ACCESS_POINT 195 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 196 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 197 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 198 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 199 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 200 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 201 202 try { 203 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 204 } catch (Exception e) { 205 Log.v(LOG_TAG, "exception: " + e.toString()); 206 } 207 208 // Disable Wifi 209 Log.v(LOG_TAG, "Disable Wifi"); 210 if (!cmActivity.disableWifi()) { 211 Log.v(LOG_TAG, "disable Wifi failed"); 212 return; 213 } 214 215 // Wait for the Wifi state to be DISABLED 216 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, 217 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 218 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 219 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 220 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 221 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 222 223 //Prepare for connectivity state verification 224 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 225 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 226 networkInfo.getState(), NetworkState.DO_NOTHING, 227 State.DISCONNECTED); 228 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 229 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 230 NetworkState.TO_CONNECTION, State.CONNECTED); 231 232 // Enable Wifi again 233 Log.v(LOG_TAG, "Enable Wifi again"); 234 cmActivity.enableWifi(); 235 236 // Wait for Wifi to be connected and mobile to be disconnected 237 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 238 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 239 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 240 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 241 242 // validate wifi states 243 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 244 Log.v(LOG_TAG, "Wifi state transition validation failed."); 245 Log.v(LOG_TAG, "reason: " + 246 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 247 assertTrue(false); 248 } 249 } 250 251 // Test case 4: test disconnect Wifi 252 @LargeTest 253 public void testDisconnectWifi() { 254 assertNotNull("SSID is null", TEST_ACCESS_POINT); 255 256 // connect to Wifi 257 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 258 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 259 260 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 261 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 262 263 // Wait for a few seconds to avoid the state that both Mobile and Wifi is connected 264 try { 265 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 266 } catch (Exception e) { 267 Log.v(LOG_TAG, "exception: " + e.toString()); 268 } 269 270 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 271 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 272 networkInfo.getState(), 273 NetworkState.TO_CONNECTION, 274 State.CONNECTED); 275 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 276 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 277 NetworkState.TO_DISCONNECTION, State.DISCONNECTED); 278 279 // clear Wifi 280 cmActivity.removeConfiguredNetworksAndDisableWifi(); 281 282 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 283 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 284 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 285 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 286 287 // validate states 288 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 289 Log.v(LOG_TAG, "Wifi state transition validation failed."); 290 Log.v(LOG_TAG, "reason: " + 291 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 292 assertTrue(false); 293 } 294 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 295 Log.v(LOG_TAG, "Mobile state transition validation failed."); 296 Log.v(LOG_TAG, "reason: " + 297 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 298 assertTrue(false); 299 } 300 } 301 302 // Test case 5: test connectivity from 3G to airplane mode, then to 3G again 303 @LargeTest 304 public void testDataConnectionWith3GToAmTo3G() { 305 //Prepare for state verification 306 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 307 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 308 networkInfo.getState(), 309 NetworkState.TO_DISCONNECTION, 310 State.DISCONNECTED); 311 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 312 assertEquals(State.DISCONNECTED, networkInfo.getState()); 313 314 // Enable airplane mode 315 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 316 try { 317 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 318 } catch (Exception e) { 319 Log.v(LOG_TAG, "exception: " + e.toString()); 320 } 321 322 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 323 assertEquals(State.DISCONNECTED, networkInfo.getState()); 324 325 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 326 Log.v(LOG_TAG, "Mobile state transition validation failed."); 327 Log.v(LOG_TAG, "reason: " + 328 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 329 assertTrue(false); 330 } 331 332 // reset state recorder 333 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 334 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 335 networkInfo.getState(), 336 NetworkState.TO_CONNECTION, 337 State.CONNECTED); 338 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 339 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 340 NetworkState.DO_NOTHING, State.DISCONNECTED); 341 342 // disable airplane mode 343 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 344 345 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, 346 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 347 348 // Validate the state transition 349 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 350 Log.v(LOG_TAG, "Mobile state transition validation failed."); 351 Log.v(LOG_TAG, "reason: " + 352 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 353 assertTrue(false); 354 } 355 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 356 Log.v(LOG_TAG, "Wifi state transition validation failed."); 357 Log.v(LOG_TAG, "reason: " + 358 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 359 assertTrue(false); 360 } 361 } 362 363 // Test case 6: test connectivity with airplane mode Wifi connected 364 @LargeTest 365 public void testDataConnectionOverAMWithWifi() { 366 assertNotNull("SSID is null", TEST_ACCESS_POINT); 367 // Eanble airplane mode 368 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 369 370 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 371 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 372 373 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); 374 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, 375 networkInfo.getState(), 376 NetworkState.DO_NOTHING, 377 State.DISCONNECTED); 378 networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 379 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), 380 NetworkState.TO_CONNECTION, State.CONNECTED); 381 382 // Connect to Wifi 383 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 384 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 385 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 386 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 387 388 // validate state and broadcast 389 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 390 Log.v(LOG_TAG, "state validate for Wifi failed"); 391 Log.v(LOG_TAG, "reason: " + 392 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 393 assertTrue("State validation failed", false); 394 } 395 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { 396 Log.v(LOG_TAG, "state validation for Mobile failed"); 397 Log.v(LOG_TAG, "reason: " + 398 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); 399 assertTrue("state validation failed", false); 400 } 401 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 402 } 403 404 // Test case 7: test connectivity while transit from Wifi->AM->Wifi 405 @LargeTest 406 public void testDataConnectionWithWifiToAMToWifi () { 407 // Connect to TEST_ACCESS_POINT 408 assertNotNull("SSID is null", TEST_ACCESS_POINT); 409 // Connect to Wifi 410 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 411 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 412 413 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 414 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 415 416 try { 417 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 418 } catch (Exception e) { 419 Log.v(LOG_TAG, "exception: " + e.toString()); 420 } 421 422 // Enable airplane mode without clearing Wifi 423 cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); 424 425 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 426 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 427 428 try { 429 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 430 } catch (Exception e) { 431 Log.v(LOG_TAG, "exception: " + e.toString()); 432 } 433 434 // Prepare for state validation 435 NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); 436 assertEquals(State.DISCONNECTED, networkInfo.getState()); 437 cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, 438 networkInfo.getState(), NetworkState.TO_CONNECTION, State.CONNECTED); 439 440 // Disable airplane mode 441 cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); 442 443 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 444 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 445 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, 446 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 447 448 // validate the state transition 449 if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { 450 Log.v(LOG_TAG, "Wifi state transition validation failed."); 451 Log.v(LOG_TAG, "reason: " + 452 cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); 453 assertTrue(false); 454 } 455 } 456 457 // Test case 8: test wifi state change while connecting/disconnecting to/from an AP 458 @LargeTest 459 public void testWifiStateChange () { 460 assertNotNull("SSID is null", TEST_ACCESS_POINT); 461 //Connect to TEST_ACCESS_POINT 462 assertTrue("failed to connect to " + TEST_ACCESS_POINT, 463 cmActivity.connectToWifi(TEST_ACCESS_POINT)); 464 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, 465 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 466 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, 467 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 468 assertNotNull("Not associated with any AP", 469 cmActivity.mWifiManager.getConnectionInfo().getBSSID()); 470 471 try { 472 Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); 473 } catch (Exception e) { 474 Log.v(LOG_TAG, "exception: " + e.toString()); 475 } 476 477 // Disconnect from the current AP 478 Log.v(LOG_TAG, "disconnect from the AP"); 479 if (!cmActivity.disconnectAP()) { 480 Log.v(LOG_TAG, "failed to disconnect from " + TEST_ACCESS_POINT); 481 } 482 483 // Verify the connectivity state for Wifi is DISCONNECTED 484 assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 485 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 486 487 if (!cmActivity.disableWifi()) { 488 Log.v(LOG_TAG, "disable Wifi failed"); 489 return; 490 } 491 assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, 492 ConnectivityManagerTestActivity.LONG_TIMEOUT)); 493 } 494} 495