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