1#!/usr/bin/env python3.4 2# 3# Copyright 2016 - Google 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 Test Script for epdg RF shield box related tests. 18""" 19 20import time 21from queue import Empty 22from acts.test_decorators import test_tracker_info 23from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest 24from acts.test_utils.tel.tel_atten_utils import set_rssi 25from acts.test_utils.tel.tel_defines import CELL_STRONG_RSSI_VALUE 26from acts.test_utils.tel.tel_defines import CELL_WEAK_RSSI_VALUE 27from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_ORIGINATED 28from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_TERMINATED 29from acts.test_utils.tel.tel_defines import GEN_3G 30from acts.test_utils.tel.tel_defines import GEN_4G 31from acts.test_utils.tel.tel_defines import INVALID_WIFI_RSSI 32from acts.test_utils.tel.tel_defines import MAX_WAIT_TIME_CALL_DROP 33from acts.test_utils.tel.tel_defines import MAX_WAIT_TIME_NW_SELECTION 34from acts.test_utils.tel.tel_defines import MAX_RSSI_RESERVED_VALUE 35from acts.test_utils.tel.tel_defines import MIN_RSSI_RESERVED_VALUE 36from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_DATA 37from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_VOICE 38from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_BACKGROUND 39from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_FOREGROUND 40from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_RINGING 41from acts.test_utils.tel.tel_defines import RAT_LTE 42from acts.test_utils.tel.tel_defines import RAT_IWLAN 43from acts.test_utils.tel.tel_defines import RAT_WCDMA 44from acts.test_utils.tel.tel_defines import WAIT_TIME_BETWEEN_REG_AND_CALL 45from acts.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL 46from acts.test_utils.tel.tel_defines import WAIT_TIME_WIFI_RSSI_CALIBRATION_SCREEN_ON 47from acts.test_utils.tel.tel_defines import WAIT_TIME_WIFI_RSSI_CALIBRATION_WIFI_CONNECTED 48from acts.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED 49from acts.test_utils.tel.tel_defines import WFC_MODE_DISABLED 50from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_ONLY 51from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED 52from acts.test_utils.tel.tel_defines import WIFI_WEAK_RSSI_VALUE 53from acts.test_utils.tel.tel_defines import EventNetworkCallback 54from acts.test_utils.tel.tel_defines import NetworkCallbackAvailable 55from acts.test_utils.tel.tel_defines import NetworkCallbackLost 56from acts.test_utils.tel.tel_defines import SignalStrengthContainer 57from acts.test_utils.tel.tel_test_utils import wifi_toggle_state 58from acts.test_utils.tel.tel_test_utils import ensure_network_generation 59from acts.test_utils.tel.tel_test_utils import ensure_phones_default_state 60from acts.test_utils.tel.tel_test_utils import ensure_wifi_connected 61from acts.test_utils.tel.tel_test_utils import get_network_rat 62from acts.test_utils.tel.tel_test_utils import get_phone_number 63from acts.test_utils.tel.tel_test_utils import hangup_call 64from acts.test_utils.tel.tel_test_utils import initiate_call 65from acts.test_utils.tel.tel_test_utils import is_network_call_back_event_match 66from acts.test_utils.tel.tel_test_utils import is_phone_in_call 67from acts.test_utils.tel.tel_test_utils import is_phone_not_in_call 68from acts.test_utils.tel.tel_test_utils import set_wfc_mode 69from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode 70from acts.test_utils.tel.tel_test_utils import toggle_volte 71from acts.test_utils.tel.tel_test_utils import wait_and_answer_call 72from acts.test_utils.tel.tel_test_utils import wait_for_cell_data_connection 73from acts.test_utils.tel.tel_test_utils import wait_for_droid_not_in_call 74from acts.test_utils.tel.tel_test_utils import wait_for_wfc_disabled 75from acts.test_utils.tel.tel_test_utils import wait_for_wfc_enabled 76from acts.test_utils.tel.tel_test_utils import wait_for_wifi_data_connection 77from acts.test_utils.tel.tel_test_utils import verify_http_connection 78from acts.test_utils.tel.tel_test_utils import get_telephony_signal_strength 79from acts.test_utils.tel.tel_test_utils import get_wifi_signal_strength 80from acts.test_utils.tel.tel_test_utils import wait_for_state 81from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_3g 82from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_csfb 83from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan 84from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_not_iwlan 85from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_volte 86from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_general 87from acts.test_utils.tel.tel_voice_utils import phone_idle_3g 88from acts.test_utils.tel.tel_voice_utils import phone_idle_csfb 89from acts.test_utils.tel.tel_voice_utils import phone_idle_iwlan 90from acts.test_utils.tel.tel_voice_utils import phone_idle_not_iwlan 91from acts.test_utils.tel.tel_voice_utils import phone_idle_volte 92 93# Attenuator name 94ATTEN_NAME_FOR_WIFI_2G = 'wifi0' 95ATTEN_NAME_FOR_WIFI_5G = 'wifi1' 96ATTEN_NAME_FOR_CELL_3G = 'cell0' 97ATTEN_NAME_FOR_CELL_4G = 'cell1' 98 99# WiFi RSSI settings for ROVE_IN test 100WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN = -60 101WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN = -70 102 103# WiFi RSSI settings for ROVE_OUT test 104WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE = -60 105WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT = -70 106WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT = -90 107 108# WiFi RSSI settings for HAND_IN test 109WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN = -80 110WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN = -50 111 112# WiFi RSSI settings for HAND_OUT test 113WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_NOT_HAND_OUT = -60 114WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT = -85 115 116 117class TelWifiVoiceTest(TelephonyBaseTest): 118 def __init__(self, controllers): 119 TelephonyBaseTest.__init__(self, controllers) 120 self.stress_test_number = self.get_stress_test_number() 121 122 self.attens = {} 123 for atten in self.attenuators: 124 self.attens[atten.path] = atten 125 atten.set_atten(atten.get_max_atten()) # Default all attens to max 126 127 def setup_class(self): 128 129 super().setup_class() 130 131 self.log.info("WFC phone: <{}> <{}>".format( 132 self.android_devices[0].serial, 133 get_phone_number(self.log, self.android_devices[0]))) 134 self.android_devices[ 135 0].droid.telephonyStartTrackingSignalStrengthChange() 136 137 for ad in self.android_devices: 138 if not wait_for_state(ad.droid.imsIsVolteProvisionedOnDevice, 139 True): 140 ad.log.info("VoLTE not Provisioned, Turning it ON") 141 ad.droid.imsSetVolteProvisioning(True) 142 else: 143 ad.log.info("VoLTE Provisioning is Enabled") 144 145 # Do WiFi RSSI calibration. 146 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 147 MAX_RSSI_RESERVED_VALUE) 148 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 149 MAX_RSSI_RESERVED_VALUE) 150 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 151 MAX_RSSI_RESERVED_VALUE) 152 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 153 MAX_RSSI_RESERVED_VALUE) 154 155 if not ensure_network_generation( 156 self.log, 157 self.android_devices[0], 158 GEN_4G, 159 voice_or_data=NETWORK_SERVICE_DATA, 160 toggle_apm_after_setting=True): 161 self.log.error("Setup_class: phone failed to select to LTE.") 162 return False 163 if not ensure_wifi_connected(self.log, self.android_devices[0], 164 self.wifi_network_ssid, 165 self.wifi_network_pass): 166 self.log.error("{} connect WiFI failed".format( 167 self.android_devices[0].serial)) 168 return False 169 if (not wait_for_wifi_data_connection(self.log, 170 self.android_devices[0], True) or 171 not verify_http_connection(self.log, self.android_devices[0])): 172 self.log.error("No Data on Wifi") 173 return False 174 175 # Delay WAIT_TIME_WIFI_RSSI_CALIBRATION_WIFI_CONNECTED after WiFi 176 # Connected to make sure WiFi RSSI reported value is correct. 177 time.sleep(WAIT_TIME_WIFI_RSSI_CALIBRATION_WIFI_CONNECTED) 178 # Turn On Screen and delay WAIT_TIME_WIFI_RSSI_CALIBRATION_SCREEN_ON 179 # then get WiFi RSSI to avoid WiFi RSSI report -127(invalid value). 180 self.android_devices[0].droid.wakeUpNow() 181 time.sleep(WAIT_TIME_WIFI_RSSI_CALIBRATION_SCREEN_ON) 182 183 setattr(self, "wifi_rssi_with_no_atten", 184 self.android_devices[0].droid.wifiGetConnectionInfo()['rssi']) 185 if self.wifi_rssi_with_no_atten == INVALID_WIFI_RSSI: 186 self.log.error( 187 "Initial WiFi RSSI calibration value is wrong: -127.") 188 return False 189 self.log.info("WiFi RSSI calibration info: atten=0, RSSI={}".format( 190 self.wifi_rssi_with_no_atten)) 191 ensure_phones_default_state(self.log, [self.android_devices[0]]) 192 193 # Do Cellular RSSI calibration. 194 setattr(self, "cell_rssi_with_no_atten", 195 self.android_devices[0].droid.telephonyGetSignalStrength()[ 196 SignalStrengthContainer.SIGNAL_STRENGTH_LTE_DBM]) 197 self.log.info( 198 "Cellular RSSI calibration info: atten=0, RSSI={}".format( 199 self.cell_rssi_with_no_atten)) 200 return True 201 202 def teardown_class(self): 203 204 super().teardown_class() 205 206 self.android_devices[ 207 0].droid.telephonyStopTrackingSignalStrengthChange() 208 return True 209 210 def teardown_test(self): 211 212 super().teardown_test() 213 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 214 MAX_RSSI_RESERVED_VALUE) 215 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 216 MAX_RSSI_RESERVED_VALUE) 217 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 218 MAX_RSSI_RESERVED_VALUE) 219 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 220 MAX_RSSI_RESERVED_VALUE) 221 return True 222 223 def _wfc_call_sequence(self, ads, mo_mt, initial_wifi_cellular_setup_func, 224 wfc_phone_setup_func, verify_wfc_initial_idle_func, 225 verify_wfc_in_call_state_func, 226 incall_wifi_cellular_setting_check_func, 227 expected_result): 228 """_wfc_call_sequence 229 230 Args: 231 ads: list of android devices. This list should have 2 ad. 232 mo_mt: indicating this call sequence is MO or MT. 233 Valid input: DIRECTION_MOBILE_ORIGINATED and 234 DIRECTION_MOBILE_TERMINATED. 235 initial_wifi_cellular_setup_func: Initial WiFI router and Attenuator 236 setup function before phone setup. 237 wfc_phone_setup_func: WFC phone setup function. 238 verify_wfc_initial_idle_func: Initial WFC phone idle check function. 239 verify_wfc_in_call_state_func: WFC phone in call state check function. 240 incall_wifi_cellular_setting_check_func: During call, WiFI router and Attenuator 241 change setting and phone status check function. 242 (for test hand-in and hand-out) 243 244 expected_result: expected test result. 245 If expect call sequence finish, this value should be set to 'True'. 246 If expect call sequence not finish (eg. setup fail, call initial fail), 247 this value should be set to "exception string" 248 Current supported string include: 249 "initial_wifi_cellular_setup_func fail." 250 "wfc_phone_setup_func fail." 251 "phone_setup_voice_general fail." 252 "verify_wfc_initial_idle_func fail." 253 "initiate_call fail." 254 "wait_and_answer_call fail." 255 "verify_wfc_in_call_state_func fail." 256 "PhoneB not in call." 257 "verify_wfc_in_call_state_func fail after 30 seconds." 258 "PhoneB not in call after 30 seconds." 259 "incall_wifi_cellular_setting_func fail." 260 "incall_setting_check_func fail." 261 "hangup_call fail." 262 263 Returns: 264 if expected_result is True, 265 Return True if call sequence finish without exception. Otherwise False. 266 if expected_result is string, 267 Return True if expected exception happened. Otherwise False. 268 269 """ 270 271 class _WfcCallSequenceException(Exception): 272 pass 273 274 if (len(ads) != 2) or (mo_mt not in [ 275 DIRECTION_MOBILE_ORIGINATED, DIRECTION_MOBILE_TERMINATED 276 ]): 277 self.log.error("Invalid parameters.") 278 return False 279 280 if mo_mt == DIRECTION_MOBILE_ORIGINATED: 281 ad_caller = ads[0] 282 ad_callee = ads[1] 283 else: 284 ad_caller = ads[1] 285 ad_callee = ads[0] 286 caller_number = get_phone_number(self.log, ad_caller) 287 callee_number = get_phone_number(self.log, ad_callee) 288 289 self.log.info("-->Begin wfc_call_sequence: {} to {}<--".format( 290 caller_number, callee_number)) 291 292 try: 293 # initial setup wifi router and RF 294 if initial_wifi_cellular_setup_func and not initial_wifi_cellular_setup_func( 295 ): 296 raise _WfcCallSequenceException( 297 "initial_wifi_cellular_setup_func fail.") 298 299 if wfc_phone_setup_func and not wfc_phone_setup_func(): 300 raise _WfcCallSequenceException("wfc_phone_setup_func fail.") 301 if not phone_setup_voice_general(self.log, ads[1]): 302 raise _WfcCallSequenceException( 303 "phone_setup_voice_general fail.") 304 time.sleep(WAIT_TIME_BETWEEN_REG_AND_CALL) 305 306 # Ensure idle status correct 307 if verify_wfc_initial_idle_func and not verify_wfc_initial_idle_func( 308 ): 309 raise _WfcCallSequenceException( 310 "verify_wfc_initial_idle_func fail.") 311 312 # Make MO/MT call. 313 if not initiate_call(self.log, ad_caller, callee_number): 314 raise _WfcCallSequenceException("initiate_call fail.") 315 if not wait_and_answer_call(self.log, ad_callee, caller_number): 316 raise _WfcCallSequenceException("wait_and_answer_call fail.") 317 time.sleep(1) 318 319 # Check state, wait 30 seconds, check again. 320 if verify_wfc_in_call_state_func and not verify_wfc_in_call_state_func( 321 ): 322 raise _WfcCallSequenceException( 323 "verify_wfc_in_call_state_func fail.") 324 if is_phone_not_in_call(self.log, ads[1]): 325 raise _WfcCallSequenceException("PhoneB not in call.") 326 time.sleep(WAIT_TIME_IN_CALL) 327 if verify_wfc_in_call_state_func and not verify_wfc_in_call_state_func( 328 ): 329 raise _WfcCallSequenceException( 330 "verify_wfc_in_call_state_func fail after 30 seconds.") 331 if is_phone_not_in_call(self.log, ads[1]): 332 raise _WfcCallSequenceException( 333 "PhoneB not in call after 30 seconds.") 334 335 # in call change setting and check 336 if incall_wifi_cellular_setting_check_func and not incall_wifi_cellular_setting_check_func( 337 ): 338 raise _WfcCallSequenceException( 339 "incall_wifi_cellular_setting_check_func fail.") 340 341 if is_phone_in_call(self.log, ads[0]): 342 # hangup call 343 if not hangup_call(self.log, ads[0]): 344 raise _WfcCallSequenceException("hangup_call fail.") 345 else: 346 # Call drop is unexpected if 347 # incall_wifi_cellular_setting_check_func is None 348 if incall_wifi_cellular_setting_check_func is None: 349 raise _WfcCallSequenceException("Unexpected call drop.") 350 351 except _WfcCallSequenceException as e: 352 if str(e) == expected_result: 353 self.log.info( 354 "Expected exception happened: <{}>, return True.".format( 355 e)) 356 get_telephony_signal_strength(self.android_devices[0]) 357 get_wifi_signal_strength(self.android_devices[0]) 358 return True 359 else: 360 self.log.info( 361 "Unexpected exception happened: <{}>, return False.". 362 format(e)) 363 get_telephony_signal_strength(self.android_devices[0]) 364 get_wifi_signal_strength(self.android_devices[0]) 365 return False 366 finally: 367 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 368 MAX_RSSI_RESERVED_VALUE) 369 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 370 MAX_RSSI_RESERVED_VALUE) 371 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 372 MAX_RSSI_RESERVED_VALUE) 373 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 374 MAX_RSSI_RESERVED_VALUE) 375 ensure_phones_default_state(self.log, [ads[0], ads[1]]) 376 377 self.log.info("wfc_call_sequence finished, return {}".format( 378 expected_result is True)) 379 return (expected_result is True) 380 381 def _phone_idle_iwlan(self): 382 return phone_idle_iwlan(self.log, self.android_devices[0]) 383 384 def _phone_idle_not_iwlan(self): 385 return phone_idle_not_iwlan(self.log, self.android_devices[0]) 386 387 def _phone_idle_volte(self): 388 return phone_idle_volte(self.log, self.android_devices[0]) 389 390 def _phone_idle_csfb(self): 391 return phone_idle_csfb(self.log, self.android_devices[0]) 392 393 def _phone_idle_3g(self): 394 return phone_idle_3g(self.log, self.android_devices[0]) 395 396 def _phone_wait_for_not_wfc(self): 397 result = wait_for_wfc_disabled(self.log, self.android_devices[0], 398 MAX_WAIT_TIME_NW_SELECTION) 399 self.log.info( 400 "_phone_wait_for_not_wfc: WFC_disabled is {}".format(result)) 401 if not result: 402 return False 403 # TODO: b/26338343 Need to check Data RAT. Data RAT should not be iwlan. 404 return True 405 406 def _phone_wait_for_wfc(self): 407 result = wait_for_wfc_enabled(self.log, self.android_devices[0], 408 MAX_WAIT_TIME_NW_SELECTION) 409 self.log.info("_phone_wait_for_wfc: WFC_enabled is {}".format(result)) 410 if not result: 411 return False 412 nw_type = get_network_rat(self.log, self.android_devices[0], 413 NETWORK_SERVICE_DATA) 414 if nw_type != RAT_IWLAN: 415 self.log.error( 416 "_phone_wait_for_wfc Data Rat is {}, expecting {}".format( 417 nw_type, RAT_IWLAN)) 418 return False 419 return True 420 421 def _phone_wait_for_call_drop(self): 422 if not wait_for_droid_not_in_call(self.log, self.android_devices[0], 423 MAX_WAIT_TIME_CALL_DROP): 424 self.log.info("_phone_wait_for_call_drop: Call not drop.") 425 return False 426 return True 427 428 def _is_phone_in_call_iwlan(self): 429 return is_phone_in_call_iwlan(self.log, self.android_devices[0]) 430 431 def _is_phone_in_call_not_iwlan(self): 432 return is_phone_in_call_not_iwlan(self.log, self.android_devices[0]) 433 434 def _is_phone_not_in_call(self): 435 if is_phone_in_call(self.log, self.android_devices[0]): 436 self.log.info("{} in call.".format(self.android_devices[0].serial)) 437 return False 438 self.log.info("{} not in call.".format(self.android_devices[0].serial)) 439 return True 440 441 def _is_phone_in_call_volte(self): 442 return is_phone_in_call_volte(self.log, self.android_devices[0]) 443 444 def _is_phone_in_call_3g(self): 445 return is_phone_in_call_3g(self.log, self.android_devices[0]) 446 447 def _is_phone_in_call_csfb(self): 448 return is_phone_in_call_csfb(self.log, self.android_devices[0]) 449 450 def _wfc_phone_setup(self, is_airplane_mode, wfc_mode, volte_mode=True): 451 toggle_airplane_mode(self.log, self.android_devices[0], False) 452 toggle_volte(self.log, self.android_devices[0], volte_mode) 453 if not ensure_network_generation( 454 self.log, 455 self.android_devices[0], 456 GEN_4G, 457 voice_or_data=NETWORK_SERVICE_DATA): 458 return False 459 460 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 461 self.log.error("{} set WFC mode failed.".format( 462 self.android_devices[0].serial)) 463 return False 464 465 toggle_airplane_mode(self.log, self.android_devices[0], 466 is_airplane_mode) 467 468 if not ensure_wifi_connected(self.log, self.android_devices[0], 469 self.wifi_network_ssid, 470 self.wifi_network_pass): 471 self.log.error("{} connect WiFI failed".format( 472 self.android_devices[0].serial)) 473 return False 474 return True 475 476 def _wfc_phone_setup_cellular_absent(self, wfc_mode): 477 is_exception_happened = False 478 time.sleep(90) 479 try: 480 if not toggle_airplane_mode(self.log, self.android_devices[0], 481 False): 482 raise Exception("Toggle APM failed.") 483 if not ensure_network_generation( 484 self.log, 485 self.android_devices[0], 486 GEN_4G, 487 voice_or_data=NETWORK_SERVICE_DATA): 488 raise Exception("Ensure LTE failed.") 489 except Exception: 490 is_exception_happened = True 491 492 if not is_exception_happened: 493 self.log.error( 494 "_wfc_phone_setup_cellular_absent error:" 495 "Phone on LTE, expected Phone have no cellular signal") 496 return False 497 if not toggle_volte(self.log, self.android_devices[0], True): 498 self.log.error( 499 "_wfc_phone_setup_cellular_absent: toggle VoLTE fail.") 500 raise False 501 502 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 503 self.log.error("{} set WFC mode failed.".format( 504 self.android_devices[0].serial)) 505 return False 506 507 if not ensure_wifi_connected(self.log, self.android_devices[0], 508 self.wifi_network_ssid, 509 self.wifi_network_pass): 510 self.log.error("{} connect WiFI failed".format( 511 self.android_devices[0].serial)) 512 return False 513 return True 514 515 def _wfc_phone_setup_apm_wifi_only(self): 516 return self._wfc_phone_setup(True, WFC_MODE_WIFI_ONLY) 517 518 def _wfc_phone_setup_apm_wifi_preferred(self): 519 return self._wfc_phone_setup(True, WFC_MODE_WIFI_PREFERRED) 520 521 def _wfc_phone_setup_apm_cellular_preferred(self): 522 return self._wfc_phone_setup(True, WFC_MODE_CELLULAR_PREFERRED) 523 524 def _wfc_phone_setup_apm_wfc_disabled(self): 525 return self._wfc_phone_setup(True, WFC_MODE_DISABLED) 526 527 def _wfc_phone_setup_wifi_only(self): 528 return self._wfc_phone_setup(False, WFC_MODE_WIFI_ONLY) 529 530 def _wfc_phone_setup_wifi_preferred(self): 531 return self._wfc_phone_setup(False, WFC_MODE_WIFI_PREFERRED) 532 533 def _wfc_phone_setup_cellular_preferred(self): 534 return self._wfc_phone_setup(False, WFC_MODE_CELLULAR_PREFERRED) 535 536 def _wfc_phone_setup_wfc_disabled(self): 537 return self._wfc_phone_setup(False, WFC_MODE_DISABLED) 538 539 def _wfc_phone_setup_cellular_absent_wifi_only(self): 540 return self._wfc_phone_setup_cellular_absent(WFC_MODE_WIFI_ONLY) 541 542 def _wfc_phone_setup_cellular_absent_wifi_preferred(self): 543 return self._wfc_phone_setup_cellular_absent(WFC_MODE_WIFI_PREFERRED) 544 545 def _wfc_phone_setup_cellular_absent_cellular_preferred(self): 546 return self._wfc_phone_setup_cellular_absent( 547 WFC_MODE_CELLULAR_PREFERRED) 548 549 def _wfc_phone_setup_cellular_absent_wfc_disabled(self): 550 return self._wfc_phone_setup_cellular_absent(WFC_MODE_DISABLED) 551 552 def _wfc_phone_setup_wifi_preferred_e4g_disabled(self): 553 return self._wfc_phone_setup(False, WFC_MODE_WIFI_PREFERRED, False) 554 555 def _wfc_phone_setup_wifi_absent(self, 556 is_airplane_mode, 557 wfc_mode, 558 volte_mode=True): 559 toggle_airplane_mode(self.log, self.android_devices[0], False) 560 toggle_volte(self.log, self.android_devices[0], volte_mode) 561 if not ensure_network_generation( 562 self.log, 563 self.android_devices[0], 564 GEN_4G, 565 voice_or_data=NETWORK_SERVICE_DATA): 566 return False 567 568 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 569 self.log.error("{} set WFC mode failed.".format( 570 self.android_devices[0].serial)) 571 return False 572 573 toggle_airplane_mode(self.log, self.android_devices[0], 574 is_airplane_mode) 575 576 if ensure_wifi_connected(self.log, self.android_devices[0], 577 self.wifi_network_ssid, 578 self.wifi_network_pass, 1): 579 self.log.error( 580 "{} connect WiFI succeed, expected not succeed".format( 581 self.android_devices[0].serial)) 582 return False 583 return True 584 585 def _wfc_phone_setup_cellular_absent_wifi_absent(self, wfc_mode): 586 is_exception_happened = False 587 time.sleep(60) 588 try: 589 if not toggle_airplane_mode(self.log, self.android_devices[0], 590 False): 591 raise Exception("Toggle APM failed.") 592 if not ensure_network_generation( 593 self.log, 594 self.android_devices[0], 595 GEN_4G, 596 voice_or_data=NETWORK_SERVICE_DATA): 597 raise Exception("Ensure LTE failed.") 598 except Exception: 599 is_exception_happened = True 600 601 if not is_exception_happened: 602 self.log.error( 603 "_wfc_phone_setup_cellular_absent_wifi_absent error:" 604 "Phone on LTE, expected Phone have no cellular signal") 605 return False 606 if not toggle_volte(self.log, self.android_devices[0], True): 607 self.log.error( 608 "_wfc_phone_setup_cellular_absent: toggle VoLTE fail.") 609 raise False 610 611 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 612 self.log.error("{} set WFC mode failed.".format( 613 self.android_devices[0].serial)) 614 return False 615 616 if ensure_wifi_connected(self.log, self.android_devices[0], 617 self.wifi_network_ssid, 618 self.wifi_network_pass, 1): 619 self.log.error( 620 "{} connect WiFI succeed, expected not succeed".format( 621 self.android_devices[0].serial)) 622 return False 623 return True 624 625 def _wfc_phone_setup_apm_wifi_absent_wifi_only(self): 626 return self._wfc_phone_setup_wifi_absent(True, WFC_MODE_WIFI_ONLY) 627 628 def _wfc_phone_setup_apm_wifi_absent_wifi_preferred(self): 629 return self._wfc_phone_setup_wifi_absent(True, WFC_MODE_WIFI_PREFERRED) 630 631 def _wfc_phone_setup_apm_wifi_absent_cellular_preferred(self): 632 return self._wfc_phone_setup_wifi_absent(True, 633 WFC_MODE_CELLULAR_PREFERRED) 634 635 def _wfc_phone_setup_wifi_absent_wifi_only(self): 636 return self._wfc_phone_setup_wifi_absent(False, WFC_MODE_WIFI_ONLY) 637 638 def _wfc_phone_setup_wifi_absent_wifi_preferred(self): 639 return self._wfc_phone_setup_wifi_absent(False, 640 WFC_MODE_WIFI_PREFERRED) 641 642 def _wfc_phone_setup_wifi_absent_cellular_preferred(self): 643 return self._wfc_phone_setup_wifi_absent(False, 644 WFC_MODE_CELLULAR_PREFERRED) 645 646 def _wfc_phone_setup_cellular_absent_wifi_absent_wifi_only(self): 647 return self._wfc_phone_setup_cellular_absent_wifi_absent( 648 WFC_MODE_WIFI_ONLY) 649 650 def _wfc_phone_setup_cellular_absent_wifi_absent_wifi_preferred(self): 651 return self._wfc_phone_setup_cellular_absent_wifi_absent( 652 WFC_MODE_WIFI_PREFERRED) 653 654 def _wfc_phone_setup_cellular_absent_wifi_absent_cellular_preferred(self): 655 return self._wfc_phone_setup_cellular_absent_wifi_absent( 656 WFC_MODE_CELLULAR_PREFERRED) 657 658 def _wfc_phone_setup_wifi_absent_wifi_preferred_e4g_disabled(self): 659 return self._wfc_phone_setup_wifi_absent( 660 False, WFC_MODE_WIFI_PREFERRED, False) 661 662 def _wfc_phone_setup_wifi_disabled(self, is_airplane_mode, wfc_mode): 663 toggle_airplane_mode(self.log, self.android_devices[0], False) 664 toggle_volte(self.log, self.android_devices[0], True) 665 if not ensure_network_generation( 666 self.log, 667 self.android_devices[0], 668 GEN_4G, 669 voice_or_data=NETWORK_SERVICE_DATA): 670 return False 671 672 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 673 self.log.error("{} set WFC mode failed.".format( 674 self.android_devices[0].serial)) 675 return False 676 677 toggle_airplane_mode(self.log, self.android_devices[0], 678 is_airplane_mode) 679 680 wifi_toggle_state(self.log, self.android_devices[0], False) 681 return True 682 683 def _wfc_phone_setup_cellular_absent_wifi_disabled(self, wfc_mode): 684 is_exception_happened = False 685 time.sleep(60) 686 try: 687 if not toggle_airplane_mode(self.log, self.android_devices[0], 688 False): 689 raise Exception("Toggle APM failed.") 690 if not ensure_network_generation( 691 self.log, 692 self.android_devices[0], 693 GEN_4G, 694 voice_or_data=NETWORK_SERVICE_DATA): 695 raise Exception("Ensure LTE failed.") 696 except Exception: 697 is_exception_happened = True 698 699 if not is_exception_happened: 700 self.log.error( 701 "_wfc_phone_setup_cellular_absent_wifi_disabled error:" 702 "Phone on LTE, expected Phone have no cellular signal") 703 return False 704 if not toggle_volte(self.log, self.android_devices[0], True): 705 self.log.error( 706 "_wfc_phone_setup_cellular_absent: toggle VoLTE fail.") 707 raise False 708 709 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 710 self.log.error("{} set WFC mode failed.".format( 711 self.android_devices[0].serial)) 712 return False 713 714 wifi_toggle_state(self.log, self.android_devices[0], False) 715 return True 716 717 def _wfc_phone_setup_apm_wifi_disabled_wifi_only(self): 718 return self._wfc_phone_setup_wifi_disabled(True, WFC_MODE_WIFI_ONLY) 719 720 def _wfc_phone_setup_apm_wifi_disabled_wifi_preferred(self): 721 return self._wfc_phone_setup_wifi_disabled(True, 722 WFC_MODE_WIFI_PREFERRED) 723 724 def _wfc_phone_setup_apm_wifi_disabled_cellular_preferred(self): 725 return self._wfc_phone_setup_wifi_disabled(True, 726 WFC_MODE_CELLULAR_PREFERRED) 727 728 def _wfc_phone_setup_wifi_disabled_wifi_only(self): 729 return self._wfc_phone_setup_wifi_disabled(False, WFC_MODE_WIFI_ONLY) 730 731 def _wfc_phone_setup_wifi_disabled_wifi_preferred(self): 732 return self._wfc_phone_setup_wifi_disabled(False, 733 WFC_MODE_WIFI_PREFERRED) 734 735 def _wfc_phone_setup_wifi_disabled_cellular_preferred(self): 736 return self._wfc_phone_setup_wifi_disabled(False, 737 WFC_MODE_CELLULAR_PREFERRED) 738 739 def _wfc_phone_setup_cellular_absent_wifi_disabled_wifi_only(self): 740 return self._wfc_phone_setup_cellular_absent_wifi_disabled( 741 WFC_MODE_WIFI_ONLY) 742 743 def _wfc_phone_setup_cellular_absent_wifi_disabled_wifi_preferred(self): 744 return self._wfc_phone_setup_cellular_absent_wifi_disabled( 745 WFC_MODE_WIFI_PREFERRED) 746 747 def _wfc_phone_setup_cellular_absent_wifi_disabled_cellular_preferred( 748 self): 749 return self._wfc_phone_setup_cellular_absent_wifi_disabled( 750 WFC_MODE_CELLULAR_PREFERRED) 751 752 def _wfc_set_wifi_strong_cell_strong(self): 753 self.log.info("--->Setting WiFi strong cell strong<---") 754 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 755 MAX_RSSI_RESERVED_VALUE) 756 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 757 MAX_RSSI_RESERVED_VALUE) 758 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 759 MAX_RSSI_RESERVED_VALUE) 760 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 761 MAX_RSSI_RESERVED_VALUE) 762 return True 763 764 def _wfc_set_wifi_strong_cell_weak(self): 765 self.log.info("--->Setting WiFi strong cell weak<---") 766 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 767 MAX_RSSI_RESERVED_VALUE) 768 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 769 MAX_RSSI_RESERVED_VALUE) 770 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 771 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 772 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 773 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 774 return True 775 776 def _wfc_set_wifi_strong_cell_absent(self): 777 self.log.info("--->Setting WiFi strong cell absent<---") 778 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 779 MAX_RSSI_RESERVED_VALUE) 780 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 781 MAX_RSSI_RESERVED_VALUE) 782 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 783 MIN_RSSI_RESERVED_VALUE) 784 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 785 MIN_RSSI_RESERVED_VALUE) 786 return True 787 788 def _wfc_set_wifi_weak_cell_strong(self): 789 self.log.info("--->Setting WiFi weak cell strong<---") 790 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 791 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 792 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 793 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 794 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 795 MAX_RSSI_RESERVED_VALUE) 796 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 797 MAX_RSSI_RESERVED_VALUE) 798 return True 799 800 def _wfc_set_wifi_weak_cell_weak(self): 801 self.log.info("--->Setting WiFi weak cell weak<---") 802 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 803 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 804 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 805 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 806 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 807 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 808 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 809 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 810 return True 811 812 def _wfc_set_wifi_weak_cell_absent(self): 813 self.log.info("--->Setting WiFi weak cell absent<---") 814 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 815 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 816 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 817 self.wifi_rssi_with_no_atten, WIFI_WEAK_RSSI_VALUE) 818 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 819 MIN_RSSI_RESERVED_VALUE) 820 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 821 MIN_RSSI_RESERVED_VALUE) 822 return True 823 824 def _wfc_set_wifi_absent_cell_strong(self): 825 self.log.info("--->Setting WiFi absent cell strong<---") 826 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 827 MIN_RSSI_RESERVED_VALUE) 828 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 829 MIN_RSSI_RESERVED_VALUE) 830 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 831 MAX_RSSI_RESERVED_VALUE) 832 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 833 MAX_RSSI_RESERVED_VALUE) 834 return True 835 836 def _wfc_set_wifi_absent_cell_weak(self): 837 self.log.info("--->Setting WiFi absent cell weak<---") 838 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 839 MIN_RSSI_RESERVED_VALUE) 840 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 841 MIN_RSSI_RESERVED_VALUE) 842 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 843 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 844 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 845 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE) 846 return True 847 848 def _wfc_set_wifi_absent_cell_absent(self): 849 self.log.info("--->Setting WiFi absent cell absent<---") 850 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 851 MIN_RSSI_RESERVED_VALUE) 852 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 853 MIN_RSSI_RESERVED_VALUE) 854 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 855 MIN_RSSI_RESERVED_VALUE) 856 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 857 MIN_RSSI_RESERVED_VALUE) 858 return True 859 860 """ Tests Begin """ 861 862 @test_tracker_info(uuid="a9a369bc-b8cc-467b-a847-82d004db851d") 863 @TelephonyBaseTest.tel_test_wrap 864 def test_call_epdg_wfc_wifi_only_wifi_strong_apm(self): 865 """ Test WFC MO MT, WiFI only mode, WIFI Strong, Phone in APM 866 867 Set WiFi/Cellular network environment. 868 Make Sure PhoneA is set correct WFC parameters. 869 Make SUre PhoneB is able to make MO/MT call. 870 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 871 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 872 873 Returns: 874 True if pass; False if fail. 875 """ 876 877 ads = [self.android_devices[0], self.android_devices[1]] 878 mo_result = self._wfc_call_sequence( 879 ads, DIRECTION_MOBILE_ORIGINATED, 880 self._wfc_set_wifi_strong_cell_strong, 881 self._wfc_phone_setup_apm_wifi_only, self._phone_idle_iwlan, 882 self._is_phone_in_call_iwlan, None, True) 883 884 mt_result = self._wfc_call_sequence( 885 ads, DIRECTION_MOBILE_TERMINATED, 886 self._wfc_set_wifi_strong_cell_strong, 887 self._wfc_phone_setup_apm_wifi_only, self._phone_idle_iwlan, 888 self._is_phone_in_call_iwlan, None, True) 889 890 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 891 return ((mo_result is True) and (mt_result is True)) 892 893 @test_tracker_info(uuid="c88999d7-7fe7-4163-9430-4aee88852e7b") 894 @TelephonyBaseTest.tel_test_wrap 895 def test_call_epdg_wfc_wifi_preferred_wifi_strong_apm(self): 896 """ Test WFC MO MT, WiFI preferred mode, WIFI Strong, Phone in APM 897 898 Set WiFi/Cellular network environment. 899 Make Sure PhoneA is set correct WFC parameters. 900 Make SUre PhoneB is able to make MO/MT call. 901 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 902 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 903 904 Returns: 905 True if pass; False if fail. 906 """ 907 908 ads = [self.android_devices[0], self.android_devices[1]] 909 mo_result = self._wfc_call_sequence( 910 ads, DIRECTION_MOBILE_ORIGINATED, 911 self._wfc_set_wifi_strong_cell_strong, 912 self._wfc_phone_setup_apm_wifi_preferred, self._phone_idle_iwlan, 913 self._is_phone_in_call_iwlan, None, True) 914 915 mt_result = self._wfc_call_sequence( 916 ads, DIRECTION_MOBILE_TERMINATED, 917 self._wfc_set_wifi_strong_cell_strong, 918 self._wfc_phone_setup_apm_wifi_preferred, self._phone_idle_iwlan, 919 self._is_phone_in_call_iwlan, None, True) 920 921 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 922 return ((mo_result is True) and (mt_result is True)) 923 924 @test_tracker_info(uuid="a4464c2c-753e-4702-b4fc-73d7bb6265da") 925 @TelephonyBaseTest.tel_test_wrap 926 def test_call_epdg_wfc_cellular_preferred_wifi_strong_apm(self): 927 """ Test WFC MO MT, cellular preferred mode, WIFI Strong, Phone in APM 928 929 Set WiFi/Cellular network environment. 930 Make Sure PhoneA is set correct WFC parameters. 931 Make SUre PhoneB is able to make MO/MT call. 932 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 933 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 934 935 Returns: 936 True if pass; False if fail. 937 """ 938 939 ads = [self.android_devices[0], self.android_devices[1]] 940 mo_result = self._wfc_call_sequence( 941 ads, DIRECTION_MOBILE_ORIGINATED, 942 self._wfc_set_wifi_strong_cell_strong, 943 self._wfc_phone_setup_apm_cellular_preferred, 944 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 945 946 mt_result = self._wfc_call_sequence( 947 ads, DIRECTION_MOBILE_TERMINATED, 948 self._wfc_set_wifi_strong_cell_strong, 949 self._wfc_phone_setup_apm_cellular_preferred, 950 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 951 952 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 953 return ((mo_result is True) and (mt_result is True)) 954 955 @test_tracker_info(uuid="797ad987-db48-456e-b092-d27be110b7ff") 956 @TelephonyBaseTest.tel_test_wrap 957 def test_call_epdg_wfc_wifi_only_wifi_weak_apm(self): 958 """ Test WFC MO MT, WiFI only mode, WIFI weak, Phone in APM 959 960 Set WiFi/Cellular network environment. 961 Make Sure PhoneA is set correct WFC parameters. 962 Make SUre PhoneB is able to make MO/MT call. 963 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 964 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 965 966 Returns: 967 True if pass; False if fail. 968 """ 969 970 ads = [self.android_devices[0], self.android_devices[1]] 971 mo_result = self._wfc_call_sequence( 972 ads, DIRECTION_MOBILE_ORIGINATED, 973 self._wfc_set_wifi_weak_cell_strong, 974 self._wfc_phone_setup_apm_wifi_only, self._phone_idle_iwlan, 975 self._is_phone_in_call_iwlan, None, True) 976 977 mt_result = self._wfc_call_sequence( 978 ads, DIRECTION_MOBILE_TERMINATED, 979 self._wfc_set_wifi_weak_cell_strong, 980 self._wfc_phone_setup_apm_wifi_only, self._phone_idle_iwlan, 981 self._is_phone_in_call_iwlan, None, True) 982 983 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 984 return ((mo_result is True) and (mt_result is True)) 985 986 @test_tracker_info(uuid="00000f11-1749-47e9-a9b3-d67a43f97470") 987 @TelephonyBaseTest.tel_test_wrap 988 def test_call_epdg_wfc_wifi_preferred_wifi_weak_apm(self): 989 """ Test WFC MO MT, WiFI preferred mode, WIFI weak, Phone in APM 990 991 Set WiFi/Cellular network environment. 992 Make Sure PhoneA is set correct WFC parameters. 993 Make SUre PhoneB is able to make MO/MT call. 994 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 995 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 996 997 Returns: 998 True if pass; False if fail. 999 """ 1000 1001 ads = [self.android_devices[0], self.android_devices[1]] 1002 mo_result = self._wfc_call_sequence( 1003 ads, DIRECTION_MOBILE_ORIGINATED, 1004 self._wfc_set_wifi_weak_cell_strong, 1005 self._wfc_phone_setup_apm_wifi_preferred, self._phone_idle_iwlan, 1006 self._is_phone_in_call_iwlan, None, True) 1007 1008 mt_result = self._wfc_call_sequence( 1009 ads, DIRECTION_MOBILE_TERMINATED, 1010 self._wfc_set_wifi_weak_cell_strong, 1011 self._wfc_phone_setup_apm_wifi_preferred, self._phone_idle_iwlan, 1012 self._is_phone_in_call_iwlan, None, True) 1013 1014 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1015 return ((mo_result is True) and (mt_result is True)) 1016 1017 @test_tracker_info(uuid="db3e96f4-bbb6-48f8-9eb6-71f489987f8f") 1018 @TelephonyBaseTest.tel_test_wrap 1019 def test_call_epdg_wfc_cellular_preferred_wifi_weak_apm(self): 1020 """ Test WFC MO MT, cellular preferred mode, WIFI weak, Phone in APM 1021 1022 Set WiFi/Cellular network environment. 1023 Make Sure PhoneA is set correct WFC parameters. 1024 Make SUre PhoneB is able to make MO/MT call. 1025 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1026 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 1027 1028 Returns: 1029 True if pass; False if fail. 1030 """ 1031 1032 ads = [self.android_devices[0], self.android_devices[1]] 1033 mo_result = self._wfc_call_sequence( 1034 ads, DIRECTION_MOBILE_ORIGINATED, 1035 self._wfc_set_wifi_weak_cell_strong, 1036 self._wfc_phone_setup_apm_cellular_preferred, 1037 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 1038 1039 mt_result = self._wfc_call_sequence( 1040 ads, DIRECTION_MOBILE_TERMINATED, 1041 self._wfc_set_wifi_weak_cell_strong, 1042 self._wfc_phone_setup_apm_cellular_preferred, 1043 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 1044 1045 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1046 return ((mo_result is True) and (mt_result is True)) 1047 1048 @test_tracker_info(uuid="121574c3-4c58-4fd5-abbb-c626c5f777c8") 1049 @TelephonyBaseTest.tel_test_wrap 1050 def test_call_epdg_wfc_wifi_only_wifi_absent_apm(self): 1051 """ Test WFC MO MT, WiFI only mode, WIFI absent, Phone in APM 1052 1053 Set WiFi/Cellular network environment. 1054 Make Sure PhoneA is set correct WFC parameters. 1055 Make SUre PhoneB is able to make MO/MT call. 1056 Call from PhoneA to PhoneB, call should fail. 1057 Call from PhoneB to PHoneA, call should fail. 1058 1059 Returns: 1060 True if pass; False if fail. 1061 """ 1062 ads = [self.android_devices[0], self.android_devices[1]] 1063 mo_result = self._wfc_call_sequence( 1064 ads, DIRECTION_MOBILE_ORIGINATED, 1065 self._wfc_set_wifi_absent_cell_strong, 1066 self._wfc_phone_setup_apm_wifi_absent_wifi_only, 1067 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1068 "initiate_call fail.") 1069 1070 mt_result = self._wfc_call_sequence( 1071 ads, DIRECTION_MOBILE_TERMINATED, 1072 self._wfc_set_wifi_absent_cell_strong, 1073 self._wfc_phone_setup_apm_wifi_absent_wifi_only, 1074 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1075 "wait_and_answer_call fail.") 1076 1077 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1078 return ((mo_result is True) and (mt_result is True)) 1079 1080 @test_tracker_info(uuid="bccff410-ada3-407a-8b50-c84b0064bd8a") 1081 @TelephonyBaseTest.tel_test_wrap 1082 def test_call_epdg_wfc_wifi_preferred_wifi_absent_apm(self): 1083 """ Test WFC MO MT, WiFI preferred mode, WIFI absent, Phone in APM 1084 1085 Set WiFi/Cellular network environment. 1086 Make Sure PhoneA is set correct WFC parameters. 1087 Make SUre PhoneB is able to make MO/MT call. 1088 Call from PhoneA to PhoneB, call should fail. 1089 Call from PhoneB to PHoneA, call should fail. 1090 1091 Returns: 1092 True if pass; False if fail. 1093 """ 1094 ads = [self.android_devices[0], self.android_devices[1]] 1095 mo_result = self._wfc_call_sequence( 1096 ads, DIRECTION_MOBILE_ORIGINATED, 1097 self._wfc_set_wifi_absent_cell_strong, 1098 self._wfc_phone_setup_apm_wifi_absent_wifi_preferred, 1099 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1100 "initiate_call fail.") 1101 1102 mt_result = self._wfc_call_sequence( 1103 ads, DIRECTION_MOBILE_TERMINATED, 1104 self._wfc_set_wifi_absent_cell_strong, 1105 self._wfc_phone_setup_apm_wifi_absent_wifi_preferred, 1106 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1107 "wait_and_answer_call fail.") 1108 1109 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1110 return ((mo_result is True) and (mt_result is True)) 1111 1112 @test_tracker_info(uuid="a9722c73-5b6e-46d0-962c-e612df84b7b7") 1113 @TelephonyBaseTest.tel_test_wrap 1114 def test_call_epdg_wfc_cellular_preferred_wifi_absent_apm(self): 1115 """ Test WFC MO MT, cellular preferred mode, WIFI absent, Phone in APM 1116 1117 Set WiFi/Cellular network environment. 1118 Make Sure PhoneA is set correct WFC parameters. 1119 Make SUre PhoneB is able to make MO/MT call. 1120 Call from PhoneA to PhoneB, call should fail. 1121 Call from PhoneB to PHoneA, call should fail. 1122 1123 Returns: 1124 True if pass; False if fail. 1125 """ 1126 ads = [self.android_devices[0], self.android_devices[1]] 1127 mo_result = self._wfc_call_sequence( 1128 ads, DIRECTION_MOBILE_ORIGINATED, 1129 self._wfc_set_wifi_absent_cell_strong, 1130 self._wfc_phone_setup_apm_wifi_absent_cellular_preferred, 1131 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1132 "initiate_call fail.") 1133 1134 mt_result = self._wfc_call_sequence( 1135 ads, DIRECTION_MOBILE_TERMINATED, 1136 self._wfc_set_wifi_absent_cell_strong, 1137 self._wfc_phone_setup_apm_wifi_absent_cellular_preferred, 1138 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1139 "wait_and_answer_call fail.") 1140 1141 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1142 return ((mo_result is True) and (mt_result is True)) 1143 1144 @test_tracker_info(uuid="6ed1be09-b825-43a4-8317-822070023329") 1145 @TelephonyBaseTest.tel_test_wrap 1146 def test_call_epdg_wfc_wifi_only_wifi_disabled_apm(self): 1147 """ Test WFC MO MT, WiFI only mode, WIFI disabled, Phone in APM 1148 1149 Set WiFi/Cellular network environment. 1150 Make Sure PhoneA is set correct WFC parameters. 1151 Make SUre PhoneB is able to make MO/MT call. 1152 Call from PhoneA to PhoneB, call should fail. 1153 Call from PhoneB to PHoneA, call should fail. 1154 1155 Returns: 1156 True if pass; False if fail. 1157 """ 1158 ads = [self.android_devices[0], self.android_devices[1]] 1159 mo_result = self._wfc_call_sequence( 1160 ads, DIRECTION_MOBILE_ORIGINATED, 1161 self._wfc_set_wifi_strong_cell_strong, 1162 self._wfc_phone_setup_apm_wifi_disabled_wifi_only, 1163 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1164 "initiate_call fail.") 1165 1166 mt_result = self._wfc_call_sequence( 1167 ads, DIRECTION_MOBILE_TERMINATED, 1168 self._wfc_set_wifi_strong_cell_strong, 1169 self._wfc_phone_setup_apm_wifi_disabled_wifi_only, 1170 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1171 "wait_and_answer_call fail.") 1172 1173 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1174 return ((mo_result is True) and (mt_result is True)) 1175 1176 @test_tracker_info(uuid="c4059ea2-732c-4a22-943c-f19ad65d5fe9") 1177 @TelephonyBaseTest.tel_test_wrap 1178 def test_call_epdg_wfc_wifi_preferred_wifi_disabled_apm(self): 1179 """ Test WFC MO MT, WiFI preferred mode, WIFI disabled, Phone in APM 1180 1181 Set WiFi/Cellular network environment. 1182 Make Sure PhoneA is set correct WFC parameters. 1183 Make SUre PhoneB is able to make MO/MT call. 1184 Call from PhoneA to PhoneB, call should fail. 1185 Call from PhoneB to PHoneA, call should fail. 1186 1187 Returns: 1188 True if pass; False if fail. 1189 """ 1190 ads = [self.android_devices[0], self.android_devices[1]] 1191 mo_result = self._wfc_call_sequence( 1192 ads, DIRECTION_MOBILE_ORIGINATED, 1193 self._wfc_set_wifi_strong_cell_strong, 1194 self._wfc_phone_setup_apm_wifi_disabled_wifi_preferred, 1195 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1196 "initiate_call fail.") 1197 1198 mt_result = self._wfc_call_sequence( 1199 ads, DIRECTION_MOBILE_TERMINATED, 1200 self._wfc_set_wifi_strong_cell_strong, 1201 self._wfc_phone_setup_apm_wifi_disabled_wifi_preferred, 1202 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1203 "wait_and_answer_call fail.") 1204 1205 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1206 return ((mo_result is True) and (mt_result is True)) 1207 1208 @test_tracker_info(uuid="a4c000a1-b3cd-4fe2-8d82-d857fb3b2d62") 1209 @TelephonyBaseTest.tel_test_wrap 1210 def test_call_epdg_wfc_cellular_preferred_wifi_disabled_apm(self): 1211 """ Test WFC MO MT, cellular preferred mode, WIFI disabled, Phone in APM 1212 1213 Set WiFi/Cellular network environment. 1214 Make Sure PhoneA is set correct WFC parameters. 1215 Make SUre PhoneB is able to make MO/MT call. 1216 Call from PhoneA to PhoneB, call should fail. 1217 Call from PhoneB to PHoneA, call should fail. 1218 1219 Returns: 1220 True if pass; False if fail. 1221 """ 1222 ads = [self.android_devices[0], self.android_devices[1]] 1223 mo_result = self._wfc_call_sequence( 1224 ads, DIRECTION_MOBILE_ORIGINATED, 1225 self._wfc_set_wifi_strong_cell_strong, 1226 self._wfc_phone_setup_apm_wifi_disabled_cellular_preferred, 1227 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1228 "initiate_call fail.") 1229 1230 mt_result = self._wfc_call_sequence( 1231 ads, DIRECTION_MOBILE_TERMINATED, 1232 self._wfc_set_wifi_strong_cell_strong, 1233 self._wfc_phone_setup_apm_wifi_disabled_cellular_preferred, 1234 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1235 "wait_and_answer_call fail.") 1236 1237 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1238 return ((mo_result is True) and (mt_result is True)) 1239 1240 @test_tracker_info(uuid="d37909d3-40b4-4989-a444-fca60bd355cf") 1241 @TelephonyBaseTest.tel_test_wrap 1242 def test_call_epdg_wfc_wifi_only_wifi_strong_cellular_strong(self): 1243 """ Test WFC MO MT, WiFI only mode, WIFI strong, Cellular strong 1244 1245 Set WiFi/Cellular network environment. 1246 Make Sure PhoneA is set correct WFC parameters. 1247 Make SUre PhoneB is able to make MO/MT call. 1248 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1249 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 1250 1251 Returns: 1252 True if pass; False if fail. 1253 """ 1254 ads = [self.android_devices[0], self.android_devices[1]] 1255 mo_result = self._wfc_call_sequence( 1256 ads, DIRECTION_MOBILE_ORIGINATED, 1257 self._wfc_set_wifi_strong_cell_strong, 1258 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1259 self._is_phone_in_call_iwlan, None, True) 1260 1261 mt_result = self._wfc_call_sequence( 1262 ads, DIRECTION_MOBILE_TERMINATED, 1263 self._wfc_set_wifi_strong_cell_strong, 1264 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1265 self._is_phone_in_call_iwlan, None, True) 1266 1267 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1268 return ((mo_result is True) and (mt_result is True)) 1269 1270 @test_tracker_info(uuid="bba0d159-ec45-43ea-9c1f-94f6e3a0cff8") 1271 @TelephonyBaseTest.tel_test_wrap 1272 def test_call_epdg_wfc_wifi_preferred_wifi_strong_cellular_strong(self): 1273 """ Test WFC MO MT, WiFI preferred mode, WIFI strong, Cellular strong 1274 1275 Set WiFi/Cellular network environment. 1276 Make Sure PhoneA is set correct WFC parameters. 1277 Make SUre PhoneB is able to make MO/MT call. 1278 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1279 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 1280 1281 Returns: 1282 True if pass; False if fail. 1283 """ 1284 ads = [self.android_devices[0], self.android_devices[1]] 1285 mo_result = self._wfc_call_sequence( 1286 ads, DIRECTION_MOBILE_ORIGINATED, 1287 self._wfc_set_wifi_strong_cell_strong, 1288 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1289 self._is_phone_in_call_iwlan, None, True) 1290 1291 mt_result = self._wfc_call_sequence( 1292 ads, DIRECTION_MOBILE_TERMINATED, 1293 self._wfc_set_wifi_strong_cell_strong, 1294 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1295 self._is_phone_in_call_iwlan, None, True) 1296 1297 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1298 return ((mo_result is True) and (mt_result is True)) 1299 1300 @test_tracker_info(uuid="39d6808c-37f3-4ae1-babb-2218a4827da9") 1301 @TelephonyBaseTest.tel_test_wrap 1302 def test_call_epdg_wfc_cellular_preferred_wifi_strong_cellular_strong( 1303 self): 1304 """ Test WFC MO MT, cellular preferred mode, WIFI strong, Cellular strong 1305 1306 Set WiFi/Cellular network environment. 1307 Make Sure PhoneA is set correct WFC parameters. 1308 Make SUre PhoneB is able to make MO/MT call. 1309 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1310 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1311 1312 Returns: 1313 True if pass; False if fail. 1314 """ 1315 ads = [self.android_devices[0], self.android_devices[1]] 1316 mo_result = self._wfc_call_sequence( 1317 ads, DIRECTION_MOBILE_ORIGINATED, 1318 self._wfc_set_wifi_strong_cell_strong, 1319 self._wfc_phone_setup_cellular_preferred, 1320 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1321 True) 1322 1323 mt_result = self._wfc_call_sequence( 1324 ads, DIRECTION_MOBILE_TERMINATED, 1325 self._wfc_set_wifi_strong_cell_strong, 1326 self._wfc_phone_setup_cellular_preferred, 1327 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1328 True) 1329 1330 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1331 return ((mo_result is True) and (mt_result is True)) 1332 1333 @test_tracker_info(uuid="ccc4973b-254f-4f12-a101-324c17e114d1") 1334 @TelephonyBaseTest.tel_test_wrap 1335 def test_call_epdg_wfc_wifi_only_wifi_weak_cellular_strong(self): 1336 """ Test WFC MO MT, WiFI only mode, WIFI weak, Cellular strong 1337 1338 Set WiFi/Cellular network environment. 1339 Make Sure PhoneA is set correct WFC parameters. 1340 Make SUre PhoneB is able to make MO/MT call. 1341 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1342 Call from PhoneB to PHoneA, call should succeed, call should on WiFi. 1343 1344 Returns: 1345 True if pass; False if fail. 1346 """ 1347 ads = [self.android_devices[0], self.android_devices[1]] 1348 mo_result = self._wfc_call_sequence( 1349 ads, DIRECTION_MOBILE_ORIGINATED, 1350 self._wfc_set_wifi_weak_cell_strong, 1351 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1352 self._is_phone_in_call_iwlan, None, True) 1353 1354 mt_result = self._wfc_call_sequence( 1355 ads, DIRECTION_MOBILE_TERMINATED, 1356 self._wfc_set_wifi_weak_cell_strong, 1357 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1358 self._is_phone_in_call_iwlan, None, True) 1359 1360 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1361 return ((mo_result is True) and (mt_result is True)) 1362 1363 @test_tracker_info(uuid="cdbfca5e-06a3-4fd4-87a7-cc8028335c94") 1364 @TelephonyBaseTest.tel_test_wrap 1365 def test_call_epdg_wfc_wifi_preferred_wifi_weak_cellular_strong(self): 1366 """ Test WFC MO MT, WiFI preferred mode, WIFI weak, Cellular strong 1367 1368 Set WiFi/Cellular network environment. 1369 Make Sure PhoneA is set correct WFC parameters. 1370 Make SUre PhoneB is able to make MO/MT call. 1371 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1372 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1373 1374 Returns: 1375 True if pass; False if fail. 1376 """ 1377 ads = [self.android_devices[0], self.android_devices[1]] 1378 mo_result = self._wfc_call_sequence( 1379 ads, DIRECTION_MOBILE_ORIGINATED, 1380 self._wfc_set_wifi_weak_cell_strong, 1381 self._wfc_phone_setup_wifi_preferred, self._phone_idle_not_iwlan, 1382 self._is_phone_in_call_not_iwlan, None, True) 1383 1384 mt_result = self._wfc_call_sequence( 1385 ads, DIRECTION_MOBILE_TERMINATED, 1386 self._wfc_set_wifi_weak_cell_strong, 1387 self._wfc_phone_setup_wifi_preferred, self._phone_idle_not_iwlan, 1388 self._is_phone_in_call_not_iwlan, None, True) 1389 1390 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1391 return ((mo_result is True) and (mt_result is True)) 1392 1393 @test_tracker_info(uuid="dbcbc77a-8551-4a40-88c3-3493d7c4d506") 1394 @TelephonyBaseTest.tel_test_wrap 1395 def test_call_epdg_wfc_cellular_preferred_wifi_weak_cellular_strong(self): 1396 """ Test WFC MO MT, cellular preferred mode, WIFI strong, Cellular strong 1397 1398 Set WiFi/Cellular network environment. 1399 Make Sure PhoneA is set correct WFC parameters. 1400 Make SUre PhoneB is able to make MO/MT call. 1401 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1402 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1403 1404 Returns: 1405 True if pass; False if fail. 1406 """ 1407 ads = [self.android_devices[0], self.android_devices[1]] 1408 mo_result = self._wfc_call_sequence( 1409 ads, DIRECTION_MOBILE_ORIGINATED, 1410 self._wfc_set_wifi_weak_cell_strong, 1411 self._wfc_phone_setup_cellular_preferred, 1412 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1413 True) 1414 1415 mt_result = self._wfc_call_sequence( 1416 ads, DIRECTION_MOBILE_TERMINATED, 1417 self._wfc_set_wifi_weak_cell_strong, 1418 self._wfc_phone_setup_cellular_preferred, 1419 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1420 True) 1421 1422 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1423 return ((mo_result is True) and (mt_result is True)) 1424 1425 @test_tracker_info(uuid="2a52dbf7-b63b-42d9-8406-09d168878041") 1426 @TelephonyBaseTest.tel_test_wrap 1427 def test_call_epdg_wfc_wifi_only_wifi_absent_cellular_strong(self): 1428 """ Test WFC MO MT, WiFI only mode, WIFI absent, Cellular strong 1429 1430 Set WiFi/Cellular network environment. 1431 Make Sure PhoneA is set correct WFC parameters. 1432 Make SUre PhoneB is able to make MO/MT call. 1433 Call from PhoneA to PhoneB, call should fail. 1434 Call from PhoneB to PHoneA, call should fail. 1435 1436 Returns: 1437 True if pass; False if fail. 1438 """ 1439 ads = [self.android_devices[0], self.android_devices[1]] 1440 mo_result = self._wfc_call_sequence( 1441 ads, DIRECTION_MOBILE_ORIGINATED, 1442 self._wfc_set_wifi_absent_cell_strong, 1443 self._wfc_phone_setup_wifi_absent_wifi_only, 1444 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1445 "initiate_call fail.") 1446 1447 mt_result = self._wfc_call_sequence( 1448 ads, DIRECTION_MOBILE_TERMINATED, 1449 self._wfc_set_wifi_absent_cell_strong, 1450 self._wfc_phone_setup_wifi_absent_wifi_only, 1451 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1452 "wait_and_answer_call fail.") 1453 1454 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1455 return ((mo_result is True) and (mt_result is True)) 1456 1457 @test_tracker_info(uuid="31ae1aee-977c-45ec-abfc-24121fcd2fe9") 1458 @TelephonyBaseTest.tel_test_wrap 1459 def test_call_epdg_wfc_wifi_preferred_wifi_absent_cellular_strong(self): 1460 """ Test WFC MO MT, WiFI preferred mode, WIFI absent, Cellular strong 1461 1462 Set WiFi/Cellular network environment. 1463 Make Sure PhoneA is set correct WFC parameters. 1464 Make SUre PhoneB is able to make MO/MT call. 1465 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1466 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1467 1468 Returns: 1469 True if pass; False if fail. 1470 """ 1471 ads = [self.android_devices[0], self.android_devices[1]] 1472 mo_result = self._wfc_call_sequence( 1473 ads, DIRECTION_MOBILE_ORIGINATED, 1474 self._wfc_set_wifi_absent_cell_strong, 1475 self._wfc_phone_setup_wifi_absent_wifi_preferred, 1476 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1477 True) 1478 1479 mt_result = self._wfc_call_sequence( 1480 ads, DIRECTION_MOBILE_TERMINATED, 1481 self._wfc_set_wifi_absent_cell_strong, 1482 self._wfc_phone_setup_wifi_absent_wifi_preferred, 1483 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1484 True) 1485 1486 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1487 return ((mo_result is True) and (mt_result is True)) 1488 1489 @test_tracker_info(uuid="314bf912-0fef-4047-bdeb-5cae2e89bbe6") 1490 @TelephonyBaseTest.tel_test_wrap 1491 def test_call_epdg_wfc_cellular_preferred_wifi_absent_cellular_strong( 1492 self): 1493 """ Test WFC MO MT, cellular preferred mode, WIFI absent, Cellular strong 1494 1495 Set WiFi/Cellular network environment. 1496 Make Sure PhoneA is set correct WFC parameters. 1497 Make SUre PhoneB is able to make MO/MT call. 1498 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1499 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1500 1501 Returns: 1502 True if pass; False if fail. 1503 """ 1504 ads = [self.android_devices[0], self.android_devices[1]] 1505 mo_result = self._wfc_call_sequence( 1506 ads, DIRECTION_MOBILE_ORIGINATED, 1507 self._wfc_set_wifi_absent_cell_strong, 1508 self._wfc_phone_setup_wifi_absent_cellular_preferred, 1509 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1510 True) 1511 1512 mt_result = self._wfc_call_sequence( 1513 ads, DIRECTION_MOBILE_TERMINATED, 1514 self._wfc_set_wifi_absent_cell_strong, 1515 self._wfc_phone_setup_wifi_absent_cellular_preferred, 1516 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1517 True) 1518 1519 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1520 return ((mo_result is True) and (mt_result is True)) 1521 1522 @test_tracker_info(uuid="27516aa7-0f28-4cf6-9562-4f0ad7378f64") 1523 @TelephonyBaseTest.tel_test_wrap 1524 def test_call_epdg_wfc_wifi_only_wifi_disabled_cellular_strong(self): 1525 """ Test WFC MO MT, WiFI only mode, WIFI disabled, Cellular strong 1526 1527 Set WiFi/Cellular network environment. 1528 Make Sure PhoneA is set correct WFC parameters. 1529 Make SUre PhoneB is able to make MO/MT call. 1530 Call from PhoneA to PhoneB, call should fail. 1531 Call from PhoneB to PHoneA, call should fail. 1532 1533 Returns: 1534 True if pass; False if fail. 1535 """ 1536 ads = [self.android_devices[0], self.android_devices[1]] 1537 mo_result = self._wfc_call_sequence( 1538 ads, DIRECTION_MOBILE_ORIGINATED, 1539 self._wfc_set_wifi_strong_cell_strong, 1540 self._wfc_phone_setup_wifi_disabled_wifi_only, 1541 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1542 "initiate_call fail.") 1543 1544 mt_result = self._wfc_call_sequence( 1545 ads, DIRECTION_MOBILE_TERMINATED, 1546 self._wfc_set_wifi_strong_cell_strong, 1547 self._wfc_phone_setup_wifi_disabled_wifi_only, 1548 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1549 "wait_and_answer_call fail.") 1550 1551 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1552 return ((mo_result is True) and (mt_result is True)) 1553 1554 @test_tracker_info(uuid="e031a0f4-6896-454a-af70-8472a9805432") 1555 @TelephonyBaseTest.tel_test_wrap 1556 def test_call_epdg_wfc_wifi_preferred_wifi_disabled_cellular_strong(self): 1557 """ Test WFC MO MT, WiFI preferred mode, WIFI disabled, Cellular strong 1558 1559 Set WiFi/Cellular network environment. 1560 Make Sure PhoneA is set correct WFC parameters. 1561 Make SUre PhoneB is able to make MO/MT call. 1562 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1563 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1564 1565 Returns: 1566 True if pass; False if fail. 1567 """ 1568 ads = [self.android_devices[0], self.android_devices[1]] 1569 mo_result = self._wfc_call_sequence( 1570 ads, DIRECTION_MOBILE_ORIGINATED, 1571 self._wfc_set_wifi_strong_cell_strong, 1572 self._wfc_phone_setup_wifi_disabled_wifi_preferred, 1573 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1574 True) 1575 1576 mt_result = self._wfc_call_sequence( 1577 ads, DIRECTION_MOBILE_TERMINATED, 1578 self._wfc_set_wifi_strong_cell_strong, 1579 self._wfc_phone_setup_wifi_disabled_wifi_preferred, 1580 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1581 True) 1582 1583 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1584 return ((mo_result is True) and (mt_result is True)) 1585 1586 @test_tracker_info(uuid="1aff2cb3-fcbe-425e-be46-2cd693b1d239") 1587 @TelephonyBaseTest.tel_test_wrap 1588 def test_call_epdg_wfc_cellular_preferred_wifi_disabled_cellular_strong( 1589 self): 1590 """ Test WFC MO MT, cellular preferred mode, WIFI disabled, Cellular strong 1591 1592 Set WiFi/Cellular network environment. 1593 Make Sure PhoneA is set correct WFC parameters. 1594 Make SUre PhoneB is able to make MO/MT call. 1595 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1596 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 1597 1598 Returns: 1599 True if pass; False if fail. 1600 """ 1601 ads = [self.android_devices[0], self.android_devices[1]] 1602 mo_result = self._wfc_call_sequence( 1603 ads, DIRECTION_MOBILE_ORIGINATED, 1604 self._wfc_set_wifi_strong_cell_strong, 1605 self._wfc_phone_setup_wifi_disabled_cellular_preferred, 1606 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1607 True) 1608 1609 mt_result = self._wfc_call_sequence( 1610 ads, DIRECTION_MOBILE_TERMINATED, 1611 self._wfc_set_wifi_strong_cell_strong, 1612 self._wfc_phone_setup_wifi_disabled_cellular_preferred, 1613 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1614 True) 1615 1616 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1617 return ((mo_result is True) and (mt_result is True)) 1618 1619 @test_tracker_info(uuid="fb24722e-3c11-4443-a65e-3bc64cff55ef") 1620 @TelephonyBaseTest.tel_test_wrap 1621 def test_call_epdg_wfc_wifi_only_wifi_strong_cellular_weak(self): 1622 """ Test WFC MO MT, WiFI only mode, WIFI strong, Cellular weak 1623 1624 Set WiFi/Cellular network environment. 1625 Make Sure PhoneA is set correct WFC parameters. 1626 Make SUre PhoneB is able to make MO/MT call. 1627 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1628 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 1629 1630 Returns: 1631 True if pass; False if fail. 1632 """ 1633 ads = [self.android_devices[0], self.android_devices[1]] 1634 mo_result = self._wfc_call_sequence( 1635 ads, DIRECTION_MOBILE_ORIGINATED, 1636 self._wfc_set_wifi_strong_cell_weak, 1637 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1638 self._is_phone_in_call_iwlan, None, True) 1639 1640 mt_result = self._wfc_call_sequence( 1641 ads, DIRECTION_MOBILE_TERMINATED, 1642 self._wfc_set_wifi_strong_cell_weak, 1643 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 1644 self._is_phone_in_call_iwlan, None, True) 1645 1646 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1647 return ((mo_result is True) and (mt_result is True)) 1648 1649 @test_tracker_info(uuid="5b649c6d-1fa2-4044-b487-79cb897a803f") 1650 @TelephonyBaseTest.tel_test_wrap 1651 def test_call_epdg_wfc_wifi_preferred_wifi_strong_cellular_weak(self): 1652 """ Test WFC MO MT, WiFI preferred mode, WIFI strong, Cellular weak 1653 1654 Set WiFi/Cellular network environment. 1655 Make Sure PhoneA is set correct WFC parameters. 1656 Make SUre PhoneB is able to make MO/MT call. 1657 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1658 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 1659 1660 Returns: 1661 True if pass; False if fail. 1662 """ 1663 ads = [self.android_devices[0], self.android_devices[1]] 1664 mo_result = self._wfc_call_sequence( 1665 ads, DIRECTION_MOBILE_ORIGINATED, 1666 self._wfc_set_wifi_strong_cell_weak, 1667 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1668 self._is_phone_in_call_iwlan, None, True) 1669 1670 mt_result = self._wfc_call_sequence( 1671 ads, DIRECTION_MOBILE_TERMINATED, 1672 self._wfc_set_wifi_strong_cell_weak, 1673 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1674 self._is_phone_in_call_iwlan, None, True) 1675 1676 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1677 return ((mo_result is True) and (mt_result is True)) 1678 1679 @test_tracker_info(uuid="225cc438-620f-45c4-9682-ae5f13c81b03") 1680 @TelephonyBaseTest.tel_test_wrap 1681 def test_call_epdg_wfc_cellular_preferred_wifi_strong_cellular_weak(self): 1682 """ Test WFC MO MT, cellular preferred mode, WIFI strong, Cellular weak 1683 1684 Set WiFi/Cellular network environment. 1685 Make Sure PhoneA is set correct WFC parameters. 1686 Make SUre PhoneB is able to make MO/MT call. 1687 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1688 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 1689 1690 Returns: 1691 True if pass; False if fail. 1692 """ 1693 ads = [self.android_devices[0], self.android_devices[1]] 1694 mo_result = self._wfc_call_sequence( 1695 ads, DIRECTION_MOBILE_ORIGINATED, 1696 self._wfc_set_wifi_strong_cell_weak, 1697 self._wfc_phone_setup_cellular_preferred, self._phone_idle_iwlan, 1698 self._is_phone_in_call_iwlan, None, True) 1699 1700 mt_result = self._wfc_call_sequence( 1701 ads, DIRECTION_MOBILE_TERMINATED, 1702 self._wfc_set_wifi_strong_cell_weak, 1703 self._wfc_phone_setup_cellular_preferred, self._phone_idle_iwlan, 1704 self._is_phone_in_call_iwlan, None, True) 1705 1706 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1707 return ((mo_result is True) and (mt_result is True)) 1708 1709 @test_tracker_info(uuid="837de903-06f2-4a60-a623-b3478a5d6639") 1710 @TelephonyBaseTest.tel_test_wrap 1711 def test_call_epdg_wfc_wifi_only_wifi_weak_cellular_weak(self): 1712 """ Test WFC MO MT, WiFI only mode, WIFI weak, Cellular weak 1713 1714 Set WiFi/Cellular network environment. 1715 Make Sure PhoneA is set correct WFC parameters. 1716 Make SUre PhoneB is able to make MO/MT call. 1717 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1718 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 1719 1720 Returns: 1721 True if pass; False if fail. 1722 """ 1723 ads = [self.android_devices[0], self.android_devices[1]] 1724 mo_result = self._wfc_call_sequence( 1725 ads, DIRECTION_MOBILE_ORIGINATED, 1726 self._wfc_set_wifi_weak_cell_weak, self._wfc_phone_setup_wifi_only, 1727 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 1728 1729 mt_result = self._wfc_call_sequence( 1730 ads, DIRECTION_MOBILE_TERMINATED, 1731 self._wfc_set_wifi_weak_cell_weak, self._wfc_phone_setup_wifi_only, 1732 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 1733 1734 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1735 return ((mo_result is True) and (mt_result is True)) 1736 1737 @test_tracker_info(uuid="57f70488-19ec-4ca9-9837-e6acec2494ae") 1738 @TelephonyBaseTest.tel_test_wrap 1739 def test_call_epdg_wfc_wifi_preferred_wifi_weak_cellular_weak(self): 1740 """ Test WFC MO MT, WiFI preferred mode, WIFI weak, Cellular weak 1741 1742 Set WiFi/Cellular network environment. 1743 Make Sure PhoneA is set correct WFC parameters. 1744 Make SUre PhoneB is able to make MO/MT call. 1745 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 1746 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 1747 1748 Returns: 1749 True if pass; False if fail. 1750 """ 1751 ads = [self.android_devices[0], self.android_devices[1]] 1752 mo_result = self._wfc_call_sequence( 1753 ads, DIRECTION_MOBILE_ORIGINATED, 1754 self._wfc_set_wifi_weak_cell_weak, 1755 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1756 self._is_phone_in_call_iwlan, None, True) 1757 1758 mt_result = self._wfc_call_sequence( 1759 ads, DIRECTION_MOBILE_TERMINATED, 1760 self._wfc_set_wifi_weak_cell_weak, 1761 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 1762 self._is_phone_in_call_iwlan, None, True) 1763 1764 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1765 return ((mo_result is True) and (mt_result is True)) 1766 1767 @test_tracker_info(uuid="845a62ba-3457-42ed-8a74-0f7fdde44011") 1768 @TelephonyBaseTest.tel_test_wrap 1769 def test_call_epdg_wfc_cellular_preferred_wifi_weak_cellular_weak(self): 1770 """ Test WFC MO MT, cellular preferred mode, WIFI weak, Cellular weak 1771 1772 Set WiFi/Cellular network environment. 1773 Make Sure PhoneA is set correct WFC parameters. 1774 Make SUre PhoneB is able to make MO/MT call. 1775 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1776 Call from PhoneB to PhoneA, call should succeed, call should on Cellular. 1777 1778 Returns: 1779 True if pass; False if fail. 1780 """ 1781 ads = [self.android_devices[0], self.android_devices[1]] 1782 mo_result = self._wfc_call_sequence( 1783 ads, DIRECTION_MOBILE_ORIGINATED, 1784 self._wfc_set_wifi_weak_cell_weak, 1785 self._wfc_phone_setup_cellular_preferred, 1786 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1787 True) 1788 1789 mt_result = self._wfc_call_sequence( 1790 ads, DIRECTION_MOBILE_TERMINATED, 1791 self._wfc_set_wifi_weak_cell_weak, 1792 self._wfc_phone_setup_cellular_preferred, 1793 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1794 True) 1795 1796 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1797 return ((mo_result is True) and (mt_result is True)) 1798 1799 @test_tracker_info(uuid="298f92e5-c509-42d7-bd85-d29337e391df") 1800 @TelephonyBaseTest.tel_test_wrap 1801 def test_call_epdg_wfc_wifi_only_wifi_absent_cellular_weak(self): 1802 """ Test WFC MO MT, WiFI only mode, WIFI absent, Cellular weak 1803 1804 Set WiFi/Cellular network environment. 1805 Make Sure PhoneA is set correct WFC parameters. 1806 Make SUre PhoneB is able to make MO/MT call. 1807 Call from PhoneA to PhoneB, call should fail. 1808 Call from PhoneB to PhoneA, call should fail. 1809 1810 Returns: 1811 True if pass; False if fail. 1812 """ 1813 ads = [self.android_devices[0], self.android_devices[1]] 1814 mo_result = self._wfc_call_sequence( 1815 ads, DIRECTION_MOBILE_ORIGINATED, 1816 self._wfc_set_wifi_absent_cell_weak, 1817 self._wfc_phone_setup_wifi_absent_wifi_only, 1818 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1819 "initiate_call fail.") 1820 1821 mt_result = self._wfc_call_sequence( 1822 ads, DIRECTION_MOBILE_TERMINATED, 1823 self._wfc_set_wifi_absent_cell_weak, 1824 self._wfc_phone_setup_wifi_absent_wifi_only, 1825 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1826 "wait_and_answer_call fail.") 1827 1828 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1829 return ((mo_result is True) and (mt_result is True)) 1830 1831 @test_tracker_info(uuid="845278c5-1442-4a3a-93cd-c661190a5574") 1832 @TelephonyBaseTest.tel_test_wrap 1833 def test_call_epdg_wfc_wifi_preferred_wifi_absent_cellular_weak(self): 1834 """ Test WFC MO MT, WiFI preferred mode, WIFI absent, Cellular weak 1835 1836 Set WiFi/Cellular network environment. 1837 Make Sure PhoneA is set correct WFC parameters. 1838 Make SUre PhoneB is able to make MO/MT call. 1839 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1840 Call from PhoneB to PhoneA, call should succeed, call should on Cellular. 1841 1842 Returns: 1843 True if pass; False if fail. 1844 """ 1845 ads = [self.android_devices[0], self.android_devices[1]] 1846 mo_result = self._wfc_call_sequence( 1847 ads, DIRECTION_MOBILE_ORIGINATED, 1848 self._wfc_set_wifi_absent_cell_weak, 1849 self._wfc_phone_setup_wifi_absent_wifi_preferred, 1850 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1851 True) 1852 1853 mt_result = self._wfc_call_sequence( 1854 ads, DIRECTION_MOBILE_TERMINATED, 1855 self._wfc_set_wifi_absent_cell_weak, 1856 self._wfc_phone_setup_wifi_absent_wifi_preferred, 1857 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1858 True) 1859 1860 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1861 return ((mo_result is True) and (mt_result is True)) 1862 1863 @test_tracker_info(uuid="63319009-aaef-424a-bfb1-da56d3f9a2b2") 1864 @TelephonyBaseTest.tel_test_wrap 1865 def test_call_epdg_wfc_cellular_preferred_wifi_absent_cellular_weak(self): 1866 """ Test WFC MO MT, cellular preferred mode, WIFI absent, Cellular weak 1867 1868 Set WiFi/Cellular network environment. 1869 Make Sure PhoneA is set correct WFC parameters. 1870 Make SUre PhoneB is able to make MO/MT call. 1871 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1872 Call from PhoneB to PhoneA, call should succeed, call should on Cellular. 1873 1874 Returns: 1875 True if pass; False if fail. 1876 """ 1877 ads = [self.android_devices[0], self.android_devices[1]] 1878 mo_result = self._wfc_call_sequence( 1879 ads, DIRECTION_MOBILE_ORIGINATED, 1880 self._wfc_set_wifi_absent_cell_weak, 1881 self._wfc_phone_setup_wifi_absent_cellular_preferred, 1882 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1883 True) 1884 1885 mt_result = self._wfc_call_sequence( 1886 ads, DIRECTION_MOBILE_TERMINATED, 1887 self._wfc_set_wifi_absent_cell_weak, 1888 self._wfc_phone_setup_wifi_absent_cellular_preferred, 1889 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1890 True) 1891 1892 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1893 return ((mo_result is True) and (mt_result is True)) 1894 1895 @test_tracker_info(uuid="ff3f474c-5d7a-4440-b2d4-a99ccb5d2dd7") 1896 @TelephonyBaseTest.tel_test_wrap 1897 def test_call_epdg_wfc_wifi_only_wifi_disabled_cellular_weak(self): 1898 """ Test WFC MO MT, WiFI only mode, WIFI disabled, Cellular weak 1899 1900 Set WiFi/Cellular network environment. 1901 Make Sure PhoneA is set correct WFC parameters. 1902 Make SUre PhoneB is able to make MO/MT call. 1903 Call from PhoneA to PhoneB, call should fail. 1904 Call from PhoneB to PhoneA, call should fail. 1905 1906 Returns: 1907 True if pass; False if fail. 1908 """ 1909 ads = [self.android_devices[0], self.android_devices[1]] 1910 mo_result = self._wfc_call_sequence( 1911 ads, DIRECTION_MOBILE_ORIGINATED, 1912 self._wfc_set_wifi_strong_cell_weak, 1913 self._wfc_phone_setup_wifi_disabled_wifi_only, 1914 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1915 "initiate_call fail.") 1916 1917 mt_result = self._wfc_call_sequence( 1918 ads, DIRECTION_MOBILE_TERMINATED, 1919 self._wfc_set_wifi_strong_cell_weak, 1920 self._wfc_phone_setup_wifi_disabled_wifi_only, 1921 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 1922 "wait_and_answer_call fail.") 1923 1924 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1925 return ((mo_result is True) and (mt_result is True)) 1926 1927 @test_tracker_info(uuid="7ad6d6e3-1113-4304-96fa-961983380207") 1928 @TelephonyBaseTest.tel_test_wrap 1929 def test_call_epdg_wfc_wifi_preferred_wifi_disabled_cellular_weak(self): 1930 """ Test WFC MO MT, WiFI preferred mode, WIFI disabled, Cellular weak 1931 1932 Set WiFi/Cellular network environment. 1933 Make Sure PhoneA is set correct WFC parameters. 1934 Make SUre PhoneB is able to make MO/MT call. 1935 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1936 Call from PhoneB to PhoneA, call should succeed, call should on Cellular. 1937 1938 Returns: 1939 True if pass; False if fail. 1940 """ 1941 ads = [self.android_devices[0], self.android_devices[1]] 1942 mo_result = self._wfc_call_sequence( 1943 ads, DIRECTION_MOBILE_ORIGINATED, 1944 self._wfc_set_wifi_strong_cell_weak, 1945 self._wfc_phone_setup_wifi_disabled_wifi_preferred, 1946 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1947 True) 1948 1949 mt_result = self._wfc_call_sequence( 1950 ads, DIRECTION_MOBILE_TERMINATED, 1951 self._wfc_set_wifi_strong_cell_weak, 1952 self._wfc_phone_setup_wifi_disabled_wifi_preferred, 1953 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1954 True) 1955 1956 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1957 return ((mo_result is True) and (mt_result is True)) 1958 1959 @test_tracker_info(uuid="3062d062-17f1-4265-8dec-ed75d5d275ee") 1960 @TelephonyBaseTest.tel_test_wrap 1961 def test_call_epdg_wfc_cellular_preferred_wifi_disabled_cellular_weak( 1962 self): 1963 """ Test WFC MO MT, cellular preferred mode, WIFI disabled, Cellular weak 1964 1965 Set WiFi/Cellular network environment. 1966 Make Sure PhoneA is set correct WFC parameters. 1967 Make SUre PhoneB is able to make MO/MT call. 1968 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 1969 Call from PhoneB to PhoneA, call should succeed, call should on Cellular. 1970 1971 Returns: 1972 True if pass; False if fail. 1973 """ 1974 ads = [self.android_devices[0], self.android_devices[1]] 1975 mo_result = self._wfc_call_sequence( 1976 ads, DIRECTION_MOBILE_ORIGINATED, 1977 self._wfc_set_wifi_strong_cell_weak, 1978 self._wfc_phone_setup_wifi_disabled_cellular_preferred, 1979 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1980 True) 1981 1982 mt_result = self._wfc_call_sequence( 1983 ads, DIRECTION_MOBILE_TERMINATED, 1984 self._wfc_set_wifi_strong_cell_weak, 1985 self._wfc_phone_setup_wifi_disabled_cellular_preferred, 1986 self._phone_idle_not_iwlan, self._is_phone_in_call_not_iwlan, None, 1987 True) 1988 1989 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 1990 return ((mo_result is True) and (mt_result is True)) 1991 1992 @test_tracker_info(uuid="0f40d344-25b4-459e-a21e-79c84bb5db41") 1993 @TelephonyBaseTest.tel_test_wrap 1994 def test_call_epdg_wfc_wifi_only_wifi_strong_cellular_absent(self): 1995 """ Test WFC MO MT, WiFI only mode, WIFI strong, Cellular absent 1996 1997 Set WiFi/Cellular network environment. 1998 Make Sure PhoneA is set correct WFC parameters. 1999 Make SUre PhoneB is able to make MO/MT call. 2000 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2001 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2002 2003 Returns: 2004 True if pass; False if fail. 2005 """ 2006 ads = [self.android_devices[0], self.android_devices[1]] 2007 mo_result = self._wfc_call_sequence( 2008 ads, DIRECTION_MOBILE_ORIGINATED, 2009 self._wfc_set_wifi_strong_cell_absent, 2010 self._wfc_phone_setup_cellular_absent_wifi_only, 2011 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2012 2013 mt_result = self._wfc_call_sequence( 2014 ads, DIRECTION_MOBILE_TERMINATED, 2015 self._wfc_set_wifi_strong_cell_absent, 2016 self._wfc_phone_setup_cellular_absent_wifi_only, 2017 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2018 2019 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2020 return ((mo_result is True) and (mt_result is True)) 2021 2022 @test_tracker_info(uuid="62c0e1c7-9fd7-4d98-87c8-a2d8df69cbd6") 2023 @TelephonyBaseTest.tel_test_wrap 2024 def test_call_epdg_wfc_wifi_preferred_wifi_strong_cellular_absent(self): 2025 """ Test WFC MO MT, WiFI preferred mode, WIFI strong, Cellular absent 2026 2027 Set WiFi/Cellular network environment. 2028 Make Sure PhoneA is set correct WFC parameters. 2029 Make SUre PhoneB is able to make MO/MT call. 2030 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2031 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2032 2033 Returns: 2034 True if pass; False if fail. 2035 """ 2036 ads = [self.android_devices[0], self.android_devices[1]] 2037 mo_result = self._wfc_call_sequence( 2038 ads, DIRECTION_MOBILE_ORIGINATED, 2039 self._wfc_set_wifi_strong_cell_absent, 2040 self._wfc_phone_setup_cellular_absent_wifi_preferred, 2041 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2042 2043 mt_result = self._wfc_call_sequence( 2044 ads, DIRECTION_MOBILE_TERMINATED, 2045 self._wfc_set_wifi_strong_cell_absent, 2046 self._wfc_phone_setup_cellular_absent_wifi_preferred, 2047 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2048 2049 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2050 return ((mo_result is True) and (mt_result is True)) 2051 2052 @test_tracker_info(uuid="2b13f862-71e4-4b33-be0b-e83a61e3f443") 2053 @TelephonyBaseTest.tel_test_wrap 2054 def test_call_epdg_wfc_cellular_preferred_wifi_strong_cellular_absent( 2055 self): 2056 """ Test WFC MO MT, cellular preferred mode, WIFI strong, Cellular absent 2057 2058 Set WiFi/Cellular network environment. 2059 Make Sure PhoneA is set correct WFC parameters. 2060 Make SUre PhoneB is able to make MO/MT call. 2061 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2062 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2063 2064 Returns: 2065 True if pass; False if fail. 2066 """ 2067 ads = [self.android_devices[0], self.android_devices[1]] 2068 mo_result = self._wfc_call_sequence( 2069 ads, DIRECTION_MOBILE_ORIGINATED, 2070 self._wfc_set_wifi_strong_cell_absent, 2071 self._wfc_phone_setup_cellular_absent_cellular_preferred, 2072 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2073 2074 mt_result = self._wfc_call_sequence( 2075 ads, DIRECTION_MOBILE_TERMINATED, 2076 self._wfc_set_wifi_strong_cell_absent, 2077 self._wfc_phone_setup_cellular_absent_cellular_preferred, 2078 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2079 2080 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2081 return ((mo_result is True) and (mt_result is True)) 2082 2083 @test_tracker_info(uuid="49aa09d1-afd5-4b8a-9155-b351b1cecd83") 2084 @TelephonyBaseTest.tel_test_wrap 2085 def test_call_epdg_wfc_wifi_only_wifi_weak_cellular_absent(self): 2086 """ Test WFC MO MT, WiFI only mode, WIFI weak, Cellular absent 2087 2088 Set WiFi/Cellular network environment. 2089 Make Sure PhoneA is set correct WFC parameters. 2090 Make SUre PhoneB is able to make MO/MT call. 2091 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2092 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2093 2094 Returns: 2095 True if pass; False if fail. 2096 """ 2097 ads = [self.android_devices[0], self.android_devices[1]] 2098 mo_result = self._wfc_call_sequence( 2099 ads, DIRECTION_MOBILE_ORIGINATED, 2100 self._wfc_set_wifi_weak_cell_absent, 2101 self._wfc_phone_setup_cellular_absent_wifi_only, 2102 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2103 2104 mt_result = self._wfc_call_sequence( 2105 ads, DIRECTION_MOBILE_TERMINATED, 2106 self._wfc_set_wifi_weak_cell_absent, 2107 self._wfc_phone_setup_cellular_absent_wifi_only, 2108 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2109 2110 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2111 return ((mo_result is True) and (mt_result is True)) 2112 2113 @test_tracker_info(uuid="29e20d21-33bd-444f-ba51-487332e8bcbb") 2114 @TelephonyBaseTest.tel_test_wrap 2115 def test_call_epdg_wfc_wifi_preferred_wifi_weak_cellular_absent(self): 2116 """ Test WFC MO MT, WiFI preferred mode, WIFI weak, Cellular absent 2117 2118 Set WiFi/Cellular network environment. 2119 Make Sure PhoneA is set correct WFC parameters. 2120 Make SUre PhoneB is able to make MO/MT call. 2121 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2122 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2123 2124 Returns: 2125 True if pass; False if fail. 2126 """ 2127 ads = [self.android_devices[0], self.android_devices[1]] 2128 mo_result = self._wfc_call_sequence( 2129 ads, DIRECTION_MOBILE_ORIGINATED, 2130 self._wfc_set_wifi_weak_cell_absent, 2131 self._wfc_phone_setup_cellular_absent_wifi_preferred, 2132 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2133 2134 mt_result = self._wfc_call_sequence( 2135 ads, DIRECTION_MOBILE_TERMINATED, 2136 self._wfc_set_wifi_weak_cell_absent, 2137 self._wfc_phone_setup_cellular_absent_wifi_preferred, 2138 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2139 2140 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2141 return ((mo_result is True) and (mt_result is True)) 2142 2143 @test_tracker_info(uuid="f1aae6c2-0b40-4ee5-a8a9-f0036130dcf1") 2144 @TelephonyBaseTest.tel_test_wrap 2145 def test_call_epdg_wfc_cellular_preferred_wifi_weak_cellular_absent(self): 2146 """ Test WFC MO MT, cellular preferred mode, WIFI weak, Cellular absent 2147 2148 Set WiFi/Cellular network environment. 2149 Make Sure PhoneA is set correct WFC parameters. 2150 Make SUre PhoneB is able to make MO/MT call. 2151 Call from PhoneA to PhoneB, call should succeed, call should on WiFi. 2152 Call from PhoneB to PhoneA, call should succeed, call should on WiFi. 2153 2154 Returns: 2155 True if pass; False if fail. 2156 """ 2157 ads = [self.android_devices[0], self.android_devices[1]] 2158 mo_result = self._wfc_call_sequence( 2159 ads, DIRECTION_MOBILE_ORIGINATED, 2160 self._wfc_set_wifi_weak_cell_absent, 2161 self._wfc_phone_setup_cellular_absent_cellular_preferred, 2162 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2163 2164 mt_result = self._wfc_call_sequence( 2165 ads, DIRECTION_MOBILE_TERMINATED, 2166 self._wfc_set_wifi_weak_cell_absent, 2167 self._wfc_phone_setup_cellular_absent_cellular_preferred, 2168 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 2169 2170 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2171 return ((mo_result is True) and (mt_result is True)) 2172 2173 @test_tracker_info(uuid="7be33498-8f1c-4462-909b-09cd9abab053") 2174 @TelephonyBaseTest.tel_test_wrap 2175 def test_call_epdg_wfc_wifi_only_wifi_absent_cellular_absent(self): 2176 """ Test WFC MO MT, WiFI only mode, WIFI absent, Cellular absent 2177 2178 Set WiFi/Cellular network environment. 2179 Make Sure PhoneA is set correct WFC parameters. 2180 Make SUre PhoneB is able to make MO/MT call. 2181 Call from PhoneA to PhoneB, call should fail. 2182 Call from PhoneB to PhoneA, call should fail. 2183 2184 Returns: 2185 True if pass; False if fail. 2186 """ 2187 ads = [self.android_devices[0], self.android_devices[1]] 2188 mo_result = self._wfc_call_sequence( 2189 ads, DIRECTION_MOBILE_ORIGINATED, 2190 self._wfc_set_wifi_absent_cell_absent, 2191 self._wfc_phone_setup_cellular_absent_wifi_absent_wifi_only, 2192 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2193 "initiate_call fail.") 2194 2195 mt_result = self._wfc_call_sequence( 2196 ads, DIRECTION_MOBILE_TERMINATED, 2197 self._wfc_set_wifi_absent_cell_absent, 2198 self._wfc_phone_setup_cellular_absent_wifi_absent_wifi_only, 2199 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2200 "wait_and_answer_call fail.") 2201 2202 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2203 return ((mo_result is True) and (mt_result is True)) 2204 2205 @test_tracker_info(uuid="406c86cc-f3bb-4356-9ce7-6ae336e164f3") 2206 @TelephonyBaseTest.tel_test_wrap 2207 def test_call_epdg_wfc_wifi_preferred_wifi_absent_cellular_absent(self): 2208 """ Test WFC MO MT, WiFI preferred mode, WIFI absent, Cellular absent 2209 2210 Set WiFi/Cellular network environment. 2211 Make Sure PhoneA is set correct WFC parameters. 2212 Make SUre PhoneB is able to make MO/MT call. 2213 Call from PhoneA to PhoneB, call should fail. 2214 Call from PhoneB to PhoneA, call should fail. 2215 2216 Returns: 2217 True if pass; False if fail. 2218 """ 2219 ads = [self.android_devices[0], self.android_devices[1]] 2220 mo_result = self._wfc_call_sequence( 2221 ads, DIRECTION_MOBILE_ORIGINATED, 2222 self._wfc_set_wifi_absent_cell_absent, 2223 self._wfc_phone_setup_cellular_absent_wifi_absent_wifi_preferred, 2224 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2225 "initiate_call fail.") 2226 2227 mt_result = self._wfc_call_sequence( 2228 ads, DIRECTION_MOBILE_TERMINATED, 2229 self._wfc_set_wifi_absent_cell_absent, 2230 self._wfc_phone_setup_cellular_absent_wifi_absent_wifi_preferred, 2231 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2232 "wait_and_answer_call fail.") 2233 2234 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2235 return ((mo_result is True) and (mt_result is True)) 2236 2237 @test_tracker_info(uuid="e172082b-5e88-4229-9da9-e16a74da8fbb") 2238 @TelephonyBaseTest.tel_test_wrap 2239 def test_call_epdg_wfc_cellular_preferred_wifi_absent_cellular_absent( 2240 self): 2241 """ Test WFC MO MT, cellular preferred mode, WIFI absent, Cellular absent 2242 2243 Set WiFi/Cellular network environment. 2244 Make Sure PhoneA is set correct WFC parameters. 2245 Make SUre PhoneB is able to make MO/MT call. 2246 Call from PhoneA to PhoneB, call should fail. 2247 Call from PhoneB to PhoneA, call should fail. 2248 2249 Returns: 2250 True if pass; False if fail. 2251 """ 2252 ads = [self.android_devices[0], self.android_devices[1]] 2253 mo_result = self._wfc_call_sequence( 2254 ads, DIRECTION_MOBILE_ORIGINATED, 2255 self._wfc_set_wifi_absent_cell_absent, self. 2256 _wfc_phone_setup_cellular_absent_wifi_absent_cellular_preferred, 2257 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2258 "initiate_call fail.") 2259 2260 mt_result = self._wfc_call_sequence( 2261 ads, DIRECTION_MOBILE_TERMINATED, 2262 self._wfc_set_wifi_absent_cell_absent, self. 2263 _wfc_phone_setup_cellular_absent_wifi_absent_cellular_preferred, 2264 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2265 "wait_and_answer_call fail.") 2266 2267 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2268 return ((mo_result is True) and (mt_result is True)) 2269 2270 @test_tracker_info(uuid="f4a93a88-4a20-4e4a-9168-a7b1f1ad5462") 2271 @TelephonyBaseTest.tel_test_wrap 2272 def test_call_epdg_wfc_wifi_only_wifi_disabled_cellular_absent(self): 2273 """ Test WFC MO MT, WiFI only mode, WIFI strong, Cellular absent 2274 2275 Set WiFi/Cellular network environment. 2276 Make Sure PhoneA is set correct WFC parameters. 2277 Make SUre PhoneB is able to make MO/MT call. 2278 Call from PhoneA to PhoneB, call should fail. 2279 Call from PhoneB to PhoneA, call should fail. 2280 2281 Returns: 2282 True if pass; False if fail. 2283 """ 2284 ads = [self.android_devices[0], self.android_devices[1]] 2285 mo_result = self._wfc_call_sequence( 2286 ads, DIRECTION_MOBILE_ORIGINATED, 2287 self._wfc_set_wifi_strong_cell_absent, 2288 self._wfc_phone_setup_cellular_absent_wifi_disabled_wifi_only, 2289 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2290 "initiate_call fail.") 2291 2292 mt_result = self._wfc_call_sequence( 2293 ads, DIRECTION_MOBILE_TERMINATED, 2294 self._wfc_set_wifi_strong_cell_absent, 2295 self._wfc_phone_setup_cellular_absent_wifi_disabled_wifi_only, 2296 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2297 "wait_and_answer_call fail.") 2298 2299 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2300 return ((mo_result is True) and (mt_result is True)) 2301 2302 @test_tracker_info(uuid="c8f62254-2dba-4c54-a9d1-5741b6c05f10") 2303 @TelephonyBaseTest.tel_test_wrap 2304 def test_call_epdg_wfc_wifi_preferred_wifi_disabled_cellular_absent(self): 2305 """ Test WFC MO MT, WiFI preferred mode, WIFI strong, Cellular absent 2306 2307 Set WiFi/Cellular network environment. 2308 Make Sure PhoneA is set correct WFC parameters. 2309 Make SUre PhoneB is able to make MO/MT call. 2310 Call from PhoneA to PhoneB, call should fail. 2311 Call from PhoneB to PhoneA, call should fail. 2312 2313 Returns: 2314 True if pass; False if fail. 2315 """ 2316 ads = [self.android_devices[0], self.android_devices[1]] 2317 mo_result = self._wfc_call_sequence( 2318 ads, DIRECTION_MOBILE_ORIGINATED, 2319 self._wfc_set_wifi_strong_cell_absent, 2320 self._wfc_phone_setup_cellular_absent_wifi_disabled_wifi_preferred, 2321 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2322 "initiate_call fail.") 2323 2324 mt_result = self._wfc_call_sequence( 2325 ads, DIRECTION_MOBILE_TERMINATED, 2326 self._wfc_set_wifi_strong_cell_absent, 2327 self._wfc_phone_setup_cellular_absent_wifi_disabled_wifi_preferred, 2328 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2329 "wait_and_answer_call fail.") 2330 2331 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2332 return ((mo_result is True) and (mt_result is True)) 2333 2334 @test_tracker_info(uuid="1c593836-fbdd-415c-a997-5835303069ad") 2335 @TelephonyBaseTest.tel_test_wrap 2336 def test_call_epdg_wfc_cellular_preferred_wifi_disabled_cellular_absent( 2337 self): 2338 """ Test WFC MO MT, cellular preferred mode, WIFI strong, Cellular absent 2339 2340 Set WiFi/Cellular network environment. 2341 Make Sure PhoneA is set correct WFC parameters. 2342 Make SUre PhoneB is able to make MO/MT call. 2343 Call from PhoneA to PhoneB, call should fail. 2344 Call from PhoneB to PhoneA, call should fail. 2345 2346 Returns: 2347 True if pass; False if fail. 2348 """ 2349 ads = [self.android_devices[0], self.android_devices[1]] 2350 mo_result = self._wfc_call_sequence( 2351 ads, DIRECTION_MOBILE_ORIGINATED, 2352 self._wfc_set_wifi_strong_cell_absent, self. 2353 _wfc_phone_setup_cellular_absent_wifi_disabled_cellular_preferred, 2354 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2355 "initiate_call fail.") 2356 2357 mt_result = self._wfc_call_sequence( 2358 ads, DIRECTION_MOBILE_TERMINATED, 2359 self._wfc_set_wifi_strong_cell_absent, self. 2360 _wfc_phone_setup_cellular_absent_wifi_disabled_cellular_preferred, 2361 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2362 "wait_and_answer_call fail.") 2363 2364 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2365 return ((mo_result is True) and (mt_result is True)) 2366 2367 @test_tracker_info(uuid="41ec5080-810a-47f0-93c6-281fc19c4d12") 2368 @TelephonyBaseTest.tel_test_wrap 2369 def test_call_epdg_wfc_disabled_wifi_strong_cellular_strong(self): 2370 """ Test WFC MO MT, WFC disabled, WIFI strong, Cellular strong 2371 2372 Set WiFi/Cellular network environment. 2373 Make Sure PhoneA is set correct WFC parameters. 2374 Make SUre PhoneB is able to make MO/MT call. 2375 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 2376 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 2377 2378 Returns: 2379 True if pass; False if fail. 2380 """ 2381 ads = [self.android_devices[0], self.android_devices[1]] 2382 mo_result = self._wfc_call_sequence( 2383 ads, DIRECTION_MOBILE_ORIGINATED, 2384 self._wfc_set_wifi_strong_cell_strong, 2385 self._wfc_phone_setup_wfc_disabled, None, 2386 self._is_phone_in_call_not_iwlan, None, True) 2387 2388 mt_result = self._wfc_call_sequence( 2389 ads, DIRECTION_MOBILE_TERMINATED, 2390 self._wfc_set_wifi_strong_cell_strong, 2391 self._wfc_phone_setup_wfc_disabled, None, 2392 self._is_phone_in_call_not_iwlan, None, True) 2393 2394 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2395 return ((mo_result is True) and (mt_result is True)) 2396 2397 @test_tracker_info(uuid="8c9dd7a3-c840-474d-b929-07e557428648") 2398 @TelephonyBaseTest.tel_test_wrap 2399 def test_call_epdg_wfc_disabled_wifi_strong_cellular_weak(self): 2400 """ Test WFC MO MT, WFC disabled, WIFI strong, Cellular weak 2401 2402 Set WiFi/Cellular network environment. 2403 Make Sure PhoneA is set correct WFC parameters. 2404 Make SUre PhoneB is able to make MO/MT call. 2405 Call from PhoneA to PhoneB, call should succeed, call should on Cellular. 2406 Call from PhoneB to PHoneA, call should succeed, call should on Cellular. 2407 2408 Returns: 2409 True if pass; False if fail. 2410 """ 2411 ads = [self.android_devices[0], self.android_devices[1]] 2412 mo_result = self._wfc_call_sequence( 2413 ads, DIRECTION_MOBILE_ORIGINATED, 2414 self._wfc_set_wifi_strong_cell_weak, 2415 self._wfc_phone_setup_wfc_disabled, None, 2416 self._is_phone_in_call_not_iwlan, None, True) 2417 2418 mt_result = self._wfc_call_sequence( 2419 ads, DIRECTION_MOBILE_TERMINATED, 2420 self._wfc_set_wifi_strong_cell_weak, 2421 self._wfc_phone_setup_wfc_disabled, None, 2422 self._is_phone_in_call_not_iwlan, None, True) 2423 2424 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2425 return ((mo_result is True) and (mt_result is True)) 2426 2427 @test_tracker_info(uuid="ddb3372d-23d2-492c-881a-e509e7ac4c8d") 2428 @TelephonyBaseTest.tel_test_wrap 2429 def test_call_epdg_wfc_disabled_wifi_strong_cellular_absent(self): 2430 """ Test WFC MO MT, WFC disabled, WIFI strong, Cellular absent 2431 2432 Set WiFi/Cellular network environment. 2433 Make Sure PhoneA is set correct WFC parameters. 2434 Make SUre PhoneB is able to make MO/MT call. 2435 Call from PhoneA to PhoneB, call should fail. 2436 Call from PhoneB to PhoneA, call should fail. 2437 2438 Returns: 2439 True if pass; False if fail. 2440 """ 2441 ads = [self.android_devices[0], self.android_devices[1]] 2442 mo_result = self._wfc_call_sequence( 2443 ads, DIRECTION_MOBILE_ORIGINATED, 2444 self._wfc_set_wifi_strong_cell_absent, 2445 self._wfc_phone_setup_cellular_absent_wfc_disabled, None, 2446 self._is_phone_not_in_call, None, "initiate_call fail.") 2447 2448 mt_result = self._wfc_call_sequence( 2449 ads, DIRECTION_MOBILE_TERMINATED, 2450 self._wfc_set_wifi_strong_cell_absent, 2451 self._wfc_phone_setup_cellular_absent_wfc_disabled, None, 2452 self._is_phone_not_in_call, None, "wait_and_answer_call fail.") 2453 2454 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2455 return ((mo_result is True) and (mt_result is True)) 2456 2457 @test_tracker_info(uuid="91232d7e-ccb5-4581-8093-1ab42eca3815") 2458 @TelephonyBaseTest.tel_test_wrap 2459 def test_call_epdg_wfc_disabled_wifi_strong_apm(self): 2460 """ Test WFC MO MT, WFC disabled, WIFI strong, Phone in APM 2461 2462 Set WiFi/Cellular network environment. 2463 Make Sure PhoneA is set correct WFC parameters. 2464 Make SUre PhoneB is able to make MO/MT call. 2465 Call from PhoneA to PhoneB, call should fail. 2466 Call from PhoneB to PhoneA, call should fail. 2467 2468 Returns: 2469 True if pass; False if fail. 2470 """ 2471 ads = [self.android_devices[0], self.android_devices[1]] 2472 mo_result = self._wfc_call_sequence( 2473 ads, DIRECTION_MOBILE_ORIGINATED, 2474 self._wfc_set_wifi_strong_cell_strong, 2475 self._wfc_phone_setup_apm_wfc_disabled, None, 2476 self._is_phone_not_in_call, None, "initiate_call fail.") 2477 2478 mt_result = self._wfc_call_sequence( 2479 ads, DIRECTION_MOBILE_TERMINATED, 2480 self._wfc_set_wifi_strong_cell_strong, 2481 self._wfc_phone_setup_apm_wfc_disabled, None, 2482 self._is_phone_not_in_call, None, "wait_and_answer_call fail.") 2483 2484 self.log.info("MO: {}, MT: {}".format(mo_result, mt_result)) 2485 return ((mo_result is True) and (mt_result is True)) 2486 2487 def _rove_in_test(self, cellular_gen, wfc_mode): 2488 """Test utility for Rove-in Tests. 2489 2490 Cellular strong, WiFi RSSI < -100 dBm. 2491 Setup Cellular network and wfc_mode, WiFi enabled but not associated. 2492 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10s, 2493 PhoneA does not rove-in. 2494 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2495 PhoneA rove-in. 2496 Make WFC call. 2497 """ 2498 self._wfc_set_wifi_absent_cell_strong() 2499 # ensure cellular rat, wfc mode, wifi not associated 2500 toggle_airplane_mode(self.log, self.android_devices[0], False) 2501 toggle_volte(self.log, self.android_devices[0], True) 2502 if not ensure_network_generation( 2503 self.log, 2504 self.android_devices[0], 2505 cellular_gen, 2506 voice_or_data=NETWORK_SERVICE_DATA): 2507 self.log.error("_rove_in_test: {} failed to be in rat: {}".format( 2508 self.android_devices[0].serial, cellular_rat)) 2509 return False 2510 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 2511 self.log.error("{} set WFC mode failed.".format( 2512 self.android_devices[0].serial)) 2513 return False 2514 2515 if ensure_wifi_connected(self.log, self.android_devices[0], 2516 self.wifi_network_ssid, 2517 self.wifi_network_pass, 1): 2518 self.log.error( 2519 "{} connect WiFI succeed, expected not succeed".format( 2520 self.android_devices[0].serial)) 2521 return False 2522 2523 # set up wifi to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10 seconds 2524 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2525 self.wifi_rssi_with_no_atten, 2526 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN, 5, 1) 2527 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2528 self.wifi_rssi_with_no_atten, 2529 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN, 5, 1) 2530 if (not wait_for_wifi_data_connection(self.log, 2531 self.android_devices[0], True) or 2532 not verify_http_connection(self.log, self.android_devices[0])): 2533 self.log.error("No Data on Wifi") 2534 return False 2535 2536 if self._phone_idle_iwlan(): 2537 self.log.error("Phone should not report iwlan in WiFi {}Bm".format( 2538 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN)) 2539 return False 2540 2541 # set up wifi to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10 seconds 2542 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2543 self.wifi_rssi_with_no_atten, 2544 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 1, 1) 2545 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2546 self.wifi_rssi_with_no_atten, 2547 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 1, 1) 2548 if not self._phone_idle_iwlan(): 2549 self.log.error("Phone should report iwlan in WiFi {}dBm".format( 2550 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN)) 2551 return False 2552 2553 # make a wfc call. 2554 return self._wfc_call_sequence( 2555 [self.android_devices[0], self.android_devices[1]], 2556 DIRECTION_MOBILE_ORIGINATED, None, None, self._phone_idle_iwlan, 2557 self._is_phone_in_call_iwlan, None, True) 2558 2559 def _rove_out_test(self, cellular_gen, wfc_mode): 2560 """Test utility for Rove-out Tests. 2561 2562 Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 2563 Setup Cellular network and wfc_mode, WiFi associated. 2564 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10s, 2565 PhoneA does not rove-out. 2566 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2567 PhoneA rove-out. 2568 Make a call. 2569 """ 2570 # set up cell strong 2571 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 2572 self.cell_rssi_with_no_atten, MAX_RSSI_RESERVED_VALUE) 2573 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 2574 self.cell_rssi_with_no_atten, MAX_RSSI_RESERVED_VALUE) 2575 # set up wifi WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE 2576 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2577 self.wifi_rssi_with_no_atten, 2578 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE) 2579 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2580 self.wifi_rssi_with_no_atten, 2581 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE) 2582 # ensure cellular rat, wfc mode, wifi associated 2583 toggle_airplane_mode(self.log, self.android_devices[0], False) 2584 toggle_volte(self.log, self.android_devices[0], True) 2585 2586 if not ensure_network_generation( 2587 self.log, 2588 self.android_devices[0], 2589 GEN_4G, 2590 voice_or_data=NETWORK_SERVICE_DATA): 2591 self.log.error("_rove_out_test: {} failed to be in rat: {}".format( 2592 self.android_devices[0].serial, cellular_rat)) 2593 get_telephony_signal_strength(self.android_devices[0]) 2594 get_wifi_signal_strength(self.android_devices[0]) 2595 return False 2596 2597 if not set_wfc_mode(self.log, self.android_devices[0], wfc_mode): 2598 self.log.error("{} set WFC mode failed.".format( 2599 self.android_devices[0].serial)) 2600 return False 2601 2602 if not ensure_wifi_connected(self.log, self.android_devices[0], 2603 self.wifi_network_ssid, 2604 self.wifi_network_pass): 2605 self.log.error("{} connect WiFI failed, expected succeed".format( 2606 self.android_devices[0].serial)) 2607 return False 2608 2609 if (not wait_for_wifi_data_connection(self.log, 2610 self.android_devices[0], True) or 2611 not verify_http_connection(self.log, self.android_devices[0])): 2612 self.log.error("No Data on Wifi") 2613 get_telephony_signal_strength(self.android_devices[0]) 2614 get_wifi_signal_strength(self.android_devices[0]) 2615 return False 2616 2617 if not self._phone_idle_iwlan(): 2618 self.log.error("Phone failed to report iwlan in {}dBm.".format( 2619 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE)) 2620 get_telephony_signal_strength(self.android_devices[0]) 2621 get_wifi_signal_strength(self.android_devices[0]) 2622 return False 2623 2624 # set up wifi to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10 seconds 2625 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2626 self.wifi_rssi_with_no_atten, 2627 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT, 1, 1) 2628 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2629 self.wifi_rssi_with_no_atten, 2630 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT, 1, 1) 2631 if (not wait_for_wifi_data_connection(self.log, 2632 self.android_devices[0], True) or 2633 not verify_http_connection(self.log, self.android_devices[0])): 2634 self.log.error("No Data on Wifi") 2635 get_telephony_signal_strength(self.android_devices[0]) 2636 get_wifi_signal_strength(self.android_devices[0]) 2637 return False 2638 2639 if self._phone_wait_for_not_wfc() or not self._phone_idle_iwlan(): 2640 self.log.error("Phone should not rove-out in {}dBm.".format( 2641 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT)) 2642 get_telephony_signal_strength(self.android_devices[0]) 2643 get_wifi_signal_strength(self.android_devices[0]) 2644 return False 2645 2646 # set up wifi to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10 seconds 2647 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2648 self.wifi_rssi_with_no_atten, 2649 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2650 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2651 self.wifi_rssi_with_no_atten, 2652 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2653 if (not wait_for_wifi_data_connection(self.log, 2654 self.android_devices[0], True) or 2655 not verify_http_connection(self.log, self.android_devices[0])): 2656 self.log.error("No Data on Wifi") 2657 get_telephony_signal_strength(self.android_devices[0]) 2658 get_wifi_signal_strength(self.android_devices[0]) 2659 return False 2660 2661 if not self._phone_wait_for_not_wfc() or self._phone_idle_iwlan(): 2662 self.log.error("Phone should rove-out in {}dBm.".format( 2663 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT)) 2664 get_telephony_signal_strength(self.android_devices[0]) 2665 get_wifi_signal_strength(self.android_devices[0]) 2666 return False 2667 2668 # make a call. 2669 if wfc_mode == WFC_MODE_WIFI_ONLY: 2670 return self._wfc_call_sequence( 2671 [self.android_devices[0], self.android_devices[1]], 2672 DIRECTION_MOBILE_ORIGINATED, None, None, 2673 self._phone_idle_not_iwlan, self._is_phone_not_in_call, None, 2674 "initiate_call fail.") 2675 elif wfc_mode == WFC_MODE_WIFI_PREFERRED: 2676 if cellular_gen == GEN_4G: 2677 return self._wfc_call_sequence( 2678 [self.android_devices[0], self.android_devices[1]], 2679 DIRECTION_MOBILE_ORIGINATED, None, None, 2680 self._phone_idle_volte, self._is_phone_in_call_volte, None, 2681 True) 2682 else: 2683 return self._wfc_call_sequence( 2684 [self.android_devices[0], self.android_devices[1]], 2685 DIRECTION_MOBILE_ORIGINATED, None, None, 2686 self._phone_idle_3g, self._is_phone_in_call_3g, None, True) 2687 else: 2688 return False 2689 2690 @test_tracker_info(uuid="7f9779c1-75c6-413e-9e3b-7e4d9896379a") 2691 @TelephonyBaseTest.tel_test_wrap 2692 def test_rove_out_in_stress(self): 2693 """WiFi Calling Rove out/in stress test. 2694 2695 Steps: 2696 1. PhoneA on LTE, VoLTE enabled. 2697 2. PhoneA WFC mode WiFi preferred, WiFi associated. 2698 3. Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 2699 4. Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2700 PhoneA rove-out. 2701 5. Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2702 PhoneA rove-in. 2703 6. Repeat Step 4~5. 2704 2705 Expected Results: 2706 4. Phone should rove out. 2707 5. Phone should rove in. 2708 6. Stress test pass rate should be higher than pre-defined limit. 2709 """ 2710 self._wfc_set_wifi_strong_cell_strong() 2711 if not self._wfc_phone_setup_wifi_preferred(): 2712 self.log.error("Setup WFC failed.") 2713 return False 2714 if (not wait_for_wifi_data_connection(self.log, 2715 self.android_devices[0], True) or 2716 not verify_http_connection(self.log, self.android_devices[0])): 2717 self.log.error("No Data on Wifi") 2718 return False 2719 if not self._phone_idle_iwlan(): 2720 self.log.error("Phone failed to report iwlan in {}dBm.".format( 2721 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE)) 2722 return False 2723 total_iteration = self.stress_test_number 2724 self.log.info( 2725 "Rove_out/Rove_in stress test. Total iteration = {}.".format( 2726 total_iteration)) 2727 current_iteration = 1 2728 while (current_iteration <= total_iteration): 2729 self.log.info(">----Current iteration = {}/{}----<".format( 2730 current_iteration, total_iteration)) 2731 2732 # set up wifi to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10 seconds 2733 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2734 self.wifi_rssi_with_no_atten, 2735 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2736 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2737 self.wifi_rssi_with_no_atten, 2738 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2739 if (not wait_for_wifi_data_connection( 2740 self.log, self.android_devices[0], True) 2741 or not verify_http_connection(self.log, 2742 self.android_devices[0])): 2743 self.log.error("No Data on Wifi") 2744 break 2745 if not self._phone_wait_for_not_wfc(): 2746 self.log.error("Phone should rove-out in {}dBm.".format( 2747 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT)) 2748 break 2749 self.log.info("Rove-out succeed.") 2750 # set up wifi to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10 seconds 2751 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2752 self.wifi_rssi_with_no_atten, 2753 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 2, 1) 2754 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2755 self.wifi_rssi_with_no_atten, 2756 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 2, 1) 2757 if (not wait_for_wifi_data_connection( 2758 self.log, self.android_devices[0], True) 2759 or not verify_http_connection(self.log, 2760 self.android_devices[0])): 2761 self.log.error("No Data on Wifi") 2762 break 2763 if not self._phone_wait_for_wfc(): 2764 self.log.error("Phone should rove-in in {}dBm.".format( 2765 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN)) 2766 break 2767 self.log.info("Rove-in succeed.") 2768 2769 self.log.info(">----Iteration : {}/{} succeed.----<".format( 2770 current_iteration, total_iteration)) 2771 current_iteration += 1 2772 if current_iteration <= total_iteration: 2773 self.log.info(">----Iteration : {}/{} failed.----<".format( 2774 current_iteration, total_iteration)) 2775 return False 2776 else: 2777 return True 2778 2779 @test_tracker_info(uuid="3ba22f37-a9fd-4890-9805-941d80f5600d") 2780 @TelephonyBaseTest.tel_test_wrap 2781 def test_rove_in_out_stress(self): 2782 """WiFi Calling Rove in/out stress test. 2783 2784 Steps: 2785 1. PhoneA on LTE, VoLTE enabled. 2786 2. PhoneA WFC mode WiFi preferred, WiFi associated. 2787 3. Cellular strong, WiFi RSSI weak. 2788 4. Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2789 PhoneA rove-in. 2790 5. Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2791 PhoneA rove-out. 2792 6. Repeat Step 4~5. 2793 2794 Expected Results: 2795 4. Phone should rove in. 2796 5. Phone should rove out. 2797 6. Stress test pass rate should be higher than pre-defined limit. 2798 """ 2799 self._wfc_set_wifi_weak_cell_strong() 2800 # ensure cellular rat, wfc mode, wifi not associated 2801 if not self._wfc_phone_setup_wifi_preferred(): 2802 self.log.error("Failed to setup for rove_in_out_stress") 2803 return False 2804 total_iteration = self.stress_test_number 2805 self.log.info( 2806 "Rove_in/Rove_out stress test. Total iteration = {}.".format( 2807 total_iteration)) 2808 current_iteration = 1 2809 while (current_iteration <= total_iteration): 2810 self.log.info(">----Current iteration = {}/{}----<".format( 2811 current_iteration, total_iteration)) 2812 2813 # set up wifi to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10 seconds 2814 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2815 self.wifi_rssi_with_no_atten, 2816 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 2, 1) 2817 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2818 self.wifi_rssi_with_no_atten, 2819 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN, 2, 1) 2820 if (not wait_for_wifi_data_connection( 2821 self.log, self.android_devices[0], True) 2822 or not verify_http_connection(self.log, 2823 self.android_devices[0])): 2824 self.log.error("No Data on Wifi") 2825 break 2826 if not self._phone_wait_for_wfc(): 2827 self.log.error("Phone should rove-in in {}dBm.".format( 2828 WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN)) 2829 break 2830 self.log.info("Rove-in succeed.") 2831 2832 # set up wifi to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10 seconds 2833 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 2834 self.wifi_rssi_with_no_atten, 2835 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2836 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 2837 self.wifi_rssi_with_no_atten, 2838 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT, 2, 1) 2839 if (not wait_for_wifi_data_connection( 2840 self.log, self.android_devices[0], True) 2841 or not verify_http_connection(self.log, 2842 self.android_devices[0])): 2843 self.log.error("No Data on Wifi") 2844 break 2845 if not self._phone_wait_for_not_wfc(): 2846 self.log.error("Phone should rove-out in {}dBm.".format( 2847 WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT)) 2848 break 2849 self.log.info("Rove-out succeed.") 2850 2851 self.log.info(">----Iteration : {}/{} succeed.----<".format( 2852 current_iteration, total_iteration)) 2853 current_iteration += 1 2854 if current_iteration <= total_iteration: 2855 self.log.info(">----Iteration : {}/{} failed.----<".format( 2856 current_iteration, total_iteration)) 2857 return False 2858 else: 2859 return True 2860 2861 @test_tracker_info(uuid="791bce68-d875-41cd-addd-355ff61773b9") 2862 @TelephonyBaseTest.tel_test_wrap 2863 def test_rove_in_lte_wifi_preferred(self): 2864 """ Test WFC rove-in features. 2865 2866 PhoneA on LTE, VoLTE enabled. 2867 PhoneA WFC mode WiFi preferred, WiFi enabled but not associated. 2868 Cellular strong, WiFi RSSI < -100 dBm. 2869 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10s, 2870 PhoneA does not rove-in. 2871 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2872 PhoneA rove-in. 2873 Make WFC call. 2874 2875 Returns: 2876 True if pass; False if fail. 2877 """ 2878 return self._rove_in_test(GEN_4G, WFC_MODE_WIFI_PREFERRED) 2879 2880 @test_tracker_info(uuid="f4b70fbb-cc44-4e7c-805e-c5f28c78e2dd") 2881 @TelephonyBaseTest.tel_test_wrap 2882 def test_rove_in_lte_wifi_only(self): 2883 """ Test WFC rove-in features. 2884 2885 PhoneA on LTE, VoLTE enabled. 2886 PhoneA WFC mode WiFi only, WiFi enabled but not associated. 2887 Cellular strong, WiFi RSSI < -100 dBm. 2888 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10s, 2889 PhoneA does not rove-in. 2890 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2891 PhoneA rove-in. 2892 Make WFC call. 2893 2894 Returns: 2895 True if pass; False if fail. 2896 """ 2897 return self._rove_in_test(GEN_4G, WFC_MODE_WIFI_ONLY) 2898 2899 @test_tracker_info(uuid="b9f3648e-7168-4c82-aec5-f4a7cc77ad99") 2900 @TelephonyBaseTest.tel_test_wrap 2901 def test_rove_in_wcdma_wifi_preferred(self): 2902 """ Test WFC rove-in features. 2903 2904 PhoneA on WCDMA, VoLTE enabled. 2905 PhoneA WFC mode WiFi preferred, WiFi enabled but not associated. 2906 Cellular strong, WiFi RSSI < -100 dBm. 2907 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10s, 2908 PhoneA does not rove-in. 2909 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2910 PhoneA rove-in. 2911 Make WFC call. 2912 2913 Returns: 2914 True if pass; False if fail. 2915 """ 2916 return self._rove_in_test(GEN_3G, WFC_MODE_WIFI_PREFERRED) 2917 2918 @test_tracker_info(uuid="8ce03ae7-0b21-49e4-828f-cf8dcd54ba35") 2919 @TelephonyBaseTest.tel_test_wrap 2920 def test_rove_in_wcdma_wifi_only(self): 2921 """ Test WFC rove-in features. 2922 2923 PhoneA on WCDMA, VoLTE enabled. 2924 PhoneA WFC mode WiFi only, WiFi enabled but not associated. 2925 Cellular strong, WiFi RSSI < -100 dBm. 2926 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_NOT_ROVE_IN in 10s, 2927 PhoneA does not rove-in. 2928 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_IN_TEST_PHONE_ROVE_IN in 10s, 2929 PhoneA rove-in. 2930 Make WFC call. 2931 2932 Returns: 2933 True if pass; False if fail. 2934 """ 2935 return self._rove_in_test(GEN_3G, WFC_MODE_WIFI_ONLY) 2936 2937 @test_tracker_info(uuid="7784923f-10f1-4dca-bdc1-8de55b7b9d40") 2938 @TelephonyBaseTest.tel_test_wrap 2939 def test_rove_out_lte_wifi_preferred(self): 2940 """ Test WFC rove-out features. 2941 2942 PhoneA on LTE, VoLTE enabled. 2943 PhoneA WFC mode WiFi preferred, WiFi associated. 2944 Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 2945 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10s, 2946 PhoneA does not rove-out. 2947 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2948 PhoneA rove-out. 2949 Make a call, call should succeed by cellular VoLTE. 2950 2951 Returns: 2952 True if pass; False if fail. 2953 """ 2954 return self._rove_out_test(GEN_4G, WFC_MODE_WIFI_PREFERRED) 2955 2956 @test_tracker_info(uuid="6bb42ab2-02bd-4637-b3b6-3ce4cffffda8") 2957 @TelephonyBaseTest.tel_test_wrap 2958 def test_rove_out_lte_wifi_only(self): 2959 """ Test WFC rove-out features. 2960 2961 PhoneA on LTE, VoLTE enabled. 2962 PhoneA WFC mode WiFi only, WiFi associated. 2963 Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 2964 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10s, 2965 PhoneA does not rove-out. 2966 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2967 PhoneA rove-out. 2968 Make a call, call should fail. 2969 2970 Returns: 2971 True if pass; False if fail. 2972 """ 2973 return self._rove_out_test(GEN_4G, WFC_MODE_WIFI_ONLY) 2974 2975 @test_tracker_info(uuid="3261b432-01de-4dd9-a309-ff53059df521") 2976 @TelephonyBaseTest.tel_test_wrap 2977 def test_rove_out_wcdma_wifi_preferred(self): 2978 """ Test WFC rove-out features. 2979 2980 PhoneA on WCDMA, VoLTE enabled. 2981 PhoneA WFC mode WiFi preferred, WiFi associated. 2982 Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 2983 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10s, 2984 PhoneA does not rove-out. 2985 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 2986 PhoneA rove-out. 2987 Make a call, call should succeed by cellular 3g. 2988 2989 Returns: 2990 True if pass; False if fail. 2991 """ 2992 return self._rove_out_test(GEN_3G, WFC_MODE_WIFI_PREFERRED) 2993 2994 @test_tracker_info(uuid="89fac8bf-b8e1-443a-8be7-f21f306c0d6c") 2995 @TelephonyBaseTest.tel_test_wrap 2996 def test_rove_out_wcdma_wifi_only(self): 2997 """ Test WFC rove-out features. 2998 2999 PhoneA on WCDMA, VoLTE enabled. 3000 PhoneA WFC mode WiFi only, WiFi associated. 3001 Cellular strong, WiFi RSSI WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_INITIAL_STATE. 3002 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_NOT_ROVE_OUT in 10s, 3003 PhoneA does not rove-out. 3004 Set WiFI RSSI to WIFI_RSSI_FOR_ROVE_OUT_TEST_PHONE_ROVE_OUT in 10s, 3005 PhoneA rove-out. 3006 Make a call, call should fail. 3007 3008 Returns: 3009 True if pass; False if fail. 3010 """ 3011 return self._rove_out_test(GEN_3G, WFC_MODE_WIFI_ONLY) 3012 3013 def _increase_wifi_rssi_check_phone_hand_in(self): 3014 """Private Test utility for hand_in test. 3015 3016 Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN in 10s. 3017 PhoneA should connect to WiFi and have data on WiFi. 3018 PhoneA should not hand-in to iwlan. 3019 Increase WiFi RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s. 3020 PhoneA should hand-in to iwlan. 3021 PhoneA call should remain active. 3022 """ 3023 # Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN in 10s 3024 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3025 self.wifi_rssi_with_no_atten, 3026 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN, 5, 1) 3027 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3028 self.wifi_rssi_with_no_atten, 3029 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN, 5, 1) 3030 # Make sure WiFI connected and data OK. 3031 if (not wait_for_wifi_data_connection(self.log, 3032 self.android_devices[0], True) or 3033 not verify_http_connection(self.log, self.android_devices[0])): 3034 self.log.error("No Data on Wifi") 3035 return False 3036 # Make sure phone not hand in to iwlan. 3037 if self._phone_wait_for_wfc(): 3038 self.log.error("Phone hand-in to wfc.") 3039 return False 3040 # Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s 3041 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3042 self.wifi_rssi_with_no_atten, 3043 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3044 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3045 self.wifi_rssi_with_no_atten, 3046 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3047 # Make sure phone hand in to iwlan. 3048 if not self._phone_wait_for_wfc(): 3049 self.log.error("Phone failed to hand-in to wfc.") 3050 return False 3051 if self._is_phone_not_in_call(): 3052 self.log.error("Phone call dropped.") 3053 return False 3054 return True 3055 3056 @test_tracker_info(uuid="e8ba5d0f-afc5-42c2-b7f0-9f5d06774556") 3057 @TelephonyBaseTest.tel_test_wrap 3058 def test_hand_in_wifi_preferred(self): 3059 """WiFi Hand-In Threshold - WiFi Preferred 3060 3061 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred. WiFI not associated. 3062 Cellular Strong, WiFi <-100 dBm 3063 Call from PhoneA to PhoneB, PhoneA should be on VoLTE. 3064 Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN in 10s. 3065 PhoneA should connect to WiFi and have data on WiFi. 3066 PhoneA should not hand-in to iwlan. 3067 Increase WiFi RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s. 3068 PhoneA should hand-in to iwlan. 3069 PhoneA call should remain active. 3070 """ 3071 return self._wfc_call_sequence( 3072 [self.android_devices[0], self.android_devices[1]], 3073 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_absent_cell_strong, 3074 self._wfc_phone_setup_wifi_absent_wifi_preferred, 3075 self._phone_idle_volte, self._is_phone_in_call_volte, 3076 self._increase_wifi_rssi_check_phone_hand_in, True) 3077 3078 def _increase_wifi_rssi_hand_in_and_decrease_wifi_rssi_hand_out(self): 3079 if not self._increase_wifi_rssi_check_phone_hand_in(): 3080 return False 3081 if not self._decrease_wifi_rssi_check_phone_hand_out(): 3082 return False 3083 return True 3084 3085 @test_tracker_info(uuid="2a20d499-80e1-4d4f-beca-05763863fbdb") 3086 @TelephonyBaseTest.tel_test_wrap 3087 def test_hand_in_out_wifi_preferred(self): 3088 """WiFi Hand-In-Out Threshold - WiFi Preferred 3089 3090 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred. WiFI not associated. 3091 Cellular Strong, WiFi <-100 dBm 3092 Call from PhoneA to PhoneB, PhoneA should be on VoLTE. 3093 3094 Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN in 10s. 3095 PhoneA should connect to WiFi and have data on WiFi. 3096 PhoneA should not hand-in to iwlan. 3097 Increase WiFi RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s. 3098 PhoneA should hand-in to iwlan. 3099 PhoneA call should remain active. 3100 3101 Decrease WiFi RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_NOT_HAND_OUT, in 10s. 3102 PhoneA should still be in call. 3103 PhoneA should not hand-out, PhoneA should have data on WiFi. 3104 Decrease WiFi RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT, in 10s. 3105 PhoneA should still be in call. PhoneA should hand-out to LTE. 3106 """ 3107 return self._wfc_call_sequence( 3108 [self.android_devices[0], self.android_devices[1]], 3109 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_absent_cell_strong, 3110 self._wfc_phone_setup_wifi_absent_wifi_preferred, 3111 self._phone_idle_volte, self._is_phone_in_call_volte, 3112 self._increase_wifi_rssi_hand_in_and_decrease_wifi_rssi_hand_out, 3113 True) 3114 3115 def _decrease_lte_rssi_check_phone_not_hand_in(self): 3116 """Private Test utility for hand_in test. 3117 3118 Decrease Cellular RSSI to CELL_WEAK_RSSI_VALUE in 30s. 3119 PhoneA should not hand-in to WFC. 3120 PhoneA should either drop or hands over to 3g/2g. 3121 """ 3122 # Decrease LTE RSSI to CELL_WEAK_RSSI_VALUE in 30 seconds 3123 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 3124 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE, 1, 1) 3125 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 3126 self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE, 1, 1) 3127 # Make sure phone not hand in to iwlan. 3128 if self._phone_wait_for_wfc(): 3129 self.log.error("Phone hand-in to wfc.") 3130 return False 3131 3132 if is_phone_not_in_call(self.log, self.android_devices[0]): 3133 self.log.info("Call drop.") 3134 return True 3135 if self._is_phone_in_call_csfb(): 3136 self.log.info("Call hands over to 2g/3g.") 3137 return True 3138 return False 3139 3140 @test_tracker_info(uuid="a83734c1-db91-4ea2-9d79-02d7f803905a") 3141 @TelephonyBaseTest.tel_test_wrap 3142 def test_hand_in_cellular_preferred(self): 3143 """WiFi Hand-In Not Attempted - Cellular Preferred 3144 3145 PhoneA on LTE, VoLTE enabled, WFC cellular preferred. WiFI associated. 3146 Cellular and WiFi signal strong. 3147 Call from PhoneA to PhoneB, PhoneA should be on VoLTE. 3148 Decrease Cellular RSSI to CELL_WEAK_RSSI_VALUE in 30s. 3149 PhoneA should not hand-in to WFC. 3150 PhoneA should either drop or hands over to 3g/2g. 3151 """ 3152 return self._wfc_call_sequence( 3153 [self.android_devices[0], self.android_devices[1]], 3154 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3155 self._wfc_phone_setup_cellular_preferred, self._phone_idle_volte, 3156 self._is_phone_in_call_volte, 3157 self._decrease_lte_rssi_check_phone_not_hand_in, True) 3158 3159 def _decrease_wifi_rssi_check_phone_hand_out(self): 3160 """Private Test utility for hand_out test. 3161 3162 Decrease WiFi RSSI to MIN_RSSI_RESERVED_VALUE 3163 PhoneA should still be in call. PhoneA should hand-out to LTE. 3164 """ 3165 time.sleep(30) 3166 # Decrease WiFi RSSI to MIN_RSSI_RESERVED_VALUE 3167 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 3168 MIN_RSSI_RESERVED_VALUE, 5, 1) 3169 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 3170 MIN_RSSI_RESERVED_VALUE, 5, 1) 3171 # Make sure phone hand-out, not drop call 3172 if not self._phone_wait_for_not_wfc(): 3173 self.log.error("Phone should hand out to LTE.") 3174 get_telephony_signal_strength(self.android_devices[0]) 3175 get_wifi_signal_strength(self.android_devices[0]) 3176 return False 3177 self.log.info("iWLAN to LTE switch happened at below Signal Strengths") 3178 get_telephony_signal_strength(self.android_devices[0]) 3179 get_wifi_signal_strength(self.android_devices[0]) 3180 if not self._is_phone_in_call_volte(): 3181 self.log.error("Phone should be in volte call.") 3182 return False 3183 3184 return True 3185 3186 @test_tracker_info(uuid="2242aa49-474c-496b-be1b-ccd900523a54") 3187 @TelephonyBaseTest.tel_test_wrap 3188 def test_iwlan_lte_handoff_wifi_preferred(self): 3189 """VoWiFi to VoLTE In Call Handover Test 3190 3191 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred, WiFi associated. 3192 Cellular strong, WiFi signal strong. 3193 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3194 Attenuate WiFi 3195 PhoneA should still be in call. PhoneA should handover to LTE. 3196 """ 3197 return self._wfc_call_sequence( 3198 [self.android_devices[0], self.android_devices[1]], 3199 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3200 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 3201 self._is_phone_in_call_iwlan, 3202 self._decrease_wifi_rssi_check_phone_hand_out, True) 3203 3204 def _increase_lte_decrease_wifi_rssi_check_phone_hand_out(self): 3205 """Private Test utility for hand_out test. 3206 3207 Attenuate WiFi and Bringup LTE 3208 PhoneA should still be in call. PhoneA should hand-out to LTE. 3209 """ 3210 # Increase LTE RSRP to MAX_RSSI_RESERVED_VALUE 3211 time.sleep(30) 3212 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 3213 MAX_RSSI_RESERVED_VALUE) 3214 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 3215 MAX_RSSI_RESERVED_VALUE) 3216 time.sleep(30) 3217 # Decrease WiFi RSSI to MIN_RSSI_RESERVED_VALUE 3218 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 3219 MIN_RSSI_RESERVED_VALUE, 5, 1) 3220 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 3221 MIN_RSSI_RESERVED_VALUE, 5, 1) 3222 # Make sure phone hand-out, not drop call 3223 if not self._phone_wait_for_not_wfc(): 3224 self.log.error("Phone should hand out to LTE.") 3225 get_telephony_signal_strength(self.android_devices[0]) 3226 get_wifi_signal_strength(self.android_devices[0]) 3227 return False 3228 self.log.info("iWLAN to LTE switch happened at below Signal Strengths") 3229 get_telephony_signal_strength(self.android_devices[0]) 3230 get_wifi_signal_strength(self.android_devices[0]) 3231 if not self._is_phone_in_call_volte(): 3232 self.log.error("Phone should be in volte call.") 3233 return False 3234 3235 return True 3236 3237 @test_tracker_info(uuid="dcd1e8f6-e002-48c3-b1eb-a46df5d66a6a") 3238 @TelephonyBaseTest.tel_test_wrap 3239 def test_iwlan_lte_handoff_cellular_preferred(self): 3240 """VoWiFi to VoLTE In Call Handover Test 3241 3242 PhoneA on LTE, VoLTE enabled, WFC Cellular preferred, WiFi associated. 3243 Cellular absent, WiFi signal strong. 3244 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3245 Attenuate WiFi and Bring up LTE 3246 PhoneA should still be in call. PhoneA should handover to LTE. 3247 """ 3248 return self._wfc_call_sequence( 3249 [self.android_devices[0], self.android_devices[1]], 3250 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_absent, 3251 self._wfc_phone_setup_cellular_preferred, self._phone_idle_iwlan, 3252 self._is_phone_in_call_iwlan, 3253 self._increase_lte_decrease_wifi_rssi_check_phone_hand_out, True) 3254 3255 def _decrease_wifi_rssi_hand_out_and_increase_wifi_rssi_hand_in(self): 3256 if not self._decrease_wifi_rssi_check_phone_hand_out(): 3257 return False 3258 if not self._increase_wifi_rssi_check_phone_hand_in(): 3259 return False 3260 return True 3261 3262 @test_tracker_info(uuid="59fc0104-5f4c-4aa5-b58b-e50d94fb90fe") 3263 @TelephonyBaseTest.tel_test_wrap 3264 def test_hand_out_in_wifi_preferred(self): 3265 """WiFi Hand-Out Threshold - WiFi Preferred 3266 3267 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred, WiFi associated. 3268 Cellular and WiFi signal strong. 3269 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3270 3271 Decrease WiFi RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_NOT_HAND_OUT in 10s. 3272 PhoneA should still be in call. 3273 PhoneA should not hand-out, PhoneA should have data on WiFi. 3274 Decrease WiFi RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT in 10s. 3275 PhoneA should still be in call. PhoneA should hand-out to LTE. 3276 PhoneA should have data on WiFi. 3277 3278 Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_NOT_HAND_IN in 10s. 3279 PhoneA should connect to WiFi and have data on WiFi. 3280 PhoneA should not hand-in to iwlan. 3281 Increase WiFi RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s. 3282 PhoneA should hand-in to iwlan. 3283 PhoneA call should remain active. 3284 """ 3285 return self._wfc_call_sequence( 3286 [self.android_devices[0], self.android_devices[1]], 3287 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3288 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 3289 self._is_phone_in_call_iwlan, 3290 self._decrease_wifi_rssi_hand_out_and_increase_wifi_rssi_hand_in, 3291 True) 3292 3293 def _hand_out_hand_in_stress(self): 3294 total_iteration = self.stress_test_number 3295 self.log.info( 3296 "Hand_out/Hand_in stress test. Total iteration = {}.".format( 3297 total_iteration)) 3298 current_iteration = 1 3299 if self._phone_wait_for_call_drop(): 3300 self.log.error("Call Drop.") 3301 return False 3302 while (current_iteration <= total_iteration): 3303 self.log.info(">----Current iteration = {}/{}----<".format( 3304 current_iteration, total_iteration)) 3305 3306 # Decrease WiFi RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT 3307 # in 10 seconds 3308 self.log.info("Decrease WiFi RSSI to hand out.") 3309 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3310 self.wifi_rssi_with_no_atten, 3311 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT, 2, 1) 3312 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3313 self.wifi_rssi_with_no_atten, 3314 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT, 2, 1) 3315 # Make sure WiFi still connected and have data. 3316 if (not wait_for_wifi_data_connection( 3317 self.log, self.android_devices[0], True) 3318 or not verify_http_connection(self.log, 3319 self.android_devices[0])): 3320 self.log.error("No Data on Wifi") 3321 break 3322 # Make sure phone hand-out, not drop call 3323 if not self._phone_wait_for_not_wfc(): 3324 self.log.error("Phone failed to hand-out in RSSI {}.".format( 3325 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT)) 3326 break 3327 if self._phone_wait_for_call_drop(): 3328 self.log.error("Call Drop.") 3329 break 3330 # Increase WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s 3331 self.log.info("Increase WiFi RSSI to hand in.") 3332 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3333 self.wifi_rssi_with_no_atten, 3334 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3335 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3336 self.wifi_rssi_with_no_atten, 3337 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3338 # Make sure WiFi still connected and have data. 3339 if (not wait_for_wifi_data_connection( 3340 self.log, self.android_devices[0], True) 3341 or not verify_http_connection(self.log, 3342 self.android_devices[0])): 3343 self.log.error("No Data on Wifi") 3344 break 3345 # Make sure phone hand in to iwlan. 3346 if not self._phone_wait_for_wfc(): 3347 self.log.error("Phone failed to hand-in to wfc.") 3348 break 3349 if self._phone_wait_for_call_drop(): 3350 self.log.error("Call Drop.") 3351 break 3352 3353 self.log.info(">----Iteration : {}/{} succeed.----<".format( 3354 current_iteration, total_iteration)) 3355 current_iteration += 1 3356 if current_iteration <= total_iteration: 3357 self.log.info(">----Iteration : {}/{} failed.----<".format( 3358 current_iteration, total_iteration)) 3359 return False 3360 else: 3361 return True 3362 3363 @test_tracker_info(uuid="330ef8d7-3bbb-4492-84d0-43fdfe3fe78b") 3364 @TelephonyBaseTest.tel_test_wrap 3365 def test_hand_out_in_stress(self): 3366 """WiFi Calling Hand out/in stress test. 3367 3368 Steps: 3369 1. PhoneA on LTE, VoLTE enabled. 3370 2. PhoneA WFC mode WiFi preferred, WiFi associated. 3371 3. Cellular strong, WiFi RSSI strong. Call from PhoneA to PhoneB, 3372 call should be on WFC. 3373 4. Set WiFI RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT in 10s, 3374 PhoneA hand-out. 3375 5. Set WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s, 3376 PhoneA hand-in. 3377 6. Repeat Step 4~5. Call should not drop. 3378 3379 Expected Results: 3380 4. Phone should hand out. 3381 5. Phone should hand in. 3382 6. Stress test pass rate should be higher than pre-defined limit. 3383 """ 3384 return self._wfc_call_sequence( 3385 [self.android_devices[0], self.android_devices[1]], 3386 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3387 self._wfc_phone_setup_wifi_preferred, self._phone_idle_iwlan, 3388 self._is_phone_in_call_iwlan, self._hand_out_hand_in_stress, True) 3389 3390 def _hand_in_hand_out_stress(self): 3391 total_iteration = self.stress_test_number 3392 self.log.info( 3393 "Hand_in/Hand_out stress test. Total iteration = {}.".format( 3394 total_iteration)) 3395 current_iteration = 1 3396 if self._phone_wait_for_call_drop(): 3397 self.log.error("Call Drop.") 3398 return False 3399 while (current_iteration <= total_iteration): 3400 self.log.info(">----Current iteration = {}/{}----<".format( 3401 current_iteration, total_iteration)) 3402 3403 # Increase WiFi RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN 3404 # in 10 seconds 3405 self.log.info("Increase WiFi RSSI to hand in.") 3406 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3407 self.wifi_rssi_with_no_atten, 3408 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3409 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3410 self.wifi_rssi_with_no_atten, 3411 WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN, 2, 1) 3412 # Make sure WiFi still connected and have data. 3413 if (not wait_for_wifi_data_connection( 3414 self.log, self.android_devices[0], True) 3415 or not verify_http_connection(self.log, 3416 self.android_devices[0])): 3417 self.log.error("No Data on Wifi") 3418 break 3419 # Make sure phone hand in to iwlan. 3420 if not self._phone_wait_for_wfc(): 3421 self.log.error("Phone failed to hand-in to wfc.") 3422 break 3423 if self._phone_wait_for_call_drop(): 3424 self.log.error("Call Drop.") 3425 break 3426 3427 # Decrease WiFI RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT in 10s 3428 self.log.info("Decrease WiFi RSSI to hand out.") 3429 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3430 self.wifi_rssi_with_no_atten, 3431 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT, 2, 1) 3432 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3433 self.wifi_rssi_with_no_atten, 3434 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT, 2, 1) 3435 # Make sure WiFi still connected and have data. 3436 if (not wait_for_wifi_data_connection( 3437 self.log, self.android_devices[0], True) 3438 or not verify_http_connection(self.log, 3439 self.android_devices[0])): 3440 self.log.error("No Data on Wifi") 3441 break 3442 # Make sure phone hand-out, not drop call 3443 if not self._phone_wait_for_not_wfc(): 3444 self.log.error("Phone failed to hand-out in RSSI {}.".format( 3445 WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT)) 3446 break 3447 if self._phone_wait_for_call_drop(): 3448 self.log.error("Call Drop.") 3449 break 3450 3451 self.log.info(">----Iteration : {}/{} succeed.----<".format( 3452 current_iteration, total_iteration)) 3453 current_iteration += 1 3454 if current_iteration <= total_iteration: 3455 self.log.info(">----Iteration : {}/{} failed.----<".format( 3456 current_iteration, total_iteration)) 3457 return False 3458 else: 3459 return True 3460 3461 @test_tracker_info(uuid="97ae2018-935c-4dfc-bf5a-747777201ae4") 3462 @TelephonyBaseTest.tel_test_wrap 3463 def test_hand_in_out_stress(self): 3464 """WiFi Calling Hand in/out stress test. 3465 3466 Steps: 3467 1. PhoneA on LTE, VoLTE enabled. 3468 2. PhoneA WFC mode WiFi preferred, WiFi associated. 3469 3. Cellular strong, WiFi RSSI weak. Call from PhoneA to PhoneB, 3470 call should be on VoLTE. 3471 4. Set WiFI RSSI to WIFI_RSSI_FOR_HAND_IN_TEST_PHONE_HAND_IN in 10s, 3472 PhoneA hand-in. 3473 5. Set WiFI RSSI to WIFI_RSSI_FOR_HAND_OUT_TEST_PHONE_HAND_OUT in 10s, 3474 PhoneA hand-out. 3475 6. Repeat Step 4~5. Call should not drop. 3476 3477 Expected Results: 3478 4. Phone should hand in. 3479 5. Phone should hand out. 3480 6. Stress test pass rate should be higher than pre-defined limit. 3481 """ 3482 return self._wfc_call_sequence( 3483 [self.android_devices[0], self.android_devices[1]], 3484 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_weak_cell_strong, 3485 self._wfc_phone_setup_wifi_preferred, self._phone_idle_volte, 3486 self._is_phone_in_call_volte, self._hand_in_hand_out_stress, True) 3487 3488 def _decrease_cellular_rssi_check_phone_hand_out(self): 3489 """Private Test utility for hand_out test. 3490 3491 Decrease Cellular RSSI to MIN_RSSI_RESERVED_VALUE 5db per sec 3492 PhoneA should still be in call. PhoneA should hand-out to iWLAN. 3493 """ 3494 time.sleep(60) 3495 # Decrease Cellular RSSI to MIN_RSSI_RESERVED_VALUE 3496 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 3497 MIN_RSSI_RESERVED_VALUE, 5, 1) 3498 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 3499 MIN_RSSI_RESERVED_VALUE, 5, 1) 3500 # Make sure phone hand-out to iWLAN, not drop call 3501 if not self._phone_wait_for_wfc(): 3502 self.log.error("Phone should hand out to iWLAN.") 3503 get_telephony_signal_strength(self.android_devices[0]) 3504 get_wifi_signal_strength(self.android_devices[0]) 3505 return False 3506 self.log.info("LTE to iWLAN switch happened at below Signal Strengths") 3507 get_telephony_signal_strength(self.android_devices[0]) 3508 get_wifi_signal_strength(self.android_devices[0]) 3509 time.sleep(30) 3510 if not self._is_phone_in_call_iwlan(): 3511 self.log.error("Phone should be in iWLAN call.") 3512 return False 3513 time.sleep(30) 3514 return True 3515 3516 @test_tracker_info(uuid="a83734c1-db91-4ea2-9d79-02d7f803905a") 3517 @TelephonyBaseTest.tel_test_wrap 3518 def test_lte_iwlan_handoff_cellular_preferred(self): 3519 """VoLTE to VoWiFi In Call Handover Test 3520 3521 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred, WiFi associated. 3522 Cellular strong, WiFi signal strong. 3523 Call from PhoneA to PhoneB, PhoneA should be on LTE. 3524 Attenuate LTE 3525 PhoneA should still be in call. PhoneA should handover to iWLAN. 3526 """ 3527 return self._wfc_call_sequence( 3528 [self.android_devices[0], self.android_devices[1]], 3529 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3530 self._wfc_phone_setup_cellular_preferred, self._phone_idle_volte, 3531 self._is_phone_in_call_volte, 3532 self._decrease_cellular_rssi_check_phone_hand_out, True) 3533 3534 def _increase_wifi_decrease_cellular_check_phone_hand_out(self): 3535 """Private Test utility for hand_out test. 3536 3537 Increase WiFi RSSI to MAX_RSSI_RESERVED_VALUE 3538 Decrease Cellular RSSI to MIN_RSSI_RESERVED_VALUE 5db per sec 3539 PhoneA should still be in call. PhoneA should hand-out to iWLAN. 3540 """ 3541 time.sleep(30) 3542 # Increase WiFi RSSI to MAX_RSSI_RESERVED_VALUE 3543 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0, 3544 MAX_RSSI_RESERVED_VALUE) 3545 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0, 3546 MAX_RSSI_RESERVED_VALUE) 3547 time.sleep(30) 3548 if not ensure_wifi_connected(self.log, self.android_devices[0], 3549 self.wifi_network_ssid, 3550 self.wifi_network_pass): 3551 self.log.error("{} connect WiFI failed".format( 3552 self.android_devices[0].serial)) 3553 return False 3554 # Decrease Cellular RSSI to MIN_RSSI_RESERVED_VALUE 3555 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0, 3556 MIN_RSSI_RESERVED_VALUE, 5, 1) 3557 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0, 3558 MIN_RSSI_RESERVED_VALUE, 5, 1) 3559 # Make sure phone hand-out to iWLAN, not drop call 3560 if not self._phone_wait_for_wfc(): 3561 self.log.error("Phone should hand out to iWLAN.") 3562 get_telephony_signal_strength(self.android_devices[0]) 3563 get_wifi_signal_strength(self.android_devices[0]) 3564 return False 3565 self.log.info("LTE to iWLAN switch happened at below Signal Strengths") 3566 get_telephony_signal_strength(self.android_devices[0]) 3567 get_wifi_signal_strength(self.android_devices[0]) 3568 time.sleep(30) 3569 if not self._is_phone_in_call_iwlan(): 3570 self.log.error("Phone should be in iWLAN call.") 3571 return False 3572 time.sleep(30) 3573 return True 3574 3575 @test_tracker_info(uuid="6a71f8f5-d348-49b6-8ca6-2464e6387d26") 3576 @TelephonyBaseTest.tel_test_wrap 3577 def test_lte_iwlan_handoff_wifi_preferred(self): 3578 """VoLTE to VoWiFi In Call Handover Test 3579 3580 PhoneA on LTE, VoLTE enabled, WFC WiFi preferred, WiFi not associated. 3581 Cellular strong, WiFi signal absent. 3582 Call from PhoneA to PhoneB, PhoneA should be on LTE. 3583 Attenuate LTE and Bringup WiFi 3584 PhoneA should still be in call. PhoneA should handover to iWLAN. 3585 """ 3586 return self._wfc_call_sequence( 3587 [self.android_devices[0], self.android_devices[1]], 3588 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_absent_cell_strong, 3589 self._wfc_phone_setup_wifi_absent_wifi_preferred, 3590 self._phone_idle_volte, self._is_phone_in_call_volte, 3591 self._increase_wifi_decrease_cellular_check_phone_hand_out, True) 3592 3593 def _decrease_wifi_rssi_check_phone_not_hand_out(self): 3594 """Private Test utility for hand_out test. 3595 3596 Decrease WiFi RSSI to <-100dBm, in 30s. 3597 PhoneA should drop call. PhoneA should not report LTE as voice RAT. 3598 PhoneA data should be on LTE. 3599 """ 3600 # Decrease WiFi RSSI to <-100dBm in 30 seconds 3601 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3602 self.wifi_rssi_with_no_atten, MIN_RSSI_RESERVED_VALUE) 3603 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3604 self.wifi_rssi_with_no_atten, MIN_RSSI_RESERVED_VALUE) 3605 # Make sure PhoneA data is on LTE. 3606 if (not wait_for_cell_data_connection(self.log, 3607 self.android_devices[0], True) or 3608 not verify_http_connection(self.log, self.android_devices[0])): 3609 self.log.error("Data not on Cell.") 3610 return False 3611 # Make sure phone drop. 3612 self.log.info("Wait for call drop.") 3613 if not self._phone_wait_for_call_drop(): 3614 self.log.error("Phone should drop call.") 3615 return False 3616 # Make sure Voice RAT is not LTE. 3617 # FIXME: I think there's something wrong with this check 3618 if RAT_LTE == get_network_rat(self.log, self.android_devices[0], 3619 NETWORK_SERVICE_VOICE): 3620 self.log.error("Phone should not report lte as voice rat.") 3621 return False 3622 return True 3623 3624 @test_tracker_info(uuid="40aa17a5-d9e0-4cff-9ca8-c187d7ae3ad1") 3625 @TelephonyBaseTest.tel_test_wrap 3626 def test_hand_out_wifi_only(self): 3627 """WiFi Hand-Out Not Attempted - WiFi Only 3628 3629 PhoneA on LTE, VoLTE enabled, WFC WiFi only, WiFi associated. 3630 Cellular and WiFi signal strong. 3631 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3632 Decrease WiFi RSSI to <-100dBm, in 30s. 3633 PhoneA should drop call. PhoneA should not report LTE as voice RAT. 3634 PhoneA data should be on LTE. 3635 """ 3636 return self._wfc_call_sequence( 3637 [self.android_devices[0], self.android_devices[1]], 3638 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3639 self._wfc_phone_setup_wifi_only, self._phone_idle_iwlan, 3640 self._is_phone_in_call_iwlan, 3641 self._decrease_wifi_rssi_check_phone_not_hand_out, True) 3642 3643 @test_tracker_info(uuid="75a0ae08-3e17-4011-8201-2634026a1fb5") 3644 @TelephonyBaseTest.tel_test_wrap 3645 def test_call_epdg_wfc_wifi_preferred_e4g_disabled(self): 3646 """WiFi Calling with E4G disabled. 3647 3648 PhoneA on LTE, VoLTE disabled, WFC WiFi preferred, WiFi associated. 3649 Cellular and WiFi signal strong. 3650 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3651 """ 3652 return self._wfc_call_sequence( 3653 [self.android_devices[0], self.android_devices[1]], 3654 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3655 self._wfc_phone_setup_wifi_preferred_e4g_disabled, 3656 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, None, True) 3657 3658 @test_tracker_info(uuid="b6b4b423-e7bd-480d-b460-6260556ce73b") 3659 @TelephonyBaseTest.tel_test_wrap 3660 def test_call_epdg_wfc_wifi_preferred_e4g_disabled_wifi_not_connected( 3661 self): 3662 """WiFi Calling with E4G disabled. 3663 3664 PhoneA on LTE, VoLTE disabled, WFC WiFi preferred, WiFi not associated. 3665 Cellular signal strong, WiFi absent. 3666 Call from PhoneA to PhoneB, PhoneA should be on CSFB. 3667 """ 3668 return self._wfc_call_sequence( 3669 [self.android_devices[0], self.android_devices[1]], 3670 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_absent_cell_strong, 3671 self._wfc_phone_setup_wifi_absent_wifi_preferred_e4g_disabled, 3672 self._phone_idle_not_iwlan, self._is_phone_in_call_csfb, None, 3673 True) 3674 3675 def _decrease_wifi_rssi_check_phone_drop(self): 3676 """Private Test utility for e4g_disabled_wfc test. 3677 3678 Decrease WiFi RSSI to make sure WiFI not connected. Call should Drop. 3679 """ 3680 # Decrease WiFi RSSI to <-100dBm in 30 seconds 3681 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3682 self.wifi_rssi_with_no_atten, MIN_RSSI_RESERVED_VALUE) 3683 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3684 self.wifi_rssi_with_no_atten, MIN_RSSI_RESERVED_VALUE) 3685 # Make sure PhoneA data is on cellular. 3686 if (not wait_for_cell_data_connection(self.log, 3687 self.android_devices[0], True) or 3688 not verify_http_connection(self.log, self.android_devices[0])): 3689 self.log.error("Data not on Cell.") 3690 return False 3691 # Make sure phone drop. 3692 self.log.info("Wait for call drop.") 3693 if not self._phone_wait_for_call_drop(): 3694 self.log.error("Phone should drop call.") 3695 return False 3696 return True 3697 3698 @test_tracker_info(uuid="0de1cf4f-9ae3-4da6-8f0c-666b3968009b") 3699 @TelephonyBaseTest.tel_test_wrap 3700 def test_call_epdg_wfc_wifi_preferred_e4g_disabled_leave_wifi_coverage( 3701 self): 3702 """WiFi Calling with E4G disabled. 3703 3704 PhoneA on LTE, VoLTE disabled, WFC WiFi preferred, WiFi associated. 3705 Cellular and WiFi signal strong. 3706 Call from PhoneA to PhoneB, PhoneA should be on iwlan. 3707 Decrease WiFi RSSI to make sure WiFI not connected. Call should Drop. 3708 """ 3709 return self._wfc_call_sequence( 3710 [self.android_devices[0], self.android_devices[1]], 3711 DIRECTION_MOBILE_ORIGINATED, self._wfc_set_wifi_strong_cell_strong, 3712 self._wfc_phone_setup_wifi_preferred_e4g_disabled, 3713 self._phone_idle_iwlan, self._is_phone_in_call_iwlan, 3714 self._decrease_wifi_rssi_check_phone_drop, True) 3715 3716 @TelephonyBaseTest.tel_test_wrap 3717 def test_rssi_monitoring(self): 3718 """Test WiFi RSSI Monitoring API and Callback function. 3719 3720 Steps: 3721 1. Set WiFi RSSI to INITIAL_RSSI (-60dBm), connect WiFi on DUT. 3722 2. Start WiFi RSSI Monitoring for HIGHER_RSSI_THRESHOLD (-50dBm) and 3723 LOWER_RSSI_THRESHOLD (-70dBm) 3724 3. Increase WiFi RSSI to HIGHER_RSSI_THRESHOLD+5dBm 3725 4. Decrease WiFi RSSI to HIGHER_RSSI_THRESHOLD-5dBm 3726 5. Decrease WiFi RSSI to LOWER_RSSI_THRESHOLD-5dBm 3727 6. Increase WiFi RSSI to LOWER_RSSI_THRESHOLD+5dBm 3728 3729 Expected Results: 3730 1. WiFi Connected successfully. 3731 2. DUT report LOWER_RSSI_THRESHOLD available. 3732 3. DUT report HIGHER_RSSI_THRESHOLD available. 3733 4. DUT report HIGHER_RSSI_THRESHOLD lost. 3734 5. DUT report LOWER_RSSI_THRESHOLD lost. 3735 6. DUT report LOWER_RSSI_THRESHOLD available. 3736 """ 3737 INITIAL_RSSI = -60 3738 HIGHER_RSSI_THRESHOLD = -50 3739 LOWER_RSSI_THRESHOLD = -70 3740 RSSI_THRESHOLD_MARGIN = 5 3741 3742 WIFI_RSSI_CHANGE_STEP_SIZE = 2 3743 WIFI_RSSI_CHANGE_DELAY_PER_STEP = 1 3744 3745 ad = self.android_devices[0] 3746 3747 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3748 self.wifi_rssi_with_no_atten, INITIAL_RSSI) 3749 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3750 self.wifi_rssi_with_no_atten, INITIAL_RSSI) 3751 if not ensure_wifi_connected(self.log, ad, self.wifi_network_ssid, 3752 self.wifi_network_pass): 3753 self.log.error("{} connect WiFI failed".format(ad.serial)) 3754 return False 3755 try: 3756 rssi_monitoring_id_higher = ad.droid.connectivitySetRssiThresholdMonitor( 3757 HIGHER_RSSI_THRESHOLD) 3758 rssi_monitoring_id_lower = ad.droid.connectivitySetRssiThresholdMonitor( 3759 LOWER_RSSI_THRESHOLD) 3760 3761 self.log.info( 3762 "Initial RSSI: {}," 3763 "rssi_monitoring_id_lower should be available.".format( 3764 INITIAL_RSSI)) 3765 try: 3766 event = ad.ed.wait_for_event( 3767 EventNetworkCallback, 3768 is_network_call_back_event_match, 3769 network_callback_id=rssi_monitoring_id_lower, 3770 network_callback_event=NetworkCallbackAvailable) 3771 self.log.info("Received Event: {}".format(event)) 3772 except Empty: 3773 self.log.error("No {} event for id {}".format( 3774 NetworkCallbackAvailable, rssi_monitoring_id_lower)) 3775 return False 3776 3777 self.log.info("Set RSSI to HIGHER_RSSI_THRESHOLD+5," 3778 "rssi_monitoring_id_higher should be available.") 3779 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3780 self.wifi_rssi_with_no_atten, 3781 HIGHER_RSSI_THRESHOLD + RSSI_THRESHOLD_MARGIN, 3782 WIFI_RSSI_CHANGE_STEP_SIZE, 3783 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3784 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3785 self.wifi_rssi_with_no_atten, 3786 HIGHER_RSSI_THRESHOLD + RSSI_THRESHOLD_MARGIN, 3787 WIFI_RSSI_CHANGE_STEP_SIZE, 3788 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3789 try: 3790 event = ad.ed.wait_for_event( 3791 EventNetworkCallback, 3792 is_network_call_back_event_match, 3793 network_callback_id=rssi_monitoring_id_higher, 3794 network_callback_event=NetworkCallbackAvailable) 3795 self.log.info("Received Event: {}".format(event)) 3796 except Empty: 3797 self.log.error("No {} event for id {}".format( 3798 NetworkCallbackAvailable, rssi_monitoring_id_higher)) 3799 return False 3800 3801 self.log.info("Set RSSI to HIGHER_RSSI_THRESHOLD-5," 3802 "rssi_monitoring_id_higher should be lost.") 3803 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3804 self.wifi_rssi_with_no_atten, 3805 HIGHER_RSSI_THRESHOLD - RSSI_THRESHOLD_MARGIN, 3806 WIFI_RSSI_CHANGE_STEP_SIZE, 3807 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3808 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3809 self.wifi_rssi_with_no_atten, 3810 HIGHER_RSSI_THRESHOLD - RSSI_THRESHOLD_MARGIN, 3811 WIFI_RSSI_CHANGE_STEP_SIZE, 3812 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3813 try: 3814 event = ad.ed.wait_for_event( 3815 EventNetworkCallback, 3816 is_network_call_back_event_match, 3817 network_callback_id=rssi_monitoring_id_higher, 3818 network_callback_event=NetworkCallbackLost) 3819 self.log.info("Received Event: {}".format(event)) 3820 except Empty: 3821 self.log.error("No {} event for id {}".format( 3822 NetworkCallbackLost, rssi_monitoring_id_higher)) 3823 return False 3824 3825 self.log.info("Set RSSI to LOWER_RSSI_THRESHOLD-5," 3826 "rssi_monitoring_id_lower should be lost.") 3827 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3828 self.wifi_rssi_with_no_atten, 3829 LOWER_RSSI_THRESHOLD - RSSI_THRESHOLD_MARGIN, 3830 WIFI_RSSI_CHANGE_STEP_SIZE, 3831 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3832 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3833 self.wifi_rssi_with_no_atten, 3834 LOWER_RSSI_THRESHOLD - RSSI_THRESHOLD_MARGIN, 3835 WIFI_RSSI_CHANGE_STEP_SIZE, 3836 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3837 try: 3838 event = ad.ed.wait_for_event( 3839 EventNetworkCallback, 3840 is_network_call_back_event_match, 3841 network_callback_id=rssi_monitoring_id_lower, 3842 network_callback_event=NetworkCallbackLost) 3843 self.log.info("Received Event: {}".format(event)) 3844 except Empty: 3845 self.log.error("No {} event for id {}".format( 3846 NetworkCallbackLost, rssi_monitoring_id_lower)) 3847 return False 3848 3849 self.log.info("Set RSSI to LOWER_RSSI_THRESHOLD+5," 3850 "rssi_monitoring_id_lower should be available.") 3851 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 3852 self.wifi_rssi_with_no_atten, 3853 LOWER_RSSI_THRESHOLD + RSSI_THRESHOLD_MARGIN, 3854 WIFI_RSSI_CHANGE_STEP_SIZE, 3855 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3856 set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 3857 self.wifi_rssi_with_no_atten, 3858 LOWER_RSSI_THRESHOLD + RSSI_THRESHOLD_MARGIN, 3859 WIFI_RSSI_CHANGE_STEP_SIZE, 3860 WIFI_RSSI_CHANGE_DELAY_PER_STEP) 3861 try: 3862 event = ad.ed.wait_for_event( 3863 EventNetworkCallback, 3864 is_network_call_back_event_match, 3865 network_callback_id=rssi_monitoring_id_lower, 3866 network_callback_event=NetworkCallbackAvailable) 3867 self.log.info("Received Event: {}".format(event)) 3868 except Empty: 3869 self.log.error("No {} event for id {}".format( 3870 NetworkCallbackAvailable, rssi_monitoring_id_lower)) 3871 return False 3872 finally: 3873 ad.droid.connectivityStopRssiThresholdMonitor( 3874 rssi_monitoring_id_higher) 3875 ad.droid.connectivityStopRssiThresholdMonitor( 3876 rssi_monitoring_id_lower) 3877 return True 3878 3879 3880""" Tests End """ 3881