blob: 5b8de6c655503e0d19a552e7bc45f7d085a35a1e [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 time
from acts.test_decorators import test_tracker_info
from acts.test_utils.power import PowerWiFiBaseTest as PWBT
from acts.test_utils.wifi import wifi_test_utils as wutils
UNLOCK_SCREEN = 'input keyevent 82'
class PowerWiFiscanTest(PWBT.PowerWiFiBaseTest):
def setup_class(self):
super().setup_class()
# Setup scan command
SINGLE_SHOT_SCAN = (
'am instrument -w -r -e min_scan_count \"700\"'
' -e WifiScanTest-testWifiSingleShotScan %d'
' -e class com.google.android.platform.powertests.'
'WifiScanTest#testWifiSingleShotScan'
' com.google.android.platform.powertests/'
'android.test.InstrumentationTestRunner > /dev/null &' %
(self.mon_duration + self.mon_offset + 10))
BACKGROUND_SCAN = ('am instrument -w -r -e min_scan_count \"1\" -e '
'WifiScanTest-testWifiBackgroundScan %d -e class '
'com.google.android.platform.powertests.WifiScan'
'Test#testWifiBackgroundScan com.google.android.'
'platform.powertests/android.test.Instrumentation'
'TestRunner > /dev/null &' %
(self.mon_duration + self.mon_offset + 10))
WIFI_SCAN = ('am instrument -w -r -e min_scan_count \"1\" -e '
'WifiScanTest-testWifiScan %d -e class '
'com.google.android.platform.powertests.WifiScanTest#'
'testWifiScan com.google.android.platform.powertests/'
'android.test.InstrumentationTestRunner > /dev/null &' %
(self.mon_duration + self.mon_offset + 10))
self.APK_SCAN_CMDS = {
'singleshot': SINGLE_SHOT_SCAN,
'background': BACKGROUND_SCAN,
'wifi': WIFI_SCAN
}
def scan_setup(self):
"""Setup for scan based on the type of scan.
Trigger the desired scan.
"""
self.log.info('Trigger {} scans'.format(self.test_configs.scan_mode))
if self.test_configs.scan_type == 'apk':
atten_setting = self.test_configs.wifi_band + '_' + self.test_configs.rssi
self.set_attenuation(self.atten_level[atten_setting])
self.dut.adb.shell_nb(
self.APK_SCAN_CMDS[self.test_configs.scan_mode])
else:
self.mon_info.offset = 0
if self.test_configs.scan_mode == 'pno':
self.log.info('Set attenuation to trigger PNO scan')
self.set_attenuation(self.atten_level['max_atten'])
elif self.test_configs.scan_mode == 'connectivity':
self.dut.droid.wakeUpNow()
self.log.info(
'Now turn on screen to trigger connectivity scans')
self.dut.adb.shell(UNLOCK_SCREEN)
elif self.test_configs.scan_mode == 'roaming':
atten_setting = self.test_configs.wifi_band + '_roaming'
self.set_attenuation(self.atten_level[atten_setting])
def wifi_scan_test_func(self):
attrs = [
'screen_status', 'wifi_status', 'wifi_band', 'rssi', 'scan_type',
'scan_mode'
]
indices = [2, 4, 6, 8, 10, 11]
self.decode_test_configs(attrs, indices)
if self.test_configs.wifi_status == 'Disconnected':
self.setup_ap_connection(
self.main_network[self.test_configs.wifi_band], connect=False)
elif self.test_configs.wifi_status == 'Connected':
self.setup_ap_connection(
self.main_network[self.test_configs.wifi_band])
else:
wutils.wifi_toggle_state(self.dut, True)
if self.test_configs.screen_status == 'OFF':
self.dut.droid.goToSleepNow()
self.dut.log.info('Screen is OFF')
time.sleep(2)
self.scan_setup()
self.measure_power_and_validate()
# Test cases
# Power.apk triggered scans
@test_tracker_info(uuid='e5539b01-e208-43c6-bebf-6f1e73d8d8cb')
def test_screen_OFF_WiFi_Disconnected_band_2g_RSSI_high_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='14c5a762-95bc-40ea-9fd4-27126df7d86c')
def test_screen_OFF_WiFi_Disconnected_band_2g_RSSI_low_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='a6506600-c567-43b5-9c25-86b505099b97')
def test_screen_OFF_WiFi_Disconnected_band_2g_RSSI_none_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='1a458248-1159-4c8e-a39f-92fc9e69c4dd')
def test_screen_OFF_WiFi_Disconnected_band_5g_RSSI_high_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='bd4da426-a621-4131-9f89-6e5a77f321d2')
def test_screen_OFF_WiFi_Disconnected_band_5g_RSSI_low_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='288b3add-8925-4803-81c0-53debf157ffc')
def test_screen_OFF_WiFi_Disconnected_band_5g_RSSI_none_scan_apk_singleshot(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='f401c66c-e515-4f51-8ef2-2a03470d8ff2')
def test_screen_OFF_WiFi_Disconnected_band_5g_RSSI_high_scan_apk_background(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='fe38c1c7-937c-42c0-9381-98356639df8f')
def test_screen_OFF_WiFi_Disconnected_band_2g_RSSI_high_scan_apk_wifi(
self):
self.wifi_scan_test_func()
@test_tracker_info(uuid='8eedefd1-3a08-4ac2-ba55-5eb438def3d4')
def test_screen_OFF_WiFi_Disconnected_band_5g_RSSI_high_scan_apk_wifi(
self):
self.wifi_scan_test_func()
# Firmware/framework scans
@test_tracker_info(uuid='ff5ea952-ee31-4968-a190-82935ce7a8cb')
def test_screen_OFF_WiFi_ON_band_5g_RSSI_high_scan_system_connectivity(
self):
"""WiFi disconected, turn on Screen to trigger connectivity scans.
"""
self.wifi_scan_test_func()
@test_tracker_info(uuid='9a836e5b-8128-4dd2-8e96-e79177810bdd')
def test_screen_OFF_WiFi_Connected_band_2g_RSSI_high_scan_system_connectivity(
self):
"""WiFi connected to 2g, turn on screen to trigger connectivity scans.
"""
self.wifi_scan_test_func()
@test_tracker_info(uuid='51e3c4f1-742b-45af-afd5-ae3552a03272')
def test_screen_OFF_WiFi_Connected_band_2g_RSSI_high_scan_system_roaming(
self):
"""WiFi connected to 2g, low RSSI to be below roaming threshold.
"""
self.wifi_scan_test_func()
@test_tracker_info(uuid='a16ae337-326f-4d09-990f-42232c3c0dc4')
def test_screen_OFF_WiFi_Connected_band_2g_RSSI_high_scan_system_pno(self):
"""WiFi connected to 2g, trigger pno scan.
"""
self.wifi_scan_test_func()