Exemplo n.º 1
0
    def start_youtube_video(self, url=None, secs=60):
        """Start a youtube video and check if it's playing.

        Args:
            url: The URL of the youtube video to play.
            secs: Time to play video in seconds.

        """
        ad = self.dut
        ad.log.info("Start a youtube video")
        ad.ensure_screen_on()
        video_played = False
        for count in range(2):
            ad.unlock_screen()
            ad.adb.shell('am start -a android.intent.action.VIEW -d "%s"' %
                         url)
            if tutils.wait_for_state(ad.droid.audioIsMusicActive, True, 15, 1):
                ad.log.info("Started a video in youtube.")
                # Play video for given seconds.
                time.sleep(secs)
                video_played = True
                break
        if not video_played:
            raise signals.TestFailure(
                "Youtube video did not start. Current WiFi "
                "state is %d" % self.dut.droid.wifiCheckState())
    def wait_for_carrier_switch_completed(self,
                                          ad,
                                          carrier,
                                          timeout=_MAX_WAIT_TIME,
                                          check_interval=10):
        """Wait for carrier switch to complete.

        This function waits for a carrier switch to complete by monitoring the
        Tycho switching controller preference file.

        Args:
            ad: An Android device object.
            carrier: The target carrier network to switch to.
            timeout: (integer) Time wait for switch to complete.

        Return:
            True or False for successful/unsuccessful switch.
        """
        check_args = [ad, carrier]
        if wait_for_state(self.check_network_carrier, True, check_interval,
                          timeout, *check_args):
            ad.log.info("Switched to %s successfully", carrier)
            ad.send_keycode("ENTER")
            return True
        else:
            active_carrier = self.get_active_carrier(ad)
            if active_carrier == carrier:
                ad.log.info("Switched to %s successfully", carrier)
                return True
            ad.log.error("Carrier is %s. Fail to switch to %s", active_carrier,
                         carrier)
            return False
Exemplo n.º 3
0
 def _check_volte_provisioning(self):
     if CAPABILITY_OMADM in self.dut_capabilities:
         if not wait_for_state(self.dut.droid.imsIsVolteProvisionedOnDevice,
                               True):
             self.dut.log.error("VoLTE provisioning is disabled.")
             return False
         else:
             self.dut.log.info("VoLTE provision is enabled")
             return True
     return True
Exemplo n.º 4
0
 def _check_volte(self):
     if CAPABILITY_VOLTE in self.dut_capabilities:
         self._set_volte_provisioning()
         if not self._check_volte_provisioning():
             return False
         self.log.info("Check VoLTE")
         if not wait_for_state(self.dut.droid.imsIsVolteProvisionedOnDevice,
                               True):
             self.dut.log.error("VoLTE provisioning is disabled.")
             return False
         if not phone_setup_volte(self.log, self.dut):
             self.log.error("Failed to setup VoLTE.")
             return False
         time.sleep(5)
         if not call_setup_teardown(self.log, self.dut, self.ad_reference,
                                    self.dut, is_phone_in_call_volte):
             self.log.error("VoLTE Call Failed.")
             return False
         if not self._check_lte_data():
             return False
     else:
         self.dut.log.info("VoLTE is not supported")
         return False
     return True
 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
def airplane_mode_test(log, ad, retries=3):
    """ Test airplane mode basic on Phone and Live SIM.

    Ensure phone attach, data on, WiFi off and verify Internet.
    Turn on airplane mode to make sure detach.
    Turn off airplane mode to make sure attach.
    Verify Internet connection.

    Args:
        log: log object.
        ad: android object.

    Returns:
        True if pass; False if fail.
    """
    if not ensure_phones_idle(log, [ad]):
        log.error("Failed to return phones to idle.")
        return False

    try:
        ad.droid.telephonyToggleDataConnection(True)
        wifi_toggle_state(log, ad, False)

        ad.log.info("Step1: disable airplane mode and ensure attach")
        if not toggle_airplane_mode(log, ad, False):
            ad.log.error("Failed initial attach")
            return False

        if not wait_for_state(get_service_state_by_adb, "IN_SERVICE",
                              MAX_WAIT_TIME_FOR_STATE_CHANGE,
                              WAIT_TIME_BETWEEN_STATE_CHECK, log, ad):
            ad.log.error("Current service state is not 'IN_SERVICE'.")
            return False

        time.sleep(30)
        if not ad.droid.connectivityNetworkIsConnected():
            ad.log.error("Network is NOT connected!")
            return False

        if not wait_for_cell_data_connection(log, ad, True):
            ad.log.error("Failed to enable data connection.")
            return False

        if not verify_internet_connection(log, ad, retries=3):
            ad.log.error("Data not available on cell.")
            return False

        log.info("Step2: enable airplane mode and ensure detach")
        if not toggle_airplane_mode(log, ad, True):
            ad.log.error("Failed to enable Airplane Mode")
            return False
        if not wait_for_cell_data_connection(log, ad, False):
            ad.log.error("Failed to disable cell data connection")
            return False

        if not verify_internet_connection(log, ad, expected_state=False):
            ad.log.error("Data available in airplane mode.")
            return False

        log.info("Step3: disable airplane mode and ensure attach")
        if not toggle_airplane_mode(log, ad, False):
            ad.log.error("Failed to disable Airplane Mode")
            return False

        if not wait_for_state(get_service_state_by_adb, "IN_SERVICE",
                              MAX_WAIT_TIME_FOR_STATE_CHANGE,
                              WAIT_TIME_BETWEEN_STATE_CHECK, log, ad):
            ad.log.error("Current service state is not 'IN_SERVICE'.")
            return False

        time.sleep(30)
        if not ad.droid.connectivityNetworkIsConnected():
            ad.log.warning("Network is NOT connected!")

        if not wait_for_cell_data_connection(log, ad, True):
            ad.log.error("Failed to enable cell data connection")
            return False

        if not verify_internet_connection(log, ad, retries=3):
            ad.log.warning("Data not available on cell")
            return False
        return True
    finally:
        toggle_airplane_mode(log, ad, False)