Home | History | Annotate | Download | only in lab
      1 #/usr/bin/env python3.4
      2 #
      3 #   Copyright 2016 - The Android Open Source Project
      4 #
      5 #   Licensed under the Apache License, Version 2.0 (the "License");
      6 #   you may not use this file except in compliance with the License.
      7 #   You may obtain a copy of the License at
      8 #
      9 #       http://www.apache.org/licenses/LICENSE-2.0
     10 #
     11 #   Unless required by applicable law or agreed to in writing, software
     12 #   distributed under the License is distributed on an "AS IS" BASIS,
     13 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14 #   See the License for the specific language governing permissions and
     15 #   limitations under the License.
     16 """
     17 Sanity tests for voice tests in telephony
     18 """
     19 import time
     20 
     21 from acts.controllers.anritsu_lib._anritsu_utils import AnritsuError
     22 from acts.controllers.anritsu_lib.md8475a import CsfbType
     23 from acts.controllers.anritsu_lib.md8475a import MD8475A
     24 from acts.controllers.anritsu_lib.md8475a import VirtualPhoneAutoAnswer
     25 from acts.controllers.anritsu_lib.md8475a import VirtualPhoneStatus
     26 from acts.test_utils.tel.anritsu_utils import WAIT_TIME_ANRITSU_REG_AND_CALL
     27 from acts.test_utils.tel.anritsu_utils import call_mo_setup_teardown
     28 from acts.test_utils.tel.anritsu_utils import ims_call_cs_teardown
     29 from acts.test_utils.tel.anritsu_utils import call_mt_setup_teardown
     30 from acts.test_utils.tel.anritsu_utils import set_system_model_1x
     31 from acts.test_utils.tel.anritsu_utils import set_system_model_1x_evdo
     32 from acts.test_utils.tel.anritsu_utils import set_system_model_gsm
     33 from acts.test_utils.tel.anritsu_utils import set_system_model_lte
     34 from acts.test_utils.tel.anritsu_utils import set_system_model_lte_1x
     35 from acts.test_utils.tel.anritsu_utils import set_system_model_lte_wcdma
     36 from acts.test_utils.tel.anritsu_utils import set_system_model_lte_gsm
     37 from acts.test_utils.tel.anritsu_utils import set_system_model_wcdma
     38 from acts.test_utils.tel.anritsu_utils import set_usim_parameters
     39 from acts.test_utils.tel.tel_defines import CALL_TEARDOWN_PHONE
     40 from acts.test_utils.tel.tel_defines import DEFAULT_EMERGENCY_CALL_NUMBER
     41 from acts.test_utils.tel.tel_defines import EMERGENCY_CALL_NUMBERS
     42 from acts.test_utils.tel.tel_defines import RAT_FAMILY_CDMA2000
     43 from acts.test_utils.tel.tel_defines import RAT_FAMILY_GSM
     44 from acts.test_utils.tel.tel_defines import RAT_FAMILY_LTE
     45 from acts.test_utils.tel.tel_defines import RAT_FAMILY_UMTS
     46 from acts.test_utils.tel.tel_defines import RAT_1XRTT
     47 from acts.test_utils.tel.tel_defines import NETWORK_MODE_CDMA
     48 from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_ONLY
     49 from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_UMTS
     50 from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_CDMA_EVDO
     51 from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA
     52 from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA
     53 from acts.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL
     54 from acts.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL_FOR_IMS
     55 from acts.test_utils.tel.tel_test_utils import ensure_network_rat
     56 from acts.test_utils.tel.tel_test_utils import ensure_phone_default_state
     57 from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
     58 from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode_by_adb
     59 from acts.test_utils.tel.tel_test_utils import toggle_volte
     60 from acts.test_utils.tel.tel_voice_utils import phone_idle_volte
     61 from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
     62 from acts.test_decorators import test_tracker_info
     63 
     64 class TelLabEmergencyCallTest(TelephonyBaseTest):
     65     def __init__(self, controllers):
     66         TelephonyBaseTest.__init__(self, controllers)
     67         try:
     68             self.stress_test_number = int(self.user_params[
     69                 "stress_test_number"])
     70             self.log.info("Executing {} calls per test in stress test mode".
     71                           format(self.stress_test_number))
     72         except KeyError:
     73             self.stress_test_number = 0
     74             self.log.info(
     75                 "No 'stress_test_number' defined: running single iteration tests"
     76             )
     77 
     78         self.ad = self.android_devices[0]
     79         self.ad.sim_card = getattr(self.ad, "sim_card", None)
     80         self.md8475a_ip_address = self.user_params[
     81             "anritsu_md8475a_ip_address"]
     82         self.wlan_option = self.user_params.get("anritsu_wlan_option", False)
     83 
     84         setattr(self, 'emergency_call_number', DEFAULT_EMERGENCY_CALL_NUMBER)
     85         if 'emergency_call_number' in self.user_params:
     86             self.emergency_call_number = self.user_params[
     87                 'emergency_call_number']
     88             self.log.info("Using provided emergency call number: {}".format(
     89                 self.emergency_call_number))
     90         if not self.emergency_call_number in EMERGENCY_CALL_NUMBERS:
     91             self.log.warning("Unknown Emergency Number {}".format(
     92                 self.emergency_call_number))
     93 
     94     def setup_class(self):
     95         try:
     96             self.anritsu = MD8475A(self.md8475a_ip_address, self.log,
     97                                    self.wlan_option)
     98         except AnritsuError:
     99             self.log.error("Error in connecting to Anritsu Simulator")
    100             return False
    101         return True
    102 
    103     def setup_test(self):
    104         ensure_phone_default_state(self.log, self.ad, check_subscription=False)
    105         toggle_airplane_mode_by_adb(self.log, self.ad, True)
    106         self.ad.adb.shell("setprop net.lte.ims.volte.provisioned 1",
    107                           ignore_status=True)
    108         # get a handle to virtual phone
    109         self.virtualPhoneHandle = self.anritsu.get_VirtualPhone()
    110         return True
    111 
    112     def teardown_test(self):
    113         self.log.info("Stopping Simulation")
    114         self.anritsu.stop_simulation()
    115         toggle_airplane_mode_by_adb(self.log, self.ad, True)
    116         return True
    117 
    118     def teardown_class(self):
    119         self.anritsu.disconnect()
    120         return True
    121 
    122     def _setup_emergency_call(self,
    123                               set_simulation_func,
    124                               phone_setup_func,
    125                               phone_idle_func_after_registration=None,
    126                               is_ims_call=False,
    127                               is_wait_for_registration=True,
    128                               csfb_type=None,
    129                               srlte_csfb=None,
    130                               srvcc=None,
    131                               emergency_number=DEFAULT_EMERGENCY_CALL_NUMBER,
    132                               teardown_side=CALL_TEARDOWN_PHONE,
    133                               wait_time_in_call=WAIT_TIME_IN_CALL):
    134         try:
    135             set_simulation_func(self.anritsu, self.user_params,
    136                                 self.ad.sim_card)
    137             set_usim_parameters(self.anritsu, self.ad.sim_card)
    138             self.virtualPhoneHandle.auto_answer = (VirtualPhoneAutoAnswer.ON,
    139                                                    2)
    140             if csfb_type:
    141                 self.anritsu.csfb_type = csfb_type
    142             if srlte_csfb == "lte_call_failure":
    143                 self.anritsu.send_command("IMSPSAPAUTOANSWER 1,DISABLE")
    144                 self.anritsu.start_simulation()
    145                 self.anritsu.send_command("IMSSTARTVN 1")
    146                 check_ims_reg = True
    147                 check_ims_calling = True
    148             elif srlte_csfb == "ims_unregistered":
    149                 self.anritsu.start_simulation()
    150                 self.anritsu.send_command("IMSSTARTVN 1")
    151                 self.anritsu.send_command(
    152                     "IMSCSCFBEHAVIOR 1,SENDERRORRESPONSE603")
    153                 check_ims_reg = False
    154                 check_ims_calling = False
    155             elif srlte_csfb == "ps911_unsupported":
    156                 self.anritsu.send_command("EMCBS NOTSUPPORT,BTS1")
    157                 self.anritsu.start_simulation()
    158                 self.anritsu.send_command("IMSSTARTVN 1")
    159                 check_ims_reg = True
    160                 check_ims_calling = False
    161             elif srlte_csfb == "emc_barred":
    162                 self.anritsu.send_command("ACBARRED USERSPECIFIC,BTS1")
    163                 self.anritsu.send_command("LTEEMERGENCYACBARRED BARRED,BTS1")
    164                 self.anritsu.start_simulation()
    165                 self.anritsu.send_command("IMSSTARTVN 1")
    166                 check_ims_reg = True
    167                 check_ims_calling = False
    168             elif srvcc == "InCall":
    169                 self.anritsu.start_simulation()
    170                 self.anritsu.send_command("IMSSTARTVN 1")
    171                 check_ims_reg = True
    172                 check_ims_calling = True
    173             else:
    174                 self.anritsu.start_simulation()
    175             if is_ims_call:
    176                 self.anritsu.send_command("IMSSTARTVN 1")
    177 
    178             iterations = 1
    179             if self.stress_test_number > 0:
    180                 iterations = self.stress_test_number
    181             successes = 0
    182             for i in range(1, iterations + 1):
    183                 if self.stress_test_number:
    184                     self.log.info("Running iteration {} of {}".format(
    185                         i, iterations))
    186                 # FIXME: There's no good reason why this must be true;
    187                 # I can only assume this was done to work around a problem
    188                 self.ad.droid.telephonyToggleDataConnection(False)
    189 
    190                 # turn off all other BTS to ensure UE registers on BTS1
    191                 sim_model = (self.anritsu.get_simulation_model()).split(",")
    192                 no_of_bts = len(sim_model)
    193                 for i in range(2, no_of_bts + 1):
    194                     self.anritsu.send_command("OUTOFSERVICE OUT,BTS{}".format(
    195                         i))
    196 
    197                 if phone_setup_func is not None:
    198                     if not phone_setup_func(self.ad):
    199                         self.log.error("phone_setup_func failed.")
    200                         continue
    201                 if is_wait_for_registration:
    202                     self.anritsu.wait_for_registration_state()
    203 
    204                 if phone_idle_func_after_registration:
    205                     if not phone_idle_func_after_registration(self.log,
    206                                                               self.ad):
    207                         continue
    208 
    209                 for i in range(2, no_of_bts + 1):
    210                     self.anritsu.send_command("OUTOFSERVICE IN,BTS{}".format(
    211                         i))
    212 
    213                 time.sleep(WAIT_TIME_ANRITSU_REG_AND_CALL)
    214                 if srlte_csfb or srvcc:
    215                     if not ims_call_cs_teardown(
    216                             self.log, self.ad, self.anritsu, emergency_number,
    217                             CALL_TEARDOWN_PHONE, True, check_ims_reg,
    218                             check_ims_calling, srvcc,
    219                             WAIT_TIME_IN_CALL_FOR_IMS, WAIT_TIME_IN_CALL):
    220                         self.log.error(
    221                             "Phone {} Failed to make emergency call to {}"
    222                             .format(self.ad.serial, emergency_number))
    223                         continue
    224                 else:
    225                     if not call_mo_setup_teardown(
    226                             self.log, self.ad, self.anritsu, emergency_number,
    227                             CALL_TEARDOWN_PHONE, True, WAIT_TIME_IN_CALL,
    228                             is_ims_call):
    229                         self.log.error(
    230                             "Phone {} Failed to make emergency call to {}"
    231                             .format(self.ad.serial, emergency_number))
    232                         continue
    233                 successes += 1
    234                 if self.stress_test_number:
    235                     self.log.info("Passed iteration {}".format(i))
    236             if self.stress_test_number:
    237                 self.log.info("Total of {} successes out of {} attempts".
    238                               format(successes, iterations))
    239             return True if successes == iterations else False
    240 
    241         except AnritsuError as e:
    242             self.log.error("Error in connection with Anritsu Simulator: " +
    243                            str(e))
    244             return False
    245         except Exception as e:
    246             self.log.error("Exception during emergency call procedure: " + str(
    247                 e))
    248             return False
    249         return True
    250 
    251     def _phone_setup_lte_wcdma(self, ad):
    252         return ensure_network_rat(
    253             self.log,
    254             ad,
    255             NETWORK_MODE_LTE_GSM_WCDMA,
    256             RAT_FAMILY_LTE,
    257             toggle_apm_after_setting=True)
    258 
    259     def _phone_setup_lte_1x(self, ad):
    260         return ensure_network_rat(
    261             self.log,
    262             ad,
    263             NETWORK_MODE_LTE_CDMA_EVDO,
    264             RAT_FAMILY_LTE,
    265             toggle_apm_after_setting=True)
    266 
    267     def _phone_setup_wcdma(self, ad):
    268         return ensure_network_rat(
    269             self.log,
    270             ad,
    271             NETWORK_MODE_GSM_UMTS,
    272             RAT_FAMILY_UMTS,
    273             toggle_apm_after_setting=True)
    274 
    275     def _phone_setup_gsm(self, ad):
    276         return ensure_network_rat(
    277             self.log,
    278             ad,
    279             NETWORK_MODE_GSM_ONLY,
    280             RAT_FAMILY_GSM,
    281             toggle_apm_after_setting=True)
    282 
    283     def _phone_setup_1x(self, ad):
    284         return ensure_network_rat(
    285             self.log,
    286             ad,
    287             NETWORK_MODE_CDMA,
    288             RAT_FAMILY_CDMA2000,
    289             toggle_apm_after_setting=True)
    290 
    291     def _phone_setup_airplane_mode(self, ad):
    292         return toggle_airplane_mode_by_adb(self.log, ad, True)
    293 
    294     def _phone_disable_airplane_mode(self, ad):
    295         return toggle_airplane_mode_by_adb(self.log, ad, False)
    296 
    297     def _phone_setup_volte_airplane_mode(self, ad):
    298         toggle_volte(self.log, ad, True)
    299         return toggle_airplane_mode_by_adb(self.log, ad, True)
    300 
    301     def _phone_setup_volte(self, ad):
    302         ad.droid.telephonyToggleDataConnection(True)
    303         toggle_volte(self.log, ad, True)
    304         return ensure_network_rat(
    305             self.log,
    306             ad,
    307             NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA,
    308             RAT_FAMILY_LTE,
    309             toggle_apm_after_setting=True)
    310 
    311     """ Tests Begin """
    312 
    313     @test_tracker_info(uuid="f5c93228-3b43-48a3-b509-796d41625171")
    314     @TelephonyBaseTest.tel_test_wrap
    315     def test_emergency_call_lte_wcdma_csfb_redirection(self):
    316         """ Test Emergency call functionality on LTE (CSFB to WCDMA).
    317             CSFB type is REDIRECTION
    318 
    319         Steps:
    320         1. Setup CallBox on LTE and WCDMA network, make sure DUT register on LTE network.
    321         2. Make an emergency call to 911. Make sure DUT CSFB to WCDMA.
    322         3. Make sure Anritsu receives the call and accept.
    323         4. Tear down the call.
    324 
    325         Expected Results:
    326         2. Emergency call succeed. DUT CSFB to WCDMA.
    327         3. Anritsu can accept the call.
    328         4. Tear down call succeed.
    329 
    330         Returns:
    331             True if pass; False if fail
    332         """
    333         return self._setup_emergency_call(
    334             set_system_model_lte_wcdma,
    335             self._phone_setup_lte_wcdma,
    336             emergency_number=self.emergency_call_number,
    337             csfb_type=CsfbType.CSFB_TYPE_REDIRECTION)
    338 
    339     @test_tracker_info(uuid="8deb6b21-2cb0-4241-bcad-6cd62a340b07")
    340     @TelephonyBaseTest.tel_test_wrap
    341     def test_emergency_call_lte_wcdma_csfb_handover(self):
    342         """ Test Emergency call functionality on LTE (CSFB to WCDMA).
    343             CSFB type is HANDOVER
    344 
    345         Steps:
    346         1. Setup CallBox on LTE and WCDMA network, make sure DUT register on LTE network.
    347         2. Make an emergency call to 911. Make sure DUT CSFB to WCDMA.
    348         3. Make sure Anritsu receives the call and accept.
    349         4. Tear down the call.
    350 
    351         Expected Results:
    352         2. Emergency call succeed. DUT CSFB to WCDMA.
    353         3. Anritsu can accept the call.
    354         4. Tear down call succeed.
    355 
    356         Returns:
    357             True if pass; False if fail
    358         """
    359         return self._setup_emergency_call(
    360             set_system_model_lte_wcdma,
    361             self._phone_setup_lte_wcdma,
    362             emergency_number=self.emergency_call_number,
    363             csfb_type=CsfbType.CSFB_TYPE_HANDOVER)
    364 
    365     @test_tracker_info(uuid="52b6b783-de77-497d-87e0-63c930e6c9bb")
    366     @TelephonyBaseTest.tel_test_wrap
    367     def test_emergency_call_lte_1x_csfb(self):
    368         """ Test Emergency call functionality on LTE (CSFB to 1x).
    369 
    370         Steps:
    371         1. Setup CallBox on LTE and CDMA 1X network, make sure DUT register on LTE network.
    372         2. Make an emergency call to 911. Make sure DUT CSFB to 1x.
    373         3. Make sure Anritsu receives the call and accept.
    374         4. Tear down the call.
    375 
    376         Expected Results:
    377         2. Emergency call succeed. DUT CSFB to 1x.
    378         3. Anritsu can accept the call.
    379         4. Tear down call succeed.
    380 
    381         Returns:
    382             True if pass; False if fail
    383         """
    384         return self._setup_emergency_call(
    385             set_system_model_lte_1x,
    386             self._phone_setup_lte_1x,
    387             emergency_number=self.emergency_call_number)
    388 
    389     @test_tracker_info(uuid="fcdd5a4f-fdf2-44dc-b1b2-44ab175791ce")
    390     @TelephonyBaseTest.tel_test_wrap
    391     def test_emergency_call_wcdma(self):
    392         """ Test Emergency call functionality on WCDMA
    393 
    394         Steps:
    395         1. Setup CallBox on WCDMA network, make sure DUT register on WCDMA network.
    396         2. Make an emergency call to 911.
    397         3. Make sure Anritsu receives the call and accept.
    398         4. Tear down the call.
    399 
    400         Expected Results:
    401         2. Emergency call succeed.
    402         3. Anritsu can accept the call.
    403         4. Tear down call succeed.
    404 
    405         Returns:
    406             True if pass; False if fail
    407         """
    408         return self._setup_emergency_call(
    409             set_system_model_wcdma,
    410             self._phone_setup_wcdma,
    411             emergency_number=self.emergency_call_number)
    412 
    413     @test_tracker_info(uuid="295c3188-24e2-4c53-80c6-3d3001e2ff16")
    414     @TelephonyBaseTest.tel_test_wrap
    415     def test_emergency_call_gsm(self):
    416         """ Test Emergency call functionality on GSM
    417 
    418         Steps:
    419         1. Setup CallBox on GSM network, make sure DUT register on GSM network.
    420         2. Make an emergency call to 911.
    421         3. Make sure Anritsu receives the call and accept.
    422         4. Tear down the call.
    423 
    424         Expected Results:
    425         2. Emergency call succeed.
    426         3. Anritsu can accept the call.
    427         4. Tear down call succeed.
    428 
    429         Returns:
    430             True if pass; False if fail
    431         """
    432         return self._setup_emergency_call(
    433             set_system_model_gsm,
    434             self._phone_setup_gsm,
    435             emergency_number=self.emergency_call_number)
    436 
    437     @test_tracker_info(uuid="4f21bfc0-a0a9-43b8-9285-dcfb131a3a04")
    438     @TelephonyBaseTest.tel_test_wrap
    439     def test_emergency_call_1x(self):
    440         """ Test Emergency call functionality on CDMA 1X
    441 
    442         Steps:
    443         1. Setup CallBox on 1x network, make sure DUT register on 1x network.
    444         2. Make an emergency call to 911.
    445         3. Make sure Anritsu receives the call and accept.
    446         4. Tear down the call.
    447 
    448         Expected Results:
    449         2. Emergency call succeed.
    450         3. Anritsu can accept the call.
    451         4. Tear down call succeed.
    452 
    453         Returns:
    454             True if pass; False if fail
    455         """
    456         return self._setup_emergency_call(
    457             set_system_model_1x,
    458             self._phone_setup_1x,
    459             emergency_number=self.emergency_call_number)
    460 
    461     @test_tracker_info(uuid="6dfd3e1d-7faa-426f-811a-ebd5e54f9c9a")
    462     @TelephonyBaseTest.tel_test_wrap
    463     def test_emergency_call_1x_evdo(self):
    464         """ Test Emergency call functionality on CDMA 1X with EVDO
    465 
    466         Steps:
    467         1. Setup CallBox on 1x and EVDO network, make sure DUT register on 1x network.
    468         2. Make an emergency call to 911.
    469         3. Make sure Anritsu receives the call and accept.
    470         4. Tear down the call.
    471 
    472         Expected Results:
    473         2. Emergency call succeed.
    474         3. Anritsu can accept the call.
    475         4. Tear down call succeed.
    476 
    477         Returns:
    478             True if pass; False if fail
    479         """
    480         return self._setup_emergency_call(
    481             set_system_model_1x_evdo,
    482             self._phone_setup_1x,
    483             emergency_number=self.emergency_call_number)
    484 
    485     @test_tracker_info(uuid="40f9897e-4924-4896-9f2c-0b4f45331251")
    486     @TelephonyBaseTest.tel_test_wrap
    487     def test_emergency_call_1x_apm(self):
    488         """ Test Emergency call functionality on Airplane mode
    489 
    490         Steps:
    491         1. Setup CallBox on 1x network.
    492         2. Turn on Airplane mode on DUT. Make an emergency call to 911.
    493         3. Make sure Anritsu receives the call and accept.
    494         4. Tear down the call.
    495 
    496         Expected Results:
    497         2. Emergency call succeed.
    498         3. Anritsu can accept the call.
    499         4. Tear down call succeed.
    500 
    501         Returns:
    502             True if pass; False if fail
    503         """
    504         return self._setup_emergency_call(
    505             set_system_model_1x,
    506             self._phone_setup_airplane_mode,
    507             is_wait_for_registration=False,
    508             emergency_number=self.emergency_call_number)
    509 
    510     @test_tracker_info(uuid="5997c004-449b-4a5e-816e-2ff0c0eb928d")
    511     @TelephonyBaseTest.tel_test_wrap
    512     def test_emergency_call_wcdma_apm(self):
    513         """ Test Emergency call functionality on Airplane mode
    514 
    515         Steps:
    516         1. Setup CallBox on WCDMA network.
    517         2. Make an emergency call to 911.
    518         3. Make sure Anritsu receives the call and accept.
    519         4. Tear down the call.
    520 
    521         Expected Results:
    522         2. Emergency call succeed.
    523         3. Anritsu can accept the call.
    524         4. Tear down call succeed.
    525 
    526         Returns:
    527             True if pass; False if fail
    528         """
    529         return self._setup_emergency_call(
    530             set_system_model_wcdma,
    531             self._phone_setup_airplane_mode,
    532             is_wait_for_registration=False,
    533             emergency_number=self.emergency_call_number)
    534 
    535     @test_tracker_info(uuid="9afde8d3-bdf0-41d9-af8c-2a8f36aae169")
    536     @TelephonyBaseTest.tel_test_wrap
    537     def test_emergency_call_volte_wcdma_srvcc(self):
    538         """ Test Emergency call functionality,
    539         VoLTE to WCDMA SRVCC
    540         Steps:
    541         1. Setup CallBox on VoLTE network with WCDMA.
    542         2. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    543         3. Check if VoLTE emergency call connected successfully.
    544         4. Handover the call to WCDMA and check if the call is still up.
    545         5. Tear down the call.
    546 
    547         Expected Results:
    548         1. VoLTE Emergency call is made successfully.
    549         2. After SRVCC, the 911 call is not dropped.
    550         3. Tear down call succeed.
    551 
    552         Returns:
    553             True if pass; False if fail
    554         """
    555         return self._setup_emergency_call(
    556             set_system_model_lte_wcdma,
    557             self._phone_setup_volte,
    558             phone_idle_volte,
    559             srvcc="InCall",
    560             emergency_number=self.emergency_call_number,
    561             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    562 
    563     @test_tracker_info(uuid="2e454f11-e77d-452a-bcac-7271378953ed")
    564     @TelephonyBaseTest.tel_test_wrap
    565     def test_emergency_call_volte_gsm_srvcc(self):
    566         """ Test Emergency call functionality,
    567         VoLTE to GSM SRVCC
    568         Steps:
    569         1. Setup CallBox on VoLTE network with GSM.
    570         2. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    571         3. Check if VoLTE emergency call connected successfully.
    572         4. Handover the call to GSM and check if the call is still up.
    573         5. Tear down the call.
    574 
    575         Expected Results:
    576         1. VoLTE Emergency call is made successfully.
    577         2. After SRVCC, the 911 call is not dropped.
    578         3. Tear down call succeed.
    579 
    580         Returns:
    581             True if pass; False if fail
    582         """
    583         return self._setup_emergency_call(
    584             set_system_model_lte_gsm,
    585             self._phone_setup_volte,
    586             phone_idle_volte,
    587             srvcc="InCall",
    588             emergency_number=self.emergency_call_number,
    589             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    590 
    591     @test_tracker_info(uuid="4dae7e62-b73e-4ba1-92ee-ecc121b898b3")
    592     @TelephonyBaseTest.tel_test_wrap
    593     def test_emergency_call_csfb_1x_lte_call_failure(self):
    594         """ Test Emergency call functionality,
    595         CSFB to CDMA1x after VoLTE call failure
    596         Ref: VzW LTE E911 test plan, 2.23, VZ_TC_LTEE911_7481
    597         Steps:
    598         1. Setup CallBox on VoLTE network with CDMA1x.
    599         2. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    600         3. Make sure Anritsu IMS server does not answer the call
    601         4. The DUT requests CSFB to 1XCDMA and Anritsu accepts the call.
    602         5. Tear down the call.
    603 
    604         Expected Results:
    605         1. VoLTE Emergency call is made.
    606         2. Anritsu receive the call but does not answer.
    607         3. The 911 call CSFB to CDMA1x and answered successfully.
    608         4. Tear down call succeed.
    609 
    610         Returns:
    611             True if pass; False if fail
    612         """
    613         return self._setup_emergency_call(
    614             set_system_model_lte_1x,
    615             self._phone_setup_volte,
    616             phone_idle_volte,
    617             srlte_csfb="lte_call_failure",
    618             emergency_number=self.emergency_call_number,
    619             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    620 
    621     @test_tracker_info(uuid="e98c9101-1ab6-497e-9d67-a4ff62d28fea")
    622     @TelephonyBaseTest.tel_test_wrap
    623     def test_emergency_call_csfb_1x_ims_unregistered(self):
    624         """ Test Emergency call functionality,
    625         CSFB to CDMA1x because ims registration delcined
    626         Ref: VzW LTE E911 test plan, 2.25, VZ_TC_LTEE911_7483
    627         Steps:
    628         1. Setup CallBox on VoLTE network with CDMA1x.
    629         2. Setup Anritsu IMS server to decline IMS registration
    630         3. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    631         4. The DUT requests CSFB to 1XCDMA and Anritsu accepts the call.
    632         5. Tear down the call.
    633 
    634         Expected Results:
    635         1. Phone registers on LTE network with VoLTE enabled.
    636         2. When Emergency call is made, phone request CSFB to CDMA1x.
    637         3. The 911 call on CDMA1x is answered successfully.
    638         4. Tear down call succeed.
    639 
    640         Returns:
    641             True if pass; False if fail
    642         """
    643         return self._setup_emergency_call(
    644             set_system_model_lte_1x,
    645             self._phone_setup_volte,
    646             None,
    647             srlte_csfb="ims_unregistered",
    648             emergency_number=self.emergency_call_number,
    649             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    650 
    651     @test_tracker_info(uuid="d96e1b9b-2f6d-49f3-a203-f4277056869e")
    652     @TelephonyBaseTest.tel_test_wrap
    653     def test_emergency_call_csfb_1x_ps911_unsupported(self):
    654         """ Test Emergency call functionality,
    655         CSFB to CDMA1x because MME does not support PS911, by setting
    656         Emergency Bearer Service not supported in EPS network feature
    657         Ref: VzW LTE E911 test plan, 2.26, VZ_TC_LTEE911_8357
    658         Steps:
    659         1. Setup CallBox on VoLTE network with CDMA1x.
    660         2. Setup Emergency Bearer Service not supported in EPS network feature
    661         3. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    662         4. The DUT requests CSFB to 1XCDMA and Anritsu accepts the call.
    663         5. Tear down the call.
    664 
    665         Expected Results:
    666         1. Phone registers on LTE network with VoLTE enabled.
    667         2. When Emergency call is made, phone request CSFB to CDMA1x.
    668         3. The 911 call on CDMA1x is answered successfully.
    669         4. Tear down call succeed.
    670 
    671         Returns:
    672             True if pass; False if fail
    673         """
    674         return self._setup_emergency_call(
    675             set_system_model_lte_1x,
    676             self._phone_setup_volte,
    677             phone_idle_volte,
    678             srlte_csfb="ps911_unsupported",
    679             emergency_number=self.emergency_call_number,
    680             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    681 
    682     @test_tracker_info(uuid="f7d48841-b8ef-4031-99de-28534aaf4c44")
    683     @TelephonyBaseTest.tel_test_wrap
    684     def test_emergency_call_csfb_1x_emc_barred(self):
    685         """ Test Emergency call functionality,
    686         CSFB to CDMA1x because SIB2 Emergency Barred,
    687         by setting Access Class Barred for Emergency
    688         Ref: VzW LTE E911 test plan, 2.27, VZ_TC_LTEE911_8358
    689         Steps:
    690         1. Setup CallBox on VoLTE network with CDMA1x.
    691         2. Set Access Class Barred for Emergency in SIB2
    692         3. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    693         4. The DUT requests CSFB to 1XCDMA and Anritsu accepts the call.
    694         5. Tear down the call.
    695 
    696         Expected Results:
    697         1. Phone registers on LTE network with VoLTE enabled.
    698         2. When Emergency call is made, phone request CSFB to CDMA1x.
    699         3. The 911 call on CDMA1x is answered successfully.
    700         4. Tear down call succeed.
    701 
    702         Returns:
    703             True if pass; False if fail
    704         """
    705         return self._setup_emergency_call(
    706             set_system_model_lte_1x,
    707             self._phone_setup_volte,
    708             phone_idle_volte,
    709             srlte_csfb="emc_barred",
    710             emergency_number=self.emergency_call_number,
    711             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    712 
    713     @test_tracker_info(uuid="5bbbecec-0fef-430b-acbd-01ef7c7055c0")
    714     @TelephonyBaseTest.tel_test_wrap
    715     def test_emergency_call_volte_1x(self):
    716         """ Test Emergency call functionality on VoLTE with CDMA1x
    717         Ref: VzW LTE E911 test plan, 2.24, VZ_TC_LTEE911_7482
    718         Steps:
    719         1. Setup CallBox on VoLTE network with CDMA1x.
    720         2. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    721         3. Make sure Anritsu receives the call and accept.
    722         4. Tear down the call.
    723 
    724         Expected Results:
    725         2. Emergency call succeed.
    726         3. Anritsu can accept the call.
    727         4. Tear down call succeed.
    728 
    729         Returns:
    730             True if pass; False if fail
    731         """
    732         return self._setup_emergency_call(
    733             set_system_model_lte_1x,
    734             self._phone_setup_volte,
    735             phone_idle_volte,
    736             is_ims_call=True,
    737             emergency_number=self.emergency_call_number,
    738             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    739 
    740     @test_tracker_info(uuid="e32862e0-ec11-4de8-8b9a-851bab9feb29")
    741     @TelephonyBaseTest.tel_test_wrap
    742     def test_emergency_call_volte(self):
    743         """ Test Emergency call functionality on VoLTE
    744 
    745         Steps:
    746         1. Setup CallBox on VoLTE network.
    747         2. Turn on DUT and enable VoLTE. Make an emergency call to 911.
    748         3. Make sure Anritsu receives the call and accept.
    749         4. Tear down the call.
    750 
    751         Expected Results:
    752         2. Emergency call succeed.
    753         3. Anritsu can accept the call.
    754         4. Tear down call succeed.
    755 
    756         Returns:
    757             True if pass; False if fail
    758         """
    759         return self._setup_emergency_call(
    760             set_system_model_lte,
    761             self._phone_setup_volte,
    762             phone_idle_volte,
    763             is_ims_call=True,
    764             emergency_number=self.emergency_call_number,
    765             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    766 
    767     @test_tracker_info(uuid="fa5b4e52-c249-42ec-a9d3-9523336f88f7")
    768     @TelephonyBaseTest.tel_test_wrap
    769     def test_emergency_call_volte_apm(self):
    770         """ Test Emergency call functionality on VoLTE
    771 
    772         Steps:
    773         1. Setup CallBox on VoLTE network.
    774         2. Turn on Airplane mode on DUT. Make an emergency call to 911.
    775         3. Make sure Anritsu receives the call and accept.
    776         4. Tear down the call.
    777 
    778         Expected Results:
    779         2. Emergency call succeed.
    780         3. Anritsu can accept the call.
    781         4. Tear down call succeed.
    782 
    783         Returns:
    784             True if pass; False if fail
    785         """
    786         return self._setup_emergency_call(
    787             set_system_model_lte,
    788             self._phone_setup_volte_airplane_mode,
    789             is_ims_call=True,
    790             is_wait_for_registration=False,
    791             emergency_number=self.emergency_call_number,
    792             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    793 
    794     @test_tracker_info(uuid="260e4892-fdae-4d49-bfc6-04fe72a5a715")
    795     @TelephonyBaseTest.tel_test_wrap
    796     def test_emergency_call_no_sim_wcdma(self):
    797         """ Test Emergency call functionality with no SIM.
    798 
    799         Steps:
    800         1. Setup CallBox on WCDMA network.
    801         2. Make an emergency call to 911.
    802         3. Make sure Anritsu receives the call and accept.
    803         4. Tear down the call.
    804 
    805         Expected Results:
    806         2. Emergency call succeed.
    807         3. Anritsu can accept the call.
    808         4. Tear down call succeed.
    809 
    810         Returns:
    811             True if pass; False if fail
    812         """
    813         return self._setup_emergency_call(
    814             set_system_model_wcdma,
    815             self._phone_disable_airplane_mode,
    816             emergency_number=self.emergency_call_number,
    817             is_wait_for_registration=False)
    818 
    819     @test_tracker_info(uuid="2dbbbde5-c298-4a2d-ae65-b739d1dd1445")
    820     @TelephonyBaseTest.tel_test_wrap
    821     def test_emergency_call_no_sim_1x(self):
    822         """ Test Emergency call functionality with no SIM.
    823 
    824         Steps:
    825         1. Setup CallBox on 1x network.
    826         2. Make an emergency call to 911.
    827         3. Make sure Anritsu receives the call and accept.
    828         4. Tear down the call.
    829 
    830         Expected Results:
    831         2. Emergency call succeed.
    832         3. Anritsu can accept the call.
    833         4. Tear down call succeed.
    834 
    835         Returns:
    836             True if pass; False if fail
    837         """
    838         return self._setup_emergency_call(
    839             set_system_model_1x,
    840             self._phone_disable_airplane_mode,
    841             emergency_number=self.emergency_call_number,
    842             is_wait_for_registration=False)
    843 
    844     @test_tracker_info(uuid="fa77dee2-3235-42e0-b24d-c8fdb3fbef2f")
    845     @TelephonyBaseTest.tel_test_wrap
    846     def test_emergency_call_no_sim_gsm(self):
    847         """ Test Emergency call functionality with no SIM.
    848 
    849         Steps:
    850         1. Setup CallBox on GSM network.
    851         2. Make an emergency call to 911.
    852         3. Make sure Anritsu receives the call and accept.
    853         4. Tear down the call.
    854 
    855         Expected Results:
    856         2. Emergency call succeed.
    857         3. Anritsu can accept the call.
    858         4. Tear down call succeed.
    859 
    860         Returns:
    861             True if pass; False if fail
    862         """
    863         return self._setup_emergency_call(
    864             set_system_model_gsm,
    865             self._phone_disable_airplane_mode,
    866             emergency_number=self.emergency_call_number,
    867             is_wait_for_registration=False)
    868 
    869     @test_tracker_info(uuid="9ead5c6a-b4cb-40d5-80b0-54d3c7ad31ff")
    870     @TelephonyBaseTest.tel_test_wrap
    871     def test_emergency_call_no_sim_volte(self):
    872         """ Test Emergency call functionality with no SIM.
    873 
    874         Steps:
    875         1. Setup CallBox on VoLTE network.
    876         2. Make an emergency call to 911.
    877         3. Make sure Anritsu receives the call and accept.
    878         4. Tear down the call.
    879 
    880         Expected Results:
    881         2. Emergency call succeed.
    882         3. Anritsu can accept the call.
    883         4. Tear down call succeed.
    884 
    885         Returns:
    886             True if pass; False if fail
    887         """
    888         return self._setup_emergency_call(
    889             set_system_model_lte,
    890             self._phone_disable_airplane_mode,
    891             is_wait_for_registration=False,
    892             is_ims_call=True,
    893             emergency_number=self.emergency_call_number,
    894             wait_time_in_call=WAIT_TIME_IN_CALL_FOR_IMS)
    895 
    896     @test_tracker_info(uuid="d6bdc1d7-0a08-4e6e-9de8-4084abb48bad")
    897     @TelephonyBaseTest.tel_test_wrap
    898     def test_emergency_call_no_sim_1x_ecbm(self):
    899         """ Test Emergency call functionality with no SIM.
    900 
    901         Steps:
    902         1. Setup CallBox on 1x network.
    903         2. Make an emergency call to 911.
    904         3. Make sure Anritsu receives the call and accept.
    905         4. Tear down the call.
    906         5. Make a call from Callbox to DUT.
    907         6. Verify DUT receive the incoming call.
    908         7. Answer on DUT, verify DUT can answer the call correctly.
    909         8. Hangup the call on DUT.
    910 
    911         Expected Results:
    912         2. Emergency call succeed.
    913         3. Anritsu can accept the call.
    914         4. Tear down call succeed.
    915         6. DUT receive incoming call.
    916         7. DUT answer the call correctly.
    917         8. Tear down call succeed.
    918 
    919         Returns:
    920             True if pass; False if fail
    921         """
    922         if not self._setup_emergency_call(
    923                 set_system_model_1x,
    924                 self._phone_disable_airplane_mode,
    925                 emergency_number=self.emergency_call_number,
    926                 is_wait_for_registration=False):
    927             self.log.error("Failed to make 911 call.")
    928             return False
    929         return call_mt_setup_teardown(self.log, self.ad,
    930                                       self.anritsu.get_VirtualPhone(), None,
    931                                       CALL_TEARDOWN_PHONE, RAT_1XRTT)
    932 
    933     """ Tests End """
    934