blob: 7271f1b40a6c18cb277152b81eed3f2a768c4c79 [file] [log] [blame]
#!/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.")