def test_3g_wfc_cellular_preferred_to_wifi_preferred(self):
        """Test for WiFi Calling settings:
        3G + WiFi Connected + Cellular Preferred, change WFC to WiFi Preferred

        Steps:
        1. Setup DUT Idle, 3G network type.
        2. Make sure DUT WiFi connected, WFC is set to Cellular Preferred.
            Verify DUT WFC not available.
        3. Change WFC setting to WiFi Preferred.
        4. Verify DUT report WFC available.

        Expected Results:
        2. DUT WiFi Calling feature bit return False, network rat is not iwlan.
        4. DUT WiFI Calling feature bit return True, network rat is iwlan.
        """
        if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes:
            raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported")
        if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes:
            raise signals.TestSkip(
                "WFC_MODE_CELLULAR_PREFERRED is not supported")
        if not phone_setup_voice_3g(self.log, self.dut):
            self.dut.log.error("Failed to setup 3G.")
            return False
        if not self.change_ims_setting(False, True, False, True,
                                       WFC_MODE_CELLULAR_PREFERRED):
            return False
        return self.change_ims_setting(False, True, False, True,
                                       WFC_MODE_WIFI_PREFERRED)
Beispiel #2
0
 def _setup_3g(self):
     for ad in self.android_devices:
         if not phone_setup_voice_3g(self.log, ad):
             ad.log.error("Phone failed to setup 3g.")
             return False
         ad.log.info("Phone RAT 3G is enabled successfully.")
     return True
    def test_3g_wifi_connected_toggle_wfc(self):
        """Test for WiFi Calling settings:
        3G + WiFi Connected, Toggling WFC

        Steps:
        1. Setup DUT Idle, 3G network type.
        2. Make sure DUT WiFi connected, WFC disabled.
        3. Set DUT WFC enabled (WiFi Preferred), verify DUT WFC available,
            report iwlan rat.
        4. Set DUT WFC disabled, verify DUT WFC unavailable,
            not report iwlan rat.

        Expected Results:
        3. DUT WiFi Calling feature bit return True, network rat is iwlan.
        4. DUT WiFi Calling feature bit return False, network rat is not iwlan.
        """
        if not phone_setup_voice_3g(self.log, self.dut):
            self.log.error("Failed to setup 3G")
            return False
        if not self.change_ims_setting(False, True, False, True,
                                       self.default_wfc_mode):
            return False
        if not self.change_ims_setting(False, True, False, False, None):
            return False
        return self.change_ims_setting(False, True, False, True, None)
 def _check_3g(self):
     self.log.info("Check 3G data and CS call")
     if not phone_setup_voice_3g(self.log, self.dut):
         self.log.error("Failed to setup 3G")
         return False
     if not verify_http_connection(self.log, self.dut):
         self.log.error("Data not available on cell.")
         return False
     if not call_setup_teardown(self.log, self.dut, self.ad_reference,
                                self.dut, is_phone_in_call_3g):
         self.log.error("WFC Call Failed.")
         return False
     if not sms_send_receive_verify(self.log, self.dut, self.ad_reference,
                                    [rand_ascii_str(50)]):
         self.log.error("SMS failed")
         return False
     return True
    def test_fake_emergency_call_by_emergency_dialer_3g(self):
        """Test emergency call with emergency dialer in user account.

        Configure DUT in 3G
        Add a fake emergency number to emergency number list.
        Turn off emergency call IMS first.
        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 not phone_setup_voice_3g(self.log, self.dut):
            return False
        self.set_ims_first("false")
        return self.fake_emergency_call_test() and self.check_normal_call()
    def test_fake_emergency_call_by_emergency_dialer_3g_ecbm(self):
        """Test emergency call with emergency dialer in user account.

        Configure DUT in 3G
        Add a fake emergency number to emergency number list.
        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 connected.
        Verify DUT voice and data in ecbm mode.

        Returns:
            True if success.
            False if failed.
        """
        if not phone_setup_voice_3g(self.log, self.dut):
            return False
        self.set_ims_first("false")
        return self.check_emergency_call_back_mode()
    def test_3g_wfc_wifi_preferred_to_cellular_preferred(self):
        """Test for WiFi Calling settings:
        3G + WiFi Connected + WiFi Preferred, change WFC to Cellular Preferred

        Steps:
        1. Setup DUT Idle, 3G network type.
        2. Make sure DUT WiFi connected, WFC is set to WiFi Preferred.
            Verify DUT WFC available, report iwlan rat.
        3. Change WFC setting to Cellular Preferred.
        4. Verify DUT report WFC not available.

        Expected Results:
        2. DUT WiFi Calling feature bit return True, network rat is iwlan.
        4. DUT WiFI Calling feature bit return False, network rat is not iwlan.
        """
        if not phone_setup_voice_3g(self.log, self.ad):
            self.log.error("Failed to setup 3G.")
            return False
        return self._wifi_connected_set_wfc_mode_change_wfc_mode(
            WFC_MODE_WIFI_PREFERRED, WFC_MODE_CELLULAR_PREFERRED, True, False)
    def test_3g_wfc_enabled_toggle_wifi(self):
        """Test for WiFi Calling settings:
        3G + WFC enabled, Toggling WiFi

        Steps:
        1. Setup DUT Idle, 3G network type.
        2. Make sure DUT WiFi disconnected, WFC enabled (WiFi Preferred).
        3. DUT connect WiFi, verify DUT WFC available, report iwlan rat.
        4. DUT disconnect WiFi,verify DUT WFC unavailable, not report iwlan rat.

        Expected Results:
        3. DUT WiFi Calling feature bit return True, network rat is iwlan.
        4. DUT WiFi Calling feature bit return False, network rat is not iwlan.
        """

        if not phone_setup_voice_3g(self.log, self.ad):
            self.log.error("Failed to setup 3G")
            return False
        return self._wifi_connected_enable_wfc_teardown_wfc(
            tear_down_operation=self._TEAR_DOWN_OPERATION_DISCONNECT_WIFI,
            initial_setup_wifi=True,
            initial_setup_wfc_mode=WFC_MODE_WIFI_PREFERRED)
Beispiel #9
0
 def _idle_3g(ad):
     if not phone_setup_voice_3g(self.log, ad):
         self.log.error("Phone failed to setup 3g.")
         return False
     ad.droid.goToSleepNow()
     return True
 def _setup_3g(self):
     if not phone_setup_voice_3g(self.log, self.dut):
         self.dut.log.error("Phone failed to setup 3g.")
         return False
     self.dut.log.info("Phone RAT 3G is enabled successfully.")
     return True
Beispiel #11
0
    def test_call_3g_stress(self):
        """ 3G to 800 call test

        Steps:
        1. Make Sure PhoneA is in 3G mode.
        2. Call from PhoneA to a 800 number, hang up on PhoneA.
        3, Repeat 2 around 100 times based on the config setup

        Expected Results:
        1, Verify phone is at IDLE state
        2, Verify the phone is at ACTIVE, if it is in dialing, then we retry
        3, Verify the phone is IDLE after hung up

        Returns:
            True if pass; False if fail.
        """
        ad_caller = self.ad_caller
        callee_number = self.stress_test_callee_number
        asserts.assert_true(phone_setup_voice_3g(self.log, ad_caller),
                            "Phone Failed to Set Up Properly.")

        # Make sure phone is idle.
        ensure_phone_idle(self.log, ad_caller)
        asserts.assert_true(phone_idle_3g(self.log, ad_caller),
                            "DUT Failed to Reselect")

        self.log.info("Call test:{} to {}".format(ad_caller.serial,
                                                  callee_number))
        subid_caller = ad_caller.droid.subscriptionGetDefaultVoiceSubId()

        total_iteration = self.phone_call_iteration
        current_iteration = 0
        redial_time = 0
        while current_iteration < total_iteration:
            self.log.info("---> Call test: iteration {} redial {}<---".format(
                current_iteration, redial_time))
            self.log.info("Checking Telephony Manager Call State")
            asserts.assert_true(
                self._check_phone_call_status(
                    ad_caller, tel_defines.TELEPHONY_STATE_IDLE),
                INCORRECT_STATE_MSG)

            self.log.info("Making a phone call")
            asserts.assert_true(
                initiate_call(self.log, ad_caller, callee_number),
                "Initiate call failed.")

            self.log.info("Ensure that all internal states are updated")
            time.sleep(tel_defines.WAIT_TIME_ANDROID_STATE_SETTLING)
            asserts.assert_true(is_phone_in_call_3g(self.log, ad_caller),
                                INCORRECT_STATE_MSG)
            asserts.assert_true(
                self._check_phone_call_status(
                    ad_caller, tel_defines.TELEPHONY_STATE_OFFHOOK,
                    tel_defines.CALL_STATE_DIALING), INCORRECT_STATE_MSG)

            time.sleep(tel_defines.WAIT_TIME_IN_CALL)
            self.log.info(
                "Checking Telephony Manager Call State after waiting for a while"
            )
            if (self._check_phone_call_status(
                    ad_caller, tel_defines.TELEPHONY_STATE_OFFHOOK,
                    tel_defines.CALL_STATE_ACTIVE)):
                current_iteration += 1
                redial_time = 0
            elif (self._check_phone_call_status(
                    ad_caller, tel_defines.TELEPHONY_STATE_OFFHOOK,
                    tel_defines.CALL_STATE_DIALING)):
                self.log.info("The line is busy, try again")
                redial_time += 1
                if redial_time > MAX_NUMBER_REDIALS:
                    asserts.assert_true(
                        False,
                        "Re-dial {} times and still having busy signal".format(
                            redial_time))
            else:
                asserts.assert_true(False, INCORRECT_STATE_MSG)
                current_iteration += 1

            self.log.info("Hang up phone for this iteration")
            asserts.assert_true(hangup_call(self.log, ad_caller),
                                "Error in Hanging-Up Call")
            time.sleep(tel_defines.WAIT_TIME_ANDROID_STATE_SETTLING)
            self.log.info(
                "Checking Telephony Manager Call State after hang up")
            asserts.assert_true(
                self._check_phone_call_status(
                    ad_caller, tel_defines.TELEPHONY_STATE_IDLE),
                INCORRECT_STATE_MSG)

            ensure_phone_idle(self.log, ad_caller)
 def setup_3g(self):
     if not phone_setup_voice_3g(self.log, self.dut):
         self.dut.log.error("Phone failed to setup 3G.")
         raise signals.TestFailure("Faile to setup 3G")
     self.dut.log.info("Phone RAT 3G is enabled successfully.")
     return True