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

Commit 840a8c74 authored by Xia Wang's avatar Xia Wang Committed by Android Git Automerger
Browse files

am af19aef6: am ac561b8b: Merge "Add option to set frequency band" into jb-mr2-dev

* commit 'af19aef6':
  Add option to set frequency band
parents caa05bc1 af19aef6
Loading
Loading
Loading
Loading
+11 −5
Original line number Original line Diff line number Diff line
@@ -32,11 +32,7 @@
            </intent-filter>
            </intent-filter>
        </activity>
        </activity>
    </application>
    </application>
    <!-- default test runner -->

    <instrumentation android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.android.connectivitymanagertest"
        android:label="default instrumentation test runner"
    />
    <!--
    <!--
    This declares that this app uses the instrumentation test runner targeting
    This declares that this app uses the instrumentation test runner targeting
    the package of connectivitymanagertest. To run the tests use the command:
    the package of connectivitymanagertest. To run the tests use the command:
@@ -68,6 +64,16 @@
        android:label="Test runner for Connectivity Manager Stress Tests"
        android:label="Test runner for Connectivity Manager Stress Tests"
    />
    />


    <!-- run associate test:
      "adb shell am instrument -e ssid <ssid> -e password <password>
       -e ecurity-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
       -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
    -->
    <instrumentation android:name=".WifiAssociationTestRunner"
        android:targetPackage="com.android.connectivitymanagertest"
        android:label="Test runner for Wifi association test"
    />

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+88 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2013, 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.net.wifi.WifiManager;
import android.os.Bundle;
import android.test.InstrumentationTestRunner;
import android.test.InstrumentationTestSuite;
import android.util.Log;

import com.android.connectivitymanagertest.functional.WifiAssociationTest;

import junit.framework.TestSuite;
import junit.framework.Assert;

/**
 * Instrumentation Test Runner for wifi association test.
 * The instrument will set frequency band if it is necessary
 *
 * To run the association tests:
 *
 * adb shell am instrument -e ssid <ssid> -e password <password> \
 * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
 * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
 */
public class WifiAssociationTestRunner extends InstrumentationTestRunner {
    private static final String TAG = "WifiAssociationTestRunner";
    public int mBand;

    @Override
    public TestSuite getAllTests() {
        TestSuite suite = new InstrumentationTestSuite(this);
        suite.addTestSuite(WifiAssociationTest.class);
        return suite;
    }

    @Override
    public ClassLoader getLoader() {
        return WifiAssociationTestRunner.class.getClassLoader();
    }

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        Bundle arguments = icicle;
        String mFrequencyBand = arguments.getString("frequency-band");
        if (mFrequencyBand != null) {
            setFrequencyBand(mFrequencyBand);
        }
    }

    private void setFrequencyBand(String band) {
        WifiManager mWifiManager = (WifiManager)getContext().getSystemService(Context.WIFI_SERVICE);
        if (band.equals("2.4")) {
            Log.v(TAG, "set frequency band to 2.4");
            mBand = WifiManager.WIFI_FREQUENCY_BAND_2GHZ;
        } else if (band.equals("5.0")) {
            Log.v(TAG, "set frequency band to 5.0");
            mBand = WifiManager.WIFI_FREQUENCY_BAND_5GHZ;
        } else if (band.equals("auto")) {
            Log.v(TAG, "set frequency band to auto");
            mBand = WifiManager.WIFI_FREQUENCY_BAND_AUTO;
        } else {
            Assert.fail("invalid frequency band");
        }
        int currentFreq = mWifiManager.getFrequencyBand();
        if (mBand == currentFreq) {
            Log.v(TAG, "frequency band has been set");
            return;
        }
        mWifiManager.setFrequencyBand(mBand, true);
    }
}
+18 −7
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.connectivitymanagertest.functional;
package com.android.connectivitymanagertest.functional;


import com.android.connectivitymanagertest.ConnectivityManagerTestActivity;
import com.android.connectivitymanagertest.ConnectivityManagerTestActivity;
import com.android.connectivitymanagertest.WifiAssociationTestRunner;


import android.content.Context;
import android.content.Context;
import android.os.Bundle;
import android.os.Bundle;
@@ -27,22 +28,19 @@ import android.net.wifi.WifiConfiguration.AuthAlgorithm;
import android.net.wifi.WifiConfiguration.GroupCipher;
import android.net.wifi.WifiConfiguration.GroupCipher;
import android.net.wifi.WifiConfiguration.PairwiseCipher;
import android.net.wifi.WifiConfiguration.PairwiseCipher;
import android.net.wifi.WifiConfiguration.Protocol;
import android.net.wifi.WifiConfiguration.Protocol;
import android.net.wifi.WifiConfiguration.Status;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiManager;
import android.net.ConnectivityManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.NetworkInfo.State;
import android.net.NetworkInfo.State;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.suitebuilder.annotation.LargeTest;
import android.test.ActivityInstrumentationTestCase2;
import android.test.ActivityInstrumentationTestCase2;
import android.test.InstrumentationTestRunner;
import android.util.Log;
import android.util.Log;


/**
/**
 * Test Wi-Fi connection with different configuration
 * Test Wi-Fi connection with different configuration
 * To run this tests:
 * To run this tests:
 *     adb shell am instrument -e ssid <ssid> -e password <password>
 *  * adb shell am instrument -e ssid <ssid> -e password <password> \
 *         -e security-type <security-type>
 * -e security-type [OPEN|WEP64|WEP128|WPA_TKIP|WPA2_AES] -e frequency-band [2.4|5.0|auto]
 *         -w com.android.connectivitymanagertest/android.test.InstrumentationTestRunner
 * -w com.android.connectivitymanagertest/.WifiAssociationTestRunner"
 */
 */
public class WifiAssociationTest
public class WifiAssociationTest
    extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> {
    extends ActivityInstrumentationTestCase2<ConnectivityManagerTestActivity> {
@@ -51,6 +49,8 @@ public class WifiAssociationTest
    private String mSsid = null;
    private String mSsid = null;
    private String mPassword = null;
    private String mPassword = null;
    private String mSecurityType = null;
    private String mSecurityType = null;
    private String mFrequencyBand = null;
    private int mBand;
    private WifiManager mWifiManager = null;
    private WifiManager mWifiManager = null;


    enum SECURITY_TYPE {
    enum SECURITY_TYPE {
@@ -64,15 +64,18 @@ public class WifiAssociationTest
    @Override
    @Override
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        super.setUp();
        super.setUp();
        InstrumentationTestRunner mRunner = (InstrumentationTestRunner)getInstrumentation();
        WifiAssociationTestRunner mRunner = (WifiAssociationTestRunner)getInstrumentation();
        mWifiManager = (WifiManager) mRunner.getContext().getSystemService(Context.WIFI_SERVICE);
        mWifiManager = (WifiManager) mRunner.getContext().getSystemService(Context.WIFI_SERVICE);
        mAct = getActivity();
        mAct = getActivity();
        Bundle arguments = mRunner.getArguments();
        Bundle arguments = mRunner.getArguments();
        mSecurityType = arguments.getString("security-type");
        mSecurityType = arguments.getString("security-type");
        mSsid = arguments.getString("ssid");
        mSsid = arguments.getString("ssid");
        mPassword = arguments.getString("password");
        mPassword = arguments.getString("password");
        mFrequencyBand = arguments.getString("frequency-band");
        mBand = mRunner.mBand;
        assertNotNull("Security type is empty", mSecurityType);
        assertNotNull("Security type is empty", mSecurityType);
        assertNotNull("Ssid is empty", mSsid);
        assertNotNull("Ssid is empty", mSsid);
        validateFrequencyBand();
        // enable Wifi and verify wpa_supplicant is started
        // enable Wifi and verify wpa_supplicant is started
        assertTrue("enable Wifi failed", mAct.enableWifi());
        assertTrue("enable Wifi failed", mAct.enableWifi());
        sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT,
        sleep(2 * ConnectivityManagerTestActivity.SHORT_TIMEOUT,
@@ -88,6 +91,14 @@ public class WifiAssociationTest
        super.tearDown();
        super.tearDown();
    }
    }


    private void validateFrequencyBand() {
        if (mFrequencyBand != null) {
            int currentFreq = mWifiManager.getFrequencyBand();
            Log.v(TAG, "read frequency band: " + currentFreq);
            assertTrue("device frequency band is not set successfully", (mBand == currentFreq));
         }
    }

    /**
    /**
     * Connect to the provided Wi-Fi network
     * Connect to the provided Wi-Fi network
     * @param config is the network configuration
     * @param config is the network configuration