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

Commit b97435c9 authored by Xia Wang's avatar Xia Wang
Browse files

Modify connectivity manager test suite so that it can be run on Wi-Fi

only device.

DO NOT MERGE

bug id: 3511242

Change-Id: I7dc6d30793cf679b53af571f58b7405ab9e33299
parent 190586b7
Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.connectivitymanagertest;
import android.os.Bundle;
import android.test.InstrumentationTestRunner;
import android.test.InstrumentationTestSuite;

import com.android.connectivitymanagertest.stress.WifiApStress;
import com.android.connectivitymanagertest.stress.WifiStressTest;

@@ -44,8 +45,18 @@ public class ConnectivityManagerStressTestRunner extends InstrumentationTestRunn
    @Override
    public TestSuite getAllTests() {
        TestSuite suite = new InstrumentationTestSuite(this);
        if (!UtilHelper.isWifiOnly()) {
            suite.addTestSuite(WifiApStress.class);
            suite.addTestSuite(WifiStressTest.class);
        } else {
            // create a new test suite
            suite.setName("WifiOnlyStressTests");
            String[] methodNames = {"testWifiScanning"};
            Class<WifiStressTest> testClass = WifiStressTest.class;
            for (String method: methodNames) {
                suite.addTest(TestSuite.createTest(testClass, method));
            }
        }
        return suite;
    }

+16 −4
Original line number Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.connectivitymanagertest;
import android.os.Bundle;
import android.test.InstrumentationTestRunner;
import android.test.InstrumentationTestSuite;
import android.util.Log;

import com.android.connectivitymanagertest.functional.ConnectivityManagerMobileTest;
import com.android.connectivitymanagertest.functional.WifiConnectionTest;

@@ -35,10 +35,24 @@ import junit.framework.TestSuite;
 */

public class ConnectivityManagerTestRunner extends InstrumentationTestRunner {
    public String TEST_SSID = null;

    @Override
    public TestSuite getAllTests() {
        TestSuite suite = new InstrumentationTestSuite(this);
        if (!UtilHelper.isWifiOnly()) {
            suite.addTestSuite(ConnectivityManagerMobileTest.class);
        } else {
            // create a new test suite
            suite.setName("ConnectivityManagerWifiOnlyFunctionalTests");
            String[] methodNames = {"testConnectToWifi", "testConnectToWifWithKnownAP",
                    "testDisconnectWifi", "testDataConnectionOverAMWithWifi",
                    "testDataConnectionWithWifiToAMToWifi", "testWifiStateChange"};
            Class<ConnectivityManagerMobileTest> testClass = ConnectivityManagerMobileTest.class;
            for (String method: methodNames) {
                suite.addTest(TestSuite.createTest(testClass, method));
            }
        }
        suite.addTestSuite(WifiConnectionTest.class);
        return suite;
    }
@@ -56,6 +70,4 @@ public class ConnectivityManagerTestRunner extends InstrumentationTestRunner {
            TEST_SSID = testSSID;
        }
    }

    public String TEST_SSID = null;
}
+27 −0
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.os.SystemProperties;

public class UtilHelper {
    public static boolean isWifiOnly() {
        return "wifi-only".equals(SystemProperties.get("ro.carrier"));
    }


}
+89 −59
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.connectivitymanagertest.functional;

import com.android.connectivitymanagertest.ConnectivityManagerTestActivity;
import com.android.connectivitymanagertest.UtilHelper;

import android.content.Intent;
import android.content.Context;
@@ -48,7 +49,7 @@ public class ConnectivityManagerMobileTest
    private WakeLock wl;

    public ConnectivityManagerMobileTest() {
        super(PKG_NAME, ConnectivityManagerTestActivity.class);
        super(ConnectivityManagerTestActivity.class);
    }

    @Override
@@ -68,6 +69,7 @@ public class ConnectivityManagerMobileTest
            Log.v(LOG_TAG, "airplane is not disabled, disable it.");
            cmActivity.setAirplaneMode(getInstrumentation().getContext(), false);
        }
        if (!UtilHelper.isWifiOnly()) {
            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,
@@ -77,6 +79,7 @@ public class ConnectivityManagerMobileTest
                fail("Device is not connected to Mobile, setUp failed");
            }
        }
    }

    @Override
    public void tearDown() throws Exception {
@@ -118,8 +121,8 @@ public class ConnectivityManagerMobileTest
        // As Wifi stays in DISCONNETED, the connectivity manager will not broadcast
        // any network connectivity event for Wifi
        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(),
                NetworkState.DO_NOTHING, State.CONNECTED);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                networkInfo.getState(), NetworkState.DO_NOTHING, State.CONNECTED);
        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(),
                NetworkState.DO_NOTHING, State.DISCONNECTED);
@@ -152,10 +155,13 @@ public class ConnectivityManagerMobileTest
    @LargeTest
    public void testConnectToWifi() {
        assertNotNull("SSID is null", TEST_ACCESS_POINT);
        NetworkInfo networkInfo;
        if (!UtilHelper.isWifiOnly()) {
            //Prepare for connectivity verification
        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE, networkInfo.getState(),
                NetworkState.TO_DISCONNECTION, State.DISCONNECTED);
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                    networkInfo.getState(), NetworkState.TO_DISCONNECTION, State.DISCONNECTED);
        }
        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(),
                NetworkState.TO_CONNECTION, State.CONNECTED);
@@ -169,8 +175,10 @@ public class ConnectivityManagerMobileTest
        Log.v(LOG_TAG, "wifi state is enabled");
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        // validate states
        if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) {
@@ -179,6 +187,7 @@ public class ConnectivityManagerMobileTest
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue(false);
        }
        if (!UtilHelper.isWifiOnly()) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                Log.v(LOG_TAG, "Mobile state transition validation failed.");
                Log.v(LOG_TAG, "reason: " +
@@ -186,6 +195,7 @@ public class ConnectivityManagerMobileTest
                assertTrue(false);
            }
        }
    }

    // Test case 3: connect to Wifi with known AP
    @LargeTest
@@ -215,16 +225,21 @@ public class ConnectivityManagerMobileTest
        // Wait for the Wifi state to be DISABLED
        assertTrue(cmActivity.waitForWifiState(WifiManager.WIFI_STATE_DISABLED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI,
                State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        NetworkInfo networkInfo;
        if (!UtilHelper.isWifiOnly()) {
            //Prepare for connectivity state verification
        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                                                  networkInfo.getState(), NetworkState.DO_NOTHING,
                                                  State.DISCONNECTED);
        }
        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(),
                NetworkState.TO_CONNECTION, State.CONNECTED);
@@ -236,8 +251,10 @@ 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));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        // validate wifi states
        if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) {
@@ -267,11 +284,14 @@ public class ConnectivityManagerMobileTest
            Log.v(LOG_TAG, "exception: " + e.toString());
        }

        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo networkInfo;
        if (!UtilHelper.isWifiOnly()) {
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                                                  networkInfo.getState(),
                                                  NetworkState.TO_CONNECTION,
                                                  State.CONNECTED);
        }
        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(),
                NetworkState.TO_DISCONNECTION, State.DISCONNECTED);
@@ -281,8 +301,10 @@ public class ConnectivityManagerMobileTest

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.CONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.CONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        // validate states
        if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) {
@@ -291,6 +313,7 @@ public class ConnectivityManagerMobileTest
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue(false);
        }
        if (!UtilHelper.isWifiOnly()) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                Log.v(LOG_TAG, "Mobile state transition validation failed.");
                Log.v(LOG_TAG, "reason: " +
@@ -298,6 +321,7 @@ public class ConnectivityManagerMobileTest
                assertTrue(false);
            }
        }
    }

    // Test case 5: test connectivity from 3G to airplane mode, then to 3G again
    @LargeTest
@@ -367,14 +391,16 @@ public class ConnectivityManagerMobileTest
        // Eanble airplane mode
        cmActivity.setAirplaneMode(getInstrumentation().getContext(), true);

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED,
                ConnectivityManagerTestActivity.LONG_TIMEOUT));

        NetworkInfo networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
        NetworkInfo networkInfo;
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
            networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
            cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_MOBILE,
                                                  networkInfo.getState(),
                                                  NetworkState.DO_NOTHING,
                                                  State.DISCONNECTED);
        }
        networkInfo = cmActivity.mCM.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
        cmActivity.setStateTransitionCriteria(ConnectivityManager.TYPE_WIFI, networkInfo.getState(),
                                              NetworkState.TO_CONNECTION, State.CONNECTED);
@@ -392,12 +418,14 @@ public class ConnectivityManagerMobileTest
                    cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_WIFI));
            assertTrue("State validation failed", false);
        }
        if (!UtilHelper.isWifiOnly()) {
            if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_MOBILE)) {
                Log.v(LOG_TAG, "state validation for Mobile failed");
                Log.v(LOG_TAG, "reason: " +
                        cmActivity.getTransitionFailureReason(ConnectivityManager.TYPE_MOBILE));
                assertTrue("state validation failed", false);
            }
        }
        cmActivity.setAirplaneMode(getInstrumentation().getContext(), false);
    }

@@ -442,8 +470,10 @@ public class ConnectivityManagerMobileTest

        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_WIFI, State.CONNECTED,
                            ConnectivityManagerTestActivity.LONG_TIMEOUT));
        assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE, State.DISCONNECTED,
                            ConnectivityManagerTestActivity.LONG_TIMEOUT));
        if (!UtilHelper.isWifiOnly()) {
            assertTrue(cmActivity.waitForNetworkState(ConnectivityManager.TYPE_MOBILE,
                    State.DISCONNECTED, ConnectivityManagerTestActivity.LONG_TIMEOUT));
        }

        // validate the state transition
        if (!cmActivity.validateNetworkStates(ConnectivityManager.TYPE_WIFI)) {