Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09d620a4 authored by Brett Chabot's avatar Brett Chabot Committed by Android (Google) Code Review
Browse files

Merge "Use PackageManager to detect wifi-only devices in ConnectivityManagerTest." into ics-aah

parents c8583c1b 733ba9d2
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -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
+23 −4
Original line number Diff line number Diff line
@@ -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;
    }
}
+25 −30
Original line number Diff line number Diff line
@@ -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));
        }
+8 −10
Original line number Diff line number Diff line
@@ -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));