def test_fake_emergency_call_by_emergency_dialer_wfc_apm_off_with_ecbm_call_block( self): """Test emergency call with emergency dialer in user account. Configure DUT in WFC APM off. Add system emergency number list with fake emergency number. Configure allow_non_emergency_calls_in_ecm_bool false. Use the emergency dialer to call fake emergency number and hung up before connect. Verify DUT cannot make call in ecbm mode. Verify DUT can make call out of ecbm mode. Returns: True if success. False if failed. """ if CAPABILITY_WFC not in operator_capabilities.get( self.dut_operator, operator_capabilities["default"]): raise signals.TestSkip("WFC is not supported for carrier %s" % self.dut_operator) if self.dut_operator != "tmo": raise signals.TestSkip( "WFC in non-APM is not supported for carrier %s" % self.dut_operator) if not phone_setup_iwlan( self.log, self.dut, False, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.dut.log.error("Failed to setup WFC.") return False self.set_ims_first("false") return self.check_emergency_call_back_mode( non_emergency_call_allowed=False)
def _setup_phone_active_call_wfc(self, ad, ssid, password, airplane_mode, wfc_mode, setup_volte=False): if setup_volte and (not phone_setup_volte(self.log, ad)): self.log.error("Phone failed to setup VoLTE.") return False if not phone_setup_iwlan(self.log, ad, airplane_mode, wfc_mode, ssid, password): self.log.error("DUT Failed to Set Up WiFi Calling") return False ensure_phones_idle(self.log, [ad, self.android_devices[1]]) if not phone_idle_iwlan(self.log, ad): self.log.error("DUT not in WFC enabled state.") return False if not call_setup_teardown(self.log, ad, self.android_devices[1], ad_hangup=None, verify_caller_func=is_phone_in_call_iwlan): self.log.error("Setup Call failed.") return False ad.droid.goToSleepNow() return True
def test_fake_emergency_call_by_emergency_dialer_wfc_apm_off(self): """Test emergency call with emergency dialer in user account. Configure DUT in WFC APM off. Add system emergency number list with fake emergency number. Use the emergency dialer to call fake emergency number. Verify DUT has in call activity. Bring DUT to normal state and make regular call. Returns: True if success. False if failed. """ if CAPABILITY_WFC not in operator_capabilities.get( self.dut_operator, operator_capabilities["default"]): raise signals.TestSkip("WFC is not supported for carrier %s" % self.dut_operator) if self.dut_operator != "tmo": raise signals.TestSkip( "WFC in non-APM is not supported for carrier %s" % self.dut_operator) if not phone_setup_iwlan( self.log, self.dut, False, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.dut.log.error("Failed to setup WFC.") return False self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call()
def _idle_wfc_2g_apm(ad): if not phone_setup_iwlan( self.log, ad, True, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid_2g, self.wifi_network_pass_2g): self.log.error("Phone failed to setup WFC.") return False ad.droid.goToSleepNow() return True
def _setup_wfc_apm(self): for ad in self.android_devices: if not phone_setup_iwlan( self.log, ad, True, WFC_MODE_CELLULAR_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): ad.log.error("Failed to setup WFC.") return False return True
def setup_wfc_apm(self): if CAPABILITY_WFC not in self.dut_capabilities: raise signals.TestSkip("WFC is not supported, abort test.") if not phone_setup_iwlan(self.log, self.dut, True, self.dut_wfc_modes[0], self.wifi_network_ssid, self.wifi_network_pass): self.dut.log.error("Failed to setup WFC.") raise signals.TestFailure("Failed to setup WFC in APM") self.dut.log.info("Phone is in WFC enabled state.") return True
def setup_wfc_non_apm(self): if CAPABILITY_WFC not in self.dut_capabilities and ( WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes): raise signals.TestSkip( "WFC in non-APM is not supported, abort test.") if not phone_setup_iwlan( self.log, self.dut, False, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.dut.log.error("Failed to setup WFC.") raise signals.TestFailure("Failed to setup WFC in non-APM") self.dut.log.info("Phone is in WFC enabled state.") return True
def _check_wfc_apm(self): if CAPABILITY_WFC in self.dut_capabilities: self.log.info("Check WFC in APM") if not phone_setup_iwlan( self.log, self.dut, True, WFC_MODE_CELLULAR_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.log.error("Failed to setup WFC.") return False if not call_setup_teardown(self.log, self.dut, self.ad_reference, self.dut, is_phone_in_call_iwlan): self.log.error("WFC Call Failed.") return False else: return True return False
def _check_wfc(self, ad, ad_reference): if (CAPABILITY_WFC in device_capabilities[self.dut_model] and CAPABILITY_WFC in operator_capabilities[self.dut_operator]): self.log.info("Check WFC") if not phone_setup_iwlan(self.log, ad, True, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.log.error("Failed to setup WFC.") return False if not call_setup_teardown(self.log, ad, ad_reference, ad, is_phone_in_call_iwlan): self.log.error("WFC Call Failed.") return False if not sms_send_receive_verify(self.log, ad, ad_reference, [rand_ascii_str(50)]): self.log.error("SMS failed") return False return True
def test_lte_wfc_enabled_wifi_connected_toggle_volte(self): """Test for WiFi Calling settings: LTE + VoLTE Enabled + WiFi Connected + WFC enabled, toggle VoLTE setting Steps: 1. Setup DUT Idle, LTE network type, VoLTE enabled. 2. Make sure DUT WiFi connected, WFC enabled (WiFi Preferred). Verify DUT WFC available, report iwlan rat. 3. Disable VoLTE on DUT, verify in 2 minutes period, DUT does not lost WiFi Calling, DUT still report WFC available, rat iwlan. 4. Enable VoLTE on DUT, verify in 2 minutes period, DUT does not lost WiFi Calling, DUT still report WFC available, rat iwlan. Expected Results: 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 4. DUT WiFi Calling feature bit return True, network rat is iwlan. """ if not phone_setup_volte(self.log, self.ad): self.log.error("Failed to setup VoLTE.") return False if not phone_setup_iwlan(self.log, self.ad, False, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.log.error("Failed to setup WFC.") return False # Turn Off VoLTE, then Turn On VoLTE for i in range(2): if not toggle_volte(self.log, self.ad): self.log.error("Failed to toggle VoLTE.") return False if wait_for_wfc_disabled(self.log, self.ad): self.log.error("WFC is not available.") return False if not is_droid_in_rat_family(self.log, self.ad, RAT_FAMILY_WLAN, NETWORK_SERVICE_DATA): self.log.error("Data Rat is not iwlan.") return False return True
def _set_user_profile_before_ota(self): ad = self.android_devices[0] if not phone_setup_iwlan_cellular_preferred( self.log, ad, self.wifi_network_ssid, self.wifi_network_pass): ad.log.error("Failed to setup WFC to %s.", WFC_MODE_CELLULAR_PREFERRED) if len(self.android_devices) > 1: ad = self.android_devices[1] if not phone_setup_iwlan( self.log, ad, True, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): ad.log.error("Failed to setup WFC to %s.", WFC_MODE_WIFI_PREFERRED) if ad.droid.imsIsEnhanced4gLteModeSettingEnabledByPlatform(): ad.droid.imsSetEnhanced4gMode(False) state = ad.droid.imsIsEnhanced4gLteModeSettingEnabledByUser() ad.log.info("Enhanced 4G LTE Setting is %s", "on" if state else "off") if state: ad.log.error("Expecting Enhanced 4G LTE Setting off")
def test_fake_emergency_call_by_emergency_dialer_wfc_apm_ecbm(self): """Test emergency call with emergency dialer in user account. Configure DUT in WFC APM on. Add system emergency number list with fake emergency number. Turn off emergency call IMS first. Configure allow_non_emergency_calls_in_ecm_bool false. Use the emergency dialer to call fake emergency number and hung up before connect. Verify DUT voice and data in ecbm mode. Returns: True if success. False if failed. """ if CAPABILITY_WFC not in operator_capabilities.get( self.dut_operator, operator_capabilities["default"]): raise signals.TestSkip("WFC is not supported for carrier %s" % self.dut_operator) if not phone_setup_iwlan( self.log, self.dut, True, WFC_MODE_WIFI_PREFERRED, self.wifi_network_ssid, self.wifi_network_pass): self.dut.log.error("Failed to setup WFC.") return False return self.check_emergency_call_back_mode()