#!/usr/bin/env python3.4 # # Copyright 2018 - 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 itertools import pprint import queue import time import acts.base_test import acts.signals as signals import acts.test_utils.wifi.wifi_test_utils as wutils import acts.utils from acts import asserts from acts.test_decorators import test_tracker_info from acts.test_utils.wifi.WifiBaseTest import WifiBaseTest WifiEnums = wutils.WifiEnums DEFAULT_WAIT_TIME = 2 class WifiDiagnosticsTest(WifiBaseTest): """ Test Bed Requirement: * One Android device * An open Wi-Fi network. * Verbose logging is on. """ def setup_class(self): super().setup_class() self.dut = self.android_devices[0] wutils.wifi_test_device_init(self.dut) req_params = [] opt_param = ["open_network"] self.unpack_userparams( req_param_names=req_params, opt_param_names=opt_param) if "AccessPoint" in self.user_params: self.legacy_configure_ap_and_start() wutils.wifi_toggle_state(self.dut, True) asserts.assert_true( len(self.open_network) > 0, "Need at least one open network.") self.open_network = self.open_network[0]["2g"] def setup_test(self): self.dut.droid.wakeLockAcquireBright() self.dut.droid.wakeUpNow() def teardown_test(self): self.dut.droid.wakeLockRelease() self.dut.droid.goToSleepNow() wutils.reset_wifi(self.dut) def on_fail(self, test_name, begin_time): self.dut.take_bug_report(test_name, begin_time) self.dut.cat_adb_log(test_name, begin_time) def teardown_class(self): if "AccessPoint" in self.user_params: del self.user_params["open_network"] """Tests""" @test_tracker_info(uuid="d6f1661b-6732-4939-8c28-f20917774ec0") def test_ringbuffers_are_dumped_during_lsdebug(self): """Steps: 1. Connect to a open network. 2. Delete old files under data/vendor/tombstones/wifi 3. Call lshal debug on wifi hal component 4. Verify that files are created under data/vender/tombstones/wifi """ wutils.connect_to_wifi_network(self.dut, self.open_network) time.sleep(DEFAULT_WAIT_TIME) self.dut.adb.shell("rm data/vendor/tombstones/wifi/*") try: self.dut.adb.shell("lshal debug android.hardware.wifi@1.2::IWifi") except UnicodeDecodeError: """ Gets this error because adb.shell trys to parse the output to a string but ringbuffer dumps should already be generated """ self.log.info("Unicode decode error occurred, but this is ok") file_count_plus_one = self.dut.adb.shell("ls -l data/vendor/tombstones/wifi | wc -l") if int(file_count_plus_one) <= 1: raise signals.TestFailure("Failed to create ringbuffer debug files.")