#/usr/bin/env python3.4
#
# Copyright (C) 2016 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.
"""
"""
from queue import Empty
from acts.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest
from acts.test_utils.bt.BleEnum import *
from acts.test_utils.bt.bt_test_utils import *
class DeathToBluetoothTest(BluetoothBaseTest):
tests = None
default_timeout = 10
max_scan_instances = 28
report_delay = 2000
scan_callbacks = []
adv_callbacks = []
active_scan_callback_list = []
active_adv_callback_list = []
def __init__(self, controllers):
BluetoothBaseTest.__init__(self, controllers)
self.droid_list = get_advanced_droid_list(self.android_devices)
self.scn_ad = self.android_devices[0]
self.tests = ("test_death", )
def teardown_test(self):
self.active_adv_callback_list = []
self.active_scan_callback_list = []
def on_exception(self, test_name, begin_time):
reset_bluetooth(self.android_devices)
def on_fail(self, test_name, begin_time):
reset_bluetooth(self.android_devices)
def _setup_generic_advertisement(self):
adv_callback, adv_data, adv_settings = generate_ble_advertise_objects(
self.adv_droid)
self.adv_droid.bleStartBleAdvertising(adv_callback, adv_data,
adv_settings)
self.active_adv_callback_list.append(adv_callback)
def _verify_no_events_found(self, event_name):
try:
self.scn_ad.ed.pop_event(event_name, self.default_timeout)
self.log.error("Found an event when none was expected.")
return False
except Empty:
self.log.info("No scan result found as expected.")
return True
@BluetoothBaseTest.bt_test_wrap
def test_death(self):
"""
Tests ...
Steps
1: ...
:return: boolean
"""
filter_list = self.scn_ad.droid.bleGenFilterList()
self.scn_ad.droid.bleSetScanSettingsScanMode(
ScanSettingsScanMode.SCAN_MODE_LOW_LATENCY.value)
self.scn_ad.droid.bleSetScanSettingsCallbackType(6)
# self.scn_ad.droid.bleSetScanSettingsMatchMode(2) #sticky
self.scn_ad.droid.bleSetScanSettingsMatchMode(1) # aggresive
self.scn_ad.droid.bleSetScanSettingsNumOfMatches(1)
scan_settings = self.scn_ad.droid.bleBuildScanSetting()
scan_callback = self.scn_ad.droid.bleGenScanCallback()
self.scn_ad.droid.bleStartBleScan(filter_list, scan_settings,
scan_callback)
for _ in range(10000):
self.scn_ad.ed.pop_event(scan_result.format(scan_callback))
return True