| # Copyright 2016 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| from autotest_lib.server import utils |
| from autotest_lib.server.cros.bluetooth import advertisements_data |
| |
| |
| AUTHOR = 'chromeos-chameleon' |
| NAME = 'bluetooth_AdapterLEAdvertising.multiple' |
| PURPOSE = 'Test bluetooth adapter advertising.' |
| CRITERIA = 'Adapter should advertise with correct parameters.' |
| ATTRIBUTES = 'suite:bluetooth, suite:bluetooth_sanity' |
| TIME = 'SHORT' # It takes about 15 minutes on a Samus. |
| TEST_CATEGORY = 'Functional' |
| TEST_CLASS = 'bluetooth' |
| TEST_TYPE = 'server' |
| DEPENDENCIES = 'bluetooth' |
| |
| DOC = """ |
| This test case verifies that the Bluetooth adapter of the DUT can |
| behave as a Bluetooth low-energy device and register multiple |
| advertisements with data and parameters correctly. This test case also |
| verifies that advertisements could be registered and unregistered |
| continuously. |
| |
| Specifically, this autotest include the following test cases: |
| self.test_case_SI200_RA3_CD_UA3() |
| self.test_case_SI200_RA3_CD_RA1_CD_UA1_CD_UA3() |
| self.test_case_SI200_RA3_CD_RS() |
| self.test_case_SI200_RA3_CD_UA1_CD_RS() |
| self.test_case_SI200_RA3_CD_PC_CD_UA3() |
| self.test_case_SI200_RA3_CD_SR_CD_UA3() |
| self.test_case_SI200_RA3_CD_UA1_CD_RA2_CD_UA4() |
| self.test_case_SI200_RA5_CD_FRA1_CD_UA5() |
| self.test_case_RA3_CD_SI200_CD_UA3() |
| self.test_case_RA3_CD_SI200_CD_RS() |
| self.test_case_RA3_CD_SI200_CD_UA1_CD_RS() |
| self.test_case_RA3_CD_SI200_CD_SI2000_CD_UA3() |
| self.test_case_RA5_CD_SI200_CD_FRA1_CD_UA5() |
| self.test_case_RA3_CD_SI200_CD_FSI10_CD_FSI20000_CD_UA3() |
| self.test_case_RA3_CD_SI200_CD_PC_CD_UA3() |
| self.test_case_RA3_CD_SI200_CD_SR_CD_UA3() |
| |
| |
| Mnemonics of the test cases: |
| CD: check advertising duration and intervals |
| RA: register advertisements |
| UA: unregister advertisements |
| SI: set advertising intervals |
| RS: reset advertising |
| FRA: fail to register extra advertisements when max ones have |
| been registered. |
| FSI: fail to set advertising intervals beyond legitimate range |
| of [20 ms, 10,240 ms]. |
| PC: power cycle the bluetooth adapter (controller). |
| SR: suspend and resume the DUT (chromebook) |
| |
| |
| Every test case consists of a sequence of tests: |
| test_register_advertisement |
| * All advertisements are registered successfully. |
| * The advertising min/max intervals are set correctly. |
| . The intervals are set to specified values. |
| . The intervals are set to default values after reset. |
| * The manufacturer id is set correctly. |
| * The service UUIDs are set correctly. |
| * The service data is set correctly. |
| * Advertising is enabled consequently. |
| test_set_advertising_intervals |
| * The new advertising intervals are set correctly. |
| test_reset_advertising |
| * All advertisement instances are removed. |
| * Advertising is disabled consequently. |
| test_check_duration_and_intervals |
| * The duration is correct. |
| * The new advertising intervals are set correctly. |
| test_fail_to_register_advertisement |
| * Max advertisements reached error. |
| * Extra advertisement is not added. |
| * The advertising min/max intervals remain the same. |
| * Advertising remains enabled. |
| test_unregister_advertisement |
| * The advertisement is removed. |
| * Advertising is disabled when the last one is removed. |
| test_fail_to_set_advertising_intervals |
| * It incurs invalid interval error. |
| * The advertising min/max intervals remain the same. |
| """ |
| |
| |
| args_dict = utils.args_to_dict(args) |
| |
| def run(machine): |
| host = hosts.create_host(machine) |
| job.run_test('bluetooth_AdapterLEAdvertising', |
| host=host, |
| advertisements=advertisements_data.ADVERTISEMENTS, |
| multi_advertising=True) |
| |
| parallel_simple(run, machines) |