diff options
author | Brett Chabot <brettchabot@android.com> | 2012-01-27 20:01:42 -0800 |
---|---|---|
committer | Xia Wang <xiaw@google.com> | 2012-02-01 10:32:18 -0800 |
commit | 4dfa295ad8b75a8c0976e7de078ebe4f654a6a89 (patch) | |
tree | 27cf82ffb1df1b41ad95f32f2e7da96322afeb15 /core/tests | |
parent | df92772fb8fc7d7b5b02f3e3bd08250d0fade454 (diff) | |
download | frameworks_base-4dfa295ad8b75a8c0976e7de078ebe4f654a6a89.zip frameworks_base-4dfa295ad8b75a8c0976e7de078ebe4f654a6a89.tar.gz frameworks_base-4dfa295ad8b75a8c0976e7de078ebe4f654a6a89.tar.bz2 |
Use PackageManager to detect wifi-only devices in ConnectivityManagerTest.
Change-Id: I9749bf9024a73af095d4a681bb902594828ad599
Diffstat (limited to 'core/tests')
5 files changed, 59 insertions, 47 deletions
diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java index 3ffa085..7233e7f 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerStressTestRunner.java @@ -46,7 +46,7 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn @Override public TestSuite getAllTests() { TestSuite suite = new InstrumentationTestSuite(this); - if (!UtilHelper.isWifiOnly()) { + if (!UtilHelper.isWifiOnly(getContext())) { suite.addTestSuite(WifiApStress.class); suite.addTestSuite(WifiStressTest.class); } else { @@ -64,7 +64,7 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); - if (!UtilHelper.isWifiOnly()) { + if (!UtilHelper.isWifiOnly(getContext())) { String valueStr = (String) icicle.get("softap_iterations"); if (valueStr != null) { int iteration = Integer.parseInt(valueStr); diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestRunner.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestRunner.java index 20aae47..9819c54 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestRunner.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/ConnectivityManagerTestRunner.java @@ -40,7 +40,7 @@ public class ConnectivityManagerTestRunner extends InstrumentationTestRunner { @Override public TestSuite getAllTests() { TestSuite suite = new InstrumentationTestSuite(this); - if (!UtilHelper.isWifiOnly()) { + if (!UtilHelper.isWifiOnly(getContext())) { suite.addTestSuite(ConnectivityManagerMobileTest.class); } else { // create a new test suite diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/UtilHelper.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/UtilHelper.java index 1b966bf..b9fe6ed 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/UtilHelper.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/UtilHelper.java @@ -16,12 +16,31 @@ package com.android.connectivitymanagertest; -import android.os.SystemProperties; +import android.content.Context; +import android.content.pm.PackageManager; +import android.util.Log; public class UtilHelper { - public static boolean isWifiOnly() { - return "wifi-only".equals(SystemProperties.get("ro.carrier")); - } + private static Boolean mIsWifiOnly = null; + private static final Object sLock = new Object(); + /** + * Return true if device is a wifi only device. + */ + public static boolean isWifiOnly(Context context) { + synchronized (sLock) { + // cache the result from pkgMgr statically. It will never change, since its a + // device configuration setting + if (mIsWifiOnly == null) { + PackageManager pkgMgr = context.getPackageManager(); + mIsWifiOnly = Boolean.valueOf(!pkgMgr + .hasSystemFeature(PackageManager.FEATURE_TELEPHONY) + && pkgMgr.hasSystemFeature(PackageManager.FEATURE_WIFI)); + String deviceType = mIsWifiOnly ? "wifi-only" : "telephony"; + Log.d("ConnectivityManagerTest", String.format("detected a %s device", deviceType)); + } + } + return mIsWifiOnly; + } } diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/ConnectivityManagerMobileTest.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/ConnectivityManagerMobileTest.java index b1f4bf1..52326d5 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/ConnectivityManagerMobileTest.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/functional/ConnectivityManagerMobileTest.java @@ -16,37 +16,31 @@ package com.android.connectivitymanagertest.functional; -import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; -import com.android.connectivitymanagertest.UtilHelper; - -import android.content.Intent; import android.content.Context; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.app.Instrumentation; -import android.os.Handler; -import android.os.Message; -import android.provider.Settings; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.NetworkInfo.State; -import android.net.NetworkInfo.DetailedState; import android.net.wifi.WifiManager; - -import android.test.suitebuilder.annotation.LargeTest; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.provider.Settings; import android.test.ActivityInstrumentationTestCase2; +import android.test.suitebuilder.annotation.LargeTest; +import android.util.Log; + +import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; import com.android.connectivitymanagertest.ConnectivityManagerTestRunner; import com.android.connectivitymanagertest.NetworkState; -import android.util.Log; +import com.android.connectivitymanagertest.UtilHelper; -public class ConnectivityManagerMobileTest - extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> { +public class ConnectivityManagerMobileTest extends + ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> { private static final String LOG_TAG = "ConnectivityManagerMobileTest"; - private static final String PKG_NAME = "com.android.connectivitymanagertest"; private String TEST_ACCESS_POINT; private ConnectivityManagerTestActivity cmActivity; private WakeLock wl; + private boolean mIsWifiOnlyDevice; public ConnectivityManagerMobileTest() { super(ConnectivityManagerTestActivity.class); @@ -69,7 +63,8 @@ public class ConnectivityManagerMobileTest log("airplane is not disabled, disable it."); cmActivity.setAirplaneMode(getInstrumentation().getContext(), false); } - if (!UtilHelper.isWifiOnly()) { + mIsWifiOnlyDevice = UtilHelper.isWifiOnly(mRunner.getTargetContext()); + if (!mIsWifiOnlyDevice) { if (!cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)) { // Note: When the test fails in setUp(), tearDown is not called. In that case, @@ -166,7 +161,7 @@ public class ConnectivityManagerMobileTest public void testConnectToWifi() { assertNotNull("SSID is null", TEST_ACCESS_POINT); NetworkInfo networkInfo; - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { //Prepare for connectivity verification networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, @@ -185,7 +180,7 @@ public class ConnectivityManagerMobileTest log("wifi state is enabled"); assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); } @@ -197,7 +192,7 @@ public class ConnectivityManagerMobileTest cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); assertTrue(false); } - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { log("Mobile state transition validation failed."); log("reason: " + @@ -232,13 +227,13 @@ public class ConnectivityManagerMobileTest ConnectivityManagerTestActivity.LONG_TIMEOUT)); assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); } NetworkInfo networkInfo; - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { //Prepare for connectivity state verification networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, @@ -258,7 +253,7 @@ public class ConnectivityManagerMobileTest // Wait for Wifi to be connected and mobile to be disconnected assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); } @@ -288,7 +283,7 @@ public class ConnectivityManagerMobileTest sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT); NetworkInfo networkInfo; - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(), @@ -304,7 +299,7 @@ public class ConnectivityManagerMobileTest assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); } @@ -316,7 +311,7 @@ public class ConnectivityManagerMobileTest cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); assertTrue(false); } - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { log("Mobile state transition validation failed."); log("reason: " + @@ -393,7 +388,7 @@ public class ConnectivityManagerMobileTest cmActivity.setAirplaneMode(getInstrumentation().getContext(), true); NetworkInfo networkInfo; - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); @@ -419,7 +414,7 @@ public class ConnectivityManagerMobileTest cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI)); assertTrue("State validation failed", false); } - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) { log("state validation for Mobile failed"); log("reason: " + @@ -471,7 +466,7 @@ public class ConnectivityManagerMobileTest assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT)); } diff --git a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/stress/WifiStressTest.java b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/stress/WifiStressTest.java index 2069789..feb63cd 100644 --- a/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/stress/WifiStressTest.java +++ b/core/tests/ConnectivityManagerTest/src/com/android/connectivitymanagertest/stress/WifiStressTest.java @@ -16,10 +16,6 @@ package com.android.connectivitymanagertest.stress; -import com.android.connectivitymanagertest.ConnectivityManagerStressTestRunner; -import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; -import com.android.connectivitymanagertest.UtilHelper; - import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo.State; @@ -31,15 +27,15 @@ import android.net.wifi.WifiConfiguration.ProxySettings; import android.net.wifi.WifiManager; import android.os.Environment; import android.os.PowerManager; -import android.os.IPowerManager; -import android.os.SystemClock; -import android.os.ServiceManager; import android.provider.Settings; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.LargeTest; - import android.util.Log; +import com.android.connectivitymanagertest.ConnectivityManagerStressTestRunner; +import com.android.connectivitymanagertest.ConnectivityManagerTestActivity; +import com.android.connectivitymanagertest.UtilHelper; + import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; @@ -79,6 +75,7 @@ public class WifiStressTest private String mPassword; private ConnectivityManagerStressTestRunner mRunner; private BufferedWriter mOutputWriter = null; + private boolean mIsWifiOnlyDevice; public WifiStressTest() { super(ConnectivityManagerTestActivity.class); @@ -100,6 +97,7 @@ public class WifiStressTest mOutputWriter = new BufferedWriter(new FileWriter(new File( Environment.getExternalStorageDirectory(), OUTPUT_FILE), true)); mAct.turnScreenOn(); + mIsWifiOnlyDevice = UtilHelper.isWifiOnly(mRunner.getTargetContext()); if (!mAct.mWifiManager.isWifiEnabled()) { log("Enable wi-fi before stress tests."); if (!mAct.enableWifi()) { @@ -271,7 +269,7 @@ public class WifiStressTest assertTrue("Wait for Wi-Fi to idle timeout", mAct.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED, 6 * ConnectivityManagerTestActivity.SHORT_TIMEOUT)); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { // use long timeout as the pppd startup may take several retries. assertTrue("Wait for cellular connection timeout", mAct.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED, @@ -282,7 +280,7 @@ public class WifiStressTest assertEquals("Wi-Fi is reconnected", State.DISCONNECTED, mAct.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState()); - if (!UtilHelper.isWifiOnly()) { + if (!mIsWifiOnlyDevice) { assertEquals("Cellular connection is down", State.CONNECTED, mAct.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState()); assertTrue("Mobile is connected, but no data connection.", mAct.pingTest(null)); |