#!/usr/bin/env python3.4 # # Copyright 2017 - Google # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. """ Test Script for Telephony Locked SIM Emergency Call Test """ from acts import signals from acts.test_decorators import test_tracker_info from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest from acts_contrib.test_utils.tel.tel_defines import CAPABILITY_WFC from acts_contrib.test_utils.tel.tel_defines import DEFAULT_DEVICE_PASSWORD from acts_contrib.test_utils.tel.tel_defines import GEN_2G from acts_contrib.test_utils.tel.tel_defines import GEN_3G from acts_contrib.test_utils.tel.tel_defines import GEN_4G from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED from acts_contrib.test_utils.tel.tel_bootloader_utils import fastboot_wipe from acts_contrib.test_utils.tel.tel_bootloader_utils import reset_device_password from acts_contrib.test_utils.tel.tel_lookup_tables import network_preference_for_generation from acts_contrib.test_utils.tel.tel_lookup_tables import operator_capabilities from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_iwlan from acts_contrib.test_utils.tel.tel_test_utils import get_sim_state from acts_contrib.test_utils.tel.tel_test_utils import is_sim_lock_enabled from acts_contrib.test_utils.tel.tel_test_utils import is_sim_locked from acts_contrib.test_utils.tel.tel_test_utils import reboot_device from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode_by_adb from acts_contrib.test_utils.tel.tel_test_utils import unlock_sim from TelLiveEmergencyBase import TelLiveEmergencyBase EXPECTED_CALL_TEST_RESULT = False class TelLiveLockedSimTest(TelLiveEmergencyBase): def setup_class(self): TelephonyBaseTest.setup_class(self) for ad in self.my_devices: if not is_sim_lock_enabled(ad): ad.log.info("SIM is not locked") else: ad.log.info("SIM is locked") self.setup_dut(ad) return True #if there is no locked SIM, reboot the device and check again for ad in self.my_devices: reboot_device(ad) reset_device_password(ad, None) if not is_sim_lock_enabled(ad): ad.log.info("SIM is not locked") else: ad.log.info("SIM is locked, set as DUT") self.setup_dut(ad) return True self.log.error("There is no locked SIM in this testbed") raise signals.TestAbortClass("No device meets locked SIM requirement") def setup_test(self): self.expected_call_result = False if "wfc" in self.test_name: 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) unlock_sim(self.dut) if "apm_off" not in self.test_name: 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 in non-APM.") return False else: 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 in APM.") return False if not is_sim_locked(self.dut): self.dut.reboot(stop_at_lock_screen=True) try: droid, ed = self.dut.get_droid() ed.start() except: self.dut.log.warning("Failed to start sl4a!") self.dut.log.info("SIM at state %s", get_sim_state(self.dut)) """ Tests Begin """ @test_tracker_info(uuid="fd7fb69c-6fd4-4874-a4ca-769353b9db25") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_locked_sim(self): """Test emergency call with emergency dialer in user account. Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add storyline number to system emergency number list. Use the emergency dialer to call "611". Verify DUT has in call activity. Returns: True if success. False if failed. """ toggle_airplane_mode_by_adb(self.log, self.dut, False) return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="a0b3e7dd-93e0-40e2-99a9-5564d34712fc") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_csfb_locked_sim(self): """Test emergency call with emergency dialer in user account. Configure DUT in CSFB Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with storyline number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Returns: True if success. False if failed. """ network_preference = network_preference_for_generation( GEN_4G, None, self.dut.droid.telephonyGetPhoneType()) self.dut.log.info("Set network preference to %s", network_preference) self.dut.droid.telephonySetPreferredNetworkTypes(network_preference) self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="b5a5b550-49e6-4026-902a-b155d1209f6d") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_3g_locked_sim(self): """Test emergency call with emergency dialer in user account. Configure DUT in 3G Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add a fake emergency number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Verify DUT in emergency call back mode. Returns: True if success. False if failed. """ network_preference = network_preference_for_generation( GEN_3G, None, self.dut.droid.telephonyGetPhoneType()) self.dut.log.info("Set network preference to %s", network_preference) self.dut.droid.telephonySetPreferredNetworkTypes(network_preference) self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="5f083fa7-ddea-44de-8479-4da88d53da65") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_2g_locked_sim(self): """Test emergency call with emergency dialer in user account. Configure DUT in 2G Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with fake emergency number. Use the emergency dialer to call fake emergency. Verify DUT has in call activity. Verify DUT in emergency call back mode. Returns: True if success. False if failed. """ network_preference = network_preference_for_generation( GEN_2G, None, self.dut.droid.telephonyGetPhoneType()) self.dut.log.info("Set network preference to %s", network_preference) self.dut.droid.telephonySetPreferredNetworkTypes(network_preference) self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="e01870d7-89a6-4641-84c6-8e71142773f8") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_wfc_apm_locked_sim(self): """Test emergency call with emergency dialer in user account. Configure DUT in WFC APM on. Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with fake emergency number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Verify DUT in emergency call back mode. Returns: True if success. False if failed. """ self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="b2c3de31-79ec-457a-a947-50c28caec214") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_emergency_dialer_wfc_apm_off_locked_sim( self): """Test emergency call with emergency dialer in user account. Configure DUT in WFC APM off. Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with fake emergency number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Verify DUT in emergency call back mode. Returns: True if success. False if failed. """ self.set_ims_first("false") return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="669cf1d9-9513-4f90-b0fd-2f0e8f1cc941") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_by_dialer_locked_sim(self): """Test emergency call with dialer. Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with fake emergency number. Call storyline by dialer. Verify DUT has in call activity. Returns: True if success. False if failed. """ toggle_airplane_mode_by_adb(self.log, self.dut, False) return self.fake_emergency_call_test( by_emergency_dialer=True) and self.check_normal_call() @test_tracker_info(uuid="1990f166-66a7-4092-b448-c179a9194371") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_in_apm_locked_sim(self): """Test emergency call with emergency dialer in airplane mode. Enable airplane mode. Enable SIM lock on the SIM. Reboot device to SIM pin request page. Add system emergency number list with fake emergency number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Returns: True if success. False if failed. """ toggle_airplane_mode_by_adb(self.log, self.dut, True) return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="7ffdad34-b8fb-41b0-b0fd-2def5adc67bc") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_in_screen_lock_locked_sim(self): """Test emergency call with emergency dialer in screen lock phase. Enable SIM lock on the SIM. Enable device password and then reboot upto password and pin query stage. Add system emergency number list with storyline number. Use the emergency dialer to call storyline. Verify DUT has in call activity. Returns: True if success. False if failed. """ self.dut.log.info("Set screen lock pin") reset_device_password(self.dut, DEFAULT_DEVICE_PASSWORD) self.dut.log.info("Reboot device to screen lock screen") self.dut.reboot(stop_at_lock_screen=True) return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="12dc1eb6-50ed-4ad9-b195-5d96c6b6952e") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_in_screen_lock_apm_locked_sim(self): """Test emergency call with emergency dialer in screen lock phase. Enable device password and airplane mode Enable SIM lock on the SIM. Reboot upto pin query window. Add system emergency number list with story line. Use the emergency dialer to call story line. Verify DUT has in call activity. Returns: True if success. False if failed. """ toggle_airplane_mode_by_adb(self.log, self.dut, True) self.dut.log.info("Set screen lock pin") reset_device_password(self.dut, DEFAULT_DEVICE_PASSWORD) self.dut.log.info("Reboot device to screen lock screen") self.dut.reboot(stop_at_lock_screen=True) return self.fake_emergency_call_test() and self.check_normal_call() @test_tracker_info(uuid="1e01927a-a077-466d-8bf8-52dca87ab87c") @TelephonyBaseTest.tel_test_wrap def test_fake_emergency_call_in_setupwizard_locked_sim(self): """Test emergency call with emergency dialer in setupwizard. Enable SIM lock on the SIM. Wipe the device and then reboot upto setupwizard. Add system emergency number list with story line. Use the emergency dialer to call story line. Verify DUT has in call activity. Returns: True if success. False if failed. """ if not fastboot_wipe(self.dut, skip_setup_wizard=False): return False return self.fake_emergency_call_test() and self.check_normal_call() """ Tests End """