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

Commit 7d83f602 authored by Xia Wang's avatar Xia Wang Committed by Android Git Automerger
Browse files

am 928ec5e0: Merge "Modify connectivity manager test suite so that it can be...

am 928ec5e0: Merge "Modify connectivity manager test suite so that it can be run on Wi-Fi only device." into honeycomb

* commit '928ec5e0':
  Modify connectivity manager test suite so that it can be run on Wi-Fi only device.
parents d75ff0e2 928ec5e0
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 {
@@ -128,8 +131,8 @@ public class ConnectivityManagerMobileTest
        // As Wifi stays in DISCONNETED, Mobile statys in CONNECTED,
        // 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);
@@ -162,10 +165,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);
@@ -179,8 +185,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)) {
@@ -189,6 +197,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: " +
@@ -196,6 +205,7 @@ public class ConnectivityManagerMobileTest
                assertTrue(false);
            }
        }
    }

    // Test case 3: connect to Wifi with known AP
    @LargeTest
@@ -225,16 +235,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);
@@ -246,8 +261,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)) {
@@ -277,11 +294,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);
@@ -291,8 +311,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)) {
@@ -301,6 +323,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: " +
@@ -308,6 +331,7 @@ public class ConnectivityManagerMobileTest
                assertTrue(false);
            }
        }
    }

    // Test case 5: test connectivity from 3G to airplane mode, then to 3G again
    @LargeTest
@@ -377,14 +401,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);
@@ -402,12 +428,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);
    }

@@ -452,8 +480,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)) {