Merge \"Update enable/disable code to reduce flakiness\" into nyc-mr1-dev
am: a2da20d334
Change-Id: Icf4936922afa7d5fd8cf309a5205b3dd6bfe95cc
This commit is contained in:
@@ -425,38 +425,40 @@ public class BluetoothTestUtils extends Assert {
|
|||||||
* @param adapter The BT adapter.
|
* @param adapter The BT adapter.
|
||||||
*/
|
*/
|
||||||
public void enable(BluetoothAdapter adapter) {
|
public void enable(BluetoothAdapter adapter) {
|
||||||
int mask = (BluetoothReceiver.STATE_TURNING_ON_FLAG | BluetoothReceiver.STATE_ON_FLAG
|
|
||||||
| BluetoothReceiver.SCAN_MODE_CONNECTABLE_FLAG);
|
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
BluetoothReceiver receiver = getBluetoothReceiver(mask);
|
|
||||||
|
|
||||||
writeOutput("Enabling Bluetooth adapter.");
|
writeOutput("Enabling Bluetooth adapter.");
|
||||||
assertFalse(adapter.isEnabled());
|
assertFalse(adapter.isEnabled());
|
||||||
assertTrue(adapter.enable());
|
int btState = adapter.getState();
|
||||||
|
final Semaphore completionSemaphore = new Semaphore(0);
|
||||||
int state = BluetoothAdapter.STATE_OFF;
|
final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||||
long s = System.currentTimeMillis();
|
@Override
|
||||||
while (System.currentTimeMillis() - s < ENABLE_DISABLE_TIMEOUT) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
state = adapter.getState();
|
final String action = intent.getAction();
|
||||||
if (state == BluetoothAdapter.STATE_ON
|
if (!BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
|
||||||
&& (receiver.getFiredFlags() & mask) == mask) {
|
return;
|
||||||
assertTrue(adapter.isEnabled());
|
}
|
||||||
long finish = receiver.getCompletedTime();
|
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
|
||||||
if (start != -1 && finish != -1) {
|
BluetoothAdapter.ERROR);
|
||||||
writeOutput(String.format("enable() completed in %d ms", (finish - start)));
|
if (state == BluetoothAdapter.STATE_ON) {
|
||||||
} else {
|
completionSemaphore.release();
|
||||||
writeOutput("enable() completed");
|
|
||||||
}
|
}
|
||||||
removeReceiver(receiver);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
sleep(POLL_TIME);
|
};
|
||||||
}
|
|
||||||
|
|
||||||
int firedFlags = receiver.getFiredFlags();
|
final IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
|
||||||
removeReceiver(receiver);
|
mContext.registerReceiver(receiver, filter);
|
||||||
fail(String.format("enable() timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
|
assertTrue(adapter.enable());
|
||||||
state, BluetoothAdapter.STATE_ON, firedFlags, mask));
|
boolean success = false;
|
||||||
|
try {
|
||||||
|
success = completionSemaphore.tryAcquire(ENABLE_DISABLE_TIMEOUT, TimeUnit.MILLISECONDS);
|
||||||
|
writeOutput(String.format("enable() completed in 0 ms"));
|
||||||
|
} catch (final InterruptedException e) {
|
||||||
|
// This should never happen but just in case it does, the test will fail anyway.
|
||||||
|
}
|
||||||
|
mContext.unregisterReceiver(receiver);
|
||||||
|
if (!success) {
|
||||||
|
fail(String.format("enable() timeout: state=%d (expected %d)", btState,
|
||||||
|
BluetoothAdapter.STATE_ON));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -466,38 +468,40 @@ public class BluetoothTestUtils extends Assert {
|
|||||||
* @param adapter The BT adapter.
|
* @param adapter The BT adapter.
|
||||||
*/
|
*/
|
||||||
public void disable(BluetoothAdapter adapter) {
|
public void disable(BluetoothAdapter adapter) {
|
||||||
int mask = (BluetoothReceiver.STATE_TURNING_OFF_FLAG | BluetoothReceiver.STATE_OFF_FLAG
|
|
||||||
| BluetoothReceiver.SCAN_MODE_NONE_FLAG);
|
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
BluetoothReceiver receiver = getBluetoothReceiver(mask);
|
|
||||||
|
|
||||||
writeOutput("Disabling Bluetooth adapter.");
|
writeOutput("Disabling Bluetooth adapter.");
|
||||||
assertTrue(adapter.isEnabled());
|
assertTrue(adapter.isEnabled());
|
||||||
assertTrue(adapter.disable());
|
int btState = adapter.getState();
|
||||||
|
final Semaphore completionSemaphore = new Semaphore(0);
|
||||||
int state = BluetoothAdapter.STATE_OFF;
|
final BroadcastReceiver receiver = new BroadcastReceiver() {
|
||||||
long s = System.currentTimeMillis();
|
@Override
|
||||||
while (System.currentTimeMillis() - s < ENABLE_DISABLE_TIMEOUT) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
state = adapter.getState();
|
final String action = intent.getAction();
|
||||||
if (state == BluetoothAdapter.STATE_OFF
|
if (!BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) {
|
||||||
&& (receiver.getFiredFlags() & mask) == mask) {
|
return;
|
||||||
assertFalse(adapter.isEnabled());
|
}
|
||||||
long finish = receiver.getCompletedTime();
|
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
|
||||||
if (start != -1 && finish != -1) {
|
BluetoothAdapter.ERROR);
|
||||||
writeOutput(String.format("disable() completed in %d ms", (finish - start)));
|
if (state == BluetoothAdapter.STATE_OFF) {
|
||||||
} else {
|
completionSemaphore.release();
|
||||||
writeOutput("disable() completed");
|
|
||||||
}
|
}
|
||||||
removeReceiver(receiver);
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
sleep(POLL_TIME);
|
};
|
||||||
}
|
|
||||||
|
|
||||||
int firedFlags = receiver.getFiredFlags();
|
final IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_STATE_CHANGED);
|
||||||
removeReceiver(receiver);
|
mContext.registerReceiver(receiver, filter);
|
||||||
fail(String.format("disable() timeout: state=%d (expected %d), flags=0x%x (expected 0x%x)",
|
assertTrue(adapter.disable());
|
||||||
state, BluetoothAdapter.STATE_OFF, firedFlags, mask));
|
boolean success = false;
|
||||||
|
try {
|
||||||
|
success = completionSemaphore.tryAcquire(ENABLE_DISABLE_TIMEOUT, TimeUnit.MILLISECONDS);
|
||||||
|
writeOutput(String.format("disable() completed in 0 ms"));
|
||||||
|
} catch (final InterruptedException e) {
|
||||||
|
// This should never happen but just in case it does, the test will fail anyway.
|
||||||
|
}
|
||||||
|
mContext.unregisterReceiver(receiver);
|
||||||
|
if (!success) {
|
||||||
|
fail(String.format("disable() timeout: state=%d (expected %d)", btState,
|
||||||
|
BluetoothAdapter.STATE_OFF));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user