/* * 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 android.bluetooth; import android.os.Bundle; import android.test.InstrumentationTestRunner; import android.test.InstrumentationTestSuite; import android.util.Log; import junit.framework.TestSuite; /** * Instrumentation test runner for Bluetooth tests. *
* To run: *
* {@code
* adb shell am instrument \
* [-e enable_iterations ] \
* [-e discoverable_iterations ] \
* [-e scan_iterations ] \
* [-e enable_pan_iterations ] \
* [-e pair_iterations ] \
* [-e connect_a2dp_iterations ] \
* [-e connect_headset_iterations ] \
* [-e connect_input_iterations ] \
* [-e connect_pan_iterations ] \
* [-e start_stop_sco_iterations ] \
* [-e mce_set_message_status_iterations ] \
* [-e pair_address ] \
* [-e headset_address ] \
* [-e a2dp_address ] \
* [-e input_address ] \
* [-e pan_address ] \
* [-e pair_pin ] \
* [-e pair_passkey ] \
* -w com.android.bluetooth.tests/android.bluetooth.BluetoothTestRunner
* }
*
*/
public class BluetoothTestRunner extends InstrumentationTestRunner {
private static final String TAG = "BluetoothTestRunner";
public static int sEnableIterations = 100;
public static int sDiscoverableIterations = 1000;
public static int sScanIterations = 1000;
public static int sEnablePanIterations = 1000;
public static int sPairIterations = 100;
public static int sConnectHeadsetIterations = 100;
public static int sConnectA2dpIterations = 100;
public static int sConnectInputIterations = 100;
public static int sConnectPanIterations = 100;
public static int sStartStopScoIterations = 100;
public static int sMceSetMessageStatusIterations = 100;
public static String sDeviceAddress = "";
public static byte[] sDevicePairPin = {'1', '2', '3', '4'};
public static int sDevicePairPasskey = 123456;
@Override
public TestSuite getAllTests() {
TestSuite suite = new InstrumentationTestSuite(this);
suite.addTestSuite(BluetoothStressTest.class);
return suite;
}
@Override
public ClassLoader getLoader() {
return BluetoothTestRunner.class.getClassLoader();
}
@Override
public void onCreate(Bundle arguments) {
String val = arguments.getString("enable_iterations");
if (val != null) {
try {
sEnableIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("discoverable_iterations");
if (val != null) {
try {
sDiscoverableIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("scan_iterations");
if (val != null) {
try {
sScanIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("enable_pan_iterations");
if (val != null) {
try {
sEnablePanIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("pair_iterations");
if (val != null) {
try {
sPairIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("connect_a2dp_iterations");
if (val != null) {
try {
sConnectA2dpIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("connect_headset_iterations");
if (val != null) {
try {
sConnectHeadsetIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("connect_input_iterations");
if (val != null) {
try {
sConnectInputIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("connect_pan_iterations");
if (val != null) {
try {
sConnectPanIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("start_stop_sco_iterations");
if (val != null) {
try {
sStartStopScoIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("mce_set_message_status_iterations");
if (val != null) {
try {
sMceSetMessageStatusIterations = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
val = arguments.getString("device_address");
if (val != null) {
sDeviceAddress = val;
}
val = arguments.getString("device_pair_pin");
if (val != null) {
byte[] pin = BluetoothDevice.convertPinToBytes(val);
if (pin != null) {
sDevicePairPin = pin;
}
}
val = arguments.getString("device_pair_passkey");
if (val != null) {
try {
sDevicePairPasskey = Integer.parseInt(val);
} catch (NumberFormatException e) {
// Invalid argument, fall back to default value
}
}
Log.i(TAG, String.format("enable_iterations=%d", sEnableIterations));
Log.i(TAG, String.format("discoverable_iterations=%d", sDiscoverableIterations));
Log.i(TAG, String.format("scan_iterations=%d", sScanIterations));
Log.i(TAG, String.format("pair_iterations=%d", sPairIterations));
Log.i(TAG, String.format("connect_a2dp_iterations=%d", sConnectA2dpIterations));
Log.i(TAG, String.format("connect_headset_iterations=%d", sConnectHeadsetIterations));
Log.i(TAG, String.format("connect_input_iterations=%d", sConnectInputIterations));
Log.i(TAG, String.format("connect_pan_iterations=%d", sConnectPanIterations));
Log.i(TAG, String.format("start_stop_sco_iterations=%d", sStartStopScoIterations));
Log.i(TAG, String.format("device_address=%s", sDeviceAddress));
Log.i(TAG, String.format("device_pair_pin=%s", new String(sDevicePairPin)));
Log.i(TAG, String.format("device_pair_passkey=%d", sDevicePairPasskey));
// Call onCreate last since we want to set the static variables first.
super.onCreate(arguments);
}
}