| #!/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 time |
| |
| import acts.base_test |
| import acts.signals as signals |
| import acts_contrib.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_contrib.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): |
| super().setup_test() |
| self.dut.droid.wakeLockAcquireBright() |
| self.dut.droid.wakeUpNow() |
| |
| def teardown_test(self): |
| super().teardown_test() |
| self.dut.droid.wakeLockRelease() |
| self.dut.droid.goToSleepNow() |
| wutils.reset_wifi(self.dut) |
| |
| 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.") |