Xia Wang | fc2dbd0 | 2010-03-23 12:17:06 -0700 | [diff] [blame] | 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 | |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 17 | package com.android.connectivitymanagertest.functional; |
| 18 | |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 19 | import android.content.Context; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 20 | import android.net.ConnectivityManager; |
| 21 | import android.net.NetworkInfo; |
| 22 | import android.net.NetworkInfo.State; |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 23 | import android.net.wifi.WifiManager; |
Brett Chabot | 4dfa295 | 2012-01-27 20:01:42 -0800 | [diff] [blame] | 24 | import android.os.PowerManager; |
| 25 | import android.os.PowerManager.WakeLock; |
| 26 | import android.provider.Settings; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 27 | import android.test.ActivityInstrumentationTestCase2; |
Brett Chabot | 4dfa295 | 2012-01-27 20:01:42 -0800 | [diff] [blame] | 28 | import android.test.suitebuilder.annotation.LargeTest; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 29 | import android.util.Log; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 30 | |
Brett Chabot | 4dfa295 | 2012-01-27 20:01:42 -0800 | [diff] [blame] | 31 | import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; |
| 32 | import com.android.connectivitymanagertest.ConnectivityManagerTestRunner; |
| 33 | import com.android.connectivitymanagertest.NetworkState; |
Brett Chabot | 4dfa295 | 2012-01-27 20:01:42 -0800 | [diff] [blame] | 34 | |
| 35 | public class ConnectivityManagerMobileTest extends |
| 36 | ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> { |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 37 | private static final String LOG_TAG = "ConnectivityManagerMobileTest"; |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 38 | |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 39 | private String mTestAccessPoint; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 40 | private ConnectivityManagerTestActivity cmActivity; |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 41 | private WakeLock wl; |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 42 | private boolean mWifiOnlyFlag; |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 43 | |
| 44 | public ConnectivityManagerMobileTest() { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 45 | super(ConnectivityManagerTestActivity.class); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 46 | } |
| 47 | |
| 48 | @Override |
| 49 | public void setUp() throws Exception { |
| 50 | super.setUp(); |
| 51 | cmActivity = getActivity(); |
| 52 | ConnectivityManagerTestRunner mRunner = |
| 53 | (ConnectivityManagerTestRunner)getInstrumentation(); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 54 | mTestAccessPoint = mRunner.mTestSsid; |
| 55 | mWifiOnlyFlag = mRunner.mWifiOnlyFlag; |
| 56 | |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 57 | PowerManager pm = (PowerManager)getInstrumentation(). |
| 58 | getContext().getSystemService(Context.POWER_SERVICE); |
| 59 | wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "CMWakeLock"); |
| 60 | wl.acquire(); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 61 | // Each test case will start with cellular connection |
Christopher Tate | c09cdce | 2012-09-10 16:50:14 -0700 | [diff] [blame^] | 62 | if (Settings.Global.getInt(getInstrumentation().getContext().getContentResolver(), |
| 63 | Settings.Global.AIRPLANE_MODE_ON) == 1) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 64 | log("airplane is not disabled, disable it."); |
Xia Wang | 2dc2991 | 2011-01-11 17:35:56 -0800 | [diff] [blame] | 65 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); |
| 66 | } |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 67 | |
| 68 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 69 | if (!cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, |
| 70 | ConnectivityManagerTestActivity.LONG_TIMEOUT)) { |
| 71 | // Note: When the test fails in setUp(), tearDown is not called. In that case, |
| 72 | // the activity is destroyed which blocks the next test at "getActivity()". |
| 73 | // tearDown() is called here to avoid that situation. |
| 74 | tearDown(); |
| 75 | fail("Device is not connected to Mobile, setUp failed"); |
| 76 | } |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 77 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 78 | } |
| 79 | |
| 80 | @Override |
| 81 | public void tearDown() throws Exception { |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 82 | cmActivity.finish(); |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 83 | log("tear down ConnectivityManagerTestActivity"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 84 | wl.release(); |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 85 | cmActivity.removeConfiguredNetworksAndDisableWifi(); |
Xia Wang | 8efaeb0 | 2010-12-10 17:09:18 -0800 | [diff] [blame] | 86 | // if airplane mode is set, disable it. |
Christopher Tate | c09cdce | 2012-09-10 16:50:14 -0700 | [diff] [blame^] | 87 | if (Settings.Global.getInt(getInstrumentation().getContext().getContentResolver(), |
| 88 | Settings.Global.AIRPLANE_MODE_ON) == 1) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 89 | log("disable airplane mode if it is enabled"); |
Xia Wang | 8efaeb0 | 2010-12-10 17:09:18 -0800 | [diff] [blame] | 90 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); |
| 91 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 92 | super.tearDown(); |
| 93 | } |
| 94 | |
| 95 | // help function to verify 3G connection |
| 96 | public void verifyCellularConnection() { |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 97 | NetworkInfo extraNetInfo = cmActivity.mCM.getActiveNetworkInfo(); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 98 | assertEquals("network type is not MOBILE", ConnectivityManager.TYPE_MOBILE, |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 99 | extraNetInfo.getType()); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 100 | assertTrue("not connected to cellular network", extraNetInfo.isConnected()); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 101 | } |
| 102 | |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 103 | private void log(String message) { |
| 104 | Log.v(LOG_TAG, message); |
| 105 | } |
| 106 | |
| 107 | private void sleep(long sleeptime) { |
| 108 | try { |
| 109 | Thread.sleep(sleeptime); |
| 110 | } catch (InterruptedException e) {} |
| 111 | } |
| 112 | |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 113 | // Test case 1: Test enabling Wifi without associating with any AP, no broadcast on network |
| 114 | // event should be expected. |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 115 | @LargeTest |
| 116 | public void test3GToWifiNotification() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 117 | if (mWifiOnlyFlag) { |
| 118 | Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test"); |
| 119 | return; |
| 120 | } |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 121 | // Enable Wi-Fi to avoid initial UNKNOWN state |
Xia Wang | 4672203 | 2010-05-06 14:12:54 -0700 | [diff] [blame] | 122 | cmActivity.enableWifi(); |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 123 | sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
| 124 | |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 125 | // Wi-Fi is disabled |
Xia Wang | 4672203 | 2010-05-06 14:12:54 -0700 | [diff] [blame] | 126 | cmActivity.disableWifi(); |
Xia Wang | 2dc2991 | 2011-01-11 17:35:56 -0800 | [diff] [blame] | 127 | |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 128 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, |
| 129 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 130 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 131 | State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 132 | // Wait for 10 seconds for broadcasts to be sent out |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 133 | sleep(10 * 1000); |
| 134 | |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 135 | // As Wifi stays in DISCONNETED, Mobile statys in CONNECTED, |
| 136 | // the connectivity manager will not broadcast any network connectivity event for Wifi |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 137 | NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 138 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 139 | networkInfo.getState(), NetworkState.DO_NOTHING, State.CONNECTED); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 140 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 141 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 142 | NetworkState.DO_NOTHING, State.DISCONNECTED); |
Xia Wang | be142fc | 2011-02-08 14:26:48 -0800 | [diff] [blame] | 143 | // Eanble Wifi without associating with any AP |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 144 | cmActivity.enableWifi(); |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 145 | sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 146 | |
| 147 | // validate state and broadcast |
| 148 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 149 | log("the state for WIFI is changed"); |
| 150 | log("reason: " + |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 151 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
Xia Wang | fc2dbd0 | 2010-03-23 12:17:06 -0700 | [diff] [blame] | 152 | assertTrue("state validation fail", false); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 153 | } |
| 154 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 155 | log("the state for MOBILE is changed"); |
| 156 | log("reason: " + |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 157 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 158 | assertTrue("state validation fail", false); |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 159 | } |
| 160 | // Verify that the device is still connected to MOBILE |
| 161 | verifyCellularConnection(); |
| 162 | } |
| 163 | |
| 164 | // Test case 2: test connection to a given AP |
| 165 | @LargeTest |
| 166 | public void testConnectToWifi() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 167 | assertNotNull("SSID is null", mTestAccessPoint); |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 168 | NetworkInfo networkInfo; |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 169 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 170 | //Prepare for connectivity verification |
| 171 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 172 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 173 | networkInfo.getState(), NetworkState.TO_DISCONNECTION, State.DISCONNECTED); |
| 174 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 175 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 176 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 177 | NetworkState.TO_CONNECTION, State.CONNECTED); |
| 178 | |
| 179 | // Enable Wifi and connect to a test access point |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 180 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 181 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 182 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 183 | assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, |
| 184 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 185 | log("wifi state is enabled"); |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 186 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 187 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 188 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 189 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 190 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 191 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 192 | |
| 193 | // validate states |
| 194 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 195 | log("Wifi state transition validation failed."); |
| 196 | log("reason: " + |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 197 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 198 | assertTrue(false); |
| 199 | } |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 200 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 201 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 202 | log("Mobile state transition validation failed."); |
| 203 | log("reason: " + |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 204 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
| 205 | assertTrue(false); |
| 206 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 207 | } |
| 208 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 209 | |
| 210 | // Test case 3: connect to Wifi with known AP |
| 211 | @LargeTest |
| 212 | public void testConnectToWifWithKnownAP() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 213 | assertNotNull("SSID is null", mTestAccessPoint); |
| 214 | // Connect to mTestAccessPoint |
| 215 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 216 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 217 | assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, |
| 218 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 219 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 220 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 221 | |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 222 | sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 223 | // Disable Wifi |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 224 | log("Disable Wifi"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 225 | if (!cmActivity.disableWifi()) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 226 | log("disable Wifi failed"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 227 | return; |
| 228 | } |
| 229 | |
| 230 | // Wait for the Wifi state to be DISABLED |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 231 | assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, |
| 232 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 233 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, |
| 234 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 235 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 236 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 237 | State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 238 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 239 | |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 240 | NetworkInfo networkInfo; |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 241 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 242 | //Prepare for connectivity state verification |
| 243 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 244 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 245 | networkInfo.getState(), NetworkState.DO_NOTHING, |
| 246 | State.DISCONNECTED); |
| 247 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 248 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 249 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 250 | NetworkState.TO_CONNECTION, State.CONNECTED); |
| 251 | |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 252 | // wait for 2 minutes before restart wifi |
| 253 | sleep(ConnectivityManagerTestActivity.WIFI_STOP_START_INTERVAL); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 254 | // Enable Wifi again |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 255 | log("Enable Wifi again"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 256 | cmActivity.enableWifi(); |
| 257 | |
| 258 | // Wait for Wifi to be connected and mobile to be disconnected |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 259 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 260 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 261 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 262 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 263 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 264 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 265 | |
| 266 | // validate wifi states |
| 267 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 268 | log("Wifi state transition validation failed."); |
| 269 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 270 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 271 | assertTrue(false); |
| 272 | } |
| 273 | } |
| 274 | |
| 275 | // Test case 4: test disconnect Wifi |
| 276 | @LargeTest |
| 277 | public void testDisconnectWifi() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 278 | assertNotNull("SSID is null", mTestAccessPoint); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 279 | |
| 280 | // connect to Wifi |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 281 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 282 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 283 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 284 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 285 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 286 | |
| 287 | // Wait for a few seconds to avoid the state that both Mobile and Wifi is connected |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 288 | sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 289 | |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 290 | NetworkInfo networkInfo; |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 291 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 292 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 293 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 294 | networkInfo.getState(), |
| 295 | NetworkState.TO_CONNECTION, |
| 296 | State.CONNECTED); |
| 297 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 298 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 299 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 300 | NetworkState.TO_DISCONNECTION, State.DISCONNECTED); |
| 301 | |
| 302 | // clear Wifi |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 303 | cmActivity.removeConfiguredNetworksAndDisableWifi(); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 304 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 305 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, |
| 306 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 307 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 308 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 309 | State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 310 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 311 | |
| 312 | // validate states |
| 313 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 314 | log("Wifi state transition validation failed."); |
| 315 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 316 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 317 | assertTrue(false); |
| 318 | } |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 319 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 320 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 321 | log("Mobile state transition validation failed."); |
| 322 | log("reason: " + |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 323 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
| 324 | assertTrue(false); |
| 325 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 326 | } |
| 327 | } |
| 328 | |
| 329 | // Test case 5: test connectivity from 3G to airplane mode, then to 3G again |
| 330 | @LargeTest |
| 331 | public void testDataConnectionWith3GToAmTo3G() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 332 | if (mWifiOnlyFlag) { |
| 333 | Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test"); |
| 334 | return; |
| 335 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 336 | //Prepare for state verification |
| 337 | NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 338 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 339 | networkInfo.getState(), |
| 340 | NetworkState.TO_DISCONNECTION, |
| 341 | State.DISCONNECTED); |
| 342 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 343 | assertEquals(State.DISCONNECTED, networkInfo.getState()); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 344 | |
| 345 | // Enable airplane mode |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 346 | log("Enable airplane mode"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 347 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 348 | sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 349 | |
Xia Wang | 8efaeb0 | 2010-12-10 17:09:18 -0800 | [diff] [blame] | 350 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 351 | assertEquals(State.DISCONNECTED, networkInfo.getState()); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 352 | // wait until mobile is turn off |
| 353 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 354 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 355 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 356 | log("Mobile state transition validation failed."); |
| 357 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 358 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
| 359 | assertTrue(false); |
| 360 | } |
| 361 | |
| 362 | // reset state recorder |
| 363 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 364 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 365 | networkInfo.getState(), |
| 366 | NetworkState.TO_CONNECTION, |
| 367 | State.CONNECTED); |
| 368 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 369 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 370 | NetworkState.DO_NOTHING, State.DISCONNECTED); |
| 371 | |
| 372 | // disable airplane mode |
| 373 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); |
| 374 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 375 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, |
| 376 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 377 | |
| 378 | // Validate the state transition |
| 379 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 380 | log("Mobile state transition validation failed."); |
| 381 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 382 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
| 383 | assertTrue(false); |
| 384 | } |
| 385 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 386 | log("Wifi state transition validation failed."); |
| 387 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 388 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 389 | assertTrue(false); |
| 390 | } |
| 391 | } |
| 392 | |
| 393 | // Test case 6: test connectivity with airplane mode Wifi connected |
| 394 | @LargeTest |
| 395 | public void testDataConnectionOverAMWithWifi() { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 396 | if (mWifiOnlyFlag) { |
| 397 | Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test"); |
| 398 | return; |
| 399 | } |
| 400 | assertNotNull("SSID is null", mTestAccessPoint); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 401 | // Eanble airplane mode |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 402 | log("Enable airplane mode"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 403 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); |
| 404 | |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 405 | NetworkInfo networkInfo; |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 406 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 407 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 408 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 409 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); |
| 410 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, |
| 411 | networkInfo.getState(), |
| 412 | NetworkState.DO_NOTHING, |
| 413 | State.DISCONNECTED); |
| 414 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 415 | networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
| 416 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(), |
| 417 | NetworkState.TO_CONNECTION, State.CONNECTED); |
| 418 | |
| 419 | // Connect to Wifi |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 420 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 421 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 422 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 423 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 424 | |
| 425 | // validate state and broadcast |
| 426 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 427 | log("state validate for Wifi failed"); |
| 428 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 429 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 430 | assertTrue("State validation failed", false); |
| 431 | } |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 432 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 433 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 434 | log("state validation for Mobile failed"); |
| 435 | log("reason: " + |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 436 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE)); |
| 437 | assertTrue("state validation failed", false); |
| 438 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 439 | } |
| 440 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); |
| 441 | } |
| 442 | |
| 443 | // Test case 7: test connectivity while transit from Wifi->AM->Wifi |
| 444 | @LargeTest |
| 445 | public void testDataConnectionWithWifiToAMToWifi () { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 446 | if (mWifiOnlyFlag) { |
| 447 | Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test"); |
| 448 | return; |
| 449 | } |
| 450 | // Connect to mTestAccessPoint |
| 451 | assertNotNull("SSID is null", mTestAccessPoint); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 452 | // Connect to Wifi |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 453 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 454 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 455 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 456 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 457 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 458 | |
| 459 | try { |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 460 | Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 461 | } catch (Exception e) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 462 | log("exception: " + e.toString()); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 463 | } |
| 464 | |
| 465 | // Enable airplane mode without clearing Wifi |
| 466 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); |
| 467 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 468 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, |
| 469 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 470 | |
| 471 | try { |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 472 | Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 473 | } catch (Exception e) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 474 | log("exception: " + e.toString()); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 475 | } |
| 476 | |
| 477 | // Prepare for state validation |
Xia Wang | 72b301f | 2010-04-05 19:59:26 -0700 | [diff] [blame] | 478 | NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 479 | assertEquals(State.DISCONNECTED, networkInfo.getState()); |
| 480 | cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, |
| 481 | networkInfo.getState(), NetworkState.TO_CONNECTION, State.CONNECTED); |
| 482 | |
| 483 | // Disable airplane mode |
| 484 | cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); |
| 485 | |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 486 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 487 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 488 | if (!mWifiOnlyFlag) { |
Xia Wang | b97435c | 2011-03-03 18:41:06 -0800 | [diff] [blame] | 489 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, |
| 490 | State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 491 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 492 | |
| 493 | // validate the state transition |
| 494 | if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 495 | log("Wifi state transition validation failed."); |
| 496 | log("reason: " + |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 497 | cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); |
| 498 | assertTrue(false); |
| 499 | } |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 500 | } |
| 501 | |
| 502 | // Test case 8: test wifi state change while connecting/disconnecting to/from an AP |
| 503 | @LargeTest |
| 504 | public void testWifiStateChange () { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 505 | assertNotNull("SSID is null", mTestAccessPoint); |
| 506 | //Connect to mTestAccessPoint |
| 507 | assertTrue("failed to connect to " + mTestAccessPoint, |
| 508 | cmActivity.connectToWifi(mTestAccessPoint)); |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 509 | assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED, |
| 510 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
| 511 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, |
| 512 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 513 | assertNotNull("Not associated with any AP", |
| 514 | cmActivity.mWifiManager.getConnectionInfo().getBSSID()); |
| 515 | |
| 516 | try { |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 517 | Thread.sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 518 | } catch (Exception e) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 519 | log("exception: " + e.toString()); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 520 | } |
| 521 | |
| 522 | // Disconnect from the current AP |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 523 | log("disconnect from the AP"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 524 | if (!cmActivity.disconnectAP()) { |
Xia Wang | 776cca3 | 2012-03-09 16:42:55 -0800 | [diff] [blame] | 525 | log("failed to disconnect from " + mTestAccessPoint); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 526 | } |
| 527 | |
| 528 | // Verify the connectivity state for Wifi is DISCONNECTED |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 529 | assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, |
| 530 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 531 | |
| 532 | if (!cmActivity.disableWifi()) { |
Xia Wang | a4c2caa | 2011-11-17 11:11:59 -0800 | [diff] [blame] | 533 | log("disable Wifi failed"); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 534 | return; |
| 535 | } |
Xia Wang | ca1f2b1 | 2010-11-12 16:08:21 -0800 | [diff] [blame] | 536 | assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED, |
| 537 | ConnectivityManagerTestActivity.LONG_TIMEOUT)); |
Xia Wang | 2c15966 | 2010-03-27 18:25:14 -0700 | [diff] [blame] | 538 | } |
Xia Wang | 7fb1f67 | 2010-03-04 11:54:39 -0800 | [diff] [blame] | 539 | } |