def _ota_upgrade(self, ad): result = True self._set_user_profile_before_ota() config_profile_before = get_user_config_profile(ad) ad.log.info("Before OTA user config is: %s", config_profile_before) try: ota_updater.update(ad) except Exception as e: ad.log.error("OTA upgrade failed with %s", e) raise if is_sim_locked(ad): ad.log.info("After OTA, SIM keeps the locked state") elif getattr(ad, "is_sim_locked", False): ad.log.error("After OTA, SIM loses the locked state") result = False if not unlock_sim(ad): ad.log.error(ad.log, "unable to unlock SIM") if not ad.droid.connectivityCheckAirplaneMode(): if not ensure_phone_subscription(self.log, ad): ad.log.error("Subscription check failed") result = False if config_profile_before.get("WFC Enabled", False): self._check_wfc_enabled(ad) result = False config_profile_after = get_user_config_profile(ad) ad.log.info("After OTA user config is: %s", config_profile_after) if config_profile_before != config_profile_after: ad.log.error("Before: %s, After: %s", config_profile_before, config_profile_after) ad.log.error("User config profile changed after OTA") result = False return result
def _get_call_verification_function(self, ad): user_profile = get_user_config_profile(ad) if user_profile.get("WFC Enabled", False): return is_phone_in_call_iwlan if user_profile.get("VoLTE Enabled", False): return is_phone_in_call_volte return None
def verify_default_ims_setting(self): result = True airplane_mode = self.dut.droid.connectivityCheckAirplaneMode() default_wfc_mode = self.carrier_configs.get( CarrierConfigs.DEFAULT_WFC_IMS_MODE_INT, WFC_MODE_DISABLED) if self.default_wfc_enabled: wait_for_wfc_enabled(self.log, self.dut) else: wait_for_wfc_disabled(self.log, self.dut) if airplane_mode: wait_for_network_rat( self.log, self.dut, RAT_UNKNOWN, voice_or_data=NETWORK_SERVICE_VOICE) else: if self.default_volte: wait_for_volte_enabled(self.log, self.dut) else: wait_for_not_network_rat( self.log, self.dut, RAT_UNKNOWN, voice_or_data=NETWORK_SERVICE_VOICE) if not ensure_phone_subscription(self.log, self.dut): ad.log.error("Failed to find valid subscription") result = False user_config_profile = get_user_config_profile(self.dut) self.dut.log.info("user_config_profile = %s ", sorted(user_config_profile.items())) if user_config_profile["VoLTE Enabled"] != self.default_volte: self.dut.log.error("VoLTE mode is not %s", self.default_volte) result = False else: self.dut.log.info("VoLTE mode is %s as expected", self.default_volte) if user_config_profile["WFC Enabled"] != self.default_wfc_enabled: self.dut.log.error("WFC enabled is not %s", default_wfc_enabled) if user_config_profile["WFC Enabled"]: if user_config_profile["WFC Mode"] != default_wfc_mode: self.dut.log.error( "WFC mode is not %s after IMS factory reset", default_wfc_mode) result = False else: self.dut.log.info("WFC mode is %s as expected", default_wfc_mode) if self.default_wfc_enabled and \ default_wfc_mode == WFC_MODE_WIFI_PREFERRED: if not self.check_call_in_wfc(): result = False elif not airplane_mode: if self.default_volte: if not self.check_call_in_volte(): result = False else: if not self.check_call(): result = False if result == False: user_config_profile = get_user_config_profile(self.dut) self.dut.log.info("user_config_profile = %s ", sorted(user_config_profile.items())) return result
def change_ims_setting(self, airplane_mode, wifi_enabled, volte_enabled, wfc_enabled, wfc_mode=None): result = True self.dut.log.info( "Setting APM %s, WIFI %s, VoLTE %s, WFC %s, WFC mode %s", airplane_mode, wifi_enabled, volte_enabled, wfc_enabled, wfc_mode) toggle_airplane_mode_by_adb(self.log, self.dut, airplane_mode) if wifi_enabled: if not ensure_wifi_connected(self.log, self.dut, self.wifi_network_ssid, self.wifi_network_pass, apm=airplane_mode): self.dut.log.error("Fail to connected to WiFi") result = False else: if not wifi_toggle_state(self.log, self.dut, False): self.dut.log.error("Failed to turn off WiFi.") result = False toggle_volte(self.log, self.dut, volte_enabled) toggle_wfc(self.log, self.dut, wfc_enabled) if wfc_mode: set_wfc_mode(self.log, self.dut, wfc_mode) wfc_mode = self.dut.droid.imsGetWfcMode() if wifi_enabled or not airplane_mode: if not ensure_phone_subscription(self.log, self.dut): self.dut.log.error("Failed to find valid subscription") result = False if airplane_mode: if (CAPABILITY_WFC in self.dut_capabilities) and (wifi_enabled and wfc_enabled): if not wait_for_wfc_enabled(self.log, self.dut): result = False elif not self.check_call_in_wfc(): result = False else: if not wait_for_state( self.dut.droid.telephonyGetCurrentVoiceNetworkType, RAT_UNKNOWN): self.dut.log.error( "Voice RAT is %s not UNKNOWN", self.dut.droid.telephonyGetCurrentVoiceNetworkType()) result = False else: self.dut.log.info("Voice RAT is in UNKKNOWN") else: if (wifi_enabled and wfc_enabled) and ( wfc_mode == WFC_MODE_WIFI_PREFERRED) and ( CAPABILITY_WFC in self.dut_capabilities): if not wait_for_wfc_enabled(self.log, self.dut): result = False if not wait_for_state( self.dut.droid.telephonyGetCurrentVoiceNetworkType, RAT_UNKNOWN): self.dut.log.error( "Voice RAT is %s, not UNKNOWN", self.dut.droid.telephonyGetCurrentVoiceNetworkType()) if not self.check_call_in_wfc(): result = False else: if not wait_for_wfc_disabled(self.log, self.dut): self.dut.log.error("WFC is not disabled") result = False if volte_enabled and CAPABILITY_VOLTE in self.dut_capabilities: if not wait_for_volte_enabled(self.log, self.dut): result = False if not self.check_call_in_volte(): result = False else: if not wait_for_not_network_rat( self.log, self.dut, RAT_LTE, voice_or_data=NETWORK_SERVICE_VOICE): self.dut.log.error( "Voice RAT is %s", self.dut.droid.telephonyGetCurrentVoiceNetworkType( )) result = False if not wait_for_voice_attach(self.log, self.dut): result = False if not self.check_call(): result = False user_config_profile = get_user_config_profile(self.dut) self.dut.log.info("user_config_profile: %s ", sorted(user_config_profile.items())) return result