Ejemplo n.º 1
0
 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
Ejemplo n.º 2
0
 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