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