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