FileDocCategorySizeDatePackage
BluetoothStressTest.javaAPI DocAndroid 5.1 API15571Thu Mar 12 22:22:12 GMT 2015android.bluetooth

BluetoothStressTest

public class BluetoothStressTest extends android.test.InstrumentationTestCase
Stress test suite for Bluetooth related functions. Includes tests for enabling/disabling bluetooth, enabling/disabling discoverable mode, starting/stopping scans, connecting/disconnecting to HFP, A2DP, HID, PAN profiles, and verifying that remote connections/disconnections occur for the PAN profile.

This test suite uses {@link android.bluetooth.BluetoothTestRunner} to for parameters such as the number of iterations and the addresses of remote Bluetooth devices.

Fields Summary
private static final String
TAG
private static final String
OUTPUT_FILE
private static final long
SCO_SLEEP_TIME
The amount of time to sleep between issuing start/stop SCO in ms.
private BluetoothTestUtils
mTestUtils
Constructors Summary
Methods Summary
protected voidsetUp()


    
         
        super.setUp();

        Context context = getInstrumentation().getTargetContext();
        mTestUtils = new BluetoothTestUtils(context, TAG, OUTPUT_FILE);
    
private voidsleep(long time)

        try {
            Thread.sleep(time);
        } catch (InterruptedException e) {
        }
    
protected voidtearDown()

        super.tearDown();

        mTestUtils.close();
    
public voidtestAcceptPair()
Stress test for accepting a pairing request and unpairing with a remote device.

In this test, the local device waits for a pairing request from a remote device. It accepts the request and then unpairs after the paring has successfully completed.

        int iterations = BluetoothTestRunner.sPairIterations;
        if (iterations == 0) {
            return;
        }
        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("acceptPair iteration " + (i + 1) + " of " + iterations);
            mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                    BluetoothTestRunner.sDevicePairPin);
            mTestUtils.unpair(adapter, device);
        }
        mTestUtils.disable(adapter);
    
public voidtestConnectA2dp()
Stress test for connecting and disconnecting with an A2DP source.

In this test, the local device plays the role of an A2DP sink, and initiates connections and disconnections with an A2DP source.

        int iterations = BluetoothTestRunner.sConnectA2dpIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);
        mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.A2DP, null);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("connectA2dp iteration " + (i + 1) + " of " + iterations);
            mTestUtils.connectProfile(adapter, device, BluetoothProfile.A2DP,
                    String.format("connectA2dp(device=%s)", device));
            mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.A2DP,
                    String.format("disconnectA2dp(device=%s)", device));
        }

        mTestUtils.unpair(adapter, device);
        mTestUtils.disable(adapter);
    
public voidtestConnectHeadset()
Stress test for connecting and disconnecting the HFP with a hands free device.

In this test, the local device plays the role of an HFP audio gateway, and initiates connections and disconnections with a hands free device.

        int iterations = BluetoothTestRunner.sConnectHeadsetIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);
        mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("connectHeadset iteration " + (i + 1) + " of " + iterations);
            mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET,
                    String.format("connectHeadset(device=%s)", device));
            mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET,
                    String.format("disconnectHeadset(device=%s)", device));
        }

        mTestUtils.unpair(adapter, device);
        mTestUtils.disable(adapter);
    
public voidtestConnectInput()
Stress test for connecting and disconnecting with a HID device.

In this test, the local device plays the role of a HID host, and initiates connections and disconnections with a HID device.

        int iterations = BluetoothTestRunner.sConnectInputIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);
        mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE, null);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("connectInput iteration " + (i + 1) + " of " + iterations);
            mTestUtils.connectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE,
                    String.format("connectInput(device=%s)", device));
            mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.INPUT_DEVICE,
                    String.format("disconnectInput(device=%s)", device));
        }

        mTestUtils.unpair(adapter, device);
        mTestUtils.disable(adapter);
    
public voidtestConnectPan()
Stress test for connecting and disconnecting with a PAN NAP.

In this test, the local device plays the role of a PANU, and initiates connections and disconnections with a NAP.

        int iterations = BluetoothTestRunner.sConnectPanIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("connectPan iteration " + (i + 1) + " of " + iterations);
            mTestUtils.connectPan(adapter, device);
            mTestUtils.disconnectPan(adapter, device);
        }

        mTestUtils.unpair(adapter, device);
        mTestUtils.disable(adapter);
    
public voidtestDiscoverable()
Stress test for putting the device in and taking the device out of discoverable mode.

        int iterations = BluetoothTestRunner.sDiscoverableIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.undiscoverable(adapter);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("discoverable iteration " + (i + 1) + " of " + iterations);
            mTestUtils.discoverable(adapter);
            mTestUtils.undiscoverable(adapter);
        }

        mTestUtils.disable(adapter);
    
public voidtestEnable()
Stress test for enabling and disabling Bluetooth.

        int iterations = BluetoothTestRunner.sEnableIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        mTestUtils.disable(adapter);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("enable iteration " + (i + 1) + " of " + iterations);
            mTestUtils.enable(adapter);
            mTestUtils.disable(adapter);
        }
    
public voidtestEnablePan()
Stress test for enabling and disabling the PAN NAP profile.

        int iterations = BluetoothTestRunner.sEnablePanIterations;
        if (iterations == 0) {
            return;
        }
        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.disablePan(adapter);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("testEnablePan iteration " + (i + 1) + " of "
                    + iterations);
            mTestUtils.enablePan(adapter);
            mTestUtils.disablePan(adapter);
        }

        mTestUtils.disable(adapter);
    
public voidtestIncomingPanConnection()
Stress test for verifying a PANU connecting and disconnecting with the device.

In this test, the local device plays the role of a NAP which a remote PANU connects and disconnects from.

        int iterations = BluetoothTestRunner.sConnectPanIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.disablePan(adapter);
        mTestUtils.enablePan(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.acceptPair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("incomingPanConnection iteration " + (i + 1) + " of "
                    + iterations);
            mTestUtils.incomingPanConnection(adapter, device);
            mTestUtils.incomingPanDisconnection(adapter, device);
        }

        mTestUtils.unpair(adapter, device);
        mTestUtils.disablePan(adapter);
        mTestUtils.disable(adapter);
    
public voidtestPair()
Stress test for pairing and unpairing with a remote device.

In this test, the local device initiates pairing with a remote device, and then unpairs with the device after the pairing has successfully completed.

        int iterations = BluetoothTestRunner.sPairIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("pair iteration " + (i + 1) + " of " + iterations);
            mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                    BluetoothTestRunner.sDevicePairPin);
            mTestUtils.unpair(adapter, device);
        }
        mTestUtils.disable(adapter);
    
public voidtestScan()
Stress test for starting and stopping Bluetooth scans.

        int iterations = BluetoothTestRunner.sScanIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.stopScan(adapter);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("scan iteration " + (i + 1) + " of " + iterations);
            mTestUtils.startScan(adapter);
            mTestUtils.stopScan(adapter);
        }

        mTestUtils.disable(adapter);
    
public voidtestStartStopSco()
Stress test for verifying that AudioManager can open and close SCO connections.

In this test, a HSP connection is opened with an external headset and the SCO connection is repeatibly opened and closed.

        int iterations = BluetoothTestRunner.sStartStopScoIterations;
        if (iterations == 0) {
            return;
        }

        BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
        BluetoothDevice device = adapter.getRemoteDevice(BluetoothTestRunner.sDeviceAddress);
        mTestUtils.disable(adapter);
        mTestUtils.enable(adapter);
        mTestUtils.unpair(adapter, device);
        mTestUtils.pair(adapter, device, BluetoothTestRunner.sDevicePairPasskey,
                BluetoothTestRunner.sDevicePairPin);
        mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);
        mTestUtils.connectProfile(adapter, device, BluetoothProfile.HEADSET, null);
        mTestUtils.stopSco(adapter, device);

        for (int i = 0; i < iterations; i++) {
            mTestUtils.writeOutput("startStopSco iteration " + (i + 1) + " of " + iterations);
            mTestUtils.startSco(adapter, device);
            sleep(SCO_SLEEP_TIME);
            mTestUtils.stopSco(adapter, device);
            sleep(SCO_SLEEP_TIME);
        }

        mTestUtils.disconnectProfile(adapter, device, BluetoothProfile.HEADSET, null);
        mTestUtils.unpair(adapter, device);
        mTestUtils.disable(adapter);