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

Commit d65a4f62 authored by Xia Wang's avatar Xia Wang Committed by Android (Google) Code Review
Browse files

Merge "Allow CM/WIFI tests running with wifi-only flag."

parents d122d8eb 776cca3b
Loading
Loading
Loading
Loading
+13 −14
Original line number Diff line number Diff line
@@ -42,17 +42,13 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn
    public int mSleepTime = 2 * 60 * 1000;
    public String mReconnectSsid = "securenetdhcp";
    public String mReconnectPassword = "androidwifi";
    public boolean mWifiOnlyFlag = false;

    @Override
    public TestSuite getAllTests() {
        TestSuite suite = new InstrumentationTestSuite(this);
        if (!UtilHelper.isWifiOnly(getContext())) {
        suite.addTestSuite(WifiApStress.class);
        suite.addTestSuite(WifiStressTest.class);
        } else {
            // only the wifi stress tests
            suite.addTestSuite(WifiStressTest.class);
        }
        return suite;
    }

@@ -64,7 +60,6 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        if (!UtilHelper.isWifiOnly(getContext())) {
        String valueStr = (String) icicle.get("softap_iterations");
        if (valueStr != null) {
            int iteration = Integer.parseInt(valueStr);
@@ -72,7 +67,6 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn
                mSoftapIterations = iteration;
            }
        }
        }

        String scanIterationStr = (String) icicle.get("scan_iterations");
        if (scanIterationStr != null) {
@@ -107,5 +101,10 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn
                mSleepTime = 1000 * sleepTime;
            }
        }

        String wifiOnlyFlag = (String) icicle.get("wifi-only");
        if (wifiOnlyFlag != null) {
            mWifiOnlyFlag = true;
        }
    }
}
+8 −14
Original line number Diff line number Diff line
@@ -35,23 +35,13 @@ import junit.framework.TestSuite;
 */

public class ConnectivityManagerTestRunner extends InstrumentationTestRunner {
    public String TEST_SSID = null;
    public boolean mWifiOnlyFlag = false;
    public String mTestSsid = null;

    @Override
    public TestSuite getAllTests() {
        TestSuite suite = new InstrumentationTestSuite(this);
        if (!UtilHelper.isWifiOnly(getContext())) {
        suite.addTestSuite(ConnectivityManagerMobileTest.class);
        } else {
            // create a new test suite
            suite.setName("ConnectivityManagerWifiOnlyFunctionalTests");
            String[] methodNames = {"testConnectToWifi", "testConnectToWifWithKnownAP",
                    "testDisconnectWifi", "testWifiStateChange"};
            Class<ConnectivityManagerMobileTest> testClass = ConnectivityManagerMobileTest.class;
            for (String method: methodNames) {
                suite.addTest(TestSuite.createTest(testClass, method));
            }
        }
        suite.addTestSuite(WifiConnectionTest.class);
        return suite;
    }
@@ -66,7 +56,11 @@ public class ConnectivityManagerTestRunner extends InstrumentationTestRunner {
        super.onCreate(icicle);
        String testSSID = (String) icicle.get("ssid");
        if (testSSID != null) {
            TEST_SSID = testSSID;
            mTestSsid = testSSID;
        }
        String wifiOnlyFlag = (String) icicle.get("wifi-only");
        if (wifiOnlyFlag != null) {
            mWifiOnlyFlag = true;
        }
    }
}
+0 −46
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.connectivitymanagertest;

import android.content.Context;
import android.content.pm.PackageManager;
import android.util.Log;

public class UtilHelper {

    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;
    }
}
+60 −41
Original line number Diff line number Diff line
@@ -31,16 +31,15 @@ import android.util.Log;
import com.android.connectivitymanagertest.ConnectivityManagerTestActivity;
import com.android.connectivitymanagertest.ConnectivityManagerTestRunner;
import com.android.connectivitymanagertest.NetworkState;
import com.android.connectivitymanagertest.UtilHelper;

public class ConnectivityManagerMobileTest extends
        ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> {
    private static final String LOG_TAG = "ConnectivityManagerMobileTest";

    private String TEST_ACCESS_POINT;
    private String mTestAccessPoint;
    private ConnectivityManagerTestActivity cmActivity;
    private WakeLock wl;
    private boolean mIsWifiOnlyDevice;
    private boolean mWifiOnlyFlag;

    public ConnectivityManagerMobileTest() {
        super(ConnectivityManagerTestActivity.class);
@@ -52,7 +51,9 @@ public class ConnectivityManagerMobileTest extends
        cmActivity = getActivity();
        ConnectivityManagerTestRunner mRunner =
                (ConnectivityManagerTestRunner)getInstrumentation();
        TEST_ACCESS_POINT = mRunner.TEST_SSID;
        mTestAccessPoint = mRunner.mTestSsid;
        mWifiOnlyFlag = mRunner.mWifiOnlyFlag;

        PowerManager pm = (PowerManager)getInstrumentation().
                getContext().getSystemService(Context.POWER_SERVICE);
        wl = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "CMWakeLock");
@@ -63,8 +64,8 @@ public class ConnectivityManagerMobileTest extends
            log("airplane is not disabled, disable it.");
            cmActivity.setAirplaneMode(getInstrumentation().getContext(), false);
        }
        mIsWifiOnlyDevice = UtilHelper.isWifiOnly(mRunner.getTargetContext());
        if (!mIsWifiOnlyDevice) {

        if (!mWifiOnlyFlag) {
            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,
@@ -113,6 +114,10 @@ public class ConnectivityManagerMobileTest extends
    //              event should be expected.
    @LargeTest
    public void test3GToWifiNotification() {
        if (mWifiOnlyFlag) {
            Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test");
            return;
        }
        // Enable Wi-Fi to avoid initial UNKNOWN state
        cmActivity.enableWifi();
        sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT);
@@ -159,9 +164,9 @@ public class ConnectivityManagerMobileTest extends
    // Test case 2: test connection to a given AP
    @LargeTest
    public void testConnectToWifi() {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        assertNotNull("SSID is null", mTestAccessPoint);
        NetworkInfo networkInfo;
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            //Prepare for connectivity verification
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
@@ -172,15 +177,15 @@ public class ConnectivityManagerMobileTest extends
                NetworkState.TO_CONNECTION, State.CONNECTED);

        // Enable Wifi and connect to a test access point
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertTrue("failed to connect to " + mTestAccessPoint,
                cmActivity.connectToWifi(mTestAccessPoint));

        assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        log("wifi state is enabled");
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }
@@ -192,7 +197,7 @@ public class ConnectivityManagerMobileTest extends
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue(false);
        }
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                log("Mobile state transition validation failed.");
                log("reason: " +
@@ -205,10 +210,10 @@ public class ConnectivityManagerMobileTest extends
    // Test case 3: connect to Wifi with known AP
    @LargeTest
    public void testConnectToWifWithKnownAP() {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        // Connect to TEST_ACCESS_POINT
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertNotNull("SSID is null", mTestAccessPoint);
        // Connect to mTestAccessPoint
        assertTrue("failed to connect to " + mTestAccessPoint,
                cmActivity.connectToWifi(mTestAccessPoint));
        assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
@@ -227,13 +232,13 @@ public class ConnectivityManagerMobileTest extends
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI,
                State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        NetworkInfo networkInfo;
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            //Prepare for connectivity state verification
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
@@ -253,7 +258,7 @@ public class ConnectivityManagerMobileTest extends
        // Wait for Wifi to be connected and mobile to be disconnected
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }
@@ -270,11 +275,11 @@ public class ConnectivityManagerMobileTest extends
    // Test case 4:  test disconnect Wifi
    @LargeTest
    public void testDisconnectWifi() {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        assertNotNull("SSID is null", mTestAccessPoint);

        // connect to Wifi
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                   cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertTrue("failed to connect to " + mTestAccessPoint,
                   cmActivity.connectToWifi(mTestAccessPoint));

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
            ConnectivityManagerTestActivity.LONG_TIMEOUT));
@@ -283,7 +288,7 @@ public class ConnectivityManagerMobileTest extends
        sleep(ConnectivityManagerTestActivity.SHORT_TIMEOUT);

        NetworkInfo networkInfo;
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                                                  networkInfo.getState(),
@@ -299,7 +304,7 @@ public class ConnectivityManagerMobileTest extends

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }
@@ -311,7 +316,7 @@ public class ConnectivityManagerMobileTest extends
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue(false);
        }
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                log("Mobile state transition validation failed.");
                log("reason: " +
@@ -324,6 +329,10 @@ public class ConnectivityManagerMobileTest extends
    // Test case 5: test connectivity from 3G to airplane mode, then to 3G again
    @LargeTest
    public void testDataConnectionWith3GToAmTo3G() {
        if (mWifiOnlyFlag) {
            Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test");
            return;
        }
        //Prepare for state verification
        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
@@ -340,7 +349,9 @@ public class ConnectivityManagerMobileTest extends

        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        assertEquals(State.DISCONNECTED, networkInfo.getState());

        // wait until mobile is turn off
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
            log("Mobile state transition validation failed.");
            log("reason: " +
@@ -382,13 +393,17 @@ public class ConnectivityManagerMobileTest extends
    // Test case 6: test connectivity with airplane mode Wifi connected
    @LargeTest
    public void testDataConnectionOverAMWithWifi() {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        if (mWifiOnlyFlag) {
            Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test");
            return;
        }
        assertNotNull("SSID is null", mTestAccessPoint);
        // Eanble airplane mode
        log("Enable airplane mode");
        cmActivity.setAirplaneMode(getInstrumentation().getContext(), true);

        NetworkInfo networkInfo;
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
@@ -402,8 +417,8 @@ public class ConnectivityManagerMobileTest extends
                                              NetworkState.TO_CONNECTION, State.CONNECTED);

        // Connect to Wifi
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                   cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertTrue("failed to connect to " + mTestAccessPoint,
                   cmActivity.connectToWifi(mTestAccessPoint));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                            ConnectivityManagerTestActivity.LONG_TIMEOUT));

@@ -414,7 +429,7 @@ public class ConnectivityManagerMobileTest extends
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue("State validation failed", false);
        }
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                log("state validation for Mobile failed");
                log("reason: " +
@@ -428,11 +443,15 @@ public class ConnectivityManagerMobileTest extends
    // Test case 7: test connectivity while transit from Wifi->AM->Wifi
    @LargeTest
    public void testDataConnectionWithWifiToAMToWifi () {
        // Connect to TEST_ACCESS_POINT
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        if (mWifiOnlyFlag) {
            Log.v(LOG_TAG, this.getName() + " is excluded for wifi-only test");
            return;
        }
        // Connect to mTestAccessPoint
        assertNotNull("SSID is null", mTestAccessPoint);
        // Connect to Wifi
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertTrue("failed to connect to " + mTestAccessPoint,
                cmActivity.connectToWifi(mTestAccessPoint));

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
@@ -466,7 +485,7 @@ public class ConnectivityManagerMobileTest extends

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                            ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!mIsWifiOnlyDevice) {
        if (!mWifiOnlyFlag) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }
@@ -483,10 +502,10 @@ public class ConnectivityManagerMobileTest extends
    // Test case 8: test wifi state change while connecting/disconnecting to/from an AP
    @LargeTest
    public void testWifiStateChange () {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        //Connect to TEST_ACCESS_POINT
        assertTrue("failed to connect to " + TEST_ACCESS_POINT,
                   cmActivity.connectToWifi(TEST_ACCESS_POINT));
        assertNotNull("SSID is null", mTestAccessPoint);
        //Connect to mTestAccessPoint
        assertTrue("failed to connect to " + mTestAccessPoint,
                   cmActivity.connectToWifi(mTestAccessPoint));
        assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_ENABLED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
@@ -503,7 +522,7 @@ public class ConnectivityManagerMobileTest extends
        // Disconnect from the current AP
        log("disconnect from the AP");
        if (!cmActivity.disconnectAP()) {
            log("failed to disconnect from " + TEST_ACCESS_POINT);
            log("failed to disconnect from " + mTestAccessPoint);
        }

        // Verify the connectivity state for Wifi is DISCONNECTED
+6 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ public class WifiApStress
    private int iterations;
    private BufferedWriter mOutputWriter = null;
    private int mLastIteration = 0;
    private boolean mWifiOnlyFlag;

    public WifiApStress() {
        super(ConnectivityManagerTestActivity.class);
@@ -63,6 +64,7 @@ public class WifiApStress
        ConnectivityManagerStressTestRunner mRunner =
            (ConnectivityManagerStressTestRunner)getInstrumentation();
        iterations = mRunner.mSoftapIterations;
        mWifiOnlyFlag = mRunner.mWifiOnlyFlag;
        mAct.turnScreenOn();
    }

@@ -79,6 +81,10 @@ public class WifiApStress

    @LargeTest
    public void testWifiHotSpot() {
        if (mWifiOnlyFlag) {
            Log.v(TAG, this.getName() + " is excluded for wi-fi only test");
            return;
        }
        WifiConfiguration config = new WifiConfiguration();
        config.SSID = NETWORK_ID;
        config.allowedKeyManagement.set(KeyMgmt.WPA_PSK);
Loading