• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2#
3#   Copyright 2022 - 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
17import time
18
19from acts import signals
20from acts.test_decorators import test_tracker_info
21from acts_contrib.test_utils.tel.loggers.protos.telephony_metric_pb2 import TelephonyVoiceTestResult
22from acts_contrib.test_utils.tel.loggers.telephony_metric_logger import TelephonyMetricLogger
23from acts_contrib.test_utils.tel.tel_defines import SimSlotInfo
24from acts_contrib.test_utils.tel.tel_dsds_utils import dsds_dds_swap_call_streaming_test
25from acts_contrib.test_utils.tel.tel_dsds_utils import dsds_dds_swap_message_streaming_test
26from acts_contrib.test_utils.tel.tel_defines import YOUTUBE_PACKAGE_NAME
27from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
28from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_SMS_RECEIVE
29from acts_contrib.test_utils.tel.tel_defines import INVALID_SUB_ID
30from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_DISABLED
31from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED
32from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
33from acts_contrib.test_utils.tel.tel_data_utils import reboot_test
34from acts_contrib.test_utils.tel.tel_data_utils import start_youtube_video
35from acts_contrib.test_utils.tel.tel_data_utils import wait_for_cell_data_connection_for_subscription
36from acts_contrib.test_utils.tel.tel_ims_utils import is_volte_enabled
37from acts_contrib.test_utils.tel.tel_ims_utils import set_wfc_mode_for_subscription
38from acts_contrib.test_utils.tel.tel_ims_utils import toggle_volte_for_subscription
39from acts_contrib.test_utils.tel.tel_ims_utils import toggle_wfc_for_subscription
40from acts_contrib.test_utils.tel.tel_ims_utils import wait_for_wfc_enabled
41from acts_contrib.test_utils.tel.tel_message_utils import sms_send_receive_verify_for_subscription
42from acts_contrib.test_utils.tel.tel_message_utils import mms_send_receive_verify
43from acts_contrib.test_utils.tel.tel_message_utils import log_messaging_screen_shot
44from acts_contrib.test_utils.tel.tel_phone_setup_utils import ensure_phones_idle
45from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_volte_for_subscription
46from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_on_rat
47from acts_contrib.test_utils.tel.tel_subscription_utils import get_subid_from_slot_index
48from acts_contrib.test_utils.tel.tel_subscription_utils import get_default_data_sub_id
49from acts_contrib.test_utils.tel.tel_subscription_utils import get_slot_index_from_subid
50from acts_contrib.test_utils.tel.tel_subscription_utils import get_subid_from_slot_index
51from acts_contrib.test_utils.tel.tel_subscription_utils import set_message_subid
52from acts_contrib.test_utils.tel.tel_subscription_utils import set_subid_for_data
53from acts_contrib.test_utils.tel.tel_subscription_utils import set_voice_sub_id
54from acts_contrib.test_utils.tel.tel_subscription_utils import set_dds_on_slot_0
55from acts_contrib.test_utils.tel.tel_subscription_utils import set_dds_on_slot_1
56from acts_contrib.test_utils.tel.tel_subscription_utils import get_subid_on_same_network_of_host_ad
57from acts_contrib.test_utils.tel.tel_test_utils import verify_http_connection
58from acts_contrib.test_utils.tel.tel_test_utils import verify_internet_connection
59from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode
60from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_on_rat
61from acts_contrib.test_utils.tel.tel_voice_utils import two_phone_call_msim_for_slot
62from acts_contrib.test_utils.tel.tel_wifi_utils import check_is_wifi_connected
63from acts_contrib.test_utils.tel.tel_wifi_utils import ensure_wifi_connected
64from acts.utils import rand_ascii_str
65
66CallResult = TelephonyVoiceTestResult.CallResult.Value
67_WAIT_TIME_FOR_MEP_ENABLE_INTERVAL = 60
68_WAIT_TIME_FOR_MEP_ENABLE = 180
69
70
71class TelLiveGFTDSDSDDSSwitchTest(TelephonyBaseTest):
72    def setup_class(self):
73        TelephonyBaseTest.setup_class(self)
74        self.message_lengths = (50, 160, 180)
75        self.tel_logger = TelephonyMetricLogger.for_test_case()
76        if getattr(self.android_devices[0], 'mep', False):
77            start_time = time.monotonic()
78            timeout = start_time + _WAIT_TIME_FOR_MEP_ENABLE
79            while time.monotonic() < timeout:
80                mep_logs = self.android_devices[0].search_logcat(
81                    "UNSOL_SIM_SLOT_STATUS_CHANGED")
82                if mep_logs:
83                    for mep_log in mep_logs:
84                        if "num_ports=2" in mep_log["log_message"]:
85                            break
86                time.sleep(_WAIT_TIME_FOR_MEP_ENABLE_INTERVAL)
87            else:
88                self.log.warning("Couldn't found MEP enabled logs.")
89
90    def teardown_test(self):
91        self.android_devices[0].force_stop_apk(YOUTUBE_PACKAGE_NAME)
92        ensure_phones_idle(self.log, self.android_devices)
93
94    def _msim_message_test(
95        self,
96        ad_mo,
97        ad_mt,
98        mo_sub_id,
99        mt_sub_id, msg="SMS",
100        max_wait_time=MAX_WAIT_TIME_SMS_RECEIVE,
101        expected_result=True):
102        """Make MO/MT SMS/MMS at specific slot.
103
104        Args:
105            ad_mo: Android object of the device sending SMS/MMS
106            ad_mt: Android object of the device receiving SMS/MMS
107            mo_sub_id: Sub ID of MO device
108            mt_sub_id: Sub ID of MT device
109            max_wait_time: Max wait time before SMS/MMS is received.
110            expected_result: True for successful sending/receiving and False on
111                             the contrary
112
113        Returns:
114            True if the result matches expected_result and False on the
115            contrary.
116        """
117
118        if msg == "SMS":
119            for length in self.message_lengths:
120                message_array = [rand_ascii_str(length)]
121                if not sms_send_receive_verify_for_subscription(
122                    self.log,
123                    ad_mo,
124                    ad_mt,
125                    mo_sub_id,
126                    mt_sub_id,
127                    message_array,
128                    max_wait_time):
129                    ad_mo.log.warning(
130                        "%s of length %s test failed", msg, length)
131                    return False
132                else:
133                    ad_mo.log.info(
134                        "%s of length %s test succeeded", msg, length)
135            self.log.info("%s test of length %s characters succeeded.",
136                msg, self.message_lengths)
137
138        elif msg == "MMS":
139            for length in self.message_lengths:
140                message_array = [("Test Message", rand_ascii_str(length), None)]
141
142                if not mms_send_receive_verify(
143                    self.log,
144                    ad_mo,
145                    ad_mt,
146                    message_array,
147                    max_wait_time,
148                    expected_result):
149                    self.log.warning("%s of body length %s test failed",
150                        msg, length)
151                    return False
152                else:
153                    self.log.info(
154                        "%s of body length %s test succeeded", msg, length)
155            self.log.info("%s test of body lengths %s succeeded",
156                          msg, self.message_lengths)
157        return True
158
159    def _test_dds_switch_during_data_transfer(
160        self,
161        slot_0_nw_gen="volte",
162        slot_1_nw_gen="volte",
163        call_slot=0,
164        call_direction=None,
165        call_or_sms_or_mms="call",
166        streaming=True,
167        is_airplane_mode=False,
168        wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED]):
169        """Switch DDS and make voice call (VoLTE/WFC/CS call)/SMS/MMS together
170        with Youtube playing after each DDS switch at specific slot in specific
171        RAT.
172
173        Test step:
174            1. Get sub ID of each slot of the primary device.
175            2. Set up phones in desired RAT.
176            3. Switch DDS to slot 0.
177            4. Check HTTP connection after DDS switch.
178            5. Play Youtube.
179            6. Make voice call (VoLTE/WFC/CS call)/SMS/MMS
180            7. Switch DDS to slot 1 and repeat step 4-6.
181            8. Switch DDS to slot 0 again and repeat step 4-6.
182
183        Args:
184            1, slot_0_nw_gen: Network generation of slot 0 on the primary device
185            2, slot_1_nw_gen: Network generation of slot 1 on the primary device
186            3. call_slot: Slot for making voice call
187            4. call_direction: "mo" or "mt" or None to stoping making call.
188            5. call_or_sms_or_mms: Voice call or SMS or MMS
189            6. streaming: True for playing Youtube after DDS switch and False on
190                the contrary.
191            7. is_airplane_mode: True of False for WFC setup
192            8. wfc_mode: Cellular preferred or Wi-Fi preferred.
193
194        Returns:
195            True or False
196        """
197        ad = self.android_devices[0]
198        slot_0_subid = get_subid_from_slot_index(self.log, ad, 0)
199        slot_1_subid = get_subid_from_slot_index(self.log, ad, 1)
200
201        if slot_0_subid == INVALID_SUB_ID or slot_1_subid == INVALID_SUB_ID:
202            ad.log.error("Not all slots have valid sub ID.")
203            raise signals.TestFailure("Failed",
204                extras={"fail_reason": "Not all slots have valid sub ID"})
205
206        ad.log.info(
207            "Step 0: Set up phone in desired RAT (slot 0: %s, slot 1: %s)",
208            slot_0_nw_gen, slot_1_nw_gen)
209
210        if not phone_setup_on_rat(
211            self.log,
212            ad,
213            slot_0_nw_gen,
214            slot_0_subid,
215            is_airplane_mode,
216            wfc_mode[0],
217            self.wifi_network_ssid,
218            self.wifi_network_pass):
219
220            self.log.error("Phone Failed to Set Up Properly.")
221            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
222            raise signals.TestFailure("Failed",
223                extras={"fail_reason": "Phone Failed to Set Up Properly."})
224
225        if not phone_setup_on_rat(
226            self.log,
227            ad,
228            slot_1_nw_gen,
229            slot_1_subid,
230            is_airplane_mode,
231            wfc_mode[1],
232            self.wifi_network_ssid,
233            self.wifi_network_pass):
234
235            self.log.error("Phone Failed to Set Up Properly.")
236            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
237            raise signals.TestFailure("Failed",
238                extras={"fail_reason": "Phone Failed to Set Up Properly."})
239
240        is_slot0_in_call = is_phone_in_call_on_rat(
241            self.log, ad, slot_0_nw_gen, True)
242        is_slot1_in_call = is_phone_in_call_on_rat(
243            self.log, ad, slot_1_nw_gen, True)
244
245        for attempt in range(3):
246            if attempt != 0:
247                ad.log.info("Repeat step 1 to 4.")
248
249            ad.log.info("Step 1: Switch DDS.")
250            if attempt % 2 == 0:
251                set_dds_on_slot_0(ad)
252            else:
253                set_dds_on_slot_1(ad)
254
255            ad.log.info("Step 2: Check HTTP connection after DDS switch.")
256            if not verify_http_connection(self.log, ad):
257                ad.log.error("Failed to verify http connection.")
258                return False
259            else:
260                ad.log.info("Verify http connection successfully.")
261
262            if streaming:
263                ad.log.info("Step 3: Start Youtube streaming.")
264                if not start_youtube_video(ad):
265                    ad.log.warning("Fail to bring up youtube video")
266                time.sleep(10)
267            else:
268                ad.log.info("Step 3: Skip Youtube streaming.")
269
270            if not call_direction:
271                return True
272            else:
273                expected_result = True
274                if call_direction == "mo":
275                    ad_mo = self.android_devices[0]
276                    ad_mt = self.android_devices[1]
277                    mo_sub_id = get_subid_from_slot_index(self.log, ad, call_slot)
278                    if call_or_sms_or_mms == "call":
279                        set_voice_sub_id(ad_mo, mo_sub_id)
280                        _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
281                            self.android_devices)
282
283                        if call_slot == 0:
284                            is_mo_in_call = is_slot0_in_call
285                        elif call_slot == 1:
286                            is_mo_in_call = is_slot1_in_call
287                        is_mt_in_call = None
288
289                    elif call_or_sms_or_mms == "sms":
290                        set_message_subid(ad_mo, mo_sub_id)
291                        _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
292                            self.android_devices, type="sms")
293                        set_message_subid(ad_mt, mt_sub_id)
294
295                    elif call_or_sms_or_mms == "mms":
296                        current_data_sub_id = get_default_data_sub_id(ad_mo)
297                        if mo_sub_id != current_data_sub_id:
298                            ad_mo.log.warning(
299                                "Current data sub ID (%s) does not match"
300                                " message sub ID (%s). MMS should NOT be sent.",
301                                current_data_sub_id, mo_sub_id)
302                            expected_result = False
303                        set_message_subid(ad_mo, mo_sub_id)
304                        _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
305                            self.android_devices, type="sms")
306                        set_message_subid(ad_mt, mt_sub_id)
307                        set_subid_for_data(ad_mt, mt_sub_id)
308                        ad_mt.droid.telephonyToggleDataConnection(True)
309
310                elif call_direction == "mt":
311                    ad_mo = self.android_devices[1]
312                    ad_mt = self.android_devices[0]
313                    mt_sub_id = get_subid_from_slot_index(self.log, ad, call_slot)
314                    if call_or_sms_or_mms == "call":
315                        set_voice_sub_id(ad_mt, mt_sub_id)
316                        _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(
317                            self.android_devices)
318
319                        if call_slot == 0:
320                            is_mt_in_call = is_slot0_in_call
321                        elif call_slot == 1:
322                            is_mt_in_call = is_slot1_in_call
323                        is_mo_in_call = None
324
325                    elif call_or_sms_or_mms == "sms":
326                        set_message_subid(ad_mt, mt_sub_id)
327                        _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(
328                            self.android_devices, type="sms")
329                        set_message_subid(ad_mo, mo_sub_id)
330
331                    elif call_or_sms_or_mms == "mms":
332                        current_data_sub_id = get_default_data_sub_id(ad_mt)
333                        if mt_sub_id != current_data_sub_id:
334                            ad_mt.log.warning(
335                                "Current data sub ID (%s) does not match"
336                                " message sub ID (%s). MMS should NOT be"
337                                " received.", current_data_sub_id, mt_sub_id)
338                            expected_result = False
339                        set_message_subid(ad_mt, mt_sub_id)
340                        _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(
341                            self.android_devices, type="sms")
342                        set_message_subid(ad_mo, mo_sub_id)
343                        set_subid_for_data(ad_mo, mo_sub_id)
344                        ad_mo.droid.telephonyToggleDataConnection(True)
345
346                if call_or_sms_or_mms == "call":
347                    self.log.info("Step 4: Make voice call.")
348                    mo_slot = get_slot_index_from_subid(ad_mo, mo_sub_id)
349                    mt_slot = get_slot_index_from_subid(ad_mt, mt_sub_id)
350                    result = two_phone_call_msim_for_slot(
351                        self.log,
352                        ad_mo,
353                        mo_slot,
354                        None,
355                        is_mo_in_call,
356                        ad_mt,
357                        mt_slot,
358                        None,
359                        is_mt_in_call)
360                    self.tel_logger.set_result(result.result_value)
361
362                    if not result:
363                        self.log.error(
364                            "Failed to make MO call from %s slot %s to %s"
365                            " slot %s", ad_mo.serial, mo_slot, ad_mt.serial,
366                            mt_slot)
367                        raise signals.TestFailure("Failed",
368                            extras={"fail_reason": str(result.result_value)})
369                else:
370                    self.log.info("Step 4: Send %s.", call_or_sms_or_mms)
371                    if call_or_sms_or_mms == "sms":
372                        result = self._msim_message_test(
373                            ad_mo,
374                            ad_mt,
375                            mo_sub_id,
376                            mt_sub_id,
377                            msg=call_or_sms_or_mms.upper())
378                    elif call_or_sms_or_mms == "mms":
379                        result = self._msim_message_test(
380                            ad_mo,
381                            ad_mt,
382                            mo_sub_id,
383                            mt_sub_id,
384                            msg=call_or_sms_or_mms.upper(),
385                            expected_result=expected_result)
386                    if not result:
387                        log_messaging_screen_shot(
388                            ad_mo, test_name="%s_tx" % call_or_sms_or_mms)
389                        log_messaging_screen_shot(
390                            ad_mt, test_name="%s_rx" % call_or_sms_or_mms)
391
392                        return False
393        return True
394
395    def _test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
396        self,
397        slot_0_nw_gen="volte",
398        slot_1_nw_gen="volte",
399        call_slot=0,
400        call_direction=None,
401        streaming=True,
402        airplane_mode_cycling=False,
403        cellular_data_cycling=False,
404        wifi_cycling=False,
405        enable_volte=[True, True],
406        enable_wfc=[True, True],
407        wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
408        is_airplane_mode=False,
409        is_wifi_connected=False):
410        """Switch DDS and make VoLTE/WFC call together with Youtube playing
411        after each DDS switch at specific slot in specific RAT.
412
413        Test step:
414            1. Get sub ID of each slot of the primary device.
415            2. Set up phones in desired RAT.
416            3. Toggle on/off VoLTE/WFC and set WFC mode.
417            4. Airplane mode or cellular data or Wi-Fi cycling.
418            5. Switch DDS to slot 0.
419            6. Check HTTP connection after DDS switch.
420            7. Play Youtube.
421            8. Make VoLTE or WFC call.
422            9. Switch DDS to slot 1 and repeat step 6-8.
423            10. Switch DDS to slot 0 again and repeat step 6-8.
424
425        Args:
426            1, slot_0_nw_gen: Network generation of slot 0 on the primary device
427            2, slot_1_nw_gen: Network generation of slot 1 on the primary device
428            3. call_slot: Slot for making voice call
429            4. call_direction: "mo" or "mt" or None to stoping making call.
430            5. streaming: True for playing Youtube after DDS switch and False on
431                the contrary.
432            6. airplane_mode_cycling: True for cycling airplane
433            7. cellular_data_cycling: True for cycling cellular data
434            8. wifi_cycling: True for cycling Wi-Fi
435            9. enable_volte: True for enabling and False for disabling VoLTE for
436               each slot on the primary device
437            10. enable_wfc: True for enabling and False for disabling WFC for
438                each slot on the primary device
439            11. wfc_mode: Cellular preferred or Wi-Fi preferred.
440            12. is_airplane_mode: True of False for WFC setup
441
442        Returns:
443            True or False
444        """
445        ad = self.android_devices[0]
446        slot_0_subid = get_subid_from_slot_index(self.log, ad, 0)
447        slot_1_subid = get_subid_from_slot_index(self.log, ad, 1)
448
449        if slot_0_subid == INVALID_SUB_ID or slot_1_subid == INVALID_SUB_ID:
450            ad.log.error("Not all slots have valid sub ID.")
451            raise signals.TestFailure("Failed",
452                extras={"fail_reason": "Not all slots have valid sub ID"})
453
454        ad.log.info(
455            "Step 0: Set up phone in desired RAT (slot 0: %s, slot 1: %s)",
456            slot_0_nw_gen, slot_1_nw_gen)
457
458        if not phone_setup_on_rat(
459            self.log,
460            ad,
461            slot_0_nw_gen,
462            slot_0_subid,
463            is_airplane_mode,
464            wfc_mode[0],
465            self.wifi_network_ssid,
466            self.wifi_network_pass):
467
468            self.log.error("Phone Failed to Set Up Properly.")
469            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
470            raise signals.TestFailure("Failed",
471                extras={"fail_reason": "Phone Failed to Set Up Properly."})
472
473        if not phone_setup_on_rat(
474            self.log,
475            ad,
476            slot_1_nw_gen,
477            slot_1_subid,
478            is_airplane_mode,
479            wfc_mode[1],
480            self.wifi_network_ssid,
481            self.wifi_network_pass):
482
483            self.log.error("Phone Failed to Set Up Properly.")
484            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
485            raise signals.TestFailure("Failed",
486                extras={"fail_reason": "Phone Failed to Set Up Properly."})
487
488        is_slot0_in_call = is_phone_in_call_on_rat(
489            self.log, ad, slot_0_nw_gen, True)
490        is_slot1_in_call = is_phone_in_call_on_rat(
491            self.log, ad, slot_1_nw_gen, True)
492
493        if is_wifi_connected:
494            if not ensure_wifi_connected(
495                self.log,
496                ad,
497                self.wifi_network_ssid,
498                self.wifi_network_pass,
499                apm=False):
500                return False
501            time.sleep(5)
502
503        ad.log.info("Step 1: Enable/disable VoLTE and WFC.")
504        for sub_id, volte in zip([slot_0_subid, slot_1_subid], enable_volte):
505            if not toggle_volte_for_subscription(
506                self.log,
507                ad,
508                sub_id,
509                new_state=volte):
510                return False
511
512        for sub_id, wfc, mode in \
513            zip([slot_0_subid, slot_1_subid], enable_wfc, wfc_mode):
514            if not toggle_wfc_for_subscription(self.log, ad, new_state=wfc, sub_id=sub_id):
515                return False
516            if not set_wfc_mode_for_subscription(ad, mode, sub_id=sub_id):
517                return False
518
519        if airplane_mode_cycling:
520            ad.log.info("Step 2: Airplane mode cycling.")
521            ad.log.info("Step 2-1: Toggle on airplane mode.")
522            if not toggle_airplane_mode(self.log, ad, True):
523                ad.log.error("Failed to toggle on airplane mode.")
524                return False
525            time.sleep(5)
526            ad.log.info("Step 2-2: Toggle off airplane mode.")
527            if not toggle_airplane_mode(self.log, ad, False):
528                ad.log.error("Failed to toggle off airplane mode.")
529                return False
530
531            if is_airplane_mode:
532                time.sleep(5)
533                ad.log.info("Step 2-3: Toggle on airplane mode again.")
534                if not toggle_airplane_mode(self.log, ad, True):
535                    ad.log.error("Failed to toggle on airplane mode.")
536                    return False
537
538                if wfc_mode[0] or wfc_mode[1]:
539                    time.sleep(5)
540                    ad.log.info("Step 2-4: Toggle on Wi-Fi again.")
541                    if not ensure_wifi_connected(
542                        self.log,
543                        ad,
544                        self.wifi_network_ssid,
545                        self.wifi_network_pass,
546                        apm=is_airplane_mode):
547                        return False
548                    time.sleep(5)
549
550        if cellular_data_cycling:
551            if call_slot == 0:
552                sub_id = slot_0_subid
553            elif call_slot == 1:
554                sub_id = slot_1_subid
555            ad.log.info("Step 2: Cellular data cycling")
556            ad.log.info("Step 2-1: Toggle off cellular data.")
557            ad.droid.telephonyToggleDataConnection(False)
558            if not check_is_wifi_connected(
559                self.log,
560                ad,
561                self.wifi_network_ssid):
562                if not wait_for_cell_data_connection_for_subscription(
563                        self.log, ad, sub_id, False):
564                    ad.log.error("Failed to disable cellular data")
565                    return False
566
567                if not verify_internet_connection(
568                    self.log,
569                    ad,
570                    expected_state=False):
571                    ad.log.error("Internet still accessible when cellular data"
572                    " is disabled.")
573                    return False
574            time.sleep(5)
575            ad.log.info("Step 2-2: Toggle on cellular data.")
576            ad.droid.telephonyToggleDataConnection(True)
577            if not check_is_wifi_connected(
578                self.log,
579                ad,
580                self.wifi_network_ssid):
581                if not wait_for_cell_data_connection_for_subscription(
582                        self.log, ad, sub_id, True):
583                    ad.log.error("Failed to enable cellular data")
584                    return False
585                if not verify_internet_connection(self.log, ad, retries=3):
586                    ad.log.error(
587                        "Internet inaccessible when cellular data is enabled.")
588                    return False
589
590        if wifi_cycling:
591            ad.log.info("Step 2: Wi-Fi cycling")
592            ad.log.info("Step 2-1: Toggle on Wi-Fi.")
593            if not ensure_wifi_connected(
594                self.log,
595                ad,
596                self.wifi_network_ssid,
597                self.wifi_network_pass,
598                apm=is_airplane_mode):
599                return False
600            time.sleep(5)
601            ad.log.info("Step 2-2: Toggle off Wi-Fi.")
602            ad.droid.wifiToggleState(False)
603            time.sleep(5)
604
605            if (call_slot == 0 and slot_0_nw_gen == "wfc") or \
606                (call_slot == 1 and slot_1_nw_gen == "wfc") or is_wifi_connected:
607                if not ensure_wifi_connected(
608                    self.log,
609                    ad,
610                    self.wifi_network_ssid,
611                    self.wifi_network_pass,
612                    apm=is_airplane_mode):
613                    return False
614
615        for attempt in range(3):
616            if attempt != 0:
617                ad.log.info("Repeat step 1 to 4.")
618
619            ad.log.info("Step 3: Switch DDS.")
620            if attempt % 2 == 0:
621                set_dds_on_slot_0(ad)
622            else:
623                set_dds_on_slot_1(ad)
624
625            ad.log.info("Step 4: Check HTTP connection after DDS switch.")
626            if not verify_http_connection(self.log, ad):
627                ad.log.error("Failed to verify http connection.")
628                return False
629            else:
630                ad.log.info("Verify http connection successfully.")
631
632            if streaming:
633                ad.log.info("Step 5: Start Youtube streaming.")
634                if not start_youtube_video(ad):
635                    ad.log.warning("Fail to bring up youtube video")
636                time.sleep(10)
637            else:
638                ad.log.info("Step 5: Skip Youtube streaming.")
639
640            if not call_direction:
641                return True
642            else:
643                if call_direction == "mo":
644                    ad_mo = self.android_devices[0]
645                    ad_mt = self.android_devices[1]
646                    mo_sub_id = get_subid_from_slot_index(self.log, ad, call_slot)
647
648                    set_voice_sub_id(ad_mo, mo_sub_id)
649                    _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
650                        self.android_devices)
651
652                    if call_slot == 0:
653                        is_mo_in_call = is_slot0_in_call
654                    elif call_slot == 1:
655                        is_mo_in_call = is_slot1_in_call
656                    is_mt_in_call = None
657
658                elif call_direction == "mt":
659                    ad_mo = self.android_devices[1]
660                    ad_mt = self.android_devices[0]
661                    mt_sub_id = get_subid_from_slot_index(self.log, ad, call_slot)
662
663                    set_voice_sub_id(ad_mt, mt_sub_id)
664                    _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(
665                        self.android_devices)
666
667                    if call_slot == 0:
668                        is_mt_in_call = is_slot0_in_call
669                    elif call_slot == 1:
670                        is_mt_in_call = is_slot1_in_call
671                    is_mo_in_call = None
672
673                if (call_slot == 0 and slot_0_nw_gen == "wfc") or \
674                    (call_slot == 1 and slot_1_nw_gen == "wfc"):
675                    if not wait_for_wfc_enabled(self.log, ad):
676                        return False
677
678                self.log.info("Step 6: Make voice call.")
679                mo_slot = get_slot_index_from_subid(ad_mo, mo_sub_id)
680                mt_slot = get_slot_index_from_subid(ad_mt, mt_sub_id)
681                result = two_phone_call_msim_for_slot(
682                    self.log,
683                    ad_mo,
684                    mo_slot,
685                    None,
686                    is_mo_in_call,
687                    ad_mt,
688                    mt_slot,
689                    None,
690                    is_mt_in_call)
691                self.tel_logger.set_result(result.result_value)
692
693                if not result:
694                    self.log.error(
695                        "Failed to make MO call from %s slot %s to %s slot %s",
696                        ad_mo.serial, mo_slot, ad_mt.serial, mt_slot)
697                    raise signals.TestFailure("Failed",
698                        extras={"fail_reason": str(result.result_value)})
699
700        return True
701
702    def _test_dds_switch_volte_cycling(self, slot=0):
703        """ VoLTE cycling after DDS switch.
704
705        Test steps:
706            1. Enable VoLTE.
707            2. Disable VoLTE.
708            3. Switch DDS to slot 0.
709            4. Check HTTP connection after DDS switch.
710            5. Enable VoLTE again.
711            6. Check if IMS can be registered successfully and if VoLTE is
712               available.
713            7. Repeat steps 2-6 for 2 times and each time DDS should be switched
714               to another slot.
715
716        Args:
717            slot: slot to be tested
718
719        Returns:
720            True or False
721        """
722        ad = self.android_devices[0]
723        slot_0_subid = get_subid_from_slot_index(self.log, ad, 0)
724        slot_1_subid = get_subid_from_slot_index(self.log, ad, 1)
725
726        if slot == 0:
727            sub_id = slot_0_subid
728        elif slot == 1:
729            sub_id = slot_1_subid
730
731        ad.log.info("Step 1: Enable VoLTE for sub ID %s.", sub_id)
732        if not phone_setup_volte_for_subscription(self.log, ad, sub_id):
733            return False
734
735        for attempt in range(3):
736            if attempt != 0:
737                ad.log.info("Repeat step 2 to 4.")
738
739            ad.log.info("Step 2-1: Disable VoLTE for sub ID %s.", sub_id)
740            if not toggle_volte_for_subscription(
741                self.log, ad, sub_id, new_state=False):
742                return False
743
744            ad.log.info(
745                "Step 2-2: Ensure VoLTE is disabled for sub ID %s.", sub_id)
746            if is_volte_enabled(self.log, ad, sub_id):
747                return False
748
749            ad.log.info("Step 3: Switch DDS.")
750            if attempt % 2 == 0:
751                set_dds_on_slot_0(ad)
752            else:
753                set_dds_on_slot_1(ad)
754
755            ad.log.info("Step 4: Check HTTP connection after DDS switch.")
756            if not verify_http_connection(self.log, ad):
757                ad.log.error("Failed to verify http connection.")
758                return False
759            else:
760                ad.log.info("Verify http connection successfully.")
761
762            ad.log.info(
763                "Step 5: Enable VoLTE again after DDS switch for sub ID %s.",
764                sub_id)
765            if not phone_setup_volte_for_subscription(self.log, ad, sub_id):
766                return False
767
768        return True
769
770    @test_tracker_info(uuid="06908fb0-aaaa-4c95-b073-ea5ba8977050")
771    @TelephonyBaseTest.tel_test_wrap
772    def test_dds_switch_when_volte_enabled(self):
773        ad = self.android_devices[0]
774        slot_0_subid = get_subid_from_slot_index(self.log, ad, 0)
775        slot_1_subid = get_subid_from_slot_index(self.log, ad, 1)
776
777        ad.log.info("Step 0: Ensure VoLTE is enabled as initial condition.")
778        if not phone_setup_volte_for_subscription(self.log, ad, slot_0_subid):
779            return False
780        if not phone_setup_volte_for_subscription(self.log, ad, slot_1_subid):
781            return False
782
783        for attempt in range(3):
784            ad.log.info("Step 1: Switch DDS.")
785            if attempt % 2 == 0:
786                set_dds_on_slot_0(ad)
787            else:
788                set_dds_on_slot_1(ad)
789
790            ad.log.info("Step 2: Check HTTP connection after DDS switch.")
791            if not verify_http_connection(self.log, ad):
792                ad.log.error("Failed to verify http connection.")
793                return False
794            else:
795                ad.log.info("Verify http connection successfully.")
796
797            ad.log.info("Step 3: Ensure VoLTE is still enabled after DDS"
798                " switch.")
799            if not phone_setup_volte_for_subscription(
800                self.log, ad, slot_0_subid):
801                return False
802            if not phone_setup_volte_for_subscription(
803                self.log, ad, slot_1_subid):
804                return False
805        return True
806
807    @test_tracker_info(uuid="6b41d84c-4485-47b0-a5d8-eac16ed36258")
808    @TelephonyBaseTest.tel_test_wrap
809    def test_dds_switch_and_reboot_when_volte_enabled(self):
810        ad = self.android_devices[0]
811        slot_0_subid = get_subid_from_slot_index(self.log, ad, 0)
812        slot_1_subid = get_subid_from_slot_index(self.log, ad, 1)
813
814        ad.log.info("Step 0: Ensure VoLTE is enabled as initial condition.")
815        if not phone_setup_volte_for_subscription(self.log, ad, slot_0_subid):
816            return False
817        if not phone_setup_volte_for_subscription(self.log, ad, slot_1_subid):
818            return False
819
820        for attempt in range(3):
821            ad.log.info("Step 1: Switch DDS.")
822            if attempt % 2 == 0:
823                set_dds_on_slot_0(ad)
824            else:
825                set_dds_on_slot_1(ad)
826
827            ad.log.info("Step 2: Check HTTP connection after DDS switch.")
828            if not verify_http_connection(self.log, ad):
829                ad.log.error("Failed to verify http connection.")
830                return False
831            else:
832                ad.log.info("Verify http connection successfully.")
833
834            ad.log.info("Step 3: Reboot.")
835            if not reboot_test(self.log, ad):
836                return False
837
838            ad.log.info("Step 4: Ensure VoLTE is still enabled after DDS"
839                " switch.")
840            if not phone_setup_volte_for_subscription(
841                self.log, ad, slot_0_subid):
842                return False
843            if not phone_setup_volte_for_subscription(
844                self.log, ad, slot_1_subid):
845                return False
846        return True
847
848    @test_tracker_info(uuid="bb440f33-ab0d-4999-885c-5c1f933430c4")
849    @TelephonyBaseTest.tel_test_wrap
850    def test_dds_switch_when_volte_cycling_psim(self):
851        return self._test_dds_switch_volte_cycling(slot=0)
852
853    @test_tracker_info(uuid="cbd5a4ae-be37-4435-b9db-fe58e8fdac5f")
854    @TelephonyBaseTest.tel_test_wrap
855    def test_dds_switch_when_volte_cycling_esim(self):
856        return self._test_dds_switch_volte_cycling(slot=1)
857
858
859    @test_tracker_info(uuid="2df5faf9-8318-4acb-9068-e6ec0481c2ca")
860    @TelephonyBaseTest.tel_test_wrap
861    def test_dds_switch_youtube_volte(self):
862        return self._test_dds_switch_during_data_transfer(
863            slot_0_nw_gen="volte",
864            slot_1_nw_gen="volte")
865
866    @test_tracker_info(uuid="eb73506e-c604-48df-be04-9b602a801afc")
867    @TelephonyBaseTest.tel_test_wrap
868    def test_dds_switch_youtube_and_voice_call_mo_volte_psim(self):
869        return self._test_dds_switch_during_data_transfer(
870            slot_0_nw_gen="volte",
871            slot_1_nw_gen="volte",
872            call_slot=0,
873            call_direction="mo")
874
875    @test_tracker_info(uuid="2e2feab1-65a8-40a7-8666-0c46cb3411a4")
876    @TelephonyBaseTest.tel_test_wrap
877    def test_dds_switch_youtube_and_voice_call_mo_volte_esim(self):
878        return self._test_dds_switch_during_data_transfer(
879            slot_0_nw_gen="volte",
880            slot_1_nw_gen="volte",
881            call_slot=1,
882            call_direction="mo")
883
884    @test_tracker_info(uuid="f2a7d62c-1f54-4081-b7bb-4782c5482b41")
885    @TelephonyBaseTest.tel_test_wrap
886    def test_dds_switch_youtube_and_voice_call_mt_volte_psim(self):
887        return self._test_dds_switch_during_data_transfer(
888            slot_0_nw_gen="volte",
889            slot_1_nw_gen="volte",
890            call_slot=0,
891            call_direction="mt")
892
893    @test_tracker_info(uuid="df211078-b260-499d-8f7e-86cad039c5f5")
894    @TelephonyBaseTest.tel_test_wrap
895    def test_dds_switch_youtube_and_voice_call_mt_volte_esim(self):
896        return self._test_dds_switch_during_data_transfer(
897            slot_0_nw_gen="volte",
898            slot_1_nw_gen="volte",
899            call_slot=1,
900            call_direction="mt")
901
902    @test_tracker_info(uuid="bd77782d-f43d-40c6-9982-47cd452d980f")
903    @TelephonyBaseTest.tel_test_wrap
904    def test_dds_switch_youtube_and_voice_call_mo_csfb_psim(self):
905        return self._test_dds_switch_during_data_transfer(
906            slot_0_nw_gen="csfb",
907            slot_1_nw_gen="csfb",
908            call_slot=0,
909            call_direction="mo")
910
911    @test_tracker_info(uuid="361a6f69-e6ea-4013-960d-732931fcd130")
912    @TelephonyBaseTest.tel_test_wrap
913    def test_dds_switch_youtube_and_voice_call_mo_csfb_esim(self):
914        return self._test_dds_switch_during_data_transfer(
915            slot_0_nw_gen="csfb",
916            slot_1_nw_gen="csfb",
917            call_slot=1,
918            call_direction="mo")
919
920    @test_tracker_info(uuid="26186d4f-0b0d-41c5-ab91-04e9851461f0")
921    @TelephonyBaseTest.tel_test_wrap
922    def test_dds_switch_youtube_and_voice_call_mt_csfb_psim(self):
923        return self._test_dds_switch_during_data_transfer(
924            slot_0_nw_gen="csfb",
925            slot_1_nw_gen="csfb",
926            call_slot=0,
927            call_direction="mt")
928
929    @test_tracker_info(uuid="7d31c644-a470-4eb9-b272-f0cfc34d23cb")
930    @TelephonyBaseTest.tel_test_wrap
931    def test_dds_switch_youtube_and_voice_call_mt_csfb_esim(self):
932        return self._test_dds_switch_during_data_transfer(
933            slot_0_nw_gen="csfb",
934            slot_1_nw_gen="csfb",
935            call_slot=1,
936            call_direction="mt")
937
938    @test_tracker_info(uuid="614076a6-b042-45f3-84fe-c84591e02f78")
939    @TelephonyBaseTest.tel_test_wrap
940    def test_dds_switch_youtube_and_sms_volte(self):
941        result = True
942        self.log.info("Scenario 1: MO SMS at slot 0")
943        if not self._test_dds_switch_during_data_transfer(
944            slot_0_nw_gen="volte",
945            slot_1_nw_gen="volte",
946            call_slot=0,
947            call_direction="mo",
948            call_or_sms_or_mms="sms"):
949            result = False
950        self.log.info("Scenario 2: MO SMS at slot 1")
951        if not self._test_dds_switch_during_data_transfer(
952            slot_0_nw_gen="volte",
953            slot_1_nw_gen="volte",
954            call_slot=1,
955            call_direction="mo",
956            call_or_sms_or_mms="sms"):
957            result = False
958        self.log.info("Scenario 3: MT SMS at slot 0")
959        if not self._test_dds_switch_during_data_transfer(
960            slot_0_nw_gen="volte",
961            slot_1_nw_gen="volte",
962            call_slot=0,
963            call_direction="mt",
964            call_or_sms_or_mms="sms"):
965            result = False
966        self.log.info("Scenario 4: MT SMS at slot 1")
967        if not self._test_dds_switch_during_data_transfer(
968            slot_0_nw_gen="volte",
969            slot_1_nw_gen="volte",
970            call_slot=1,
971            call_direction="mt",
972            call_or_sms_or_mms="sms"):
973            result = False
974        return result
975
976    @test_tracker_info(uuid="5e61f007-7b01-4dee-ac2d-fd2225ac3dbd")
977    @TelephonyBaseTest.tel_test_wrap
978    def test_dds_switch_youtube_and_mms_volte(self):
979        result = True
980        self.log.info("Scenario 1: MO MMS at slot 0")
981        if not self._test_dds_switch_during_data_transfer(
982            slot_0_nw_gen="volte",
983            slot_1_nw_gen="volte",
984            call_slot=0,
985            call_direction="mo",
986            call_or_sms_or_mms="mms"):
987            result = False
988        self.log.info("Scenario 2: MO MMS at slot 1")
989        if not self._test_dds_switch_during_data_transfer(
990            slot_0_nw_gen="volte",
991            slot_1_nw_gen="volte",
992            call_slot=1,
993            call_direction="mo",
994            call_or_sms_or_mms="mms"):
995            result = False
996        self.log.info("Scenario 3: MT MMS at slot 0")
997        if not self._test_dds_switch_during_data_transfer(
998            slot_0_nw_gen="volte",
999            slot_1_nw_gen="volte",
1000            call_slot=0,
1001            call_direction="mt",
1002            call_or_sms_or_mms="mms"):
1003            result = False
1004        self.log.info("Scenario 4: MT MMS at slot 1")
1005        if not self._test_dds_switch_during_data_transfer(
1006            slot_0_nw_gen="volte",
1007            slot_1_nw_gen="volte",
1008            call_slot=1,
1009            call_direction="mt",
1010            call_or_sms_or_mms="mms"):
1011            result = False
1012        return result
1013
1014    @test_tracker_info(uuid="47b9bf08-2c17-4646-b1d3-3d191318bc0d")
1015    @TelephonyBaseTest.tel_test_wrap
1016    def test_dds_switch_voice_call_mo_volte_psim(self):
1017        return self._test_dds_switch_during_data_transfer(
1018            "volte", "volte", 0, "mo", "call", False)
1019
1020    @test_tracker_info(uuid="eef31675-f0a3-4086-8474-d67614ede507")
1021    @TelephonyBaseTest.tel_test_wrap
1022    def test_dds_switch_voice_call_mo_volte_esim(self):
1023        return self._test_dds_switch_during_data_transfer(
1024            "volte", "volte", 1, "mo", "call", False)
1025
1026    @test_tracker_info(uuid="ce8b6ce8-d314-49ca-bead-391c15809235")
1027    @TelephonyBaseTest.tel_test_wrap
1028    def test_dds_switch_voice_call_mt_volte_psim(self):
1029        return self._test_dds_switch_during_data_transfer(
1030            "volte", "volte", 0, "mt", "call", False)
1031
1032    @test_tracker_info(uuid="64c941e0-fcab-43ca-a988-f667398f1997")
1033    @TelephonyBaseTest.tel_test_wrap
1034    def test_dds_switch_voice_call_mt_volte_esim(self):
1035        return self._test_dds_switch_during_data_transfer(
1036            "volte", "volte", 1, "mt", "call", False)
1037
1038    @test_tracker_info(uuid="28963e86-f8ce-4324-8ce8-8e6628fd2d99")
1039    @TelephonyBaseTest.tel_test_wrap
1040    def test_dds_switch_sms_volte(self):
1041        result = True
1042        self.log.info("Scenario 1: MO SMS at slot 0")
1043        if not self._test_dds_switch_during_data_transfer(
1044            "volte", "volte", 0, "mo", "sms", False):
1045            result = False
1046        self.log.info("Scenario 2: MO SMS at slot 1")
1047        if not self._test_dds_switch_during_data_transfer(
1048            "volte", "volte", 1, "mo", "sms", False):
1049            result = False
1050        self.log.info("Scenario 3: MT SMS at slot 0")
1051        if not self._test_dds_switch_during_data_transfer(
1052            "volte", "volte", 0, "mt", "sms", False):
1053            result = False
1054        self.log.info("Scenario 4: MT SMS at slot 1")
1055        if not self._test_dds_switch_during_data_transfer(
1056            "volte", "volte", 1, "mt", "sms", False):
1057            result = False
1058        return result
1059
1060    @test_tracker_info(uuid="915c0eb3-1a84-4eb0-8cba-cafe32c0d604")
1061    @TelephonyBaseTest.tel_test_wrap
1062    def test_dds_switch_mms_volte(self):
1063        result = True
1064        self.log.info("Scenario 1: MO MMS at slot 0")
1065        if not self._test_dds_switch_during_data_transfer(
1066            "volte", "volte", 0, "mo", "mms", False):
1067            result = False
1068        self.log.info("Scenario 2: MO MMS at slot 1")
1069        if not self._test_dds_switch_during_data_transfer(
1070            "volte", "volte", 1, "mo", "mms", False):
1071            result = False
1072        self.log.info("Scenario 3: MT MMS at slot 0")
1073        if not self._test_dds_switch_during_data_transfer(
1074            "volte", "volte", 0, "mt", "mms", False):
1075            result = False
1076        self.log.info("Scenario 4: MT MMS at slot 1")
1077        if not self._test_dds_switch_during_data_transfer(
1078            "volte", "volte", 1, "mt", "mms", False):
1079            result = False
1080        return result
1081
1082    @test_tracker_info(uuid="d58939c0-d246-453e-9eac-54152d6dc70c")
1083    @TelephonyBaseTest.tel_test_wrap
1084    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_apm_cycling(self):
1085        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1086            slot_0_nw_gen="volte",
1087            slot_1_nw_gen="volte",
1088            call_slot=0,
1089            call_direction="mo",
1090            streaming=True,
1091            airplane_mode_cycling=True,
1092            enable_volte=[True, True],
1093            enable_wfc=[True, True],
1094            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1095
1096    @test_tracker_info(uuid="61dfb957-6349-4190-8e63-973558b1292b")
1097    @TelephonyBaseTest.tel_test_wrap
1098    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_apm_cycling(self):
1099        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1100            slot_0_nw_gen="volte",
1101            slot_1_nw_gen="volte",
1102            call_slot=1,
1103            call_direction="mo",
1104            streaming=True,
1105            airplane_mode_cycling=True,
1106            enable_volte=[True, True],
1107            enable_wfc=[True, True],
1108            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1109
1110    @test_tracker_info(uuid="127377f2-973f-4758-b138-4c0dd276f893")
1111    @TelephonyBaseTest.tel_test_wrap
1112    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_apm_cycling(self):
1113        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1114            slot_0_nw_gen="volte",
1115            slot_1_nw_gen="volte",
1116            call_slot=0,
1117            call_direction="mt",
1118            streaming=True,
1119            airplane_mode_cycling=True,
1120            enable_volte=[True, True],
1121            enable_wfc=[True, True],
1122            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1123
1124    @test_tracker_info(uuid="a149d357-27a7-490d-a30b-70f44cd43ac7")
1125    @TelephonyBaseTest.tel_test_wrap
1126    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_apm_cycling(self):
1127        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1128            slot_0_nw_gen="volte",
1129            slot_1_nw_gen="volte",
1130            call_slot=1,
1131            call_direction="mt",
1132            streaming=True,
1133            airplane_mode_cycling=True,
1134            enable_volte=[True, True],
1135            enable_wfc=[True, True],
1136            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1137
1138    @test_tracker_info(uuid="8823e87c-0e4d-435d-a17f-84e1b65c1012")
1139    @TelephonyBaseTest.tel_test_wrap
1140    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_wifi_on_apm_cycling(self):
1141        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1142            slot_0_nw_gen="volte",
1143            slot_1_nw_gen="volte",
1144            call_slot=0,
1145            call_direction="mo",
1146            streaming=True,
1147            airplane_mode_cycling=True,
1148            enable_volte=[True, True],
1149            enable_wfc=[True, True],
1150            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1151            is_wifi_connected=True)
1152
1153    @test_tracker_info(uuid="bd038a77-baa6-483d-9af0-fe18d50d7f1f")
1154    @TelephonyBaseTest.tel_test_wrap
1155    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_wifi_on_apm_cycling(self):
1156        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1157            slot_0_nw_gen="volte",
1158            slot_1_nw_gen="volte",
1159            call_slot=1,
1160            call_direction="mo",
1161            streaming=True,
1162            airplane_mode_cycling=True,
1163            enable_volte=[True, True],
1164            enable_wfc=[True, True],
1165            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1166            is_wifi_connected=True)
1167
1168    @test_tracker_info(uuid="3f96fb8a-d4ee-49b8-8958-45cd509ed7b8")
1169    @TelephonyBaseTest.tel_test_wrap
1170    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_wifi_on_apm_cycling(self):
1171        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1172            slot_0_nw_gen="volte",
1173            slot_1_nw_gen="volte",
1174            call_slot=0,
1175            call_direction="mt",
1176            streaming=True,
1177            airplane_mode_cycling=True,
1178            enable_volte=[True, True],
1179            enable_wfc=[True, True],
1180            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1181            is_wifi_connected=True)
1182
1183    @test_tracker_info(uuid="1f89da8b-e559-4e96-afc7-0d2127616c56")
1184    @TelephonyBaseTest.tel_test_wrap
1185    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_wifi_on_apm_cycling(self):
1186        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1187            slot_0_nw_gen="volte",
1188            slot_1_nw_gen="volte",
1189            call_slot=1,
1190            call_direction="mt",
1191            streaming=True,
1192            airplane_mode_cycling=True,
1193            enable_volte=[True, True],
1194            enable_wfc=[True, True],
1195            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1196            is_wifi_connected=True)
1197
1198    @test_tracker_info(uuid="bc522b4d-2d26-4b5f-b82c-f92356f103d0")
1199    @TelephonyBaseTest.tel_test_wrap
1200    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_volte_on_apm_cycling(self):
1201        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1202            slot_0_nw_gen="wfc",
1203            slot_1_nw_gen="wfc",
1204            call_slot=0,
1205            call_direction="mo",
1206            streaming=True,
1207            airplane_mode_cycling=True,
1208            enable_volte=[True, True],
1209            enable_wfc=[True, True],
1210            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1211            is_airplane_mode=True)
1212
1213    @test_tracker_info(uuid="970ccdb4-c7b3-4b56-b93b-f811407c82cb")
1214    @TelephonyBaseTest.tel_test_wrap
1215    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_volte_on_apm_cycling(self):
1216        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1217            slot_0_nw_gen="wfc",
1218            slot_1_nw_gen="wfc",
1219            call_slot=1,
1220            call_direction="mo",
1221            streaming=True,
1222            airplane_mode_cycling=True,
1223            enable_volte=[True, True],
1224            enable_wfc=[True, True],
1225            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1226            is_airplane_mode=True)
1227
1228    @test_tracker_info(uuid="26c8b63e-631c-42d0-868b-03c2db6181b7")
1229    @TelephonyBaseTest.tel_test_wrap
1230    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_volte_on_apm_cycling(self):
1231        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1232            slot_0_nw_gen="wfc",
1233            slot_1_nw_gen="wfc",
1234            call_slot=0,
1235            call_direction="mo",
1236            streaming=True,
1237            airplane_mode_cycling=True,
1238            enable_volte=[True, True],
1239            enable_wfc=[True, True],
1240            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1241            is_airplane_mode=False)
1242
1243    @test_tracker_info(uuid="efd73091-8667-42a3-8551-eafa497fc383")
1244    @TelephonyBaseTest.tel_test_wrap
1245    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_volte_on_apm_cycling(self):
1246        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1247            slot_0_nw_gen="wfc",
1248            slot_1_nw_gen="wfc",
1249            call_slot=1,
1250            call_direction="mo",
1251            streaming=True,
1252            airplane_mode_cycling=True,
1253            enable_volte=[True, True],
1254            enable_wfc=[True, True],
1255            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1256            is_airplane_mode=False)
1257
1258    @test_tracker_info(uuid="618768b9-83c2-4ab7-b1fb-10a4037c5834")
1259    @TelephonyBaseTest.tel_test_wrap
1260    def test_dds_switch_voice_call_mt_wfc_psim_cellular_preferred_apm_on_with_volte_on_apm_cycling(self):
1261        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1262            slot_0_nw_gen="wfc",
1263            slot_1_nw_gen="wfc",
1264            call_slot=0,
1265            call_direction="mt",
1266            streaming=True,
1267            airplane_mode_cycling=True,
1268            enable_volte=[True, True],
1269            enable_wfc=[True, True],
1270            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1271            is_airplane_mode=True)
1272
1273    @test_tracker_info(uuid="24d695a1-7421-4038-bb07-4d81f3f6d05b")
1274    @TelephonyBaseTest.tel_test_wrap
1275    def test_dds_switch_voice_call_mt_wfc_esim_cellular_preferred_apm_on_with_volte_on_apm_cycling(self):
1276        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1277            slot_0_nw_gen="wfc",
1278            slot_1_nw_gen="wfc",
1279            call_slot=1,
1280            call_direction="mt",
1281            streaming=True,
1282            airplane_mode_cycling=True,
1283            enable_volte=[True, True],
1284            enable_wfc=[True, True],
1285            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1286            is_airplane_mode=True)
1287
1288    @test_tracker_info(uuid="2f28db8f-c0c3-4cf6-9f6f-439c9e32d9f3")
1289    @TelephonyBaseTest.tel_test_wrap
1290    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_volte_on_apm_cycling(self):
1291        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1292            slot_0_nw_gen="wfc",
1293            slot_1_nw_gen="wfc",
1294            call_slot=0,
1295            call_direction="mt",
1296            streaming=True,
1297            airplane_mode_cycling=True,
1298            enable_volte=[True, True],
1299            enable_wfc=[True, True],
1300            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1301            is_airplane_mode=False)
1302
1303    @test_tracker_info(uuid="60d851c5-f79d-46e7-b921-b510bcdc9024")
1304    @TelephonyBaseTest.tel_test_wrap
1305    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_volte_on_apm_cycling(self):
1306        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1307            slot_0_nw_gen="wfc",
1308            slot_1_nw_gen="wfc",
1309            call_slot=1,
1310            call_direction="mt",
1311            streaming=True,
1312            airplane_mode_cycling=True,
1313            enable_volte=[True, True],
1314            enable_wfc=[True, True],
1315            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1316            is_airplane_mode=False)
1317
1318    @test_tracker_info(uuid="092b1e43-3de4-4b08-b526-4f3f1e71a47a")
1319    @TelephonyBaseTest.tel_test_wrap
1320    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_cellular_data_cycling(self):
1321        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1322            slot_0_nw_gen="volte",
1323            slot_1_nw_gen="volte",
1324            call_slot=0,
1325            call_direction="mo",
1326            streaming=True,
1327            cellular_data_cycling=True,
1328            enable_volte=[True, True],
1329            enable_wfc=[True, True],
1330            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1331
1332    @test_tracker_info(uuid="3b876b39-1cfb-4adb-a45c-11a02890f8e1")
1333    @TelephonyBaseTest.tel_test_wrap
1334    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_cellular_data_cycling(self):
1335        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1336            slot_0_nw_gen="volte",
1337            slot_1_nw_gen="volte",
1338            call_slot=1,
1339            call_direction="mo",
1340            streaming=True,
1341            cellular_data_cycling=True,
1342            enable_volte=[True, True],
1343            enable_wfc=[True, True],
1344            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1345
1346    @test_tracker_info(uuid="96c42ffb-5b4e-4ab0-b52a-8b498a25f759")
1347    @TelephonyBaseTest.tel_test_wrap
1348    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_cellular_data_cycling(self):
1349        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1350            slot_0_nw_gen="volte",
1351            slot_1_nw_gen="volte",
1352            call_slot=0,
1353            call_direction="mt",
1354            streaming=True,
1355            cellular_data_cycling=True,
1356            enable_volte=[True, True],
1357            enable_wfc=[True, True],
1358            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1359
1360    @test_tracker_info(uuid="fbd4c30c-fef9-4100-b704-eb27d3bcb7ae")
1361    @TelephonyBaseTest.tel_test_wrap
1362    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_cellular_data_cycling(self):
1363        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1364            slot_0_nw_gen="volte",
1365            slot_1_nw_gen="volte",
1366            call_slot=1,
1367            call_direction="mt",
1368            streaming=True,
1369            cellular_data_cycling=True,
1370            enable_volte=[True, True],
1371            enable_wfc=[True, True],
1372            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1373
1374    @test_tracker_info(uuid="fbd88b9d-e27b-4c06-a983-a780d0c00623")
1375    @TelephonyBaseTest.tel_test_wrap
1376    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_wifi_on_cellular_data_cycling(self):
1377        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1378            slot_0_nw_gen="volte",
1379            slot_1_nw_gen="volte",
1380            call_slot=0,
1381            call_direction="mo",
1382            streaming=True,
1383            cellular_data_cycling=True,
1384            enable_volte=[True, True],
1385            enable_wfc=[True, True],
1386            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1387            is_wifi_connected=True)
1388
1389    @test_tracker_info(uuid="0fabca6f-28c4-4843-af70-f33d806d8dc1")
1390    @TelephonyBaseTest.tel_test_wrap
1391    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_wifi_on_cellular_data_cycling(self):
1392        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1393            slot_0_nw_gen="volte",
1394            slot_1_nw_gen="volte",
1395            call_slot=1,
1396            call_direction="mo",
1397            streaming=True,
1398            cellular_data_cycling=True,
1399            enable_volte=[True, True],
1400            enable_wfc=[True, True],
1401            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1402            is_wifi_connected=True)
1403
1404    @test_tracker_info(uuid="9b060264-69d8-437e-9981-b86e213952c5")
1405    @TelephonyBaseTest.tel_test_wrap
1406    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_wifi_on_cellular_data_cycling(self):
1407        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1408            slot_0_nw_gen="volte",
1409            slot_1_nw_gen="volte",
1410            call_slot=0,
1411            call_direction="mt",
1412            streaming=True,
1413            cellular_data_cycling=True,
1414            enable_volte=[True, True],
1415            enable_wfc=[True, True],
1416            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1417            is_wifi_connected=True)
1418
1419    @test_tracker_info(uuid="3a2effa4-728a-4160-9e0c-2aeafc7ba153")
1420    @TelephonyBaseTest.tel_test_wrap
1421    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_wifi_on_cellular_data_cycling(self):
1422        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1423            slot_0_nw_gen="volte",
1424            slot_1_nw_gen="volte",
1425            call_slot=1,
1426            call_direction="mt",
1427            streaming=True,
1428            cellular_data_cycling=True,
1429            enable_volte=[True, True],
1430            enable_wfc=[True, True],
1431            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1432            is_wifi_connected=True)
1433
1434    @test_tracker_info(uuid="ad491362-8bcc-4097-84af-932878002ce6")
1435    @TelephonyBaseTest.tel_test_wrap
1436    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_volte_on_cellular_data_cycling(self):
1437        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1438            slot_0_nw_gen="wfc",
1439            slot_1_nw_gen="wfc",
1440            call_slot=0,
1441            call_direction="mo",
1442            streaming=True,
1443            cellular_data_cycling=True,
1444            enable_volte=[True, True],
1445            enable_wfc=[True, True],
1446            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1447            is_airplane_mode=True)
1448
1449    @test_tracker_info(uuid="c137fe4e-380b-4dc5-8996-c8c5654596f7")
1450    @TelephonyBaseTest.tel_test_wrap
1451    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_volte_on_cellular_data_cycling(self):
1452        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1453            slot_0_nw_gen="wfc",
1454            slot_1_nw_gen="wfc",
1455            call_slot=1,
1456            call_direction="mo",
1457            streaming=True,
1458            cellular_data_cycling=True,
1459            enable_volte=[True, True],
1460            enable_wfc=[True, True],
1461            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1462            is_airplane_mode=True)
1463
1464    @test_tracker_info(uuid="e7936ce8-1652-4b21-b3f0-5327084b823c")
1465    @TelephonyBaseTest.tel_test_wrap
1466    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_volte_on_cellular_data_cycling(self):
1467        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1468            slot_0_nw_gen="wfc",
1469            slot_1_nw_gen="wfc",
1470            call_slot=0,
1471            call_direction="mo",
1472            streaming=True,
1473            cellular_data_cycling=True,
1474            enable_volte=[True, True],
1475            enable_wfc=[True, True],
1476            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1477            is_airplane_mode=False)
1478
1479    @test_tracker_info(uuid="86db06b4-907f-4085-af8e-75c983831bb0")
1480    @TelephonyBaseTest.tel_test_wrap
1481    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_volte_on_cellular_data_cycling(self):
1482        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1483            slot_0_nw_gen="wfc",
1484            slot_1_nw_gen="wfc",
1485            call_slot=1,
1486            call_direction="mo",
1487            streaming=True,
1488            cellular_data_cycling=True,
1489            enable_volte=[True, True],
1490            enable_wfc=[True, True],
1491            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1492            is_airplane_mode=False)
1493
1494    @test_tracker_info(uuid="e43b23b5-022a-4830-9110-839ece333f6f")
1495    @TelephonyBaseTest.tel_test_wrap
1496    def test_dds_switch_voice_call_mt_wfc_psim_cellular_preferred_apm_on_with_volte_on_cellular_data_cycling(self):
1497        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1498            slot_0_nw_gen="wfc",
1499            slot_1_nw_gen="wfc",
1500            call_slot=0,
1501            call_direction="mt",
1502            streaming=True,
1503            cellular_data_cycling=True,
1504            enable_volte=[True, True],
1505            enable_wfc=[True, True],
1506            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1507            is_airplane_mode=True)
1508
1509    @test_tracker_info(uuid="00d0bfc2-2121-4ba9-9dd7-72bf78380121")
1510    @TelephonyBaseTest.tel_test_wrap
1511    def test_dds_switch_voice_call_mt_wfc_esim_cellular_preferred_apm_on_with_volte_on_cellular_data_cycling(self):
1512        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1513            slot_0_nw_gen="wfc",
1514            slot_1_nw_gen="wfc",
1515            call_slot=1,
1516            call_direction="mt",
1517            streaming=True,
1518            cellular_data_cycling=True,
1519            enable_volte=[True, True],
1520            enable_wfc=[True, True],
1521            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1522            is_airplane_mode=True)
1523
1524    @test_tracker_info(uuid="4921a948-54d4-4945-81ea-02893d10b6e6")
1525    @TelephonyBaseTest.tel_test_wrap
1526    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_volte_on_cellular_data_cycling(self):
1527        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1528            slot_0_nw_gen="wfc",
1529            slot_1_nw_gen="wfc",
1530            call_slot=0,
1531            call_direction="mt",
1532            streaming=True,
1533            cellular_data_cycling=True,
1534            enable_volte=[True, True],
1535            enable_wfc=[True, True],
1536            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1537            is_airplane_mode=False)
1538
1539    @test_tracker_info(uuid="ed4b8ba4-1b31-4e3c-9be3-0e184e324523")
1540    @TelephonyBaseTest.tel_test_wrap
1541    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_volte_on_cellular_data_cycling(self):
1542        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1543            slot_0_nw_gen="wfc",
1544            slot_1_nw_gen="wfc",
1545            call_slot=1,
1546            call_direction="mt",
1547            streaming=True,
1548            cellular_data_cycling=True,
1549            enable_volte=[True, True],
1550            enable_wfc=[True, True],
1551            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1552            is_airplane_mode=False)
1553
1554    @test_tracker_info(uuid="1fb43960-51dd-4be9-adf1-51c84cb8d85a")
1555    @TelephonyBaseTest.tel_test_wrap
1556    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_wifi_cycling(self):
1557        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1558            slot_0_nw_gen="volte",
1559            slot_1_nw_gen="volte",
1560            call_slot=0,
1561            call_direction="mo",
1562            streaming=True,
1563            wifi_cycling=True,
1564            enable_volte=[True, True],
1565            enable_wfc=[True, True],
1566            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1567
1568    @test_tracker_info(uuid="1052e02f-5a4b-4826-9c47-9ab6d142f300")
1569    @TelephonyBaseTest.tel_test_wrap
1570    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_wifi_cycling(self):
1571        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1572            slot_0_nw_gen="volte",
1573            slot_1_nw_gen="volte",
1574            call_slot=1,
1575            call_direction="mo",
1576            streaming=True,
1577            wifi_cycling=True,
1578            enable_volte=[True, True],
1579            enable_wfc=[True, True],
1580            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1581
1582    @test_tracker_info(uuid="23bb1991-6ff1-4528-aeee-1ec0c7b525be")
1583    @TelephonyBaseTest.tel_test_wrap
1584    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_wifi_cycling(self):
1585        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1586            slot_0_nw_gen="volte",
1587            slot_1_nw_gen="volte",
1588            call_slot=0,
1589            call_direction="mt",
1590            streaming=True,
1591            wifi_cycling=True,
1592            enable_volte=[True, True],
1593            enable_wfc=[True, True],
1594            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1595
1596    @test_tracker_info(uuid="1d5842c5-91f5-4c87-9f65-67891d255d43")
1597    @TelephonyBaseTest.tel_test_wrap
1598    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_wifi_cycling(self):
1599        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1600            slot_0_nw_gen="volte",
1601            slot_1_nw_gen="volte",
1602            call_slot=1,
1603            call_direction="mt",
1604            streaming=True,
1605            wifi_cycling=True,
1606            enable_volte=[True, True],
1607            enable_wfc=[True, True],
1608            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED])
1609
1610    @test_tracker_info(uuid="380bd592-5437-4e16-9564-5f47b066cab2")
1611    @TelephonyBaseTest.tel_test_wrap
1612    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_on_wifi_on_wifi_cycling(self):
1613        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1614            slot_0_nw_gen="volte",
1615            slot_1_nw_gen="volte",
1616            call_slot=0,
1617            call_direction="mo",
1618            streaming=True,
1619            wifi_cycling=True,
1620            enable_volte=[True, True],
1621            enable_wfc=[True, True],
1622            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1623            is_wifi_connected=True)
1624
1625    @test_tracker_info(uuid="90bb2647-71f1-44cd-bff3-5bbb720e59b7")
1626    @TelephonyBaseTest.tel_test_wrap
1627    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_on_wifi_on_wifi_cycling(self):
1628        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1629            slot_0_nw_gen="volte",
1630            slot_1_nw_gen="volte",
1631            call_slot=1,
1632            call_direction="mo",
1633            streaming=True,
1634            wifi_cycling=True,
1635            enable_volte=[True, True],
1636            enable_wfc=[True, True],
1637            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1638            is_wifi_connected=True)
1639
1640    @test_tracker_info(uuid="5bca72c8-62d0-41bf-8888-310cd235dac4")
1641    @TelephonyBaseTest.tel_test_wrap
1642    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_on_wifi_on_wifi_cycling(self):
1643        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1644            slot_0_nw_gen="volte",
1645            slot_1_nw_gen="volte",
1646            call_slot=0,
1647            call_direction="mt",
1648            streaming=True,
1649            wifi_cycling=True,
1650            enable_volte=[True, True],
1651            enable_wfc=[True, True],
1652            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1653            is_wifi_connected=True)
1654
1655    @test_tracker_info(uuid="13805ecf-3cf9-44c8-98bc-a099edb36340")
1656    @TelephonyBaseTest.tel_test_wrap
1657    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_on_wifi_on_wifi_cycling(self):
1658        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1659            slot_0_nw_gen="volte",
1660            slot_1_nw_gen="volte",
1661            call_slot=1,
1662            call_direction="mt",
1663            streaming=True,
1664            wifi_cycling=True,
1665            enable_volte=[True, True],
1666            enable_wfc=[True, True],
1667            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1668            is_wifi_connected=True)
1669
1670    @test_tracker_info(uuid="33ed3dee-581f-4ae8-b236-1317377a6ca1")
1671    @TelephonyBaseTest.tel_test_wrap
1672    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_with_volte_on_wifi_cycling(self):
1673        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1674            slot_0_nw_gen="wfc",
1675            slot_1_nw_gen="wfc",
1676            call_slot=0,
1677            call_direction="mo",
1678            streaming=True,
1679            wifi_cycling=True,
1680            enable_volte=[True, True],
1681            enable_wfc=[True, True],
1682            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1683            is_airplane_mode=True)
1684
1685    @test_tracker_info(uuid="88391458-6886-483f-a997-c62fd6dfd0b8")
1686    @TelephonyBaseTest.tel_test_wrap
1687    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_with_volte_on_wifi_cycling(self):
1688        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1689            slot_0_nw_gen="wfc",
1690            slot_1_nw_gen="wfc",
1691            call_slot=1,
1692            call_direction="mo",
1693            streaming=True,
1694            wifi_cycling=True,
1695            enable_volte=[True, True],
1696            enable_wfc=[True, True],
1697            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1698            is_airplane_mode=True)
1699
1700    @test_tracker_info(uuid="966bcb75-dd2d-4400-a880-e7407989ee52")
1701    @TelephonyBaseTest.tel_test_wrap
1702    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_with_volte_on_wifi_cycling(self):
1703        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1704            slot_0_nw_gen="wfc",
1705            slot_1_nw_gen="wfc",
1706            call_slot=0,
1707            call_direction="mo",
1708            streaming=True,
1709            wifi_cycling=True,
1710            enable_volte=[True, True],
1711            enable_wfc=[True, True],
1712            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1713            is_airplane_mode=False)
1714
1715    @test_tracker_info(uuid="7ff48189-5b4b-4b2d-a96a-fa66e86d0596")
1716    @TelephonyBaseTest.tel_test_wrap
1717    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_with_volte_on_wifi_cycling(self):
1718        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1719            slot_0_nw_gen="wfc",
1720            slot_1_nw_gen="wfc",
1721            call_slot=1,
1722            call_direction="mo",
1723            streaming=True,
1724            wifi_cycling=True,
1725            enable_volte=[True, True],
1726            enable_wfc=[True, True],
1727            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1728            is_airplane_mode=False)
1729
1730    @test_tracker_info(uuid="ab503377-7150-4a6d-a7c1-b21009a69402")
1731    @TelephonyBaseTest.tel_test_wrap
1732    def test_dds_switch_voice_call_mt_psim_wfc_cellular_preferred_apm_on_with_with_volte_on_wifi_cycling(self):
1733        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1734            slot_0_nw_gen="wfc",
1735            slot_1_nw_gen="wfc",
1736            call_slot=0,
1737            call_direction="mt",
1738            streaming=True,
1739            wifi_cycling=True,
1740            enable_volte=[True, True],
1741            enable_wfc=[True, True],
1742            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1743            is_airplane_mode=True)
1744
1745    @test_tracker_info(uuid="7f02ee60-19e9-4602-8f6d-a13b976a6bba")
1746    @TelephonyBaseTest.tel_test_wrap
1747    def test_dds_switch_voice_call_mt_esim_wfc_cellular_preferred_apm_on_with_with_volte_on_wifi_cycling(self):
1748        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1749            slot_0_nw_gen="wfc",
1750            slot_1_nw_gen="wfc",
1751            call_slot=1,
1752            call_direction="mt",
1753            streaming=True,
1754            wifi_cycling=True,
1755            enable_volte=[True, True],
1756            enable_wfc=[True, True],
1757            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1758            is_airplane_mode=True)
1759
1760    @test_tracker_info(uuid="e93fa3ac-c5cd-4e21-b872-5172aa22d030")
1761    @TelephonyBaseTest.tel_test_wrap
1762    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_with_volte_on_wifi_cycling(self):
1763        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1764            slot_0_nw_gen="wfc",
1765            slot_1_nw_gen="wfc",
1766            call_slot=0,
1767            call_direction="mt",
1768            streaming=True,
1769            wifi_cycling=True,
1770            enable_volte=[True, True],
1771            enable_wfc=[True, True],
1772            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1773            is_airplane_mode=False)
1774
1775    @test_tracker_info(uuid="c2af6998-f702-4e36-bbaa-f099a307b21a")
1776    @TelephonyBaseTest.tel_test_wrap
1777    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_with_volte_on_wifi_cycling(self):
1778        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1779            slot_0_nw_gen="wfc",
1780            slot_1_nw_gen="wfc",
1781            call_slot=1,
1782            call_direction="mt",
1783            streaming=True,
1784            wifi_cycling=True,
1785            enable_volte=[True, True],
1786            enable_wfc=[True, True],
1787            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
1788            is_airplane_mode=False)
1789
1790    @test_tracker_info(uuid="45ba6e90-bdaa-4dc0-a504-c596bafdfaad")
1791    @TelephonyBaseTest.tel_test_wrap
1792    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_off_apm_cycling(self):
1793        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1794            slot_0_nw_gen="volte",
1795            slot_1_nw_gen="volte",
1796            call_slot=0,
1797            call_direction="mo",
1798            streaming=True,
1799            airplane_mode_cycling=True,
1800            enable_volte=[True, True],
1801            enable_wfc=[False, False],
1802            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1803
1804    @test_tracker_info(uuid="1b573f40-3eaf-4149-baad-2e73e5bf15f4")
1805    @TelephonyBaseTest.tel_test_wrap
1806    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_off_apm_cycling(self):
1807        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1808            slot_0_nw_gen="volte",
1809            slot_1_nw_gen="volte",
1810            call_slot=1,
1811            call_direction="mo",
1812            streaming=True,
1813            airplane_mode_cycling=True,
1814            enable_volte=[True, True],
1815            enable_wfc=[False, False],
1816            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1817
1818    @test_tracker_info(uuid="13511fb6-2984-40c3-b1b9-22f27f241c07")
1819    @TelephonyBaseTest.tel_test_wrap
1820    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_off_apm_cycling(self):
1821        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1822            slot_0_nw_gen="volte",
1823            slot_1_nw_gen="volte",
1824            call_slot=0,
1825            call_direction="mt",
1826            streaming=True,
1827            airplane_mode_cycling=True,
1828            enable_volte=[True, True],
1829            enable_wfc=[False, False],
1830            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1831
1832    @test_tracker_info(uuid="61cf33d1-e1b2-427a-bb38-29a4c7566947")
1833    @TelephonyBaseTest.tel_test_wrap
1834    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_off_apm_cycling(self):
1835        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1836            slot_0_nw_gen="volte",
1837            slot_1_nw_gen="volte",
1838            call_slot=1,
1839            call_direction="mt",
1840            streaming=True,
1841            airplane_mode_cycling=True,
1842            enable_volte=[True, True],
1843            enable_wfc=[False, False],
1844            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1845
1846    @test_tracker_info(uuid="31a2a741-c825-46f8-8e0a-8487fab9940e")
1847    @TelephonyBaseTest.tel_test_wrap
1848    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_off_cellular_data_cycling(self):
1849        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1850            slot_0_nw_gen="volte",
1851            slot_1_nw_gen="volte",
1852            call_slot=0,
1853            call_direction="mo",
1854            streaming=True,
1855            cellular_data_cycling=True,
1856            enable_volte=[True, True],
1857            enable_wfc=[False, False],
1858            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1859
1860    @test_tracker_info(uuid="9fb2a85f-08b3-4d5d-9e03-3f7f67039148")
1861    @TelephonyBaseTest.tel_test_wrap
1862    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_off_cellular_data_cycling(self):
1863        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1864            slot_0_nw_gen="volte",
1865            slot_1_nw_gen="volte",
1866            call_slot=1,
1867            call_direction="mo",
1868            streaming=True,
1869            cellular_data_cycling=True,
1870            enable_volte=[True, True],
1871            enable_wfc=[False, False],
1872            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1873
1874    @test_tracker_info(uuid="30eba519-b349-4a75-9f31-3fea0d1a8447")
1875    @TelephonyBaseTest.tel_test_wrap
1876    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_off_cellular_data_cycling(self):
1877        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1878            slot_0_nw_gen="volte",
1879            slot_1_nw_gen="volte",
1880            call_slot=0,
1881            call_direction="mt",
1882            streaming=True,
1883            cellular_data_cycling=True,
1884            enable_volte=[True, True],
1885            enable_wfc=[False, False],
1886            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1887
1888    @test_tracker_info(uuid="37240938-3ce1-4ad2-b35a-a8862dc2c70f")
1889    @TelephonyBaseTest.tel_test_wrap
1890    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_off_cellular_data_cycling(self):
1891        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1892            slot_0_nw_gen="volte",
1893            slot_1_nw_gen="volte",
1894            call_slot=1,
1895            call_direction="mt",
1896            streaming=True,
1897            cellular_data_cycling=True,
1898            enable_volte=[True, True],
1899            enable_wfc=[False, False],
1900            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1901
1902    @test_tracker_info(uuid="a7321b9c-fb2c-4a03-9566-05e4244ae6fd")
1903    @TelephonyBaseTest.tel_test_wrap
1904    def test_dds_switch_voice_call_mo_volte_psim_with_wfc_off_wifi_cycling(self):
1905        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1906            slot_0_nw_gen="volte",
1907            slot_1_nw_gen="volte",
1908            call_slot=0,
1909            call_direction="mo",
1910            streaming=True,
1911            wifi_cycling=True,
1912            enable_volte=[True, True],
1913            enable_wfc=[False, False],
1914            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1915
1916    @test_tracker_info(uuid="6de8d678-2f72-41ea-9ed9-47b27afee038")
1917    @TelephonyBaseTest.tel_test_wrap
1918    def test_dds_switch_voice_call_mo_volte_esim_with_wfc_off_wifi_cycling(self):
1919        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1920            slot_0_nw_gen="volte",
1921            slot_1_nw_gen="volte",
1922            call_slot=1,
1923            call_direction="mo",
1924            streaming=True,
1925            wifi_cycling=True,
1926            enable_volte=[True, True],
1927            enable_wfc=[False, False],
1928            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1929
1930    @test_tracker_info(uuid="7bc16dcf-6dab-4eec-931d-9b342caa7a32")
1931    @TelephonyBaseTest.tel_test_wrap
1932    def test_dds_switch_voice_call_mt_volte_psim_with_wfc_off_wifi_cycling(self):
1933        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1934            slot_0_nw_gen="volte",
1935            slot_1_nw_gen="volte",
1936            call_slot=0,
1937            call_direction="mt",
1938            streaming=True,
1939            wifi_cycling=True,
1940            enable_volte=[True, True],
1941            enable_wfc=[False, False],
1942            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1943
1944    @test_tracker_info(uuid="9c13e51b-385d-4df6-90b7-33b5e185f225")
1945    @TelephonyBaseTest.tel_test_wrap
1946    def test_dds_switch_voice_call_mt_volte_esim_with_wfc_off_wifi_cycling(self):
1947        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1948            slot_0_nw_gen="volte",
1949            slot_1_nw_gen="volte",
1950            call_slot=1,
1951            call_direction="mt",
1952            streaming=True,
1953            wifi_cycling=True,
1954            enable_volte=[True, True],
1955            enable_wfc=[False, False],
1956            wfc_mode=[WFC_MODE_DISABLED, WFC_MODE_DISABLED])
1957
1958    @test_tracker_info(uuid="161341e7-5c2d-45f9-9b11-4f44d542cd01")
1959    @TelephonyBaseTest.tel_test_wrap
1960    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_volte_off_apm_cycling(self):
1961        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1962            slot_0_nw_gen="wfc",
1963            slot_1_nw_gen="wfc",
1964            call_slot=0,
1965            call_direction="mo",
1966            streaming=True,
1967            airplane_mode_cycling=True,
1968            enable_volte=[False, False],
1969            enable_wfc=[True, True],
1970            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1971            is_airplane_mode=True)
1972
1973    @test_tracker_info(uuid="4d43f92f-562f-4bf1-bc25-71410f14425c")
1974    @TelephonyBaseTest.tel_test_wrap
1975    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_volte_off_apm_cycling(self):
1976        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1977            slot_0_nw_gen="wfc",
1978            slot_1_nw_gen="wfc",
1979            call_slot=1,
1980            call_direction="mo",
1981            streaming=True,
1982            airplane_mode_cycling=True,
1983            enable_volte=[False, False],
1984            enable_wfc=[True, True],
1985            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
1986            is_airplane_mode=True)
1987
1988    @test_tracker_info(uuid="fe83e92d-c554-4f81-a447-d58300426da7")
1989    @TelephonyBaseTest.tel_test_wrap
1990    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_volte_off_apm_cycling(self):
1991        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
1992            slot_0_nw_gen="wfc",
1993            slot_1_nw_gen="wfc",
1994            call_slot=0,
1995            call_direction="mo",
1996            streaming=True,
1997            airplane_mode_cycling=True,
1998            enable_volte=[False, False],
1999            enable_wfc=[True, True],
2000            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2001            is_airplane_mode=False)
2002
2003    @test_tracker_info(uuid="76ba6834-1523-4ce8-80b9-079f2428da67")
2004    @TelephonyBaseTest.tel_test_wrap
2005    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_volte_off_apm_cycling(self):
2006        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2007            slot_0_nw_gen="wfc",
2008            slot_1_nw_gen="wfc",
2009            call_slot=1,
2010            call_direction="mo",
2011            streaming=True,
2012            airplane_mode_cycling=True,
2013            enable_volte=[False, False],
2014            enable_wfc=[True, True],
2015            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2016            is_airplane_mode=False)
2017
2018    @test_tracker_info(uuid="15289348-8e09-4997-b5a3-f66bb7e7dca1")
2019    @TelephonyBaseTest.tel_test_wrap
2020    def test_dds_switch_voice_call_mt_wfc_psim_cellular_preferred_apm_on_with_volte_off_apm_cycling(self):
2021        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2022            slot_0_nw_gen="wfc",
2023            slot_1_nw_gen="wfc",
2024            call_slot=0,
2025            call_direction="mt",
2026            streaming=True,
2027            airplane_mode_cycling=True,
2028            enable_volte=[False, False],
2029            enable_wfc=[True, True],
2030            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2031            is_airplane_mode=True)
2032
2033    @test_tracker_info(uuid="1ae4fa98-1ac3-4194-a483-097b7262415b")
2034    @TelephonyBaseTest.tel_test_wrap
2035    def test_dds_switch_voice_call_mt_wfc_esim_cellular_preferred_apm_on_with_volte_off_apm_cycling(self):
2036        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2037            slot_0_nw_gen="wfc",
2038            slot_1_nw_gen="wfc",
2039            call_slot=1,
2040            call_direction="mt",
2041            streaming=True,
2042            airplane_mode_cycling=True,
2043            enable_volte=[False, False],
2044            enable_wfc=[True, True],
2045            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2046            is_airplane_mode=True)
2047
2048    @test_tracker_info(uuid="13d0af2c-2870-4cbc-8a38-311f93cd4bd7")
2049    @TelephonyBaseTest.tel_test_wrap
2050    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_volte_off_apm_cycling(self):
2051        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2052            slot_0_nw_gen="wfc",
2053            slot_1_nw_gen="wfc",
2054            call_slot=0,
2055            call_direction="mt",
2056            streaming=True,
2057            airplane_mode_cycling=True,
2058            enable_volte=[False, False],
2059            enable_wfc=[True, True],
2060            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2061            is_airplane_mode=False)
2062
2063    @test_tracker_info(uuid="5fbe2002-a02f-4750-81e5-4a06d7b62740")
2064    @TelephonyBaseTest.tel_test_wrap
2065    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_volte_off_apm_cycling(self):
2066        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2067            slot_0_nw_gen="wfc",
2068            slot_1_nw_gen="wfc",
2069            call_slot=1,
2070            call_direction="mt",
2071            streaming=True,
2072            airplane_mode_cycling=True,
2073            enable_volte=[False, False],
2074            enable_wfc=[True, True],
2075            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2076            is_airplane_mode=False)
2077
2078    @test_tracker_info(uuid="f8f523d2-e432-45d4-a850-469a22894bc7")
2079    @TelephonyBaseTest.tel_test_wrap
2080    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_volte_off_cellular_data_cycling(self):
2081        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2082            slot_0_nw_gen="wfc",
2083            slot_1_nw_gen="wfc",
2084            call_slot=0,
2085            call_direction="mo",
2086            streaming=True,
2087            cellular_data_cycling=True,
2088            enable_volte=[False, False],
2089            enable_wfc=[True, True],
2090            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2091            is_airplane_mode=True)
2092
2093    @test_tracker_info(uuid="750a8690-f9dd-4779-b13f-4011f478f194")
2094    @TelephonyBaseTest.tel_test_wrap
2095    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_volte_off_cellular_data_cycling(self):
2096        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2097            slot_0_nw_gen="wfc",
2098            slot_1_nw_gen="wfc",
2099            call_slot=1,
2100            call_direction="mo",
2101            streaming=True,
2102            cellular_data_cycling=True,
2103            enable_volte=[False, False],
2104            enable_wfc=[True, True],
2105            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2106            is_airplane_mode=True)
2107
2108    @test_tracker_info(uuid="9fcda7e5-1705-4bbe-8f18-f005437c71f2")
2109    @TelephonyBaseTest.tel_test_wrap
2110    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_volte_off_cellular_data_cycling(self):
2111        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2112            slot_0_nw_gen="wfc",
2113            slot_1_nw_gen="wfc",
2114            call_slot=0,
2115            call_direction="mo",
2116            streaming=True,
2117            cellular_data_cycling=True,
2118            enable_volte=[False, False],
2119            enable_wfc=[True, True],
2120            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2121            is_airplane_mode=False)
2122
2123    @test_tracker_info(uuid="0e054729-945a-4f6f-ad29-4d832f0b11ed")
2124    @TelephonyBaseTest.tel_test_wrap
2125    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_volte_off_cellular_data_cycling(self):
2126        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2127            slot_0_nw_gen="wfc",
2128            slot_1_nw_gen="wfc",
2129            call_slot=1,
2130            call_direction="mo",
2131            streaming=True,
2132            cellular_data_cycling=True,
2133            enable_volte=[False, False],
2134            enable_wfc=[True, True],
2135            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2136            is_airplane_mode=False)
2137
2138    @test_tracker_info(uuid="2e387739-cc4a-4d48-aa56-83bf621835b1")
2139    @TelephonyBaseTest.tel_test_wrap
2140    def test_dds_switch_voice_call_mt_wfc_psim_cellular_preferred_apm_on_with_volte_off_cellular_data_cycling(self):
2141        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2142            slot_0_nw_gen="wfc",
2143            slot_1_nw_gen="wfc",
2144            call_slot=0,
2145            call_direction="mt",
2146            streaming=True,
2147            cellular_data_cycling=True,
2148            enable_volte=[False, False],
2149            enable_wfc=[True, True],
2150            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2151            is_airplane_mode=True)
2152
2153    @test_tracker_info(uuid="a0e2deda-9148-4665-abc8-7665e3818d06")
2154    @TelephonyBaseTest.tel_test_wrap
2155    def test_dds_switch_voice_call_mt_wfc_esim_cellular_preferred_apm_on_with_volte_off_cellular_data_cycling(self):
2156        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2157            slot_0_nw_gen="wfc",
2158            slot_1_nw_gen="wfc",
2159            call_slot=1,
2160            call_direction="mt",
2161            streaming=True,
2162            cellular_data_cycling=True,
2163            enable_volte=[False, False],
2164            enable_wfc=[True, True],
2165            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2166            is_airplane_mode=True)
2167
2168    @test_tracker_info(uuid="6a43acef-aaa1-4fe8-ae7e-c8e045bf8814")
2169    @TelephonyBaseTest.tel_test_wrap
2170    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_volte_off_cellular_data_cycling(self):
2171        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2172            slot_0_nw_gen="wfc",
2173            slot_1_nw_gen="wfc",
2174            call_slot=0,
2175            call_direction="mt",
2176            streaming=True,
2177            cellular_data_cycling=True,
2178            enable_volte=[False, False],
2179            enable_wfc=[True, True],
2180            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2181            is_airplane_mode=False)
2182
2183    @test_tracker_info(uuid="95524166-212f-4e82-9e02-2f9b58d92a9f")
2184    @TelephonyBaseTest.tel_test_wrap
2185    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_volte_off_cellular_data_cycling(self):
2186        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2187            slot_0_nw_gen="wfc",
2188            slot_1_nw_gen="wfc",
2189            call_slot=1,
2190            call_direction="mt",
2191            streaming=True,
2192            cellular_data_cycling=True,
2193            enable_volte=[False, False],
2194            enable_wfc=[True, True],
2195            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2196            is_airplane_mode=False)
2197
2198    @test_tracker_info(uuid="828ae64c-41b3-4974-a412-342d3ca16ce3")
2199    @TelephonyBaseTest.tel_test_wrap
2200    def test_dds_switch_voice_call_mo_wfc_psim_cellular_preferred_apm_on_with_volte_off_wifi_cycling(self):
2201        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2202            slot_0_nw_gen="wfc",
2203            slot_1_nw_gen="wfc",
2204            call_slot=0,
2205            call_direction="mo",
2206            streaming=True,
2207            wifi_cycling=True,
2208            enable_volte=[False, False],
2209            enable_wfc=[True, True],
2210            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2211            is_airplane_mode=True)
2212
2213    @test_tracker_info(uuid="343cf9dc-4f4c-4c0c-bd7b-ba664381f6bd")
2214    @TelephonyBaseTest.tel_test_wrap
2215    def test_dds_switch_voice_call_mo_wfc_esim_cellular_preferred_apm_on_with_volte_off_wifi_cycling(self):
2216        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2217            slot_0_nw_gen="wfc",
2218            slot_1_nw_gen="wfc",
2219            call_slot=1,
2220            call_direction="mo",
2221            streaming=True,
2222            wifi_cycling=True,
2223            enable_volte=[False, False],
2224            enable_wfc=[True, True],
2225            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2226            is_airplane_mode=True)
2227
2228    @test_tracker_info(uuid="6ef18605-bf4c-43d8-83fd-0bf71311973e")
2229    @TelephonyBaseTest.tel_test_wrap
2230    def test_dds_switch_voice_call_mo_wfc_psim_wifi_preferred_apm_off_with_volte_off_wifi_cycling(self):
2231        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2232            slot_0_nw_gen="wfc",
2233            slot_1_nw_gen="wfc",
2234            call_slot=0,
2235            call_direction="mo",
2236            streaming=True,
2237            wifi_cycling=True,
2238            enable_volte=[False, False],
2239            enable_wfc=[True, True],
2240            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2241            is_airplane_mode=False)
2242
2243    @test_tracker_info(uuid="9bddfe69-68e1-4d04-aeaa-75fb0f9ed9aa")
2244    @TelephonyBaseTest.tel_test_wrap
2245    def test_dds_switch_voice_call_mo_wfc_esim_wifi_preferred_apm_off_with_volte_off_wifi_cycling(self):
2246        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2247            slot_0_nw_gen="wfc",
2248            slot_1_nw_gen="wfc",
2249            call_slot=1,
2250            call_direction="mo",
2251            streaming=True,
2252            wifi_cycling=True,
2253            enable_volte=[False, False],
2254            enable_wfc=[True, True],
2255            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2256            is_airplane_mode=False)
2257
2258    @test_tracker_info(uuid="81e7d2b6-e3eb-4651-807f-66bf8eeeea93")
2259    @TelephonyBaseTest.tel_test_wrap
2260    def test_dds_switch_voice_call_mt_wfc_psim_cellular_preferred_apm_on_with_volte_off_wifi_cycling(self):
2261        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2262            slot_0_nw_gen="wfc",
2263            slot_1_nw_gen="wfc",
2264            call_slot=0,
2265            call_direction="mt",
2266            streaming=True,
2267            wifi_cycling=True,
2268            enable_volte=[False, False],
2269            enable_wfc=[True, True],
2270            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2271            is_airplane_mode=True)
2272
2273    @test_tracker_info(uuid="8c6da88b-be3a-4c0c-a239-255faf03a28b")
2274    @TelephonyBaseTest.tel_test_wrap
2275    def test_dds_switch_voice_call_mt_wfc_esim_cellular_preferred_apm_on_with_volte_off_wifi_cycling(self):
2276        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2277            slot_0_nw_gen="wfc",
2278            slot_1_nw_gen="wfc",
2279            call_slot=1,
2280            call_direction="mt",
2281            streaming=True,
2282            wifi_cycling=True,
2283            enable_volte=[False, False],
2284            enable_wfc=[True, True],
2285            wfc_mode=[WFC_MODE_CELLULAR_PREFERRED, WFC_MODE_CELLULAR_PREFERRED],
2286            is_airplane_mode=True)
2287
2288    @test_tracker_info(uuid="1b9ef6b4-c0c0-4375-b1a5-d569b946491e")
2289    @TelephonyBaseTest.tel_test_wrap
2290    def test_dds_switch_voice_call_mt_wfc_psim_wifi_preferred_apm_off_with_volte_off_wifi_cycling(self):
2291        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2292            slot_0_nw_gen="wfc",
2293            slot_1_nw_gen="wfc",
2294            call_slot=0,
2295            call_direction="mt",
2296            streaming=True,
2297            wifi_cycling=True,
2298            enable_volte=[False, False],
2299            enable_wfc=[True, True],
2300            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2301            is_airplane_mode=False)
2302
2303    @test_tracker_info(uuid="5771fedb-5eed-4868-84a3-0d7a01474dcf")
2304    @TelephonyBaseTest.tel_test_wrap
2305    def test_dds_switch_voice_call_mt_wfc_esim_wifi_preferred_apm_off_with_volte_off_wifi_cycling(self):
2306        return self._test_dds_switch_during_data_transfer_with_apm_cycling_and_ims_setting(
2307            slot_0_nw_gen="wfc",
2308            slot_1_nw_gen="wfc",
2309            call_slot=1,
2310            call_direction="mt",
2311            streaming=True,
2312            wifi_cycling=True,
2313            enable_volte=[False, False],
2314            enable_wfc=[True, True],
2315            wfc_mode=[WFC_MODE_WIFI_PREFERRED, WFC_MODE_WIFI_PREFERRED],
2316            is_airplane_mode=False)
2317
2318    # e+e call
2319    @test_tracker_info(uuid="ee94a2f1-9aac-4698-adc7-e5525541fac0")
2320    @TelephonyBaseTest.tel_test_wrap
2321    def test_dds_switch_youtube_esim_port_0_volte_esim_port_1_volte(self):
2322        """ LTE DDS swap call test(Initial DDS is on esim port 0).
2323
2324        1. Check HTTP connection when DDS is on esim port 0 and idle.
2325        2. Switch DDS to esim port 1.
2326        3. Check HTTP connection when DDS is on esim port 1 and idle.
2327        4. Switch DDS to esim port 0, make sure data works fine.
2328        """
2329        return dsds_dds_swap_call_streaming_test(
2330            self.log,
2331            self.tel_logger,
2332            self.android_devices,
2333            sim_slot = [SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2334            test_rat=["volte", "volte"],
2335            init_dds=1,
2336            test_slot=[None, None, None])
2337
2338    @test_tracker_info(uuid="d74b7a10-b944-4b6b-8271-420beae810f4")
2339    @TelephonyBaseTest.tel_test_wrap
2340    def test_dds_switch_voice_esim_port_0_mo_volte_esim_port_1_volte(self):
2341        """ LTE DDS swap call test(Initial DDS is on esim port 0).
2342
2343        1. Make MO call via esim port 0 when DDS is on esim port 0 and idle.
2344        2. Switch DDS to esim port 1.
2345        3. Make MO call via esim port 0 when DDS is on esim port 1 and idle.
2346        4. Switch DDS to esim port 0, make sure data works fine.
2347
2348        After call end will check the dds slot if is attach to the network
2349        with assigned RAT successfully and data works fine.
2350        """
2351        return dsds_dds_swap_call_streaming_test(
2352            self.log,
2353            self.tel_logger,
2354            self.android_devices,
2355            sim_slot = [SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2356            test_rat=["volte", "volte"],
2357            init_dds=1,
2358            test_slot=[
2359                SimSlotInfo.SLOT_1,
2360                SimSlotInfo.SLOT_1,
2361                SimSlotInfo.SLOT_1],
2362            direction="mo",
2363            duration=30,
2364            streaming=False)
2365
2366    @test_tracker_info(uuid="b424f8de-591e-4a72-ba4e-5c0771e9629d")
2367    @TelephonyBaseTest.tel_test_wrap
2368    def test_dds_switch_voice_esim_port_0_mt_volte_esim_port_1_volte(self):
2369        """ LTE DDS swap call test(Initial DDS is on esim port 0).
2370
2371        1. Receive MT call via esim port 0 when DDS is on esim port 0 and idle.
2372        2. Switch DDS to esim port 1.
2373        3. Receive MT call via esim port 0 when DDS is on esim port 1 and idle.
2374        4. Switch DDS to esim port 0, make sure data works fine.
2375
2376        After call end will check the dds slot if is attach to the network
2377        with assigned RAT successfully and data works fine.
2378        """
2379        return dsds_dds_swap_call_streaming_test(
2380            self.log,
2381            self.tel_logger,
2382            self.android_devices,
2383            sim_slot = [SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2384            test_rat=["volte", "volte"],
2385            init_dds=1,
2386            test_slot=[
2387                SimSlotInfo.SLOT_1,
2388                SimSlotInfo.SLOT_1,
2389                SimSlotInfo.SLOT_1],
2390            direction="mt",
2391            duration=30,
2392            streaming=False)
2393
2394    @test_tracker_info(uuid="55b0f7ce-351f-4a46-a0cb-bf54a2404edb")
2395    @TelephonyBaseTest.tel_test_wrap
2396    def test_dds_switch_voice_esim_port_1_mo_volte_esim_port_0_volte(self):
2397        """ LTE DDS swap call test(Initial DDS is on esim port 0).
2398
2399        1. Make MO call via esim port 1 when DDS is on esim port 0 and idle.
2400        2. Switch DDS to esim port 1.
2401        3. Make MO call via esim port 1 when DDS is on esim port 1 and idle.
2402        4. Switch DDS to esim port 0, make sure data works fine.
2403
2404        After call end will check the dds slot if is attach to the network
2405        with assigned RAT successfully and data works fine.
2406        """
2407        return dsds_dds_swap_call_streaming_test(
2408            self.log,
2409            self.tel_logger,
2410            self.android_devices,
2411            sim_slot = [SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2412            test_rat=["volte", "volte"],
2413            init_dds=1,
2414            test_slot=[
2415                SimSlotInfo.SLOT_2,
2416                SimSlotInfo.SLOT_2,
2417                SimSlotInfo.SLOT_2],
2418            direction="mo",
2419            duration=30,
2420            streaming=False)
2421
2422    @test_tracker_info(uuid="27ecd41f-9e08-44ce-9d5d-95158cb7a354")
2423    @TelephonyBaseTest.tel_test_wrap
2424    def test_dds_switch_voice_esim_port_1_mt_volte_esim_port_0_volte(self):
2425        """ LTE DDS swap call test(Initial DDS is on esim port 0).
2426
2427        1. Receive MT call via esim port 1 when DDS is on esim port 0 and idle.
2428        2. Switch DDS to esim port 1.
2429        3. Receive MT call via esim port 1 when DDS is on esim port 1 and idle.
2430        4. Switch DDS to esim port 0, make sure data works fine.
2431
2432        After call end will check the dds slot if is attach to the network
2433        with assigned RAT successfully and data works fine.
2434        """
2435        return dsds_dds_swap_call_streaming_test(
2436            self.log,
2437            self.tel_logger,
2438            self.android_devices,
2439            sim_slot = [SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2440            test_rat=["volte", "volte"],
2441            init_dds=1,
2442            test_slot=[
2443                SimSlotInfo.SLOT_2,
2444                SimSlotInfo.SLOT_2,
2445                SimSlotInfo.SLOT_2],
2446            direction="mt",
2447            duration=30,
2448            streaming=False)
2449
2450    # e+e message
2451    @test_tracker_info(uuid="")
2452    @TelephonyBaseTest.tel_test_wrap
2453    def test_dds_switch_sms_esim_port_0_mo_volte_esim_port_1_volte(self):
2454        """ LTE DDS swap SMS test(Initial DDS is on esim_port_0).
2455
2456        1. Make MO SMS via esim_port_0 when DDS is on esim_port_0 and idle.
2457        2. Switch DDS to esim_port_1.
2458        3. Make MO SMS via esim_port_0 when DDS is on esim_port_1 and idle.
2459        4. Switch DDS to esim_port_0, make sure data works fine.
2460
2461        After Make SMS will check the dds slot if is attach to the
2462        network with assigned RAT successfully and data works fine.
2463        """
2464        return dsds_dds_swap_message_streaming_test(
2465            self.log,
2466            self.android_devices,
2467            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2468            test_rat=["volte", "volte"],
2469            test_slot=[
2470                SimSlotInfo.SLOT_1,
2471                SimSlotInfo.SLOT_1,
2472                SimSlotInfo.SLOT_1],
2473            init_dds=1,
2474            msg_type="SMS",
2475            direction="mo",
2476            streaming=False)
2477
2478    @test_tracker_info(uuid="")
2479    @TelephonyBaseTest.tel_test_wrap
2480    def test_dds_switch_sms_esim_port_0_mt_volte_esim_port_1_volte(self):
2481        """ LTE DDS swap SMS test(Initial DDS is on esim_port_0).
2482
2483        1. Make MT SMS via esim_port_0 when DDS is on esim_port_0 and idle.
2484        2. Switch DDS to esim_port_1.
2485        3. Make MT SMS via esim_port_0 when DDS is on esim_port_1 and idle.
2486        4. Switch DDS to esim_port_0, make sure data works fine.
2487
2488        After Receive SMS will check the dds slot if is attach to the
2489        network with assigned RAT successfully and data works fine.
2490        """
2491        return dsds_dds_swap_message_streaming_test(
2492            self.log,
2493            self.android_devices,
2494            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2495            test_rat=["volte", "volte"],
2496            test_slot=[
2497                SimSlotInfo.SLOT_1,
2498                SimSlotInfo.SLOT_1,
2499                SimSlotInfo.SLOT_1],
2500            init_dds=1,
2501            msg_type="SMS",
2502            direction="mt",
2503            streaming=False)
2504
2505    @test_tracker_info(uuid="")
2506    @TelephonyBaseTest.tel_test_wrap
2507    def test_dds_switch_sms_esim_port_1_mo_volte_esim_port_0_volte(self):
2508        """ LTE DDS swap SMS test(Initial DDS is on esim_port_0).
2509
2510        1. Make MO SMS via esim_port_1 when DDS is on esim_port_0 and idle.
2511        2. Switch DDS to esim_port_1.
2512        3. Make MO SMS via esim_port_1 when DDS is on esim_port_1 and idle.
2513        4. Switch DDS to esim_port_0, make sure data works fine.
2514
2515        After Make SMS will check the dds slot if is attach to the
2516        network with assigned RAT successfully and data works fine.
2517        """
2518        return dsds_dds_swap_message_streaming_test(
2519            self.log,
2520            self.android_devices,
2521            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2522            test_rat=["volte", "volte"],
2523            test_slot=[
2524                SimSlotInfo.SLOT_2,
2525                SimSlotInfo.SLOT_2,
2526                SimSlotInfo.SLOT_2],
2527            init_dds=1,
2528            msg_type="SMS",
2529            direction="mo",
2530            streaming=False)
2531
2532    @test_tracker_info(uuid="")
2533    @TelephonyBaseTest.tel_test_wrap
2534    def test_dds_switch_sms_esim_port_1_mt_volte_esim_port_0_volte(self):
2535        """ LTE DDS swap SMS test(Initial DDS is on esim_port_0).
2536
2537        1. Make MT SMS via esim_port_1 when DDS is on esim_port_0 and idle.
2538        2. Switch DDS to esim_port_1.
2539        3. Make MT SMS via esim_port_1 when DDS is on esim_port_1 and idle.
2540        4. Switch DDS to esim_port_0, make sure data works fine.
2541
2542        After Make SMS will check the dds slot if is attach to the
2543        network with assigned RAT successfully and data works fine.
2544        """
2545        return dsds_dds_swap_message_streaming_test(
2546            self.log,
2547            self.android_devices,
2548            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2549            test_rat=["volte", "volte"],
2550            test_slot=[
2551                SimSlotInfo.SLOT_2,
2552                SimSlotInfo.SLOT_2,
2553                SimSlotInfo.SLOT_2],
2554            init_dds=1,
2555            msg_type="SMS",
2556            direction="mt",
2557            streaming=False)
2558
2559    @test_tracker_info(uuid="")
2560    @TelephonyBaseTest.tel_test_wrap
2561    def test_dds_switch_mms_esim_port_0_mo_volte_esim_port_1_volte(self):
2562        """ LTE DDS swap MMS test(Initial DDS is on esim_port_0).
2563
2564        1. Make MO MMS via esim_port_0 when DDS is on esim_port_0 and idle.
2565        2. Switch DDS to esim_port_1.
2566        3. Make MO MMS via esim_port_0 when DDS is on esim_port_1 and idle.
2567        4. Switch DDS to esim_port_0, make sure data works fine.
2568
2569        After Make MMS will check the dds slot if is attach to the
2570        network with assigned RAT successfully and data works fine.
2571        """
2572        return dsds_dds_swap_message_streaming_test(
2573            self.log,
2574            self.android_devices,
2575            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2576            test_rat=["volte", "volte"],
2577            test_slot=[
2578                SimSlotInfo.SLOT_1,
2579                SimSlotInfo.SLOT_1,
2580                SimSlotInfo.SLOT_1],
2581            init_dds=1,
2582            msg_type="MMS",
2583            direction="mo",
2584            streaming=False)
2585
2586    @test_tracker_info(uuid="")
2587    @TelephonyBaseTest.tel_test_wrap
2588    def test_dds_switch_mms_esim_port_0_mt_volte_esim_port_1_volte(self):
2589        """ LTE DDS swap MMS test(Initial DDS is on esim_port_0).
2590
2591        1. Make MT MMS via esim_port_0 when DDS is on esim_port_0 and idle.
2592        2. Switch DDS to esim_port_1.
2593        3. Make MT MMS via esim_port_0 when DDS is on esim_port_1 and idle.
2594        4. Switch DDS to esim_port_0, make sure data works fine.
2595
2596        After Receive MMS will check the dds slot if is attach to the
2597        network with assigned RAT successfully and data works fine.
2598        """
2599        return dsds_dds_swap_message_streaming_test(
2600            self.log,
2601            self.android_devices,
2602            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2603            test_rat=["volte", "volte"],
2604            test_slot=[
2605                SimSlotInfo.SLOT_1,
2606                SimSlotInfo.SLOT_1,
2607                SimSlotInfo.SLOT_1],
2608            init_dds=1,
2609            msg_type="MMS",
2610            direction="mt",
2611            streaming=False)
2612
2613    @test_tracker_info(uuid="")
2614    @TelephonyBaseTest.tel_test_wrap
2615    def test_dds_switch_mms_esim_port_1_mo_volte_esim_port_0_volte(self):
2616        """ LTE DDS swap MMS test(Initial DDS is on esim_port_0).
2617
2618        1. Make MO MMS via esim_port_1 when DDS is on esim_port_0 and idle.
2619        2. Switch DDS to esim_port_1.
2620        3. Make MO MMS via esim_port_1 when DDS is on esim_port_1 and idle.
2621        4. Switch DDS to esim_port_0, make sure data works fine.
2622
2623        After Make MMS will check the dds slot if is attach to the
2624        network with assigned RAT successfully and data works fine.
2625        """
2626        return dsds_dds_swap_message_streaming_test(
2627            self.log,
2628            self.android_devices,
2629            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2630            test_rat=["volte", "volte"],
2631            test_slot=[
2632                SimSlotInfo.SLOT_2,
2633                SimSlotInfo.SLOT_2,
2634                SimSlotInfo.SLOT_2],
2635            init_dds=1,
2636            msg_type="MMS",
2637            direction="mo",
2638            streaming=False)
2639
2640    @test_tracker_info(uuid="")
2641    @TelephonyBaseTest.tel_test_wrap
2642    def test_dds_switch_mms_esim_port_1_mt_volte_esim_port_0_volte(self):
2643        """ LTE DDS swap MMS test(Initial DDS is on esim_port_0).
2644
2645        1. Make MT MMS via esim_port_1 when DDS is on esim_port_0 and idle.
2646        2. Switch DDS to esim_port_1.
2647        3. Make MT MMS via esim_port_1 when DDS is on esim_port_1 and idle.
2648        4. Switch DDS to esim_port_0, make sure data works fine.
2649
2650        After Make MMS will check the dds slot if is attach to the
2651        network with assigned RAT successfully and data works fine.
2652        """
2653        return dsds_dds_swap_message_streaming_test(
2654            self.log,
2655            self.android_devices,
2656            sim_slot=[SimSlotInfo.SLOT_1, SimSlotInfo.SLOT_2],
2657            test_rat=["volte", "volte"],
2658            test_slot=[
2659                SimSlotInfo.SLOT_2,
2660                SimSlotInfo.SLOT_2,
2661                SimSlotInfo.SLOT_2],
2662            init_dds=1,
2663            msg_type="MMS",
2664            direction="mt",
2665            streaming=False)