1#!/usr/bin/env python3.4 2# 3# Copyright 2021 - Google 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 Test Script for IMS Settings 18""" 19 20import time 21 22from acts import signals 23from acts.test_decorators import test_tracker_info 24from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest 25from acts_contrib.test_utils.tel.tel_defines import CarrierConfigs 26from acts_contrib.test_utils.tel.tel_defines import CAPABILITY_VOLTE 27from acts_contrib.test_utils.tel.tel_defines import CAPABILITY_WFC 28from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_WIFI_CONNECTION 29from acts_contrib.test_utils.tel.tel_defines import NETWORK_SERVICE_DATA 30from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_IMS_REGISTRATION 31from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_WFC_ENABLED 32from acts_contrib.test_utils.tel.tel_defines import RAT_FAMILY_WLAN 33from acts_contrib.test_utils.tel.tel_defines import RAT_LTE 34from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED 35from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_DISABLED 36from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED 37from acts_contrib.test_utils.tel.tel_bootloader_utils import fastboot_wipe 38from acts_contrib.test_utils.tel.tel_data_utils import wait_for_wifi_data_connection 39from acts_contrib.test_utils.tel.tel_ims_utils import set_wfc_mode 40from acts_contrib.test_utils.tel.tel_ims_utils import toggle_volte 41from acts_contrib.test_utils.tel.tel_ims_utils import wait_for_ims_registered 42from acts_contrib.test_utils.tel.tel_ims_utils import wait_for_wfc_enabled 43from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_voice_3g 44from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_csfb 45from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_volte 46from acts_contrib.test_utils.tel.tel_phone_setup_utils import wait_for_network_rat 47from acts_contrib.test_utils.tel.tel_phone_setup_utils import wait_for_not_network_rat 48from acts_contrib.test_utils.tel.tel_subscription_utils import get_outgoing_voice_sub_id 49from acts_contrib.test_utils.tel.tel_test_utils import dumpsys_carrier_config 50from acts_contrib.test_utils.tel.tel_test_utils import is_droid_in_rat_family 51from acts_contrib.test_utils.tel.tel_test_utils import revert_default_telephony_setting 52from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode_by_adb 53from acts_contrib.test_utils.tel.tel_test_utils import verify_default_telephony_setting 54from acts_contrib.test_utils.tel.tel_test_utils import verify_internet_connection 55from acts_contrib.test_utils.tel.tel_voice_utils import change_ims_setting 56from acts_contrib.test_utils.tel.tel_voice_utils import verify_default_ims_setting 57from acts_contrib.test_utils.tel.tel_wifi_utils import WIFI_SSID_KEY 58from acts_contrib.test_utils.tel.tel_wifi_utils import WIFI_PWD_KEY 59from acts_contrib.test_utils.tel.tel_wifi_utils import wifi_reset 60from acts_contrib.test_utils.tel.tel_wifi_utils import wifi_toggle_state 61 62 63class TelLiveImsSettingsTest(TelephonyBaseTest): 64 def setup_class(self): 65 TelephonyBaseTest.setup_class(self) 66 self.dut = self.android_devices[0] 67 self.dut_client = self.android_devices[1] 68 self.subid = get_outgoing_voice_sub_id(self.dut) 69 self.carrier_configs = dumpsys_carrier_config(self.dut)[self.subid] 70 self.dut_capabilities = self.dut.telephony["subscription"][ 71 self.subid].get("capabilities", []) 72 self.dut.log.info("DUT capabilities: %s", self.dut_capabilities) 73 if CAPABILITY_VOLTE not in self.dut_capabilities: 74 raise signals.TestAbortClass("VoLTE is not supported") 75 if CAPABILITY_WFC not in self.dut_capabilities: 76 raise signals.TestAbortClass("WFC is not supported") 77 78 self.default_volte = (CAPABILITY_VOLTE in self.dut_capabilities) and ( 79 self.carrier_configs[CarrierConfigs. 80 ENHANCED_4G_LTE_ON_BY_DEFAULT_BOOL]) 81 self.default_wfc_enabled = ( 82 CAPABILITY_WFC in self.dut_capabilities 83 ) and ( 84 self.carrier_configs[CarrierConfigs.DEFAULT_WFC_IMS_ENABLED_BOOL]) 85 self.default_wfc_mode = self.carrier_configs.get( 86 CarrierConfigs.DEFAULT_WFC_IMS_MODE_INT, None) 87 self.dut_wfc_modes = self.dut.telephony[ 88 "subscription"][self.subid].get("wfc_modes", []) 89 90 91 @test_tracker_info(uuid="a3a680ba-d1e0-4770-a38c-4de8f15f9171") 92 @TelephonyBaseTest.tel_test_wrap 93 def test_lte_volte_wifi_connected_toggle_wfc(self): 94 """Test for WiFi Calling settings: 95 LTE + VoLTE Enabled + WiFi Connected, Toggling WFC 96 97 Steps: 98 1. Setup DUT Idle, LTE network type, VoLTE enabled. 99 2. Make sure DUT WiFi connected, WFC disabled. 100 3. Set DUT WFC enabled (WiFi Preferred), verify DUT WFC available, 101 report iwlan rat. 102 4. Set DUT WFC disabled, verify DUT WFC unavailable, 103 not report iwlan rat. 104 105 Expected Results: 106 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 107 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 108 """ 109 if not phone_setup_volte(self.log, self.dut): 110 self.log.error("Failed to setup VoLTE") 111 return False 112 if not change_ims_setting(log=self.log, 113 ad=self.dut, 114 dut_client= self.dut_client, 115 wifi_network_ssid=self.wifi_network_ssid, 116 wifi_network_pass=self.wifi_network_pass, 117 dut_capabilities=self.dut_capabilities, 118 subid=self.subid, 119 airplane_mode=False, 120 wifi_enabled=True, 121 volte_enabled=True, 122 wfc_enabled=True, 123 nw_gen=RAT_LTE, 124 wfc_mode=self.default_wfc_mode): 125 return False 126 if not change_ims_setting(log=self.log, 127 ad=self.dut, 128 dut_client= self.dut_client, 129 wifi_network_ssid=self.wifi_network_ssid, 130 wifi_network_pass=self.wifi_network_pass, 131 dut_capabilities=self.dut_capabilities, 132 subid=self.subid, 133 airplane_mode=False, 134 wifi_enabled=True, 135 volte_enabled=True, 136 wfc_enabled=False, 137 nw_gen=RAT_LTE, 138 wfc_mode=None): 139 return False 140 return change_ims_setting(log=self.log, 141 ad=self.dut, 142 dut_client= self.dut_client, 143 wifi_network_ssid=self.wifi_network_ssid, 144 wifi_network_pass=self.wifi_network_pass, 145 dut_capabilities=self.dut_capabilities, 146 subid=self.subid, 147 airplane_mode=False, 148 wifi_enabled=True, 149 volte_enabled=True, 150 wfc_enabled=True, 151 nw_gen=RAT_LTE, 152 wfc_mode=None) 153 154 @test_tracker_info(uuid="d3ffae75-ae4a-4ed8-9337-9155c413311d") 155 @TelephonyBaseTest.tel_test_wrap 156 def test_lte_wifi_connected_toggle_wfc(self): 157 """Test for WiFi Calling settings: 158 LTE + VoLTE Disabled + WiFi Connected, Toggling WFC 159 160 Steps: 161 1. Setup DUT Idle, LTE network type, VoLTE disabled. 162 2. Make sure DUT WiFi connected, WFC disabled. 163 3. Set DUT WFC enabled (WiFi Preferred), verify DUT WFC available, 164 report iwlan rat. 165 4. Set DUT WFC disabled, verify DUT WFC unavailable, 166 not report iwlan rat. 167 168 Expected Results: 169 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 170 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 171 """ 172 if not phone_setup_csfb(self.log, self.dut): 173 self.log.error("Failed to setup LTE") 174 return False 175 if not change_ims_setting(log=self.log, 176 ad=self.dut, 177 dut_client= self.dut_client, 178 wifi_network_ssid=self.wifi_network_ssid, 179 wifi_network_pass=self.wifi_network_pass, 180 dut_capabilities=self.dut_capabilities, 181 subid=self.subid, 182 airplane_mode=False, 183 wifi_enabled=True, 184 volte_enabled=False, 185 wfc_enabled=True, 186 nw_gen=RAT_LTE, 187 wfc_mode=self.default_wfc_mode): 188 return False 189 if not change_ims_setting(log=self.log, 190 ad=self.dut, 191 dut_client= self.dut_client, 192 wifi_network_ssid=self.wifi_network_ssid, 193 wifi_network_pass=self.wifi_network_pass, 194 dut_capabilities=self.dut_capabilities, 195 subid=self.subid, 196 airplane_mode=False, 197 wifi_enabled=True, 198 volte_enabled=False, 199 wfc_enabled=False, 200 nw_gen=RAT_LTE, 201 wfc_mode=None): 202 return False 203 return change_ims_setting(log=self.log, 204 ad=self.dut, 205 dut_client= self.dut_client, 206 wifi_network_ssid=self.wifi_network_ssid, 207 wifi_network_pass=self.wifi_network_pass, 208 dut_capabilities=self.dut_capabilities, 209 subid=self.subid, 210 airplane_mode=False, 211 wifi_enabled=True, 212 volte_enabled=False, 213 wfc_enabled=True, 214 nw_gen=RAT_LTE, 215 wfc_mode=None) 216 217 @test_tracker_info(uuid="29d2d7b7-1c31-4a2c-896a-3f6756c620ac") 218 @TelephonyBaseTest.tel_test_wrap 219 def test_3g_wifi_connected_toggle_wfc(self): 220 """Test for WiFi Calling settings: 221 3G + WiFi Connected, Toggling WFC 222 223 Steps: 224 1. Setup DUT Idle, 3G network type. 225 2. Make sure DUT WiFi connected, WFC disabled. 226 3. Set DUT WFC enabled (WiFi Preferred), verify DUT WFC available, 227 report iwlan rat. 228 4. Set DUT WFC disabled, verify DUT WFC unavailable, 229 not report iwlan rat. 230 231 Expected Results: 232 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 233 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 234 """ 235 if not phone_setup_voice_3g(self.log, self.dut): 236 self.log.error("Failed to setup 3G") 237 return False 238 if not change_ims_setting(log=self.log, 239 ad=self.dut, 240 dut_client= self.dut_client, 241 wifi_network_ssid=self.wifi_network_ssid, 242 wifi_network_pass=self.wifi_network_pass, 243 dut_capabilities=self.dut_capabilities, 244 subid=self.subid, 245 airplane_mode=False, 246 wifi_enabled=True, 247 volte_enabled=False, 248 wfc_enabled=True, 249 nw_gen=RAT_LTE, 250 wfc_mode=self.default_wfc_mode): 251 return False 252 if not change_ims_setting(log=self.log, 253 ad=self.dut, 254 dut_client= self.dut_client, 255 wifi_network_ssid=self.wifi_network_ssid, 256 wifi_network_pass=self.wifi_network_pass, 257 dut_capabilities=self.dut_capabilities, 258 subid=self.subid, 259 airplane_mode=False, 260 wifi_enabled=True, 261 volte_enabled=False, 262 wfc_enabled=False, 263 nw_gen=RAT_LTE, 264 wfc_mode=None): 265 return False 266 return change_ims_setting(log=self.log, 267 ad=self.dut, 268 dut_client= self.dut_client, 269 wifi_network_ssid=self.wifi_network_ssid, 270 wifi_network_pass=self.wifi_network_pass, 271 dut_capabilities=self.dut_capabilities, 272 subid=self.subid, 273 airplane_mode=False, 274 wifi_enabled=True, 275 volte_enabled=False, 276 wfc_enabled=True, 277 nw_gen=RAT_LTE, 278 wfc_mode=None) 279 280 @test_tracker_info(uuid="ce2c0208-9ea0-4b31-91f4-d06a62cb927a") 281 @TelephonyBaseTest.tel_test_wrap 282 def test_apm_wifi_connected_toggle_wfc(self): 283 """Test for WiFi Calling settings: 284 APM + WiFi Connected, Toggling WFC 285 286 Steps: 287 1. Setup DUT Idle, Airplane mode. 288 2. Make sure DUT WiFi connected, WFC disabled. 289 3. Set DUT WFC enabled (WiFi Preferred), verify DUT WFC available, 290 report iwlan rat. 291 4. Set DUT WFC disabled, verify DUT WFC unavailable, 292 not report iwlan rat. 293 294 Expected Results: 295 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 296 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 297 """ 298 if not change_ims_setting(log=self.log, 299 ad=self.dut, 300 dut_client= self.dut_client, 301 wifi_network_ssid=self.wifi_network_ssid, 302 wifi_network_pass=self.wifi_network_pass, 303 dut_capabilities=self.dut_capabilities, 304 subid=self.subid, 305 airplane_mode=True, 306 wifi_enabled=True, 307 volte_enabled=True, 308 wfc_enabled=True, 309 nw_gen=RAT_LTE, 310 wfc_mode=self.default_wfc_mode): 311 return False 312 if not change_ims_setting(log=self.log, 313 ad=self.dut, 314 dut_client= self.dut_client, 315 wifi_network_ssid=self.wifi_network_ssid, 316 wifi_network_pass=self.wifi_network_pass, 317 dut_capabilities=self.dut_capabilities, 318 subid=self.subid, 319 airplane_mode=True, 320 wifi_enabled=True, 321 volte_enabled=True, 322 wfc_enabled=False, 323 nw_gen=RAT_LTE, 324 wfc_mode=None): 325 return False 326 return change_ims_setting(log=self.log, 327 ad=self.dut, 328 dut_client= self.dut_client, 329 wifi_network_ssid=self.wifi_network_ssid, 330 wifi_network_pass=self.wifi_network_pass, 331 dut_capabilities=self.dut_capabilities, 332 subid=self.subid, 333 airplane_mode=True, 334 wifi_enabled=True, 335 volte_enabled=True, 336 wfc_enabled=True, 337 nw_gen=RAT_LTE, 338 wfc_mode=None) 339 340 @test_tracker_info(uuid="681e2448-32a2-434d-abd6-0bc2ab5afd9c") 341 @TelephonyBaseTest.tel_test_wrap 342 def test_lte_volte_wfc_enabled_toggle_wifi(self): 343 """Test for WiFi Calling settings: 344 LTE + VoLTE Enabled + WFC enabled, Toggling WiFi 345 346 Steps: 347 1. Setup DUT Idle, LTE network type, VoLTE enabled. 348 2. Make sure DUT WiFi disconnected, WFC enabled (WiFi Preferred). 349 3. DUT connect WiFi, verify DUT WFC available, report iwlan rat. 350 4. DUT disconnect WiFi,verify DUT WFC unavailable, not report iwlan rat. 351 352 Expected Results: 353 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 354 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 355 """ 356 if not phone_setup_volte(self.log, self.dut): 357 self.log.error("Failed to setup VoLTE") 358 return False 359 if not change_ims_setting(log=self.log, 360 ad=self.dut, 361 dut_client= self.dut_client, 362 wifi_network_ssid=self.wifi_network_ssid, 363 wifi_network_pass=self.wifi_network_pass, 364 dut_capabilities=self.dut_capabilities, 365 subid=self.subid, 366 airplane_mode=False, 367 wifi_enabled=True, 368 volte_enabled=True, 369 wfc_enabled=True, 370 nw_gen=RAT_LTE, 371 wfc_mode=self.default_wfc_mode): 372 return False 373 if not change_ims_setting(log=self.log, 374 ad=self.dut, 375 dut_client= self.dut_client, 376 wifi_network_ssid=self.wifi_network_ssid, 377 wifi_network_pass=self.wifi_network_pass, 378 dut_capabilities=self.dut_capabilities, 379 subid=self.subid, 380 airplane_mode=False, 381 wifi_enabled=True, 382 volte_enabled=True, 383 wfc_enabled=False, 384 nw_gen=RAT_LTE, 385 wfc_mode=None): 386 return False 387 return change_ims_setting(log=self.log, 388 ad=self.dut, 389 dut_client= self.dut_client, 390 wifi_network_ssid=self.wifi_network_ssid, 391 wifi_network_pass=self.wifi_network_pass, 392 dut_capabilities=self.dut_capabilities, 393 subid=self.subid, 394 airplane_mode=False, 395 wifi_enabled=True, 396 volte_enabled=True, 397 wfc_enabled=True, 398 nw_gen=RAT_LTE, 399 wfc_mode=None) 400 401 @test_tracker_info(uuid="63922066-9caa-42e6-bc9f-49f5ac01cbe2") 402 @TelephonyBaseTest.tel_test_wrap 403 def test_lte_wfc_enabled_toggle_wifi(self): 404 """Test for WiFi Calling settings: 405 LTE + VoLTE Disabled + WFC enabled, Toggling WiFi 406 407 Steps: 408 1. Setup DUT Idle, LTE network type, VoLTE disabled. 409 2. Make sure DUT WiFi disconnected, WFC enabled (WiFi Preferred). 410 3. DUT connect WiFi, verify DUT WFC available, report iwlan rat. 411 4. DUT disconnect WiFi,verify DUT WFC unavailable, not report iwlan rat. 412 413 Expected Results: 414 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 415 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 416 """ 417 if not phone_setup_csfb(self.log, self.dut): 418 self.log.error("Failed to setup CSFB") 419 return False 420 if not change_ims_setting(log=self.log, 421 ad=self.dut, 422 dut_client= self.dut_client, 423 wifi_network_ssid=self.wifi_network_ssid, 424 wifi_network_pass=self.wifi_network_pass, 425 dut_capabilities=self.dut_capabilities, 426 subid=self.subid, 427 airplane_mode=False, 428 wifi_enabled=True, 429 volte_enabled=False, 430 wfc_enabled=True, 431 nw_gen=RAT_LTE, 432 wfc_mode=self.default_wfc_mode): 433 return False 434 if not change_ims_setting(log=self.log, 435 ad=self.dut, 436 dut_client= self.dut_client, 437 wifi_network_ssid=self.wifi_network_ssid, 438 wifi_network_pass=self.wifi_network_pass, 439 dut_capabilities=self.dut_capabilities, 440 subid=self.subid, 441 airplane_mode=False, 442 wifi_enabled=False, 443 volte_enabled=False, 444 wfc_enabled=True, 445 nw_gen=RAT_LTE, 446 wfc_mode=None): 447 return False 448 return change_ims_setting(log=self.log, 449 ad=self.dut, 450 dut_client= self.dut_client, 451 wifi_network_ssid=self.wifi_network_ssid, 452 wifi_network_pass=self.wifi_network_pass, 453 dut_capabilities=self.dut_capabilities, 454 subid=self.subid, 455 airplane_mode=False, 456 wifi_enabled=True, 457 volte_enabled=False, 458 wfc_enabled=True, 459 nw_gen=RAT_LTE, 460 wfc_mode=None) 461 462 @test_tracker_info(uuid="8a80a446-2116-4b19-b0ef-f771f30a6d15") 463 @TelephonyBaseTest.tel_test_wrap 464 def test_3g_wfc_enabled_toggle_wifi(self): 465 """Test for WiFi Calling settings: 466 3G + WFC enabled, Toggling WiFi 467 468 Steps: 469 1. Setup DUT Idle, 3G network type. 470 2. Make sure DUT WiFi disconnected, WFC enabled (WiFi Preferred). 471 3. DUT connect WiFi, verify DUT WFC available, report iwlan rat. 472 4. DUT disconnect WiFi,verify DUT WFC unavailable, not report iwlan rat. 473 474 Expected Results: 475 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 476 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 477 """ 478 if not phone_setup_voice_3g(self.log, self.dut): 479 self.log.error("Failed to setup 3G") 480 return False 481 if not change_ims_setting(log=self.log, 482 ad=self.dut, 483 dut_client= self.dut_client, 484 wifi_network_ssid=self.wifi_network_ssid, 485 wifi_network_pass=self.wifi_network_pass, 486 dut_capabilities=self.dut_capabilities, 487 subid=self.subid, 488 airplane_mode=False, 489 wifi_enabled=True, 490 volte_enabled=False, 491 wfc_enabled=True, 492 nw_gen=RAT_LTE, 493 wfc_mode=self.default_wfc_mode): 494 return False 495 if not change_ims_setting(log=self.log, 496 ad=self.dut, 497 dut_client= self.dut_client, 498 wifi_network_ssid=self.wifi_network_ssid, 499 wifi_network_pass=self.wifi_network_pass, 500 dut_capabilities=self.dut_capabilities, 501 subid=self.subid, 502 airplane_mode=False, 503 wifi_enabled=False, 504 volte_enabled=False, 505 wfc_enabled=True, 506 nw_gen=RAT_LTE, 507 wfc_mode=None): 508 return False 509 return change_ims_setting(log=self.log, 510 ad=self.dut, 511 dut_client= self.dut_client, 512 wifi_network_ssid=self.wifi_network_ssid, 513 wifi_network_pass=self.wifi_network_pass, 514 dut_capabilities=self.dut_capabilities, 515 subid=self.subid, 516 airplane_mode=False, 517 wifi_enabled=True, 518 volte_enabled=False, 519 wfc_enabled=True, 520 nw_gen=RAT_LTE, 521 wfc_mode=None) 522 523 @test_tracker_info(uuid="9889eebf-cde6-4f47-aec0-9cb204fdf2e5") 524 @TelephonyBaseTest.tel_test_wrap 525 def test_apm_wfc_enabled_toggle_wifi(self): 526 """Test for WiFi Calling settings: 527 APM + WFC enabled, Toggling WiFi 528 529 Steps: 530 1. Setup DUT Idle, Airplane mode. 531 2. Make sure DUT WiFi disconnected, WFC enabled (WiFi Preferred). 532 3. DUT connect WiFi, verify DUT WFC available, report iwlan rat. 533 4. DUT disconnect WiFi,verify DUT WFC unavailable, not report iwlan rat. 534 535 Expected Results: 536 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 537 4. DUT WiFi Calling feature bit return False, network rat is not iwlan. 538 """ 539 if not change_ims_setting(log=self.log, 540 ad=self.dut, 541 dut_client= self.dut_client, 542 wifi_network_ssid=self.wifi_network_ssid, 543 wifi_network_pass=self.wifi_network_pass, 544 dut_capabilities=self.dut_capabilities, 545 subid=self.subid, 546 airplane_mode=True, 547 wifi_enabled=True, 548 volte_enabled=True, 549 wfc_enabled=True, 550 nw_gen=RAT_LTE, 551 wfc_mode=self.default_wfc_mode): 552 return False 553 if not change_ims_setting(log=self.log, 554 ad=self.dut, 555 dut_client= self.dut_client, 556 wifi_network_ssid=self.wifi_network_ssid, 557 wifi_network_pass=self.wifi_network_pass, 558 dut_capabilities=self.dut_capabilities, 559 subid=self.subid, 560 airplane_mode=True, 561 wifi_enabled=False, 562 volte_enabled=True, 563 wfc_enabled=True, 564 nw_gen=RAT_LTE, 565 wfc_mode=None): 566 return False 567 return change_ims_setting(log=self.log, 568 ad=self.dut, 569 dut_client= self.dut_client, 570 wifi_network_ssid=self.wifi_network_ssid, 571 wifi_network_pass=self.wifi_network_pass, 572 dut_capabilities=self.dut_capabilities, 573 subid=self.subid, 574 airplane_mode=True, 575 wifi_enabled=True, 576 volte_enabled=True, 577 wfc_enabled=True, 578 nw_gen=RAT_LTE, 579 wfc_mode=None) 580 581 @test_tracker_info(uuid="9b23e04b-4f70-4e73-88e7-6376262c739d") 582 @TelephonyBaseTest.tel_test_wrap 583 def test_lte_wfc_enabled_wifi_connected_toggle_volte(self): 584 """Test for WiFi Calling settings: 585 LTE + VoLTE Enabled + WiFi Connected + WFC enabled, toggle VoLTE setting 586 587 Steps: 588 1. Setup DUT Idle, LTE network type, VoLTE enabled. 589 2. Make sure DUT WiFi connected, WFC enabled (WiFi Preferred). 590 Verify DUT WFC available, report iwlan rat. 591 3. Disable VoLTE on DUT, verify in 2 minutes period, 592 DUT does not lost WiFi Calling, DUT still report WFC available, 593 rat iwlan. 594 4. Enable VoLTE on DUT, verify in 2 minutes period, 595 DUT does not lost WiFi Calling, DUT still report WFC available, 596 rat iwlan. 597 598 Expected Results: 599 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 600 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 601 4. DUT WiFi Calling feature bit return True, network rat is iwlan. 602 """ 603 if not phone_setup_volte(self.log, self.dut): 604 self.dut.log.error("Failed to setup VoLTE.") 605 return False 606 if not change_ims_setting(log=self.log, 607 ad=self.dut, 608 dut_client= self.dut_client, 609 wifi_network_ssid=self.wifi_network_ssid, 610 wifi_network_pass=self.wifi_network_pass, 611 dut_capabilities=self.dut_capabilities, 612 subid=self.subid, 613 airplane_mode=False, 614 wifi_enabled=True, 615 volte_enabled=True, 616 wfc_enabled=True, 617 nw_gen=RAT_LTE, 618 wfc_mode=self.default_wfc_mode): 619 return False 620 if not change_ims_setting(log=self.log, 621 ad=self.dut, 622 dut_client= self.dut_client, 623 wifi_network_ssid=self.wifi_network_ssid, 624 wifi_network_pass=self.wifi_network_pass, 625 dut_capabilities=self.dut_capabilities, 626 subid=self.subid, 627 airplane_mode=False, 628 wifi_enabled=True, 629 volte_enabled=False, 630 wfc_enabled=True, 631 nw_gen=RAT_LTE, 632 wfc_mode=None): 633 return False 634 return change_ims_setting(log=self.log, 635 ad=self.dut, 636 dut_client= self.dut_client, 637 wifi_network_ssid=self.wifi_network_ssid, 638 wifi_network_pass=self.wifi_network_pass, 639 dut_capabilities=self.dut_capabilities, 640 subid=self.subid, 641 airplane_mode=False, 642 wifi_enabled=True, 643 volte_enabled=True, 644 wfc_enabled=True, 645 nw_gen=RAT_LTE, 646 wfc_mode=None) 647 648 @test_tracker_info(uuid="04bdfda4-06f7-41df-9352-a8534bc2a67a") 649 @TelephonyBaseTest.tel_test_wrap 650 def test_lte_volte_wfc_wifi_preferred_to_cellular_preferred(self): 651 """Test for WiFi Calling settings: 652 LTE + VoLTE Enabled + WiFi Connected + WiFi Preferred, 653 change WFC to Cellular Preferred 654 655 Steps: 656 1. Setup DUT Idle, LTE network type, VoLTE enabled. 657 2. Make sure DUT WiFi connected, WFC is set to WiFi Preferred. 658 Verify DUT WFC available, report iwlan rat. 659 3. Change WFC setting to Cellular Preferred. 660 4. Verify DUT report WFC not available. 661 662 Expected Results: 663 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 664 4. DUT WiFI Calling feature bit return False, network rat is not iwlan. 665 """ 666 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 667 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 668 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 669 raise signals.TestSkip( 670 "WFC_MODE_CELLULAR_PREFERRED is not supported") 671 if not phone_setup_volte(self.log, self.dut): 672 self.dut.log.error("Failed to setup VoLTE.") 673 return False 674 if not change_ims_setting(log=self.log, 675 ad=self.dut, 676 dut_client= self.dut_client, 677 wifi_network_ssid=self.wifi_network_ssid, 678 wifi_network_pass=self.wifi_network_pass, 679 dut_capabilities=self.dut_capabilities, 680 subid=self.subid, 681 airplane_mode=False, 682 wifi_enabled=True, 683 volte_enabled=True, 684 wfc_enabled=True, 685 nw_gen=RAT_LTE, 686 wfc_mode=WFC_MODE_WIFI_PREFERRED): 687 return False 688 return change_ims_setting(log=self.log, 689 ad=self.dut, 690 dut_client= self.dut_client, 691 wifi_network_ssid=self.wifi_network_ssid, 692 wifi_network_pass=self.wifi_network_pass, 693 dut_capabilities=self.dut_capabilities, 694 subid=self.subid, 695 airplane_mode=False, 696 wifi_enabled=True, 697 volte_enabled=True, 698 wfc_enabled=True, 699 nw_gen=RAT_LTE, 700 wfc_mode=WFC_MODE_CELLULAR_PREFERRED) 701 702 @test_tracker_info(uuid="80d26bdb-992a-4b30-ad51-68308d5af168") 703 @TelephonyBaseTest.tel_test_wrap 704 def test_lte_wfc_wifi_preferred_to_cellular_preferred(self): 705 """Test for WiFi Calling settings: 706 LTE + WiFi Connected + WiFi Preferred, change WFC to Cellular Preferred 707 708 Steps: 709 1. Setup DUT Idle, LTE network type, VoLTE disabled. 710 2. Make sure DUT WiFi connected, WFC is set to WiFi Preferred. 711 Verify DUT WFC available, report iwlan rat. 712 3. Change WFC setting to Cellular Preferred. 713 4. Verify DUT report WFC not available. 714 715 Expected Results: 716 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 717 4. DUT WiFI Calling feature bit return False, network rat is not iwlan. 718 """ 719 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 720 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 721 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 722 raise signals.TestSkip( 723 "WFC_MODE_CELLULAR_PREFERRED is not supported") 724 if not phone_setup_csfb(self.log, self.dut): 725 self.dut.log.error("Failed to setup LTE.") 726 return False 727 if not change_ims_setting(log=self.log, 728 ad=self.dut, 729 dut_client= self.dut_client, 730 wifi_network_ssid=self.wifi_network_ssid, 731 wifi_network_pass=self.wifi_network_pass, 732 dut_capabilities=self.dut_capabilities, 733 subid=self.subid, 734 airplane_mode=False, 735 wifi_enabled=True, 736 volte_enabled=False, 737 wfc_enabled=True, 738 nw_gen=RAT_LTE, 739 wfc_mode=WFC_MODE_WIFI_PREFERRED): 740 return False 741 return change_ims_setting(log=self.log, 742 ad=self.dut, 743 dut_client= self.dut_client, 744 wifi_network_ssid=self.wifi_network_ssid, 745 wifi_network_pass=self.wifi_network_pass, 746 dut_capabilities=self.dut_capabilities, 747 subid=self.subid, 748 airplane_mode=False, 749 wifi_enabled=True, 750 volte_enabled=False, 751 wfc_enabled=True, 752 nw_gen=RAT_LTE, 753 wfc_mode=WFC_MODE_CELLULAR_PREFERRED) 754 755 @test_tracker_info(uuid="d486c7e3-3d2b-4552-8af8-7b19f6347427") 756 @TelephonyBaseTest.tel_test_wrap 757 def test_3g_wfc_wifi_preferred_to_cellular_preferred(self): 758 """Test for WiFi Calling settings: 759 3G + WiFi Connected + WiFi Preferred, change WFC to Cellular Preferred 760 761 Steps: 762 1. Setup DUT Idle, 3G network type. 763 2. Make sure DUT WiFi connected, WFC is set to WiFi Preferred. 764 Verify DUT WFC available, report iwlan rat. 765 3. Change WFC setting to Cellular Preferred. 766 4. Verify DUT report WFC not available. 767 768 Expected Results: 769 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 770 4. DUT WiFI Calling feature bit return False, network rat is not iwlan. 771 """ 772 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 773 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 774 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 775 raise signals.TestSkip( 776 "WFC_MODE_CELLULAR_PREFERRED is not supported") 777 if not phone_setup_voice_3g(self.dut.log, self.dut): 778 self.dut.log.error("Failed to setup 3G.") 779 return False 780 if not change_ims_setting(log=self.log, 781 ad=self.dut, 782 dut_client= self.dut_client, 783 wifi_network_ssid=self.wifi_network_ssid, 784 wifi_network_pass=self.wifi_network_pass, 785 dut_capabilities=self.dut_capabilities, 786 subid=self.subid, 787 airplane_mode=False, 788 wifi_enabled=True, 789 volte_enabled=False, 790 wfc_enabled=True, 791 nw_gen=RAT_LTE, 792 wfc_mode=WFC_MODE_WIFI_PREFERRED): 793 return False 794 return change_ims_setting(log=self.log, 795 ad=self.dut, 796 dut_client= self.dut_client, 797 wifi_network_ssid=self.wifi_network_ssid, 798 wifi_network_pass=self.wifi_network_pass, 799 dut_capabilities=self.dut_capabilities, 800 subid=self.subid, 801 airplane_mode=False, 802 wifi_enabled=True, 803 volte_enabled=False, 804 wfc_enabled=True, 805 nw_gen=RAT_LTE, 806 wfc_mode=WFC_MODE_CELLULAR_PREFERRED) 807 808 @test_tracker_info(uuid="0feb0add-8e22-4c86-b13e-be68659cdd87") 809 @TelephonyBaseTest.tel_test_wrap 810 def test_apm_wfc_wifi_preferred_to_cellular_preferred(self): 811 """Test for WiFi Calling settings: 812 APM + WiFi Connected + WiFi Preferred, change WFC to Cellular Preferred 813 814 Steps: 815 1. Setup DUT Idle, airplane mode. 816 2. Make sure DUT WiFi connected, WFC is set to WiFi Preferred. 817 Verify DUT WFC available, report iwlan rat. 818 3. Change WFC setting to Cellular Preferred. 819 4. Verify DUT report WFC not available. 820 821 Expected Results: 822 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 823 4. DUT WiFI Calling feature bit return True, network rat is iwlan. 824 """ 825 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 826 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 827 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 828 raise signals.TestSkip( 829 "WFC_MODE_CELLULAR_PREFERRED is not supported") 830 if not change_ims_setting(log=self.log, 831 ad=self.dut, 832 dut_client= self.dut_client, 833 wifi_network_ssid=self.wifi_network_ssid, 834 wifi_network_pass=self.wifi_network_pass, 835 dut_capabilities=self.dut_capabilities, 836 subid=self.subid, 837 airplane_mode=True, 838 wifi_enabled=True, 839 volte_enabled=True, 840 wfc_enabled=True, 841 nw_gen=RAT_LTE, 842 wfc_mode=WFC_MODE_WIFI_PREFERRED): 843 return False 844 return change_ims_setting(log=self.log, 845 ad=self.dut, 846 dut_client= self.dut_client, 847 wifi_network_ssid=self.wifi_network_ssid, 848 wifi_network_pass=self.wifi_network_pass, 849 dut_capabilities=self.dut_capabilities, 850 subid=self.subid, 851 airplane_mode=True, 852 wifi_enabled=True, 853 volte_enabled=True, 854 wfc_enabled=True, 855 nw_gen=RAT_LTE, 856 wfc_mode=WFC_MODE_CELLULAR_PREFERRED) 857 858 @test_tracker_info(uuid="9c8f359f-a084-4413-b8a9-34771af166c5") 859 @TelephonyBaseTest.tel_test_wrap 860 def test_lte_volte_wfc_cellular_preferred_to_wifi_preferred(self): 861 """Test for WiFi Calling settings: 862 LTE + VoLTE Enabled + WiFi Connected + Cellular Preferred, 863 change WFC to WiFi Preferred 864 865 Steps: 866 1. Setup DUT Idle, LTE network type, VoLTE enabled. 867 2. Make sure DUT WiFi connected, WFC is set to Cellular Preferred. 868 Verify DUT WFC not available. 869 3. Change WFC setting to WiFi Preferred. 870 4. Verify DUT report WFC available. 871 872 Expected Results: 873 2. DUT WiFi Calling feature bit return False, network rat is not iwlan. 874 4. DUT WiFI Calling feature bit return True, network rat is iwlan. 875 """ 876 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 877 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 878 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 879 raise signals.TestSkip( 880 "WFC_MODE_CELLULAR_PREFERRED is not supported") 881 if not phone_setup_volte(self.log, self.dut): 882 self.dut.log.error("Failed to setup VoLTE.") 883 return False 884 if not change_ims_setting(log=self.log, 885 ad=self.dut, 886 dut_client= self.dut_client, 887 wifi_network_ssid=self.wifi_network_ssid, 888 wifi_network_pass=self.wifi_network_pass, 889 dut_capabilities=self.dut_capabilities, 890 subid=self.subid, 891 airplane_mode=False, 892 wifi_enabled=True, 893 volte_enabled=True, 894 wfc_enabled=True, 895 nw_gen=RAT_LTE, 896 wfc_mode=WFC_MODE_CELLULAR_PREFERRED): 897 return False 898 return change_ims_setting(log=self.log, 899 ad=self.dut, 900 dut_client= self.dut_client, 901 wifi_network_ssid=self.wifi_network_ssid, 902 wifi_network_pass=self.wifi_network_pass, 903 dut_capabilities=self.dut_capabilities, 904 subid=self.subid, 905 airplane_mode=False, 906 wifi_enabled=True, 907 volte_enabled=True, 908 wfc_enabled=True, 909 nw_gen=RAT_LTE, 910 wfc_mode=WFC_MODE_WIFI_PREFERRED) 911 912 @test_tracker_info(uuid="1894e685-63cf-43aa-91ed-938782ca35a9") 913 @TelephonyBaseTest.tel_test_wrap 914 def test_lte_wfc_cellular_preferred_to_wifi_preferred(self): 915 """Test for WiFi Calling settings: 916 LTE + WiFi Connected + Cellular Preferred, change WFC to WiFi Preferred 917 918 Steps: 919 1. Setup DUT Idle, LTE network type, VoLTE disabled. 920 2. Make sure DUT WiFi connected, WFC is set to Cellular Preferred. 921 Verify DUT WFC not available. 922 3. Change WFC setting to WiFi Preferred. 923 4. Verify DUT report WFC available. 924 925 Expected Results: 926 2. DUT WiFi Calling feature bit return False, network rat is not iwlan. 927 4. DUT WiFI Calling feature bit return True, network rat is iwlan. 928 """ 929 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 930 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 931 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 932 raise signals.TestSkip( 933 "WFC_MODE_CELLULAR_PREFERRED is not supported") 934 if not phone_setup_csfb(self.log, self.dut): 935 self.dut.log.error("Failed to setup LTE.") 936 return False 937 if not change_ims_setting(log=self.log, 938 ad=self.dut, 939 dut_client= self.dut_client, 940 wifi_network_ssid=self.wifi_network_ssid, 941 wifi_network_pass=self.wifi_network_pass, 942 dut_capabilities=self.dut_capabilities, 943 subid=self.subid, 944 airplane_mode=False, 945 wifi_enabled=True, 946 volte_enabled=False, 947 wfc_enabled=True, 948 nw_gen=RAT_LTE, 949 wfc_mode=WFC_MODE_CELLULAR_PREFERRED): 950 return False 951 return change_ims_setting(log=self.log, 952 ad=self.dut, 953 dut_client= self.dut_client, 954 wifi_network_ssid=self.wifi_network_ssid, 955 wifi_network_pass=self.wifi_network_pass, 956 dut_capabilities=self.dut_capabilities, 957 subid=self.subid, 958 airplane_mode=False, 959 wifi_enabled=True, 960 volte_enabled=False, 961 wfc_enabled=True, 962 nw_gen=RAT_LTE, 963 wfc_mode=WFC_MODE_WIFI_PREFERRED) 964 965 @test_tracker_info(uuid="e7fb6a6c-4672-44da-bca2-78b4d96dea9e") 966 @TelephonyBaseTest.tel_test_wrap 967 def test_3g_wfc_cellular_preferred_to_wifi_preferred(self): 968 """Test for WiFi Calling settings: 969 3G + WiFi Connected + Cellular Preferred, change WFC to WiFi Preferred 970 971 Steps: 972 1. Setup DUT Idle, 3G network type. 973 2. Make sure DUT WiFi connected, WFC is set to Cellular Preferred. 974 Verify DUT WFC not available. 975 3. Change WFC setting to WiFi Preferred. 976 4. Verify DUT report WFC available. 977 978 Expected Results: 979 2. DUT WiFi Calling feature bit return False, network rat is not iwlan. 980 4. DUT WiFI Calling feature bit return True, network rat is iwlan. 981 """ 982 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 983 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 984 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 985 raise signals.TestSkip( 986 "WFC_MODE_CELLULAR_PREFERRED is not supported") 987 if not phone_setup_voice_3g(self.log, self.dut): 988 self.dut.log.error("Failed to setup 3G.") 989 return False 990 if not change_ims_setting(log=self.log, 991 ad=self.dut, 992 dut_client= self.dut_client, 993 wifi_network_ssid=self.wifi_network_ssid, 994 wifi_network_pass=self.wifi_network_pass, 995 dut_capabilities=self.dut_capabilities, 996 subid=self.subid, 997 airplane_mode=False, 998 wifi_enabled=True, 999 volte_enabled=False, 1000 wfc_enabled=True, 1001 nw_gen=RAT_LTE, 1002 wfc_mode=WFC_MODE_CELLULAR_PREFERRED): 1003 return False 1004 return change_ims_setting(log=self.log, 1005 ad=self.dut, 1006 dut_client= self.dut_client, 1007 wifi_network_ssid=self.wifi_network_ssid, 1008 wifi_network_pass=self.wifi_network_pass, 1009 dut_capabilities=self.dut_capabilities, 1010 subid=self.subid, 1011 airplane_mode=False, 1012 wifi_enabled=True, 1013 volte_enabled=False, 1014 wfc_enabled=True, 1015 nw_gen=RAT_LTE, 1016 wfc_mode=WFC_MODE_WIFI_PREFERRED) 1017 1018 @test_tracker_info(uuid="46262b2d-5de9-4984-87e8-42f44469289e") 1019 @TelephonyBaseTest.tel_test_wrap 1020 def test_apm_wfc_cellular_preferred_to_wifi_preferred(self): 1021 """Test for WiFi Calling settings: 1022 APM + WiFi Connected + Cellular Preferred, change WFC to WiFi Preferred 1023 1024 Steps: 1025 1. Setup DUT Idle, airplane mode. 1026 2. Make sure DUT WiFi connected, WFC is set to Cellular Preferred. 1027 Verify DUT WFC not available. 1028 3. Change WFC setting to WiFi Preferred. 1029 4. Verify DUT report WFC available. 1030 1031 Expected Results: 1032 2. DUT WiFi Calling feature bit return True, network rat is iwlan. 1033 4. DUT WiFI Calling feature bit return True, network rat is iwlan. 1034 """ 1035 if WFC_MODE_WIFI_PREFERRED not in self.dut_wfc_modes: 1036 raise signals.TestSkip("WFC_MODE_WIFI_PREFERRED is not supported") 1037 if WFC_MODE_CELLULAR_PREFERRED not in self.dut_wfc_modes: 1038 raise signals.TestSkip( 1039 "WFC_MODE_CELLULAR_PREFERRED is not supported") 1040 if not change_ims_setting(log=self.log, 1041 ad=self.dut, 1042 dut_client= self.dut_client, 1043 wifi_network_ssid=self.wifi_network_ssid, 1044 wifi_network_pass=self.wifi_network_pass, 1045 dut_capabilities=self.dut_capabilities, 1046 subid=self.subid, 1047 airplane_mode=True, 1048 wifi_enabled=True, 1049 volte_enabled=True, 1050 wfc_enabled=True, 1051 nw_gen=RAT_LTE, 1052 wfc_mode=WFC_MODE_CELLULAR_PREFERRED): 1053 return False 1054 return change_ims_setting(log=self.log, 1055 ad=self.dut, 1056 dut_client= self.dut_client, 1057 wifi_network_ssid=self.wifi_network_ssid, 1058 wifi_network_pass=self.wifi_network_pass, 1059 dut_capabilities=self.dut_capabilities, 1060 subid=self.subid, 1061 airplane_mode=True, 1062 wifi_enabled=True, 1063 volte_enabled=True, 1064 wfc_enabled=True, 1065 nw_gen=RAT_LTE, 1066 wfc_mode=WFC_MODE_WIFI_PREFERRED) 1067 1068 @test_tracker_info(uuid="5b514f51-fed9-475e-99d3-17d2165e11a1") 1069 @TelephonyBaseTest.tel_test_wrap 1070 def test_apm_wfc_wifi_preferred_turn_off_apm(self): 1071 """Test for WiFi Calling settings: 1072 APM + WiFi Connected + WiFi Preferred + turn off APM 1073 1074 Steps: 1075 1. Setup DUT Idle in Airplane mode. 1076 2. Make sure DUT WiFi connected, set WFC mode to WiFi preferred. 1077 3. verify DUT WFC available, report iwlan rat. 1078 4. Turn off airplane mode. 1079 5. Verify DUT WFC still available, report iwlan rat 1080 1081 Expected Results: 1082 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 1083 5. DUT WiFI Calling feature bit return True, network rat is iwlan. 1084 """ 1085 if not change_ims_setting(log=self.log, 1086 ad=self.dut, 1087 dut_client= self.dut_client, 1088 wifi_network_ssid=self.wifi_network_ssid, 1089 wifi_network_pass=self.wifi_network_pass, 1090 dut_capabilities=self.dut_capabilities, 1091 subid=self.subid, 1092 airplane_mode=True, 1093 wifi_enabled=True, 1094 volte_enabled=True, 1095 wfc_enabled=True, 1096 nw_gen=RAT_LTE, 1097 wfc_mode=WFC_MODE_WIFI_PREFERRED): 1098 return False 1099 return change_ims_setting(log=self.log, 1100 ad=self.dut, 1101 dut_client= self.dut_client, 1102 wifi_network_ssid=self.wifi_network_ssid, 1103 wifi_network_pass=self.wifi_network_pass, 1104 dut_capabilities=self.dut_capabilities, 1105 subid=self.subid, 1106 airplane_mode=False, 1107 wifi_enabled=True, 1108 volte_enabled=True, 1109 wfc_enabled=True, 1110 nw_gen=RAT_LTE, 1111 wfc_mode=None) 1112 1113 @test_tracker_info(uuid="f328cff2-9dec-44b3-ba74-a662b76fcf2a") 1114 @TelephonyBaseTest.tel_test_wrap 1115 def test_apm_wfc_cellular_preferred_turn_off_apm(self): 1116 """Test for WiFi Calling settings: 1117 APM + WiFi Connected + Cellular Preferred + turn off APM 1118 1119 Steps: 1120 1. Setup DUT Idle in Airplane mode. 1121 2. Make sure DUT WiFi connected, set WFC mode to Cellular preferred. 1122 3. verify DUT WFC available, report iwlan rat. 1123 4. Turn off airplane mode. 1124 5. Verify DUT WFC not available, not report iwlan rat 1125 1126 Expected Results: 1127 3. DUT WiFi Calling feature bit return True, network rat is iwlan. 1128 5. DUT WiFI Calling feature bit return False, network rat is not iwlan. 1129 """ 1130 if not change_ims_setting(log=self.log, 1131 ad=self.dut, 1132 dut_client= self.dut_client, 1133 wifi_network_ssid=self.wifi_network_ssid, 1134 wifi_network_pass=self.wifi_network_pass, 1135 dut_capabilities=self.dut_capabilities, 1136 subid=self.subid, 1137 airplane_mode=True, 1138 wifi_enabled=True, 1139 volte_enabled=True, 1140 wfc_enabled=True, 1141 nw_gen=RAT_LTE, 1142 wfc_mode=WFC_MODE_CELLULAR_PREFERRED): 1143 return False 1144 return change_ims_setting(log=self.log, 1145 ad=self.dut, 1146 dut_client= self.dut_client, 1147 wifi_network_ssid=self.wifi_network_ssid, 1148 wifi_network_pass=self.wifi_network_pass, 1149 dut_capabilities=self.dut_capabilities, 1150 subid=self.subid, 1151 airplane_mode=False, 1152 wifi_enabled=True, 1153 volte_enabled=True, 1154 wfc_enabled=True, 1155 nw_gen=RAT_LTE, 1156 wfc_mode=None) 1157 1158 @test_tracker_info(uuid="7e30d219-42ee-4309-a95c-2b45b8831d26") 1159 @TelephonyBaseTest.tel_test_wrap 1160 def test_wfc_setup_timing(self): 1161 """ Measures the time delay in enabling WiFi calling 1162 1163 Steps: 1164 1. Make sure DUT idle. 1165 2. Turn on Airplane Mode, Set WiFi Calling to WiFi_Preferred. 1166 3. Turn on WiFi, connect to WiFi AP and measure time delay. 1167 4. Wait for WiFi connected, verify Internet and measure time delay. 1168 5. Wait for rat to be reported as iwlan and measure time delay. 1169 6. Wait for ims registered and measure time delay. 1170 7. Wait for WiFi Calling feature bit to be True and measure time delay. 1171 1172 Expected results: 1173 Time Delay in each step should be within pre-defined limit. 1174 1175 Returns: 1176 Currently always return True. 1177 """ 1178 # TODO: b/26338119 Set pass/fail criteria 1179 time_values = { 1180 'start': 0, 1181 'wifi_enabled': 0, 1182 'wifi_connected': 0, 1183 'wifi_data': 0, 1184 'iwlan_rat': 0, 1185 'ims_registered': 0, 1186 'wfc_enabled': 0, 1187 'mo_call_success': 0 1188 } 1189 1190 wifi_reset(self.log, self.dut) 1191 toggle_airplane_mode_by_adb(self.log, self.dut, True) 1192 1193 set_wfc_mode(self.log, self.dut, WFC_MODE_WIFI_PREFERRED) 1194 1195 time_values['start'] = time.time() 1196 1197 self.dut.log.info("Start Time %ss", time_values['start']) 1198 1199 wifi_toggle_state(self.log, self.dut, True) 1200 time_values['wifi_enabled'] = time.time() 1201 self.dut.log.info("WiFi Enabled After %ss", 1202 time_values['wifi_enabled'] - time_values['start']) 1203 1204 network = {WIFI_SSID_KEY: self.wifi_network_ssid} 1205 if self.wifi_network_pass: 1206 network[WIFI_PWD_KEY] = self.wifi_network_pass 1207 try: 1208 self.dut.droid.wifiConnectByConfig(network) 1209 except Exception: 1210 self.dut.log.info("Connecting to wifi by RPC wifiConnect instead") 1211 self.dut.droid.wifiConnect(network) 1212 self.dut.droid.wakeUpNow() 1213 1214 if not wait_for_wifi_data_connection(self.log, self.dut, True, 1215 MAX_WAIT_TIME_WIFI_CONNECTION): 1216 self.dut.log.error("Failed WiFi connection, aborting!") 1217 return False 1218 time_values['wifi_connected'] = time.time() 1219 1220 self.dut.log.info( 1221 "WiFi Connected After %ss", 1222 time_values['wifi_connected'] - time_values['wifi_enabled']) 1223 1224 if not verify_internet_connection(self.log, self.dut, retries=3): 1225 self.dut.log.error("Failed to get user-plane traffic, aborting!") 1226 return False 1227 1228 time_values['wifi_data'] = time.time() 1229 self.dut.log.info( 1230 "WifiData After %ss", 1231 time_values['wifi_data'] - time_values['wifi_connected']) 1232 1233 if not wait_for_network_rat( 1234 self.log, 1235 self.dut, 1236 RAT_FAMILY_WLAN, 1237 voice_or_data=NETWORK_SERVICE_DATA): 1238 self.dut.log.error("Failed to set-up iwlan, aborting!") 1239 if is_droid_in_rat_family(self.log, self.dut, RAT_FAMILY_WLAN, 1240 NETWORK_SERVICE_DATA): 1241 self.dut.log.error( 1242 "Never received the event, but droid in iwlan") 1243 else: 1244 return False 1245 time_values['iwlan_rat'] = time.time() 1246 self.dut.log.info("iWLAN Reported After %ss", 1247 time_values['iwlan_rat'] - time_values['wifi_data']) 1248 1249 if not wait_for_ims_registered(self.log, self.dut, 1250 MAX_WAIT_TIME_IMS_REGISTRATION): 1251 self.dut.log.error("Never received IMS registered, aborting") 1252 return False 1253 time_values['ims_registered'] = time.time() 1254 self.dut.log.info( 1255 "Ims Registered After %ss", 1256 time_values['ims_registered'] - time_values['iwlan_rat']) 1257 1258 if not wait_for_wfc_enabled(self.log, self.dut, 1259 MAX_WAIT_TIME_WFC_ENABLED): 1260 self.dut.log.error("Never received WFC feature, aborting") 1261 return False 1262 1263 time_values['wfc_enabled'] = time.time() 1264 self.dut.log.info( 1265 "Wifi Calling Feature Enabled After %ss", 1266 time_values['wfc_enabled'] - time_values['ims_registered']) 1267 1268 set_wfc_mode(self.log, self.dut, WFC_MODE_DISABLED) 1269 1270 wait_for_not_network_rat( 1271 self.log, 1272 self.dut, 1273 RAT_FAMILY_WLAN, 1274 voice_or_data=NETWORK_SERVICE_DATA) 1275 1276 self.dut.log.info("\n\n------------------summary-----------------") 1277 self.dut.log.info("WiFi Enabled After %.2f seconds", 1278 time_values['wifi_enabled'] - time_values['start']) 1279 self.dut.log.info( 1280 "WiFi Connected After %.2f seconds", 1281 time_values['wifi_connected'] - time_values['wifi_enabled']) 1282 self.dut.log.info( 1283 "WifiData After %.2f s", 1284 time_values['wifi_data'] - time_values['wifi_connected']) 1285 self.dut.log.info("iWLAN Reported After %.2f seconds", 1286 time_values['iwlan_rat'] - time_values['wifi_data']) 1287 self.dut.log.info( 1288 "Ims Registered After %.2f seconds", 1289 time_values['ims_registered'] - time_values['iwlan_rat']) 1290 self.dut.log.info( 1291 "Wifi Calling Feature Enabled After %.2f seconds", 1292 time_values['wfc_enabled'] - time_values['ims_registered']) 1293 self.dut.log.info("\n\n") 1294 return True 1295 1296 @test_tracker_info(uuid="135301ea-6d00-4233-98fd-cda706d61eb2") 1297 @TelephonyBaseTest.tel_test_wrap 1298 def test_ims_factory_reset(self): 1299 """Test VOLTE and WFC reset to factory default. 1300 1301 Steps: 1302 1. Setup VoLTE, WFC, APM is various mode. 1303 2. Call IMS factory reset. 1304 3. Verify VoLTE and WFC are back to factory default. 1305 4. Verify VoLTE, WFC Voice call can be made successful if enabled. 1306 1307 """ 1308 result = True 1309 wifi_enabled = True 1310 for airplane_mode in (True, False): 1311 for volte_enabled in (True, False): 1312 for wfc_enabled in (True, False): 1313 if wfc_enabled: 1314 wfc_modes = self.dut_wfc_modes 1315 else: 1316 wfc_modes = [None] 1317 for wfc_mode in wfc_modes: 1318 if not change_ims_setting(log=self.log, 1319 ad=self.dut, 1320 dut_client= self.dut_client, 1321 wifi_network_ssid=self.wifi_network_ssid, 1322 wifi_network_pass=self.wifi_network_pass, 1323 dut_capabilities=self.dut_capabilities, 1324 subid=self.subid, 1325 airplane_mode=airplane_mode, 1326 wifi_enabled=wifi_enabled, 1327 volte_enabled=volte_enabled, 1328 wfc_enabled=wfc_enabled, 1329 nw_gen=RAT_LTE, 1330 wfc_mode=wfc_mode): 1331 result = False 1332 self.dut.log.info("Call IMS factory reset") 1333 self.dut.droid.telephonyFactoryReset() 1334 if not verify_default_ims_setting(log=self.log, 1335 ad=self.dut, 1336 dut_client= self.dut_client, 1337 carrier_configs=self.carrier_configs, 1338 default_wfc_enabled=self.default_wfc_enabled, 1339 default_volte=self.default_volte, 1340 wfc_mode=WFC_MODE_DISABLED): 1341 result = False 1342 return result 1343 1344 @test_tracker_info(uuid="ce60740f-4d8e-4013-a7cf-65589e8a0893") 1345 @TelephonyBaseTest.tel_test_wrap 1346 def test_factory_reset_by_fastboot_wipe(self): 1347 """Verify the network setting after factory reset by wipe. 1348 1349 Steps: 1350 1. Config VoLTE, WFC, APM, data_roamingn, mobile_data, 1351 preferred_network_mode to non-factory default. 1352 2. Factory reset by fastboot wipe. 1353 3. Verify network configs back to factory default. 1354 1355 """ 1356 self.dut.log.info("Set VoLTE off, WFC wifi preferred, APM on") 1357 toggle_volte(self.log, self.dut, False) 1358 revert_default_telephony_setting(self.dut) 1359 change_ims_setting(log=self.log, 1360 ad=self.dut, 1361 dut_client= self.dut_client, 1362 wifi_network_ssid=self.wifi_network_ssid, 1363 wifi_network_pass=self.wifi_network_pass, 1364 dut_capabilities=self.dut_capabilities, 1365 subid=self.subid, 1366 airplane_mode=True, 1367 wifi_enabled=True, 1368 volte_enabled=False, 1369 wfc_enabled=True, 1370 nw_gen=RAT_LTE, 1371 wfc_mode=WFC_MODE_WIFI_PREFERRED) 1372 self.dut.log.info("Wipe in fastboot") 1373 fastboot_wipe(self.dut) 1374 return verify_default_telephony_setting( 1375 self.dut) and (self.verify_default_ims_setting(WFC_MODE_DISABLED)) 1376 1377 1378