# 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)