63 lines
3.0 KiB
Python
63 lines
3.0 KiB
Python
# Copyright (C) 2022 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.
|
|
|
|
"""CTS-V Nearby Mainline Fast Pair end-to-end test case: initial pairing test."""
|
|
|
|
from test_helper import constants
|
|
from test_helper import fast_pair_base_test
|
|
|
|
# The model ID to simulate on provider side.
|
|
PROVIDER_SIMULATOR_MODEL_ID = constants.DEFAULT_MODEL_ID
|
|
# The public key to simulate as registered headsets.
|
|
PROVIDER_SIMULATOR_ANTI_SPOOFING_KEY = constants.DEFAULT_ANTI_SPOOFING_KEY
|
|
# The anti-spoof key device metadata JSON file for data provider at seeker side.
|
|
PROVIDER_SIMULATOR_KDM_JSON_FILE = constants.DEFAULT_KDM_JSON_FILE
|
|
|
|
# Time in seconds for events waiting.
|
|
SETUP_TIMEOUT_SEC = constants.SETUP_TIMEOUT_SEC
|
|
BECOME_DISCOVERABLE_TIMEOUT_SEC = constants.BECOME_DISCOVERABLE_TIMEOUT_SEC
|
|
START_ADVERTISING_TIMEOUT_SEC = constants.START_ADVERTISING_TIMEOUT_SEC
|
|
HALF_SHEET_POPUP_TIMEOUT_SEC = constants.HALF_SHEET_POPUP_TIMEOUT_SEC
|
|
MANAGE_ACCOUNT_DEVICE_TIMEOUT_SEC = constants.AVERAGE_PAIRING_TIMEOUT_SEC * 2
|
|
|
|
|
|
class InitialPairingTest(fast_pair_base_test.FastPairBaseTest):
|
|
"""Fast Pair initial pairing test."""
|
|
|
|
def setup_test(self) -> None:
|
|
super().setup_test()
|
|
self._provider.start_model_id_advertising(PROVIDER_SIMULATOR_MODEL_ID,
|
|
PROVIDER_SIMULATOR_ANTI_SPOOFING_KEY)
|
|
self._provider.wait_for_discoverable_mode(BECOME_DISCOVERABLE_TIMEOUT_SEC)
|
|
self._provider.wait_for_advertising_start(START_ADVERTISING_TIMEOUT_SEC)
|
|
self._seeker.put_anti_spoof_key_device_metadata(PROVIDER_SIMULATOR_MODEL_ID,
|
|
PROVIDER_SIMULATOR_KDM_JSON_FILE)
|
|
self._seeker.set_fast_pair_scan_enabled(True)
|
|
|
|
# TODO(b/214015364): Remove Bluetooth bound on both sides ("Forget device").
|
|
def teardown_test(self) -> None:
|
|
self._seeker.set_fast_pair_scan_enabled(False)
|
|
self._provider.teardown_provider_simulator()
|
|
self._seeker.dismiss_halfsheet()
|
|
super().teardown_test()
|
|
|
|
def test_seeker_initial_pair_provider(self) -> None:
|
|
self._seeker.wait_and_assert_halfsheet_showed(
|
|
timeout_seconds=HALF_SHEET_POPUP_TIMEOUT_SEC,
|
|
expected_model_id=PROVIDER_SIMULATOR_MODEL_ID)
|
|
self._seeker.start_pairing()
|
|
self._seeker.wait_and_assert_account_device(
|
|
get_account_key_from_provider=self._provider.get_latest_received_account_key,
|
|
timeout_seconds=MANAGE_ACCOUNT_DEVICE_TIMEOUT_SEC)
|