blob: 02ed03a6552dafa6426d8e1a107adb774d67b65f [file]
# 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.
import os
from acts.libs.proto.proto_utils import parse_proto_to_ascii
from acts_contrib.test_utils.bt.BluetoothBaseTest import BluetoothBaseTest
from acts_contrib.test_utils.bt.bt_metrics_utils import get_bluetooth_metrics
from acts.utils import dump_string_to_file
class BtMetricsBaseTest(BluetoothBaseTest):
"""
Base class for tests that requires dumping and parsing Bluetooth Metrics
"""
def __init__(self, controllers):
BluetoothBaseTest.__init__(self, controllers)
self.ad = self.android_devices[0]
def setup_class(self):
"""
This method finds bluetooth protobuf definitions from config file,
compile the protobuf and create a log directory for metrics dumping
:return: True on success, False on failure
"""
super(BtMetricsBaseTest, self).setup_class()
for ad in self.android_devices:
ad.metrics_path = os.path.join(ad.log_path, "BluetoothMetrics")
os.makedirs(ad.metrics_path, exist_ok=True)
return True
def setup_test(self):
"""
This method clears the current metrics, should be called after child
class setup_test()
:return: True
"""
super(BtMetricsBaseTest, self).setup_test()
# Clear all metrics
for ad in self.android_devices:
get_bluetooth_metrics(ad)
return True
def collect_bluetooth_manager_metrics_logs(self, ads):
"""
Collect Bluetooth metrics logs, save an ascii log to disk and return
both binary and ascii logs to caller
:param ads: list of active Android devices
:return: List of binary metrics logs,
List of ascii metrics logs
"""
bluetooth_logs = []
bluetooth_logs_ascii = []
for ad in ads:
serial = ad.serial
out_name = "{}_{}".format(serial, "bluetooth_metrics.txt")
bluetooth_log = get_bluetooth_metrics(ad)
bluetooth_log_ascii = parse_proto_to_ascii(bluetooth_log)
dump_string_to_file(bluetooth_log_ascii,
os.path.join(ad.metrics_path, out_name))
bluetooth_logs.append(bluetooth_log)
bluetooth_logs_ascii.append(bluetooth_log_ascii)
return bluetooth_logs, bluetooth_logs_ascii