146 lines
5.2 KiB
Markdown
146 lines
5.2 KiB
Markdown
# Nearby Mainline Fast Pair end-to-end tests
|
|
|
|
This document refers to the Mainline Fast Pair project source code in the
|
|
packages/modules/Connectivity/nearby. This is not an officially supported Google
|
|
product.
|
|
|
|
## About the Fast Pair Project
|
|
|
|
The Connectivity Nearby mainline module is created in the Android T to host
|
|
Better Together related functionality. Fast Pair is one of the main
|
|
functionalities to provide seamless onboarding and integrated experiences for
|
|
peripheral devices (for example, headsets like Google Pixel Buds) in the Nearby
|
|
component.
|
|
|
|
## Fully automated test
|
|
|
|
### Prerequisites
|
|
|
|
The fully automated end-to-end (e2e) tests are host-driven tests (which means
|
|
test logics are in the host test scripts) using Mobly runner in Python. The two
|
|
phones are installed with the test snippet
|
|
`NearbyMultiDevicesClientsSnippets.apk` in the test time to let the host scripts
|
|
control both sides for testing. Here's the overview of the test environment.
|
|
|
|
Workstation (runs Python test scripts and controls Android devices through USB
|
|
ADB) \
|
|
├── Phone 1: As Fast Pair seeker role, to scan, pair Fast Pair devices nearby \
|
|
└── Phone 2: As Fast Pair provider role, to simulate a Fast Pair device (for
|
|
example, a Bluetooth headset)
|
|
|
|
Note: These two phones need to be physically within 0.3 m of each other.
|
|
|
|
### Prepare Phone 1 (Fast Pair seeker role)
|
|
|
|
This is the phone to scan/pair Fast Pair devices nearby using the Nearby
|
|
Mainline module. Test it by flashing with the Android T ROM.
|
|
|
|
### Prepare Phone 2 (Fast Pair provider role)
|
|
|
|
This is the phone to simulate a Fast Pair device (for example, a Bluetooth
|
|
headset). Flash it with a customized ROM with the following changes:
|
|
|
|
* Adjust Bluetooth profile configurations. \
|
|
The Fast Pair provider simulator is an opposite role to the seeker. It needs
|
|
to enable/disable the following Bluetooth profile:
|
|
* Disable A2DP (profile_supported_a2dp)
|
|
* Disable the AVRCP controller (profile_supported_avrcp_controller)
|
|
* Enable A2DP sink (profile_supported_a2dp_sink)
|
|
* Enable the HFP client connection service (profile_supported_hfpclient,
|
|
hfp_client_connection_service_enabled)
|
|
* Enable the AVRCP target (profile_supported_avrcp_target)
|
|
* Enable the automatic audio focus request
|
|
(a2dp_sink_automatically_request_audio_focus)
|
|
* Adjust Bluetooth TX power limitation in Bluetooth module and disable the
|
|
Fast Pair in Google Play service (aka GMS)
|
|
|
|
```shell
|
|
adb root
|
|
adb shell am broadcast \
|
|
-a 'com.google.android.gms.phenotype.FLAG_OVERRIDE' \
|
|
--es package "com.google.android.gms.nearby" \
|
|
--es user "\*" \
|
|
--esa flags "enabled" \
|
|
--esa types "boolean" \
|
|
--esa values "false" \
|
|
com.google.android.gms
|
|
```
|
|
|
|
### Running tests
|
|
|
|
To run the tests, enter:
|
|
|
|
```shell
|
|
atest -v CtsNearbyMultiDevicesTestSuite
|
|
```
|
|
|
|
## Manual testing the seeker side with headsets
|
|
|
|
Use this testing with headsets such as Google Pixel buds.
|
|
|
|
The `FastPairTestDataProviderService.apk` is a run-time configurable Fast Pair
|
|
data provider service (`FastPairDataProviderService`):
|
|
|
|
`packages/modules/Connectivity/nearby/tests/multidevices/clients/test_service/fastpair_seeker_data_provider`
|
|
|
|
It has a test data manager(`FastPairTestDataManager`) to receive intent
|
|
broadcasts to add or clear the test data cache (`FastPairTestDataCache`). This
|
|
cache provides the data to return to the Fast Pair module for onXXX calls (for
|
|
example, `onLoadFastPairAntispoofKeyDeviceMetadata`) so you can feed the
|
|
metadata for your device.
|
|
|
|
Here are some sample uses:
|
|
|
|
* Send FastPairAntispoofKeyDeviceMetadata for PixelBuds-A to
|
|
FastPairTestDataCache \
|
|
`./fast_pair_data_provider_shell.sh -m=718c17
|
|
-a=../test_data/fastpair/pixelbuds-a_antispoofkey_devicemeta_json.txt`
|
|
* Send FastPairAccountDevicesMetadata for PixelBuds-A to FastPairTestDataCache
|
|
\
|
|
`./fast_pair_data_provider_shell.sh
|
|
-d=../test_data/fastpair/pixelbuds-a_account_devicemeta_json.txt`
|
|
* Send FastPairAntispoofKeyDeviceMetadata for Provider Simulator to
|
|
FastPairTestDataCache \
|
|
`./fast_pair_data_provider_shell.sh -m=00000c
|
|
-a=../test_data/fastpair/simulator_antispoofkey_devicemeta_json.txt`
|
|
* Send FastPairAccountDevicesMetadata for Provider Simulator to
|
|
FastPairTestDataCache \
|
|
`./fast_pair_data_provider_shell.sh
|
|
-d=../test_data/fastpair/simulator_account_devicemeta_json.txt`
|
|
* Clear FastPairTestDataCache \
|
|
`./fast_pair_data_provider_shell.sh -c`
|
|
|
|
See
|
|
[host/tool/fast_pair_data_provider_shell.sh](host/tool/fast_pair_data_provider_shell.sh)
|
|
for more documentation.
|
|
|
|
To install the data provider as system private app, consider remounting the
|
|
system partition:
|
|
|
|
```
|
|
adb root && adb remount
|
|
```
|
|
|
|
Push it in:
|
|
|
|
```
|
|
adb push ${ANDROID_PRODUCT_OUT}/system/app/NearbyFastPairSeekerDataProvider
|
|
/system/priv-app/
|
|
```
|
|
|
|
Then reboot:
|
|
|
|
```
|
|
adb reboot
|
|
```
|
|
|
|
## Manual testing the seeker side with provider simulator app
|
|
|
|
The `NearbyFastPairProviderSimulatorApp.apk` is a simple Android app to let you
|
|
control the state of the Fast Pair provider simulator. Install this app on phone
|
|
2 (Fast Pair provider role) to work correctly.
|
|
|
|
See
|
|
[clients/test_support/fastpair_provider/simulator_app/Android.bp](clients/test_support/fastpair_provider/simulator_app/Android.bp)
|
|
for more documentation.
|