Home | History | Annotate | Download | only in live
      1 #!/usr/bin/env python3.4
      2 #
      3 #   Copyright 2016 - The Android Open Source Project
      4 #
      5 #   Licensed under the Apache License, Version 2.0 (the "License");
      6 #   you may not use this file except in compliance with the License.
      7 #   You may obtain a copy of the License at
      8 #
      9 #       http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 #   Unless required by applicable law or agreed to in writing, software
     12 #   distributed under the License is distributed on an "AS IS" BASIS,
     13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 #   See the License for the specific language governing permissions and
     15 #   limitations under the License.
     16 
     17 import math
     18 import os
     19 from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
     20 from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
     21 from acts.test_utils.tel.tel_test_utils import call_setup_teardown
     22 from acts.test_utils.tel.tel_test_utils import ensure_phones_default_state
     23 from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
     24 from acts.test_utils.tel.tel_test_utils import ensure_wifi_connected
     25 from acts.test_utils.tel.tel_test_utils import hangup_call
     26 from acts.test_utils.tel.tel_test_utils import is_wfc_enabled
     27 from acts.test_utils.tel.tel_test_utils import set_phone_screen_on
     28 from acts.test_utils.tel.tel_test_utils import set_wfc_mode
     29 from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode
     30 from acts.test_utils.tel.tel_test_utils import verify_incall_state
     31 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_3g
     32 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_2g
     33 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan
     34 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_volte
     35 from acts.test_utils.tel.tel_voice_utils import phone_idle_2g
     36 from acts.test_utils.tel.tel_voice_utils import phone_idle_3g
     37 from acts.test_utils.tel.tel_voice_utils import phone_idle_iwlan
     38 from acts.test_utils.tel.tel_voice_utils import phone_idle_volte
     39 from acts.test_utils.tel.tel_voice_utils import phone_setup_csfb
     40 from acts.test_utils.tel.tel_voice_utils import phone_setup_iwlan
     41 from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_3g
     42 from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_2g
     43 from acts.test_utils.tel.tel_voice_utils import phone_setup_volte
     44 from acts.utils import create_dir
     45 from acts.utils import disable_doze
     46 from acts.utils import get_current_human_time
     47 from acts.utils import set_adaptive_brightness
     48 from acts.utils import set_ambient_display
     49 from acts.utils import set_auto_rotate
     50 from acts.utils import set_location_service
     51 from acts.utils import set_mobile_data_always_on
     52 
     53 # Monsoon output Voltage in V
     54 MONSOON_OUTPUT_VOLTAGE = 4.2
     55 # Monsoon output max current in A
     56 MONSOON_MAX_CURRENT = 7.8
     57 
     58 # Default power test pass criteria
     59 DEFAULT_POWER_PASS_CRITERIA = 999
     60 
     61 # Sampling rate in Hz
     62 ACTIVE_CALL_TEST_SAMPLING_RATE = 100
     63 # Sample duration in seconds
     64 ACTIVE_CALL_TEST_SAMPLE_TIME = 300
     65 # Offset time in seconds
     66 ACTIVE_CALL_TEST_OFFSET_TIME = 180
     67 
     68 # Sampling rate in Hz
     69 IDLE_TEST_SAMPLING_RATE = 100
     70 # Sample duration in seconds
     71 IDLE_TEST_SAMPLE_TIME = 2400
     72 # Offset time in seconds
     73 IDLE_TEST_OFFSET_TIME = 360
     74 
     75 # Constant for RAT
     76 RAT_LTE = 'lte'
     77 RAT_3G = '3g'
     78 RAT_2G = '2g'
     79 # Constant for WIFI
     80 WIFI_5G = '5g'
     81 WIFI_2G = '2g'
     82 
     83 # For wakeup ping test, the frequency to wakeup. In unit of second.
     84 WAKEUP_PING_TEST_WAKEUP_FREQ = 60
     85 
     86 WAKEUP_PING_TEST_NUMBER_OF_ALARM = math.ceil(
     87     (IDLE_TEST_SAMPLE_TIME * 60 + IDLE_TEST_OFFSET_TIME) /
     88     WAKEUP_PING_TEST_WAKEUP_FREQ)
     89 
     90 
     91 class TelPowerTest(TelephonyBaseTest):
     92     def __init__(self, controllers):
     93         TelephonyBaseTest.__init__(self, controllers)
     94 
     95     def setup_class(self):
     96         super().setup_class()
     97         self.mon = self.monsoons[0]
     98         self.mon.set_voltage(MONSOON_OUTPUT_VOLTAGE)
     99         self.mon.set_max_current(MONSOON_MAX_CURRENT)
    100         # Monsoon phone
    101         self.mon.dut = self.ad = self.android_devices[0]
    102         self.ad.reboot()
    103         set_adaptive_brightness(self.ad, False)
    104         set_ambient_display(self.ad, False)
    105         set_auto_rotate(self.ad, False)
    106         set_location_service(self.ad, False)
    107         # This is not needed for AOSP build
    108         disable_doze(self.ad)
    109         set_phone_screen_on(self.log, self.ad, 15)
    110 
    111         self.wifi_network_ssid_2g = self.user_params["wifi_network_ssid_2g"]
    112         self.wifi_network_pass_2g = self.user_params["wifi_network_pass_2g"]
    113         self.wifi_network_ssid_5g = self.user_params["wifi_network_ssid_5g"]
    114         self.wifi_network_pass_5g = self.user_params["wifi_network_pass_5g"]
    115 
    116         self.monsoon_log_path = os.path.join(self.log_path, "MonsoonLog")
    117         create_dir(self.monsoon_log_path)
    118         return True
    119 
    120     def _save_logs_for_power_test(self, monsoon_result, bug_report):
    121         if monsoon_result and "monsoon_log_for_power_test" in self.user_params:
    122             monsoon_result.save_to_text_file(
    123                 [monsoon_result],
    124                 os.path.join(self.monsoon_log_path, self.test_id))
    125         if bug_report and "bug_report_for_power_test" in self.user_params:
    126             self.android_devices[0].take_bug_report(self.test_name,
    127                                                     self.begin_time)
    128 
    129     def _setup_apm(self):
    130         if not toggle_airplane_mode(self.log, self.ad, True):
    131             self.log.error("Phone failed to turn on airplane mode.")
    132             return False
    133         else:
    134             self.log.info("Airplane mode is enabled successfully.")
    135             return True
    136 
    137     def _setup_wifi(self, wifi):
    138         if wifi == WIFI_5G:
    139             network_ssid = self.wifi_network_ssid_5g
    140             network_pass = self.wifi_network_pass_5g
    141         else:
    142             network_ssid = self.wifi_network_ssid_2g
    143             network_pass = self.wifi_network_pass_2g
    144         if not ensure_wifi_connected(
    145                 self.log, self.ad, network_ssid, network_pass, retry=3):
    146             self.log.error("Wifi %s connection fails." % wifi)
    147             return False
    148         self.log.info("WIFI %s is connected successfully." % wifi)
    149         return True
    150 
    151     def _setup_wfc(self):
    152         if not set_wfc_mode(self.log, self.ad, WFC_MODE_WIFI_PREFERRED):
    153             self.log.error("Phone failed to enable Wifi-Calling.")
    154             return False
    155         self.log.info("Phone is set in Wifi-Calling successfully.")
    156         if not phone_idle_iwlan(self.log, self.ad):
    157             self.log.error("DUT not in WFC enabled state.")
    158             return False
    159         return True
    160 
    161     def _setup_lte_volte_enabled(self):
    162         if not phone_setup_volte(self.log, self.ad):
    163             self.log.error("Phone failed to enable VoLTE.")
    164             return False
    165         self.log.info("VOLTE is enabled successfully.")
    166         return True
    167 
    168     def _setup_lte_volte_disabled(self):
    169         if not phone_setup_csfb(self.log, self.ad):
    170             self.log.error("Phone failed to setup CSFB.")
    171             return False
    172         self.log.info("VOLTE is disabled successfully.")
    173         return True
    174 
    175     def _setup_3g(self):
    176         if not phone_setup_voice_3g(self.log, self.ad):
    177             self.log.error("Phone failed to setup 3g.")
    178             return False
    179         self.log.info("RAT 3G is enabled successfully.")
    180         return True
    181 
    182     def _setup_2g(self):
    183         if not phone_setup_voice_2g(self.log, self.ad):
    184             self.log.error("Phone failed to setup 2g.")
    185             return False
    186         self.log.info("RAT 2G is enabled successfully.")
    187         return True
    188 
    189     def _setup_rat(self, rat, volte):
    190         if rat == RAT_3G:
    191             return self._setup_3g()
    192         elif rat == RAT_2G:
    193             return self._setup_2g()
    194         elif rat == RAT_LTE and volte:
    195             return self._setup_lte_volte_enabled()
    196         elif rat == RAT_LTE and not volte:
    197             return self._setup_lte_volte_disabled()
    198 
    199     def _start_alarm(self):
    200         # TODO: This one works with a temporary SL4A API to start alarm.
    201         # https://googleplex-android-review.git.corp.google.com/#/c/1562684/
    202         # simulate normal user behavior -- wake up every 1 minutes and do ping
    203         # (transmit data)
    204         try:
    205             alarm_id = self.ad.droid.telephonyStartRecurringAlarm(
    206                 WAKEUP_PING_TEST_NUMBER_OF_ALARM,
    207                 1000 * WAKEUP_PING_TEST_WAKEUP_FREQ, "PING_GOOGLE", None)
    208         except:
    209             self.log.error("Failed to setup periodic ping.")
    210             return False
    211         if alarm_id is None:
    212             self.log.error("Start alarm for periodic ping failed.")
    213             return False
    214         self.log.info("Set up periodic ping successfully.")
    215         return True
    216 
    217     def _setup_phone_active_call(self):
    218         if not call_setup_teardown(
    219                 self.log, self.ad, self.android_devices[1], ad_hangup=None):
    220             self.log.error("Setup Call failed.")
    221             return False
    222         self.log.info("Setup active call successfully.")
    223         return True
    224 
    225     def _test_setup(self,
    226                     apm=False,
    227                     rat=None,
    228                     volte=False,
    229                     wifi=None,
    230                     wfc=False,
    231                     mobile_data_always_on=False,
    232                     periodic_ping=False,
    233                     active_call=False):
    234         if not ensure_phones_default_state(self.log, self.android_devices):
    235             self.log.error("Fail to set phones in default state")
    236             return False
    237         else:
    238             self.log.info("Set phones in default state successfully")
    239         if apm and not self._setup_apm(): return False
    240         if rat and not self._setup_rat(rat, volte): return False
    241         if wifi and not self._setup_wifi(wifi): return False
    242         if wfc and not self._setup_wfc(): return False
    243         if mobile_data_always_on: set_mobile_data_always_on(self.ad, True)
    244         if periodic_ping and not self._start_alarm(): return False
    245         if active_call and not self._setup_phone_active_call(): return False
    246         self.ad.droid.goToSleepNow()
    247         return True
    248 
    249     def _power_test(self, phone_check_func_after_power_test=None, **kwargs):
    250         # Test passing criteria can be defined in test config file with the
    251         # maximum mA allowed for the test case in "pass_criteria"->test_name
    252         # field. By default it will set to 999.
    253         pass_criteria = self._get_pass_criteria(self.test_name)
    254         bug_report = True
    255         active_call = kwargs.get('active_call')
    256         average_current = 0
    257         result = None
    258         self.log.info("Test %s: %s" % (self.test_name, kwargs))
    259         if active_call:
    260             sample_rate = ACTIVE_CALL_TEST_SAMPLING_RATE
    261             sample_time = ACTIVE_CALL_TEST_SAMPLE_TIME
    262             offset_time = ACTIVE_CALL_TEST_OFFSET_TIME
    263         else:
    264             sample_rate = IDLE_TEST_SAMPLING_RATE
    265             sample_time = IDLE_TEST_SAMPLE_TIME
    266             offset_time = IDLE_TEST_OFFSET_TIME
    267         try:
    268             if not self._test_setup(**kwargs):
    269                 self.log.error("DUT Failed to Set Up Properly.")
    270                 return False
    271 
    272             if ((phone_check_func_after_power_test is not None) and
    273                 (not phone_check_func_after_power_test(
    274                     self.log, self.android_devices[0]))):
    275                 self.log.error(
    276                     "Phone is not in correct status before power test.")
    277                 return False
    278 
    279             result = self.mon.measure_power(sample_rate, sample_time,
    280                                             self.test_id, offset_time)
    281             average_current = result.average_current
    282             if ((phone_check_func_after_power_test is not None) and
    283                 (not phone_check_func_after_power_test(
    284                     self.log, self.android_devices[0]))):
    285                 self.log.error(
    286                     "Phone is not in correct status after power test.")
    287                 return False
    288             if active_call:
    289                 if not verify_incall_state(self.log, [
    290                         self.android_devices[0], self.android_devices[1]
    291                 ], True):
    292                     self.log.error("Call drop during power test.")
    293                     return False
    294                 else:
    295                     hangup_call(self.log, self.android_devices[1])
    296             if (average_current <= pass_criteria):
    297                 bug_report = False
    298                 return True
    299         finally:
    300             self._save_logs_for_power_test(result, bug_report)
    301             self.log.info("{} Result: {} mA, pass criteria: {} mA".format(
    302                 self.test_id, average_current, pass_criteria))
    303 
    304     def _get_pass_criteria(self, test_name):
    305         """Get the test passing criteria.
    306            Test passing criteria can be defined in test config file with the
    307            maximum mA allowed for the test case in "pass_criteria"->test_name
    308            field. By default it will set to 999.
    309         """
    310         try:
    311             pass_criteria = int(self.user_params["pass_criteria"][test_name])
    312         except KeyError:
    313             pass_criteria = DEFAULT_POWER_PASS_CRITERIA
    314         return pass_criteria
    315 
    316     @TelephonyBaseTest.tel_test_wrap
    317     def test_power_active_call_volte(self):
    318         """Power measurement test for active VoLTE call.
    319 
    320         Steps:
    321         1. DUT idle, in LTE mode, VoLTE enabled.
    322         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    323             Make sure DUT is in VoLTE call.
    324         3. Turn off screen and wait for 3 minutes.
    325             Then measure power consumption for 5 minutes and get average.
    326 
    327         Expected Results:
    328         Average power consumption should be within pre-defined limit.
    329 
    330         Returns:
    331         True if Pass, False if Fail.
    332 
    333         Note: Please calibrate your test environment and baseline pass criteria.
    334         Pass criteria info should be in test config file.
    335         """
    336         return self._power_test(
    337             rat=RAT_LTE,
    338             volte=True,
    339             active_call=True,
    340             phone_check_func_after_power_test=is_phone_in_call_volte)
    341 
    342     @TelephonyBaseTest.tel_test_wrap
    343     def test_power_active_call_3g(self):
    344         """Power measurement test for active CS(3G) call.
    345 
    346         Steps:
    347         1. DUT idle, in 3G mode.
    348         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    349             Make sure DUT is in CS(3G) call.
    350         3. Turn off screen and wait for 3 minutes.
    351             Then measure power consumption for 5 minutes and get average.
    352 
    353         Expected Results:
    354         Average power consumption should be within pre-defined limit.
    355 
    356         Returns:
    357         True if Pass, False if Fail.
    358 
    359         Note: Please calibrate your test environment and baseline pass criteria.
    360         Pass criteria info should be in test config file.
    361         """
    362         return self._power_test(
    363             rat=RAT_3G,
    364             active_call=True,
    365             phone_check_func_after_power_test=is_phone_in_call_3g)
    366 
    367     @TelephonyBaseTest.tel_test_wrap
    368     def test_power_active_call_2g(self):
    369         """Power measurement test for active CS(2G) call.
    370 
    371         Steps:
    372         1. DUT idle, in 2G mode.
    373         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    374             Make sure DUT is in CS(2G) call.
    375         3. Turn off screen and wait for 3 minutes.
    376             Then measure power consumption for 5 minutes and get average.
    377 
    378         Expected Results:
    379         Average power consumption should be within pre-defined limit.
    380 
    381         Returns:
    382         True if Pass, False if Fail.
    383 
    384         Note: Please calibrate your test environment and baseline pass criteria.
    385         Pass criteria info should be in test config file.
    386         """
    387         return self._power_test(
    388             rat=RAT_2G,
    389             active_call=True,
    390             phone_check_func_after_power_test=is_phone_in_call_2g)
    391 
    392     @TelephonyBaseTest.tel_test_wrap
    393     def test_power_active_call_wfc_wifi2g_apm(self):
    394         """Power measurement test for active WiFi call.
    395 
    396         Steps:
    397         1. DUT idle, in Airplane mode, connect to 2G WiFi,
    398             WiFi Calling enabled (WiFi-preferred mode).
    399         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    400             Make sure DUT is in WFC call.
    401         3. Turn off screen and wait for 3 minutes.
    402             Then measure power consumption for 5 minutes and get average.
    403 
    404         Expected Results:
    405         Average power consumption should be within pre-defined limit.
    406 
    407         Returns:
    408         True if Pass, False if Fail.
    409 
    410         Note: Please calibrate your test environment and baseline pass criteria.
    411         Pass criteria info should be in test config file.
    412         """
    413         return self._power_test(
    414             apm=True,
    415             wifi=WIFI_2G,
    416             wfc=True,
    417             active_call=True,
    418             phone_check_func_after_power_test=is_phone_in_call_iwlan)
    419 
    420     @TelephonyBaseTest.tel_test_wrap
    421     def test_power_active_call_wfc_wifi2g_lte_volte_enabled(self):
    422         """Power measurement test for active WiFi call.
    423 
    424         Steps:
    425         1. DUT idle, LTE cellular data network, VoLTE is On, connect to 2G WiFi,
    426             WiFi Calling enabled (WiFi-preferred).
    427         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    428             Make sure DUT is in WFC call.
    429         3. Turn off screen and wait for 3 minutes.
    430             Then measure power consumption for 5 minutes and get average.
    431 
    432         Expected Results:
    433         Average power consumption should be within pre-defined limit.
    434 
    435         Returns:
    436         True if Pass, False if Fail.
    437 
    438         Note: Please calibrate your test environment and baseline pass criteria.
    439         Pass criteria info should be in test config file.
    440         """
    441         return self._power_test(
    442             rat=RAT_LTE,
    443             volte=True,
    444             wifi=WIFI_2G,
    445             wfc=True,
    446             active_call=True,
    447             phone_check_func_after_power_test=is_phone_in_call_iwlan)
    448 
    449     @TelephonyBaseTest.tel_test_wrap
    450     def test_power_active_call_wfc_wifi5g_apm(self):
    451         """Power measurement test for active WiFi call.
    452 
    453         Steps:
    454         1. DUT idle, in Airplane mode, connect to 5G WiFi,
    455             WiFi Calling enabled (WiFi-preferred mode).
    456         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    457             Make sure DUT is in WFC call.
    458         3. Turn off screen and wait for 3 minutes.
    459             Then measure power consumption for 5 minutes and get average.
    460 
    461         Expected Results:
    462         Average power consumption should be within pre-defined limit.
    463 
    464         Returns:
    465         True if Pass, False if Fail.
    466 
    467         Note: Please calibrate your test environment and baseline pass criteria.
    468         Pass criteria info should be in test config file.
    469         """
    470         return self._power_test(
    471             apm=True,
    472             wifi=WIFI_5G,
    473             wfc=True,
    474             active_call=True,
    475             phone_check_func_after_power_test=is_phone_in_call_iwlan)
    476 
    477     @TelephonyBaseTest.tel_test_wrap
    478     def test_power_active_call_wfc_wifi5g_lte_volte_enabled(self):
    479         """Power measurement test for active WiFi call.
    480 
    481         Steps:
    482         1. DUT idle, LTE cellular data network, VoLTE is On, connect to 5G WiFi,
    483             WiFi Calling enabled (WiFi-preferred).
    484         2. Make a phone Call from DUT to PhoneB. Answer on PhoneB.
    485             Make sure DUT is in WFC call.
    486         3. Turn off screen and wait for 3 minutes.
    487             Then measure power consumption for 5 minutes and get average.
    488 
    489         Expected Results:
    490         Average power consumption should be within pre-defined limit.
    491 
    492         Returns:
    493         True if Pass, False if Fail.
    494 
    495         Note: Please calibrate your test environment and baseline pass criteria.
    496         Pass criteria info should be in test config file.
    497         """
    498         return self._power_test(
    499             rat=RAT_LTE,
    500             volte=True,
    501             wifi=WIFI_5G,
    502             wfc=True,
    503             active_call=True,
    504             phone_check_func_after_power_test=is_phone_in_call_iwlan)
    505 
    506     @TelephonyBaseTest.tel_test_wrap
    507     def test_power_idle_baseline(self):
    508         """Power measurement test for phone idle baseline.
    509 
    510         Steps:
    511         1. DUT idle, in Airplane mode. WiFi disabled, WiFi Calling disabled.
    512         2. Turn off screen and wait for 6 minutes. Then measure power
    513             consumption for 40 minutes and get average.
    514 
    515         Expected Results:
    516         Average power consumption should be within pre-defined limit.
    517 
    518         Returns:
    519         True if Pass, False if Fail.
    520 
    521         Note: Please calibrate your test environment and baseline pass criteria.
    522         Pass criteria info should be in test config file.
    523         """
    524         return self._power_test(apm=True)
    525 
    526     @TelephonyBaseTest.tel_test_wrap
    527     def test_power_idle_baseline_wifi2g_connected(self):
    528         """Power measurement test for phone idle baseline (WiFi connected).
    529 
    530         Steps:
    531         1. DUT idle, in Airplane mode. WiFi connected to 2.4G WiFi,
    532             WiFi Calling disabled.
    533         2. Turn off screen and wait for 6 minutes. Then measure power
    534             consumption for 40 minutes and get average.
    535 
    536         Expected Results:
    537         Average power consumption should be within pre-defined limit.
    538 
    539         Returns:
    540         True if Pass, False if Fail.
    541 
    542         Note: Please calibrate your test environment and baseline pass criteria.
    543         Pass criteria info should be in test config file.
    544         """
    545         return self._power_test(apm=True, wifi=WIFI_2G)
    546 
    547     @TelephonyBaseTest.tel_test_wrap
    548     def test_power_idle_wfc_wifi2g_apm(self):
    549         """Power measurement test for phone idle WiFi Calling Airplane Mode.
    550 
    551         Steps:
    552         1. DUT idle, in Airplane mode. Connected to 2G WiFi,
    553             WiFi Calling enabled (WiFi preferred).
    554         2. Turn off screen and wait for 6 minutes. Then measure power
    555             consumption for 40 minutes and get average.
    556 
    557         Expected Results:
    558         Average power consumption should be within pre-defined limit.
    559 
    560         Returns:
    561         True if Pass, False if Fail.
    562 
    563         Note: Please calibrate your test environment and baseline pass criteria.
    564         Pass criteria info should be in test config file.
    565         """
    566         return self._power_test(
    567             apm=True,
    568             wifi=WIFI_2G,
    569             wfc=True,
    570             phone_check_func_after_power_test=phone_idle_iwlan)
    571 
    572     @TelephonyBaseTest.tel_test_wrap
    573     def test_power_idle_wfc_wifi2g_lte_volte_enabled(self):
    574         """Power measurement test for phone idle WiFi Calling LTE VoLTE enabled.
    575 
    576         Steps:
    577         1. DUT idle, in LTE mode, VoLTE enabled. Connected to 2G WiFi,
    578             WiFi Calling enabled (WiFi preferred).
    579         2. Turn off screen and wait for 6 minutes. Then measure power
    580             consumption for 40 minutes and get average.
    581 
    582         Expected Results:
    583         Average power consumption should be within pre-defined limit.
    584 
    585         Returns:
    586         True if Pass, False if Fail.
    587 
    588         Note: Please calibrate your test environment and baseline pass criteria.
    589         Pass criteria info should be in test config file.
    590         """
    591         return self._power_test(
    592             rat=RAT_LTE,
    593             volte=True,
    594             wifi=WIFI_2G,
    595             wfc=True,
    596             phone_check_func_after_power_test=phone_idle_iwlan)
    597 
    598     @TelephonyBaseTest.tel_test_wrap
    599     def test_power_idle_lte_volte_enabled(self):
    600         """Power measurement test for phone idle LTE VoLTE enabled.
    601 
    602         Steps:
    603         1. DUT idle, in LTE mode, VoLTE enabled. WiFi disabled,
    604             WiFi Calling disabled.
    605         2. Turn off screen and wait for 6 minutes. Then measure power
    606             consumption for 40 minutes and get average.
    607 
    608         Expected Results:
    609         Average power consumption should be within pre-defined limit.
    610 
    611         Returns:
    612         True if Pass, False if Fail.
    613 
    614         Note: Please calibrate your test environment and baseline pass criteria.
    615         Pass criteria info should be in test config file.
    616         """
    617         return self._power_test(
    618             rat=RAT_LTE,
    619             volte=True,
    620             phone_check_func_after_power_test=phone_idle_volte)
    621 
    622     @TelephonyBaseTest.tel_test_wrap
    623     def test_power_idle_lte_volte_enabled_wifi2g(self):
    624         """Power measurement test for phone idle LTE VoLTE enabled.
    625 
    626         Steps:
    627         1. DUT idle, in LTE mode, VoLTE enabled. WiFi enabled,
    628             WiFi Calling disabled.
    629         2. Turn off screen and wait for 6 minutes. Then measure power
    630             consumption for 40 minutes and get average.
    631 
    632         Expected Results:
    633         Average power consumption should be within pre-defined limit.
    634 
    635         Returns:
    636         True if Pass, False if Fail.
    637 
    638         Note: Please calibrate your test environment and baseline pass criteria.
    639         Pass criteria info should be in test config file.
    640         """
    641         return self._power_test(
    642             rat=RAT_LTE,
    643             volte=True,
    644             wifi=WIFI_2G,
    645             phone_check_func_after_power_test=phone_idle_volte)
    646 
    647     @TelephonyBaseTest.tel_test_wrap
    648     def test_power_idle_lte_volte_disabled(self):
    649         """Power measurement test for phone idle LTE VoLTE disabled.
    650 
    651         Steps:
    652         1. DUT idle, in LTE mode, VoLTE disabled. WiFi disabled,
    653             WiFi Calling disabled.
    654         2. Turn off screen and wait for 6 minutes. Then measure power
    655             consumption for 40 minutes and get average.
    656 
    657         Expected Results:
    658         Average power consumption should be within pre-defined limit.
    659 
    660         Returns:
    661         True if Pass, False if Fail.
    662 
    663         Note: Please calibrate your test environment and baseline pass criteria.
    664         Pass criteria info should be in test config file.
    665         """
    666         return self._power_test(rat=RAT_LTE)
    667 
    668     @TelephonyBaseTest.tel_test_wrap
    669     def test_power_idle_3g(self):
    670         """Power measurement test for phone idle 3G.
    671 
    672         Steps:
    673         1. DUT idle, in 3G mode. WiFi disabled, WiFi Calling disabled.
    674         2. Turn off screen and wait for 6 minutes. Then measure power
    675             consumption for 40 minutes and get average.
    676 
    677         Expected Results:
    678         Average power consumption should be within pre-defined limit.
    679 
    680         Returns:
    681         True if Pass, False if Fail.
    682 
    683         Note: Please calibrate your test environment and baseline pass criteria.
    684         Pass criteria info should be in test config file.
    685         """
    686         return self._power_test(
    687             rat=RAT_3G, phone_check_func_after_power_test=phone_idle_3g)
    688 
    689     @TelephonyBaseTest.tel_test_wrap
    690     def test_power_idle_3g_wifi2g(self):
    691         """Power measurement test for phone idle 3G.
    692 
    693         Steps:
    694         1. DUT idle, in 3G mode. WiFi enabled, WiFi Calling disabled.
    695         2. Turn off screen and wait for 6 minutes. Then measure power
    696             consumption for 40 minutes and get average.
    697 
    698         Expected Results:
    699         Average power consumption should be within pre-defined limit.
    700 
    701         Returns:
    702         True if Pass, False if Fail.
    703 
    704         Note: Please calibrate your test environment and baseline pass criteria.
    705         Pass criteria info should be in test config file.
    706         """
    707         return self._power_test(
    708             rat=RAT_3G,
    709             wifi=WIFI_2G,
    710             phone_check_func_after_power_test=phone_idle_3g)
    711 
    712     @TelephonyBaseTest.tel_test_wrap
    713     def test_power_idle_2g(self):
    714         """Power measurement test for phone idle 3G.
    715 
    716         Steps:
    717         1. DUT idle, in 2G mode. WiFi disabled, WiFi Calling disabled.
    718         2. Turn off screen and wait for 6 minutes. Then measure power
    719             consumption for 40 minutes and get average.
    720 
    721         Expected Results:
    722         Average power consumption should be within pre-defined limit.
    723 
    724         Returns:
    725         True if Pass, False if Fail.
    726 
    727         Note: Please calibrate your test environment and baseline pass criteria.
    728         Pass criteria info should be in test config file.
    729         """
    730         return self._power_test(
    731             rat=RAT_2G, phone_check_func_after_power_test=phone_idle_2g)
    732 
    733     @TelephonyBaseTest.tel_test_wrap
    734     def test_power_idle_2g_wifi2g(self):
    735         """Power measurement test for phone idle 3G.
    736 
    737         Steps:
    738         1. DUT idle, in 2G mode. WiFi disabled, WiFi Calling disabled.
    739         2. Turn off screen and wait for 6 minutes. Then measure power
    740             consumption for 40 minutes and get average.
    741 
    742         Expected Results:
    743         Average power consumption should be within pre-defined limit.
    744 
    745         Returns:
    746         True if Pass, False if Fail.
    747 
    748         Note: Please calibrate your test environment and baseline pass criteria.
    749         Pass criteria info should be in test config file.
    750         """
    751         return self._power_test(
    752             rat=RAT_2G,
    753             wifi=WIFI_2G,
    754             phone_check_func_after_power_test=phone_idle_2g)
    755 
    756     # TODO: This one is not working right now. Requires SL4A API to start alarm.
    757     @TelephonyBaseTest.tel_test_wrap
    758     def test_power_idle_lte_volte_enabled_wakeup_ping(self):
    759         """Power measurement test for phone LTE VoLTE enabled Wakeup Ping every
    760         1 minute.
    761 
    762         Steps:
    763         1. DUT idle, in LTE mode, VoLTE enabled. WiFi disabled,
    764             WiFi Calling disabled.
    765         2. Start script to wake up AP every 1 minute, after wakeup,
    766             DUT send http Request to Google.com then go to sleep.
    767         3. Turn off screen and wait for 6 minutes. Then measure power
    768             consumption for 40 minutes and get average.
    769 
    770         Expected Results:
    771         Average power consumption should be within pre-defined limit.
    772 
    773         Returns:
    774         True if Pass, False if Fail.
    775 
    776         Note: Please calibrate your test environment and baseline pass criteria.
    777         Pass criteria info should be in test config file.
    778         """
    779         return self._power_test(
    780             rat=RAT_LTE,
    781             volte=True,
    782             periodic_ping=True,
    783             phone_check_func_after_power_test=phone_idle_iwlan)
    784 
    785     # TODO: This one is not working right now. Requires SL4A API to start alarm.
    786     @TelephonyBaseTest.tel_test_wrap
    787     def test_power_idle_lte_volte_disabled_wakeup_ping(self):
    788         """Power measurement test for phone LTE VoLTE disabled Wakeup Ping every
    789         1 minute.
    790 
    791         Steps:
    792         1. DUT idle, in LTE mode, VoLTE disabled. WiFi disabled,
    793             WiFi Calling disabled.
    794         2. Start script to wake up AP every 1 minute, after wakeup,
    795             DUT send http Request to Google.com then go to sleep.
    796         3. Turn off screen and wait for 6 minutes. Then measure power
    797             consumption for 40 minutes and get average.
    798 
    799         Expected Results:
    800         Average power consumption should be within pre-defined limit.
    801 
    802         Returns:
    803         True if Pass, False if Fail.
    804 
    805         Note: Please calibrate your test environment and baseline pass criteria.
    806         Pass criteria info should be in test config file.
    807         """
    808         return self._power_test(rat=RAT_LTE, periodic_ping=True)
    809 
    810     # TODO: This one is not working right now. Requires SL4A API to start alarm.
    811     @TelephonyBaseTest.tel_test_wrap
    812     def test_power_idle_3g_wakeup_ping(self):
    813         """Power measurement test for phone 3G Wakeup Ping every 1 minute.
    814 
    815         Steps:
    816         1. DUT idle, in 3G mode. WiFi disabled, WiFi Calling disabled.
    817         2. Start script to wake up AP every 1 minute, after wakeup,
    818             DUT send http Request to Google.com then go to sleep.
    819         3. Turn off screen and wait for 6 minutes. Then measure power
    820             consumption for 40 minutes and get average.
    821 
    822         Expected Results:
    823         Average power consumption should be within pre-defined limit.
    824 
    825         Returns:
    826         True if Pass, False if Fail.
    827 
    828         Note: Please calibrate your test environment and baseline pass criteria.
    829         Pass criteria info should be in test config file.
    830         """
    831         return self._power_test(
    832             rat=RAT_3G,
    833             periodic_ping=True,
    834             phone_check_func_after_power_test=phone_idle_3g)
    835 
    836     @TelephonyBaseTest.tel_test_wrap
    837     def test_power_idle_lte_volte_enabled_mobile_data_always_on(self):
    838         """Power measurement test for phone idle LTE VoLTE enabled.
    839 
    840         Steps:
    841         1. DUT idle, in LTE mode, VoLTE enabled. WiFi disabled,
    842             WiFi Calling disabled.
    843         2. Turn on mobile data always on
    844         3. Turn off screen and wait for 6 minutes. Then measure power
    845             consumption for 40 minutes and get average.
    846 
    847         Expected Results:
    848         Average power consumption should be within pre-defined limit.
    849 
    850         Returns:
    851         True if Pass, False if Fail.
    852 
    853         Note: Please calibrate your test environment and baseline pass criteria.
    854         Pass criteria info should be in test config file.
    855         """
    856         return self._power_test(
    857             rat=RAT_LTE,
    858             volte=True,
    859             mobile_data_always_on=True,
    860             phone_check_func_after_power_test=phone_idle_volte)
    861 
    862     @TelephonyBaseTest.tel_test_wrap
    863     def test_power_idle_lte_volte_enabled_wifi2g_mobile_data_always_on(self):
    864         """Power measurement test for phone idle LTE VoLTE enabled.
    865 
    866         Steps:
    867         1. DUT idle, in LTE mode, VoLTE enabled. WiFi enabled,
    868             WiFi Calling disabled.
    869         2. Turn on mobile data always on
    870         3. Turn off screen and wait for 6 minutes. Then measure power
    871             consumption for 40 minutes and get average.
    872 
    873         Expected Results:
    874         Average power consumption should be within pre-defined limit.
    875 
    876         Returns:
    877         True if Pass, False if Fail.
    878 
    879         Note: Please calibrate your test environment and baseline pass criteria.
    880         Pass criteria info should be in test config file.
    881         """
    882         return self._power_test(
    883             rat=RAT_LTE,
    884             volte=True,
    885             wifi=WIFI_2G,
    886             mobile_data_always_on=True,
    887             phone_check_func_after_power_test=phone_idle_volte)
    888 
    889     @TelephonyBaseTest.tel_test_wrap
    890     def test_power_idle_lte_volte_disabled_mobile_data_always_on(self):
    891         """Power measurement test for phone idle LTE VoLTE disabled.
    892 
    893         Steps:
    894         1. DUT idle, in LTE mode, VoLTE disabled. WiFi disabled,
    895             WiFi Calling disabled.
    896         2. Turn on mobile data always on
    897         3. Turn off screen and wait for 6 minutes. Then measure power
    898             consumption for 40 minutes and get average.
    899 
    900         Expected Results:
    901         Average power consumption should be within pre-defined limit.
    902 
    903         Returns:
    904         True if Pass, False if Fail.
    905 
    906         Note: Please calibrate your test environment and baseline pass criteria.
    907         Pass criteria info should be in test config file.
    908         """
    909         return self._power_test(rat=RAT_LTE, mobile_data_always_on=True)
    910 
    911     @TelephonyBaseTest.tel_test_wrap
    912     def test_power_idle_3g_mobile_data_always_on(self):
    913         """Power measurement test for phone idle 3G.
    914 
    915         Steps:
    916         1. DUT idle, in 3G mode. WiFi disabled, WiFi Calling disabled.
    917         2. Turn on mobile data always on
    918         3. Turn off screen and wait for 6 minutes. Then measure power
    919             consumption for 40 minutes and get average.
    920 
    921         Expected Results:
    922         Average power consumption should be within pre-defined limit.
    923 
    924         Returns:
    925         True if Pass, False if Fail.
    926 
    927         Note: Please calibrate your test environment and baseline pass criteria.
    928         Pass criteria info should be in test config file.
    929         """
    930         return self._power_test(
    931             rat=RAT_3G,
    932             mobile_data_always_on=True,
    933             phone_check_func_after_power_test=phone_idle_3g)
    934 
    935     @TelephonyBaseTest.tel_test_wrap
    936     def test_power_idle_3g_wifi2g_mobile_data_always_on(self):
    937         """Power measurement test for phone idle 3G.
    938 
    939         Steps:
    940         1. DUT idle, in 3G mode. WiFi enabled, WiFi Calling disabled.
    941         2. Turn on mobile data always on
    942         3. Turn off screen and wait for 6 minutes. Then measure power
    943             consumption for 40 minutes and get average.
    944 
    945         Expected Results:
    946         Average power consumption should be within pre-defined limit.
    947 
    948         Returns:
    949         True if Pass, False if Fail.
    950 
    951         Note: Please calibrate your test environment and baseline pass criteria.
    952         Pass criteria info should be in test config file.
    953         """
    954         return self._power_test(
    955             rat=RAT_3G,
    956             wifi=WIFI_2G,
    957             mobile_data_always_on=True,
    958             phone_check_func_after_power_test=phone_idle_3g)
    959 
    960     @TelephonyBaseTest.tel_test_wrap
    961     def test_power_idle_2g_mobile_data_always_on(self):
    962         """Power measurement test for phone idle 3G.
    963 
    964         Steps:
    965         1. DUT idle, in 2G mode. WiFi disabled, WiFi Calling disabled.
    966         2. Turn on mobile data always on
    967         3. Turn off screen and wait for 6 minutes. Then measure power
    968             consumption for 40 minutes and get average.
    969 
    970         Expected Results:
    971         Average power consumption should be within pre-defined limit.
    972 
    973         Returns:
    974         True if Pass, False if Fail.
    975 
    976         Note: Please calibrate your test environment and baseline pass criteria.
    977         Pass criteria info should be in test config file.
    978         """
    979         return self._power_test(
    980             rat=RAT_2G,
    981             mobile_data_always_on=True,
    982             phone_check_func_after_power_test=phone_idle_2g)
    983 
    984     @TelephonyBaseTest.tel_test_wrap
    985     def test_power_idle_2g_wifi2g_mobile_data_always_on(self):
    986         """Power measurement test for phone idle 3G.
    987 
    988         Steps:
    989         1. DUT idle, in 2G mode. WiFi enabled, WiFi Calling disabled.
    990         2. Turn on mobile data always on
    991         3. Turn off screen and wait for 6 minutes. Then measure power
    992             consumption for 40 minutes and get average.
    993 
    994         Expected Results:
    995         Average power consumption should be within pre-defined limit.
    996 
    997         Returns:
    998         True if Pass, False if Fail.
    999 
   1000         Note: Please calibrate your test environment and baseline pass criteria.
   1001         Pass criteria info should be in test config file.
   1002         """
   1003         return self._power_test(
   1004             rat=RAT_2G,
   1005             wifi=WIFI_2G,
   1006             mobile_data_always_on=True,
   1007             phone_check_func_after_power_test=phone_idle_2g)
   1008 
   1009     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1010     @TelephonyBaseTest.tel_test_wrap
   1011     def test_power_idle_lte_volte_enabled_wakeup_ping_mobile_data_always_on(
   1012             self):
   1013         """Power measurement test for phone LTE VoLTE enabled Wakeup Ping every
   1014         1 minute.
   1015 
   1016         Steps:
   1017         1. DUT idle, in LTE mode, VoLTE enabled. WiFi disabled,
   1018             WiFi Calling disabled.
   1019         2. Start script to wake up AP every 1 minute, after wakeup,
   1020             DUT send http Request to Google.com then go to sleep.
   1021         3. Turn off screen and wait for 6 minutes. Then measure power
   1022             consumption for 40 minutes and get average.
   1023 
   1024         Expected Results:
   1025         Average power consumption should be within pre-defined limit.
   1026 
   1027         Returns:
   1028         True if Pass, False if Fail.
   1029 
   1030         Note: Please calibrate your test environment and baseline pass criteria.
   1031         Pass criteria info should be in test config file.
   1032         """
   1033         return self._power_test(
   1034             rat=RAT_LTE,
   1035             volte=True,
   1036             mobile_data_always_on=True,
   1037             periodic_ping=True,
   1038             phone_check_func_after_power_test=phone_idle_volte)
   1039 
   1040     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1041     @TelephonyBaseTest.tel_test_wrap
   1042     def test_power_idle_lte_volte_enabled_wifi2g_wakeup_ping_mobile_data_always_on(
   1043             self):
   1044         """Power measurement test for phone LTE VoLTE enabled Wakeup Ping every
   1045         1 minute.
   1046 
   1047         Steps:
   1048         1. DUT idle, in LTE mode, VoLTE enabled. WiFi enabled,
   1049             WiFi Calling disabled.
   1050         2. Start script to wake up AP every 1 minute, after wakeup,
   1051             DUT send http Request to Google.com then go to sleep.
   1052         3. Turn off screen and wait for 6 minutes. Then measure power
   1053             consumption for 40 minutes and get average.
   1054 
   1055         Expected Results:
   1056         Average power consumption should be within pre-defined limit.
   1057 
   1058         Returns:
   1059         True if Pass, False if Fail.
   1060 
   1061         Note: Please calibrate your test environment and baseline pass criteria.
   1062         Pass criteria info should be in test config file.
   1063         """
   1064         return self._power_test(
   1065             rat=RAT_LTE,
   1066             volte=True,
   1067             wifi=WIFI_2G,
   1068             mobile_data_always_on=True,
   1069             periodic_ping=True,
   1070             phone_check_func_after_power_test=phone_idle_volte)
   1071 
   1072     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1073     @TelephonyBaseTest.tel_test_wrap
   1074     def test_power_idle_lte_volte_disabled_wakeup_ping_mobile_data_always_on(
   1075             self):
   1076         """Power measurement test for phone LTE VoLTE disabled Wakeup Ping every
   1077         1 minute.
   1078 
   1079         Steps:
   1080         1. DUT idle, in LTE mode, VoLTE disabled. WiFi disabled,
   1081             WiFi Calling disabled.
   1082         2. Start script to wake up AP every 1 minute, after wakeup,
   1083             DUT send http Request to Google.com then go to sleep.
   1084         3. Turn off screen and wait for 6 minutes. Then measure power
   1085             consumption for 40 minutes and get average.
   1086 
   1087         Expected Results:
   1088         Average power consumption should be within pre-defined limit.
   1089 
   1090         Returns:
   1091         True if Pass, False if Fail.
   1092 
   1093         Note: Please calibrate your test environment and baseline pass criteria.
   1094         Pass criteria info should be in test config file.
   1095         """
   1096         return self._power_test(
   1097             rat=RAT_LTE, mobile_data_always_on=True, periodic_ping=True)
   1098 
   1099     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1100     @TelephonyBaseTest.tel_test_wrap
   1101     def test_power_idle_3g_wakeup_ping_mobile_data_always_on(self):
   1102         """Power measurement test for phone 3G Wakeup Ping every 1 minute.
   1103 
   1104         Steps:
   1105         1. DUT idle, in 3G mode. WiFi disabled, WiFi Calling disabled.
   1106         2. Start script to wake up AP every 1 minute, after wakeup,
   1107             DUT send http Request to Google.com then go to sleep.
   1108         3. Turn off screen and wait for 6 minutes. Then measure power
   1109             consumption for 40 minutes and get average.
   1110 
   1111         Expected Results:
   1112         Average power consumption should be within pre-defined limit.
   1113 
   1114         Returns:
   1115         True if Pass, False if Fail.
   1116 
   1117         Note: Please calibrate your test environment and baseline pass criteria.
   1118         Pass criteria info should be in test config file.
   1119         """
   1120         return self._power_test(
   1121             rat=RAT_3G,
   1122             mobile_data_always_on=True,
   1123             periodic_ping=True,
   1124             phone_check_func_after_power_test=phone_idle_3g)
   1125 
   1126     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1127     @TelephonyBaseTest.tel_test_wrap
   1128     def test_power_idle_3g_wifi2g_wakeup_ping_mobile_data_always_on(self):
   1129         """Power measurement test for phone 3G Wakeup Ping every 1 minute.
   1130 
   1131         Steps:
   1132         1. DUT idle, in 3G mode. WiFi enabled, WiFi Calling disabled.
   1133         2. Start script to wake up AP every 1 minute, after wakeup,
   1134             DUT send http Request to Google.com then go to sleep.
   1135         3. Turn off screen and wait for 6 minutes. Then measure power
   1136             consumption for 40 minutes and get average.
   1137 
   1138         Expected Results:
   1139         Average power consumption should be within pre-defined limit.
   1140 
   1141         Returns:
   1142         True if Pass, False if Fail.
   1143 
   1144         Note: Please calibrate your test environment and baseline pass criteria.
   1145         Pass criteria info should be in test config file.
   1146         """
   1147         return self._power_test(
   1148             rat=RAT_3G,
   1149             wifi=WIFI_2G,
   1150             mobile_data_always_on=True,
   1151             periodic_ping=True,
   1152             phone_check_func_after_power_test=phone_idle_3g)
   1153 
   1154     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1155     @TelephonyBaseTest.tel_test_wrap
   1156     def test_power_idle_2g_wakeup_ping_mobile_data_always_on(self):
   1157         """Power measurement test for phone 3G Wakeup Ping every 1 minute.
   1158 
   1159         Steps:
   1160         1. DUT idle, in 2G mode. WiFi disabled, WiFi Calling disabled.
   1161         2. Start script to wake up AP every 1 minute, after wakeup,
   1162             DUT send http Request to Google.com then go to sleep.
   1163         3. Turn off screen and wait for 6 minutes. Then measure power
   1164             consumption for 40 minutes and get average.
   1165 
   1166         Expected Results:
   1167         Average power consumption should be within pre-defined limit.
   1168 
   1169         Returns:
   1170         True if Pass, False if Fail.
   1171 
   1172         Note: Please calibrate your test environment and baseline pass criteria.
   1173         Pass criteria info should be in test config file.
   1174         """
   1175         return self._power_test(
   1176             rat=RAT_2G,
   1177             mobile_data_always_on=True,
   1178             periodic_ping=True,
   1179             phone_check_func_after_power_test=phone_idle_2g)
   1180 
   1181     # TODO: This one is not working right now. Requires SL4A API to start alarm.
   1182     @TelephonyBaseTest.tel_test_wrap
   1183     def test_power_idle_2g_wifi2g_wakeup_ping_mobile_data_always_on(self):
   1184         """Power measurement test for phone 3G Wakeup Ping every 1 minute.
   1185 
   1186         Steps:
   1187         1. DUT idle, in 2G mode. WiFi enabled, WiFi Calling disabled.
   1188         2. Start script to wake up AP every 1 minute, after wakeup,
   1189             DUT send http Request to Google.com then go to sleep.
   1190         3. Turn off screen and wait for 6 minutes. Then measure power
   1191             consumption for 40 minutes and get average.
   1192 
   1193         Expected Results:
   1194         Average power consumption should be within pre-defined limit.
   1195 
   1196         Returns:
   1197         True if Pass, False if Fail.
   1198 
   1199         Note: Please calibrate your test environment and baseline pass criteria.
   1200         Pass criteria info should be in test config file.
   1201         """
   1202         return self._power_test(
   1203             rat=RAT_2G,
   1204             wifi=WIFI_2G,
   1205             mobile_data_always_on=True,
   1206             periodic_ping=True,
   1207             phone_check_func_after_power_test=phone_idle_2g)
   1208 
   1209