• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1#!/usr/bin/env python3
2#
3#   Copyright 2020 - 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 asserts
20from acts import signals
21from acts.test_decorators import test_tracker_info
22from acts_contrib.test_utils.tel.loggers.protos.telephony_metric_pb2 import \
23    TelephonyVoiceTestResult
24from acts_contrib.test_utils.tel.loggers.telephony_metric_logger import \
25    TelephonyMetricLogger
26from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
27from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_SMS_RECEIVE
28from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
29from acts_contrib.test_utils.tel.tel_defines import INVALID_SUB_ID
30from acts_contrib.test_utils.tel.tel_subscription_utils import \
31    get_incoming_voice_sub_id
32from acts_contrib.test_utils.tel.tel_subscription_utils import get_subid_from_slot_index
33from acts_contrib.test_utils.tel.tel_subscription_utils import \
34    get_outgoing_message_sub_id
35from acts_contrib.test_utils.tel.tel_subscription_utils import get_default_data_sub_id
36from acts_contrib.test_utils.tel.tel_subscription_utils import set_message_subid
37from acts_contrib.test_utils.tel.tel_subscription_utils import set_subid_for_data
38from acts_contrib.test_utils.tel.tel_subscription_utils import set_voice_sub_id
39from acts_contrib.test_utils.tel.tel_subscription_utils import set_dds_on_slot_0
40from acts_contrib.test_utils.tel.tel_subscription_utils import set_dds_on_slot_1
41from acts_contrib.test_utils.tel.tel_subscription_utils import \
42    get_subid_on_same_network_of_host_ad
43from acts_contrib.test_utils.tel.tel_test_utils import multithread_func
44from acts_contrib.test_utils.tel.tel_test_utils import \
45    sms_send_receive_verify_for_subscription
46from acts_contrib.test_utils.tel.tel_test_utils import \
47    sms_in_collision_send_receive_verify_for_subscription
48from acts_contrib.test_utils.tel.tel_test_utils import \
49    sms_rx_power_off_multiple_send_receive_verify_for_subscription
50from acts_contrib.test_utils.tel.tel_test_utils import \
51    voice_call_in_collision_with_mt_sms_msim
52from acts_contrib.test_utils.tel.tel_test_utils import mms_send_receive_verify
53from acts_contrib.test_utils.tel.tel_test_utils import verify_http_connection
54from acts_contrib.test_utils.tel.tel_test_utils import log_messaging_screen_shot
55from acts_contrib.test_utils.tel.tel_test_utils import ensure_phones_idle
56from acts_contrib.test_utils.tel.tel_test_utils import get_slot_index_from_subid
57from acts_contrib.test_utils.tel.tel_voice_utils import \
58    phone_setup_voice_general_for_subscription
59from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_on_rat
60from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_on_rat
61from acts.utils import rand_ascii_str
62
63CallResult = TelephonyVoiceTestResult.CallResult.Value
64
65class TelLiveGFTDSDSMessageTest(TelephonyBaseTest):
66    def setup_class(self):
67        TelephonyBaseTest.setup_class(self)
68        self.message_lengths = (50, 160, 180)
69        self.tel_logger = TelephonyMetricLogger.for_test_case()
70
71    def teardown_test(self):
72        ensure_phones_idle(self.log, self.android_devices)
73
74    def _msim_message_test(
75        self,
76        ad_mo,
77        ad_mt,
78        mo_sub_id,
79        mt_sub_id, msg="SMS",
80        max_wait_time=MAX_WAIT_TIME_SMS_RECEIVE,
81        expected_result=True):
82        """Make MO/MT SMS/MMS at specific slot.
83
84        Args:
85            ad_mo: Android object of the device sending SMS/MMS
86            ad_mt: Android object of the device receiving SMS/MMS
87            mo_sub_id: Sub ID of MO device
88            mt_sub_id: Sub ID of MT device
89            max_wait_time: Max wait time before SMS/MMS is received.
90            expected_result: True for successful sending/receiving and False on
91                             the contrary
92
93        Returns:
94            True if the result matches expected_result and False on the
95            contrary.
96        """
97
98        if msg == "SMS":
99            for length in self.message_lengths:
100                message_array = [rand_ascii_str(length)]
101                if not sms_send_receive_verify_for_subscription(
102                    self.log,
103                    ad_mo,
104                    ad_mt,
105                    mo_sub_id,
106                    mt_sub_id,
107                    message_array,
108                    max_wait_time):
109                    ad_mo.log.warning(
110                        "%s of length %s test failed", msg, length)
111                    return False
112                else:
113                    ad_mo.log.info(
114                        "%s of length %s test succeeded", msg, length)
115            self.log.info("%s test of length %s characters succeeded.",
116                msg, self.message_lengths)
117
118        elif msg == "MMS":
119            for length in self.message_lengths:
120                message_array = [("Test Message", rand_ascii_str(length), None)]
121
122                if not mms_send_receive_verify(
123                    self.log,
124                    ad_mo,
125                    ad_mt,
126                    message_array,
127                    max_wait_time,
128                    expected_result):
129                    self.log.warning("%s of body length %s test failed",
130                        msg, length)
131                    return False
132                else:
133                    self.log.info(
134                        "%s of body length %s test succeeded", msg, length)
135            self.log.info("%s test of body lengths %s succeeded",
136                          msg, self.message_lengths)
137        return True
138
139    def _msim_sms_collision_test(
140        self,
141        ad_mo,
142        ad_mo2,
143        ad_mt,
144        ad_mt2,
145        mo1_sub_id,
146        mo2_sub_id,
147        mt_sub_id,
148        mt2_sub_id):
149        """Send 2 SMS' at the same time. SMS collision can be met when both SMS'
150        are sent to the same recipient.
151
152        Args:
153            ad_mo: Android object of the device sending SMS
154            ad_mo2: Android object of the device sending SMS
155            ad_mt: Android object of the device receiving SMS
156            ad_mt2: Android object of the device receiving SMS
157            mo1_sub_id: Sub ID of ad_mo
158            mo2_sub_id: Sub ID of ad_mo2
159            mt_sub_id: Sub ID of ad_mt
160            mt2_sub_id: Sub ID of ad_mt2
161
162        Returns:
163            True if both SMS' are sent and received successfully and False on
164            the contrary.
165        """
166        for length in self.message_lengths:
167            message_array = [rand_ascii_str(length)]
168            message_array2 = [rand_ascii_str(length)]
169            if not sms_in_collision_send_receive_verify_for_subscription(
170                self.log,
171                ad_mo,
172                ad_mo2,
173                ad_mt,
174                ad_mt2,
175                mo1_sub_id,
176                mo2_sub_id,
177                mt_sub_id,
178                mt2_sub_id,
179                message_array,
180                message_array2):
181                self.log.warning(
182                    "Test of SMS collision with length %s failed", length)
183                return False
184            else:
185                self.log.info(
186                    "Test of SMS collision with length %s succeeded", length)
187        self.log.info(
188            "Test of SMS collision with lengths %s characters succeeded.",
189            self.message_lengths)
190        return True
191
192    def _msim_rx_power_off_multiple_sms_test(
193        self,
194        ad_mo,
195        ad_mo2,
196        ad_mt,
197        mo1_sub_id,
198        mo2_sub_id,
199        mt_sub_id,
200        mt2_sub_id,
201        num_array_message,
202        num_array_message2):
203        """Power off the recipient and then send 2 SMS'. Make sure all SMS' can
204        be received correctly after the recipient is poweron on again.
205
206        Args:
207            ad_mo: Android object of the device sending SMS
208            ad_mo2: Android object of the device sending SMS
209            ad_mt: Android object of the device receiving SMS
210            mo1_sub_id: Sub ID of ad_mo
211            mo2_sub_id: Sub ID of ad_mo2
212            mt_sub_id: Sub ID of ad_mt
213            mt2_sub_id: Sub ID of ad_mt2
214            num_array_message: Number of messages to be sent by ad_mo
215            num_array_message2: Number of messages to be sent by ad_mo2
216
217        Returns:
218            True if all SMS' are sent and received successfully and False on
219            the contrary.
220        """
221        for length in self.message_lengths:
222            if not sms_rx_power_off_multiple_send_receive_verify_for_subscription(
223                self.log,
224                ad_mo,
225                ad_mo2,
226                ad_mt,
227                mo1_sub_id,
228                mo2_sub_id,
229                mt_sub_id,
230                mt2_sub_id,
231                length,
232                length,
233                num_array_message,
234                num_array_message2):
235                self.log.warning(
236                    "Test of multiple SMS with length %s during rx power off"
237                    " failed.", length)
238                return False
239            else:
240                self.log.info(
241                    "Test of multiple SMS with length %s during rx power off"
242                    " succeeded.", length)
243        self.log.info(
244            "Test of multiple SMS with lengths %s characters during rx power"
245            "off succeeded.", self.message_lengths)
246        return True
247
248
249    def _test_msim_message(
250            self,
251            mo_slot,
252            mt_slot,
253            dds_slot,
254            msg="SMS",
255            mo_rat=["", ""],
256            mt_rat=["", ""],
257            direction="mo",
258            expected_result=True):
259        """Make MO/MT SMS/MMS at specific slot in specific RAT with DDS at
260        specific slot.
261
262        Test step:
263        1. Get sub IDs of specific slots of both MO and MT devices.
264        2. Switch DDS to specific slot.
265        3. Check HTTP connection after DDS switch.
266        4. Set up phones in desired RAT.
267        5. Send SMS/MMS.
268
269        Args:
270            mo_slot: Slot sending MO SMS (0 or 1)
271            mt_slot: Slot receiving MT SMS (0 or 1)
272            dds_slot: Preferred data slot
273            mo_rat: RAT for both slots of MO device
274            mt_rat: RAT for both slots of MT device
275            direction: "mo" or "mt"
276            expected_result: True of False
277
278        Returns:
279            TestFailure if failed.
280        """
281        ads = self.android_devices
282
283        if direction == "mo":
284            ad_mo = ads[0]
285            ad_mt = ads[1]
286        else:
287            ad_mo = ads[1]
288            ad_mt = ads[0]
289
290        if mo_slot is not None:
291            mo_sub_id = get_subid_from_slot_index(self.log, ad_mo, mo_slot)
292            if mo_sub_id == INVALID_SUB_ID:
293                ad_mo.log.warning("Failed to get sub ID at slot %s.", mo_slot)
294                return False
295            mo_other_sub_id = get_subid_from_slot_index(
296                self.log, ad_mo, 1-mo_slot)
297            set_message_subid(ad_mo, mo_sub_id)
298        else:
299            _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(
300                ads, type="sms")
301            if mo_sub_id == INVALID_SUB_ID:
302                ad_mo.log.warning("Failed to get sub ID at slot %s.", mo_slot)
303                return False
304            mo_slot = "auto"
305            set_message_subid(ad_mo, mo_sub_id)
306            if msg == "MMS":
307                set_subid_for_data(ad_mo, mo_sub_id)
308                ad_mo.droid.telephonyToggleDataConnection(True)
309        ad_mo.log.info("Sub ID for outgoing %s at slot %s: %s", msg, mo_slot,
310            get_outgoing_message_sub_id(ad_mo))
311
312        if mt_slot is not None:
313            mt_sub_id = get_subid_from_slot_index(self.log, ad_mt, mt_slot)
314            if mt_sub_id == INVALID_SUB_ID:
315                ad_mt.log.warning("Failed to get sub ID at slot %s.", mt_slot)
316                return False
317            mt_other_sub_id = get_subid_from_slot_index(
318                self.log, ad_mt, 1-mt_slot)
319            set_message_subid(ad_mt, mt_sub_id)
320        else:
321            _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
322                ads, type="sms")
323            if mt_sub_id == INVALID_SUB_ID:
324                ad_mt.log.warning("Failed to get sub ID at slot %s.", mt_slot)
325                return False
326            mt_slot = "auto"
327            set_message_subid(ad_mt, mt_sub_id)
328            if msg == "MMS":
329                set_subid_for_data(ad_mt, mt_sub_id)
330                ad_mt.droid.telephonyToggleDataConnection(True)
331        ad_mt.log.info("Sub ID for incoming %s at slot %s: %s", msg, mt_slot,
332            get_outgoing_message_sub_id(ad_mt))
333
334        self.log.info("Step 1: Switch DDS.")
335        if dds_slot:
336            if not set_dds_on_slot_1(ads[0]):
337                self.log.warning(
338                    "Failed to set DDS at eSIM on %s", ads[0].serial)
339                return False
340        else:
341            if not set_dds_on_slot_0(ads[0]):
342                self.log.warning(
343                    "Failed to set DDS at pSIM on %s", ads[0].serial)
344                return False
345
346        self.log.info("Step 2: Check HTTP connection after DDS switch.")
347        if not verify_http_connection(self.log,
348           ads[0],
349           url="https://www.google.com",
350           retry=5,
351           retry_interval=15,
352           expected_state=True):
353
354            self.log.error("Failed to verify http connection.")
355            return False
356        else:
357            self.log.info("Verify http connection successfully.")
358
359        if mo_slot == 0 or mo_slot == 1:
360            phone_setup_on_rat(self.log, ad_mo, mo_rat[1-mo_slot], mo_other_sub_id)
361        else:
362            phone_setup_on_rat(self.log, ad_mo, 'general', sub_id_type='sms')
363
364        if mt_slot == 0 or mt_slot == 1:
365            phone_setup_on_rat(self.log, ad_mt, mt_rat[1-mt_slot], mt_other_sub_id)
366        else:
367            phone_setup_on_rat(self.log, ad_mt, 'general', sub_id_type='sms')
368
369        if mo_slot == 0 or mo_slot == 1:
370            mo_phone_setup_func = phone_setup_on_rat(
371                self.log,
372                ad_mo,
373                mo_rat[mo_slot],
374                only_return_fn=True)
375        else:
376            mo_phone_setup_func = phone_setup_voice_general_for_subscription
377
378        if mt_slot == 0 or mt_slot == 1:
379            mt_phone_setup_func = phone_setup_on_rat(
380                self.log,
381                ad_mt,
382                mt_rat[mt_slot],
383                only_return_fn=True)
384        else:
385            mt_phone_setup_func = phone_setup_voice_general_for_subscription
386
387        self.log.info("Step 3: Set up phones in desired RAT.")
388        tasks = [(mo_phone_setup_func, (self.log, ad_mo, mo_sub_id)),
389                 (mt_phone_setup_func, (self.log, ad_mt, mt_sub_id))]
390        if not multithread_func(self.log, tasks):
391            self.log.error("Phone Failed to Set Up Properly.")
392            return False
393
394        time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
395        self.log.info("Step 4: Send %s.", msg)
396
397        if msg == "MMS":
398            for ad, current_data_sub_id, current_msg_sub_id in [
399                [ ads[0],
400                  get_default_data_sub_id(ads[0]),
401                  get_outgoing_message_sub_id(ads[0]) ],
402                [ ads[1],
403                  get_default_data_sub_id(ads[1]),
404                  get_outgoing_message_sub_id(ads[1]) ]]:
405                if current_data_sub_id != current_msg_sub_id:
406                    ad.log.warning(
407                        "Current data sub ID (%s) does not match message"
408                        " sub ID (%s). MMS should NOT be sent.",
409                        current_data_sub_id,
410                        current_msg_sub_id)
411                    expected_result = False
412
413        result = self._msim_message_test(ad_mo, ad_mt, mo_sub_id, mt_sub_id,
414            msg=msg, expected_result=expected_result)
415
416        if not result:
417            log_messaging_screen_shot(ad_mo, test_name="%s_tx" % msg)
418            log_messaging_screen_shot(ad_mt, test_name="%s_rx" % msg)
419
420        return result
421
422
423    def _test_msim_voice_call_in_collision_with_mt_sms(
424            self,
425            mo_voice_slot,
426            mt_sms_slot,
427            dds_slot,
428            rat=["", ""],
429            call_direction="mo"):
430        """Make MO/MT voice call in collision with MT SMS at specific slot in
431        specific RAT with DDS at specific slot.
432
433        Args:
434            mo_voice_slot: Slot for voice call. 0 for pSIM or 1 for eSIM
435            mt_sms_slot: Slot for MT SMS. 0 for pSIM or 1 for eSIM
436            dds_slot: Preferred data slot
437            rat: RAT for both slots of the primary device
438            call_direction: "mo" or "mt"
439
440        Returns:
441            True or False
442        """
443        ads = self.android_devices
444        ad = ads[0]
445        ad_mo_sms = ads[2]
446        ad_mt_voice = ads[1]
447
448        mo_voice_sub_id = get_subid_from_slot_index(self.log, ad, mo_voice_slot)
449        if mo_voice_sub_id == INVALID_SUB_ID:
450            ad.log.warning("Failed to get sub ID ar slot %s.", mo_voice_slot)
451            return False
452        mo_voice_other_sub_id = get_subid_from_slot_index(
453            self.log, ad, 1-mo_voice_slot)
454        set_voice_sub_id(ad, mo_voice_sub_id)
455
456        _, mt_voice_sub_id, _ = get_subid_on_same_network_of_host_ad(ads)
457        set_voice_sub_id(ad_mt_voice, mt_voice_sub_id)
458        ad_mt_voice.log.info("Sub ID for incoming call at slot %s: %s",
459            get_slot_index_from_subid(self.log, ad_mt_voice, mt_voice_sub_id),
460            get_incoming_voice_sub_id(ad_mt_voice))
461
462        set_message_subid(
463            ad, get_subid_from_slot_index(self.log, ad, mt_sms_slot))
464
465        self.log.info("Step 1: Switch DDS.")
466        if dds_slot:
467            if not set_dds_on_slot_1(ads[0]):
468                ads[0].log.warning("Failed to set DDS at eSIM.")
469                return False
470        else:
471            if not set_dds_on_slot_0(ads[0]):
472                ads[0].log.warning("Failed to set DDS at pSIM.")
473                return False
474
475        self.log.info("Step 2: Check HTTP connection after DDS switch.")
476        if not verify_http_connection(self.log,
477           ads[0],
478           url="https://www.google.com",
479           retry=5,
480           retry_interval=15,
481           expected_state=True):
482
483            self.log.error("Failed to verify http connection.")
484            return False
485        else:
486            self.log.info("Verify http connection successfully.")
487
488        phone_setup_on_rat(
489            self.log, ad, rat[1-mo_voice_slot], mo_voice_other_sub_id)
490        phone_setup_on_rat(self.log, ad, 'general')
491        phone_setup_on_rat(self.log, ad_mt_voice, 'general')
492        phone_setup_on_rat(self.log, ad_mo_sms, 'general', sub_id_type='sms')
493
494        if mo_voice_slot == 0 or mo_voice_slot == 1:
495            mo_phone_setup_func = phone_setup_on_rat(
496                self.log,
497                ad,
498                rat[mo_voice_slot],
499                only_return_fn=True)
500
501        is_mo_in_call = is_phone_in_call_on_rat(
502            self.log, ad, rat[mo_voice_slot], only_return_fn=True)
503
504        self.log.info("Step 3: Set up the phone in desired RAT.")
505        tasks = [(mo_phone_setup_func, (self.log, ad, mo_voice_sub_id))]
506        if not multithread_func(self.log, tasks):
507            self.log.error("Phone Failed to Set Up Properly.")
508            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
509            raise signals.TestFailure("Failed",
510                extras={"fail_reason": "Phone Failed to Set Up Properly."})
511
512        self.log.info("Step 4: Make a MO voice call in collision with MT SMS.")
513        result = voice_call_in_collision_with_mt_sms_msim(
514            self.log,
515            ad,
516            ad_mo_sms,
517            ad_mt_voice,
518            get_subid_from_slot_index(self.log, ad, mt_sms_slot),
519            get_outgoing_message_sub_id(ad_mo_sms),
520            mo_voice_sub_id,
521            mt_voice_sub_id,
522            [rand_ascii_str(50)],
523            ad,
524            is_mo_in_call,
525            None,
526            call_direction)
527
528        call_result = True
529        sms_result = True
530
531        try:
532            self.tel_logger.set_result(result.result_value)
533            if not result:
534                call_result = False
535        except:
536            sms_result = False
537
538        extras = {}
539        if not sms_result:
540            log_messaging_screen_shot(ad_mo_sms, test_name="sms_tx")
541            log_messaging_screen_shot(ad, test_name="sms_rx")
542            extras = {"sms_fail_reason": "SMS failed"}
543
544        if not call_result:
545            self.log.error(
546                "Failed to make MO call from %s slot %s to %s slot %s",
547                ad.serial,
548                mo_voice_slot,
549                ad_mt_voice.serial,
550                get_slot_index_from_subid(
551                    self.log, ad_mt_voice, mt_voice_sub_id))
552            extras = {"call_fail_reason": str(result.result_value)}
553
554        if not sms_result or not call_result:
555            raise signals.TestFailure("Failed", extras=extras)
556
557        return True
558
559    def multiple_mt_sms(
560        self,
561        slot_0_nw_gen="volte",
562        slot_1_nw_gen="volte",
563        power_off=False):
564        """Receive multiple MT SMS' at the same time at specific slot in specific
565        RAT to make SMS collision.
566
567        Args:
568            slot_0_nw_gen: Network generation (RAT) at pSIM
569            slot_1_nw_gen: Network generation (RAT) at eSIM
570            power_off: True if MT SMS' have to be sent when target DUT is
571            power-off.
572
573        Returns:
574            True of False
575        """
576        ad = self.android_devices[0]
577        slot_0_subid = get_subid_from_slot_index(ad.log, ad, 0)
578        slot_1_subid = get_subid_from_slot_index(ad.log, ad, 1)
579
580        if slot_0_subid == INVALID_SUB_ID or slot_1_subid == INVALID_SUB_ID:
581            self.log.error("Not all slots have valid sub ID.")
582            raise signals.TestFailure("Failed",
583                extras={"fail_reason": "Not all slots have valid sub ID"})
584
585        slot0_phone_setup_func = phone_setup_on_rat(
586            self.log,
587            ad,
588            slot_0_nw_gen,
589            only_return_fn=True)
590
591        tasks = [(slot0_phone_setup_func, (self.log, ad, slot_0_subid))]
592        if not multithread_func(self.log, tasks):
593            self.log.error("Phone Failed to Set Up Properly.")
594            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
595            raise signals.TestFailure("Failed",
596                extras={"fail_reason": "Phone Failed to Set Up Properly."})
597
598        slot1_phone_setup_func = phone_setup_on_rat(
599            self.log,
600            ad,
601            slot_1_nw_gen,
602            only_return_fn=True)
603
604        tasks = [(slot1_phone_setup_func, (self.log, ad, slot_1_subid))]
605        if not multithread_func(self.log, tasks):
606            self.log.error("Phone Failed to Set Up Properly.")
607            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
608            raise signals.TestFailure("Failed",
609                extras={"fail_reason": "Phone Failed to Set Up Properly."})
610
611        ad_host = self.android_devices[0]
612        ad_mo_1 = self.android_devices[1]
613        ad_mo_2 = self.android_devices[2]
614
615        for host_sub_id in [
616            [slot_0_subid, slot_1_subid],
617            [slot_1_subid, slot_0_subid]]:
618            _, mo1_sub_id, _ = get_subid_on_same_network_of_host_ad(
619                self.android_devices, host_sub_id=host_sub_id[0])
620            set_message_subid(ad_mo_1, mo1_sub_id)
621
622            _, _, mo2_sub_id = get_subid_on_same_network_of_host_ad(
623                self.android_devices, host_sub_id=host_sub_id[1])
624            set_message_subid(ad_mo_2, mo2_sub_id)
625
626            if power_off:
627                res = self._msim_rx_power_off_multiple_sms_test(
628                    ad_mo_1,
629                    ad_mo_2,
630                    ad_host,
631                    mo1_sub_id,
632                    mo2_sub_id,
633                    host_sub_id[0],
634                    host_sub_id[1],
635                    5,
636                    5)
637            else:
638                res = self._msim_sms_collision_test(
639                    ad_mo_1,
640                    ad_mo_2,
641                    ad_host,
642                    ad_host,
643                    mo1_sub_id,
644                    mo2_sub_id,
645                    host_sub_id[0],
646                    host_sub_id[1])
647
648            if not res:
649                log_messaging_screen_shot(
650                    ad_host, test_name="sms rx subid: %s" % host_sub_id[0])
651                log_messaging_screen_shot(
652                    ad_host, test_name="sms rx subid: %s" % host_sub_id[1])
653                log_messaging_screen_shot(
654                    ad_mo_1, test_name="sms tx subid: %s" % mo1_sub_id)
655                log_messaging_screen_shot(
656                    ad_mo_2, test_name="sms tx subid: %s" % mo2_sub_id)
657
658                return False
659        return True
660
661    @test_tracker_info(uuid="4ae61fdf-2078-4e50-ae03-cb2e9299ce8d")
662    @TelephonyBaseTest.tel_test_wrap
663    def test_msim_sms_mo_volte_psim_dds_slot_0(self):
664        return self._test_msim_message(
665            0, None, 0, mo_rat=["volte", "volte"], msg="SMS", direction="mo")
666
667    @test_tracker_info(uuid="0e8801f8-7203-45ba-aff3-cb667fd538e1")
668    @TelephonyBaseTest.tel_test_wrap
669    def test_msim_sms_mo_volte_psim_dds_slot_1(self):
670        return self._test_msim_message(
671            0, None, 1, mo_rat=["volte", "volte"], msg="SMS", direction="mo")
672
673    @test_tracker_info(uuid="d54c2b4e-2e32-49f0-9536-879eb6f6577e")
674    @TelephonyBaseTest.tel_test_wrap
675    def test_msim_sms_mt_volte_psim_dds_slot_0(self):
676        return self._test_msim_message(
677            None, 0, 0, mt_rat=["volte", "volte"], msg="SMS", direction="mt")
678
679    @test_tracker_info(uuid="feed9119-df31-46f7-afd8-addf4052422a")
680    @TelephonyBaseTest.tel_test_wrap
681    def test_msim_sms_mt_volte_psim_dds_slot_1(self):
682        return self._test_msim_message(
683            None, 0, 1, mt_rat=["volte", "volte"], msg="SMS", direction="mt")
684
685    @test_tracker_info(uuid="1da9965c-c863-4e6e-9374-a082fa16d6fd")
686    @TelephonyBaseTest.tel_test_wrap
687    def test_msim_sms_mo_volte_esim_dds_slot_0(self):
688        return self._test_msim_message(
689            1, None, 0, mo_rat=["volte", "volte"], msg="SMS", direction="mo")
690
691    @test_tracker_info(uuid="64aec600-851f-4bde-b66c-130c69d1d5b6")
692    @TelephonyBaseTest.tel_test_wrap
693    def test_msim_sms_mo_volte_esim_dds_slot_1(self):
694        return self._test_msim_message(
695            1, None, 1, mo_rat=["volte", "volte"], msg="SMS", direction="mo")
696
697    @test_tracker_info(uuid="9ce40c2c-3a59-4612-a0cc-4fcba887856c")
698    @TelephonyBaseTest.tel_test_wrap
699    def test_msim_sms_mt_volte_esim_dds_slot_0(self):
700        return self._test_msim_message(
701            None, 1, 0, mt_rat=["volte", "volte"], msg="SMS", direction="mt")
702
703    @test_tracker_info(uuid="4e46081d-733d-47d9-be4d-9e492de38bcd")
704    @TelephonyBaseTest.tel_test_wrap
705    def test_msim_sms_mt_volte_esim_dds_slot_1(self):
706        return self._test_msim_message(
707            None, 1, 1, mt_rat=["volte", "volte"], msg="SMS", direction="mt")
708
709    @test_tracker_info(uuid="5ede96ed-78b5-4cfb-94a3-44c34d610bef")
710    @TelephonyBaseTest.tel_test_wrap
711    def test_msim_sms_mo_volte_csfb_psim_dds_slot_0(self):
712        return self._test_msim_message(
713            0, None, 0, mo_rat=["volte", "csfb"], msg="SMS", direction="mo")
714
715    @test_tracker_info(uuid="ae681d36-e450-4453-88a8-e9abf4bdf723")
716    @TelephonyBaseTest.tel_test_wrap
717    def test_msim_sms_mo_volte_csfb_psim_dds_slot_1(self):
718        return self._test_msim_message(
719            0, None, 1, mo_rat=["volte", "csfb"], msg="SMS", direction="mo")
720
721    @test_tracker_info(uuid="6490abf9-7fc9-4168-ba20-7da0cb18d96e")
722    @TelephonyBaseTest.tel_test_wrap
723    def test_msim_sms_mt_volte_csfb_psim_dds_slot_0(self):
724        return self._test_msim_message(
725            None, 0, 0, mt_rat=["volte", "csfb"], msg="SMS", direction="mt")
726
727    @test_tracker_info(uuid="71590c9e-add0-4cbb-a530-07f58d26d954")
728    @TelephonyBaseTest.tel_test_wrap
729    def test_msim_sms_mt_volte_csfb_psim_dds_slot_1(self):
730        return self._test_msim_message(
731            None, 0, 1, mt_rat=["volte", "csfb"], msg="SMS", direction="mt")
732
733    @test_tracker_info(uuid="1b033914-8a26-48e0-829a-c85b5a93ce42")
734    @TelephonyBaseTest.tel_test_wrap
735    def test_msim_sms_mo_volte_csfb_esim_dds_slot_0(self):
736        return self._test_msim_message(
737            1, None, 0, mo_rat=["volte", "csfb"], msg="SMS", direction="mo")
738
739    @test_tracker_info(uuid="15ebac40-5dc3-47ee-a787-ae6f9d71aff6")
740    @TelephonyBaseTest.tel_test_wrap
741    def test_msim_sms_mo_volte_csfb_esim_dds_slot_1(self):
742        return self._test_msim_message(
743            1, None, 1, mo_rat=["volte", "csfb"], msg="SMS", direction="mo")
744
745    @test_tracker_info(uuid="b38390d2-b5ab-414b-9c61-2324395a56a6")
746    @TelephonyBaseTest.tel_test_wrap
747    def test_msim_sms_mt_volte_csfb_esim_dds_slot_0(self):
748        return self._test_msim_message(
749            None, 1, 0, mt_rat=["volte", "csfb"], msg="SMS", direction="mt")
750
751    @test_tracker_info(uuid="1c4a3a34-800a-4117-8c32-b6ec7d58a5cb")
752    @TelephonyBaseTest.tel_test_wrap
753    def test_msim_sms_mt_volte_csfb_esim_dds_slot_1(self):
754        return self._test_msim_message(
755            None, 1, 1, mt_rat=["volte", "csfb"], msg="SMS", direction="mt")
756
757    @test_tracker_info(uuid="c7645032-8006-448e-ae3e-86c9223482cf")
758    @TelephonyBaseTest.tel_test_wrap
759    def test_msim_sms_mo_csfb_volte_psim_dds_slot_0(self):
760        return self._test_msim_message(
761            0, None, 0, mo_rat=["csfb", "volte"], msg="SMS", direction="mo")
762
763    @test_tracker_info(uuid="a4455da1-6314-4d2e-a6eb-c7e063a5fd10")
764    @TelephonyBaseTest.tel_test_wrap
765    def test_msim_sms_mo_csfb_volte_psim_dds_slot_1(self):
766        return self._test_msim_message(
767            0, None, 1, mo_rat=["csfb", "volte"], msg="SMS", direction="mo")
768
769    @test_tracker_info(uuid="60828bcc-0111-4d97-ac01-b43ff9c33b11")
770    @TelephonyBaseTest.tel_test_wrap
771    def test_msim_sms_mt_csfb_volte_psim_dds_slot_0(self):
772        return self._test_msim_message(
773            None, 0, 0, mt_rat=["csfb", "volte"], msg="SMS", direction="mt")
774
775    @test_tracker_info(uuid="d0f04ab9-c1fe-41b1-8ffc-7bf7cbb408ea")
776    @TelephonyBaseTest.tel_test_wrap
777    def test_msim_sms_mt_csfb_volte_psim_dds_slot_1(self):
778        return self._test_msim_message(
779            None, 0, 1, mt_rat=["csfb", "volte"], msg="SMS", direction="mt")
780
781    @test_tracker_info(uuid="97ad2e6f-8b71-49d4-870c-2f4438351880")
782    @TelephonyBaseTest.tel_test_wrap
783    def test_msim_sms_mo_csfb_volte_esim_dds_slot_0(self):
784        return self._test_msim_message(
785            1, None, 0, mo_rat=["csfb", "volte"], msg="SMS", direction="mo")
786
787    @test_tracker_info(uuid="8353bce2-a800-440c-9822-a922343d0ff5")
788    @TelephonyBaseTest.tel_test_wrap
789    def test_msim_sms_mo_csfb_volte_esim_dds_slot_1(self):
790        return self._test_msim_message(
791            1, None, 1, mo_rat=["csfb", "volte"], msg="SMS", direction="mo")
792
793    @test_tracker_info(uuid="7659d23d-8cf4-4ace-8e53-b26fc2fca38c")
794    @TelephonyBaseTest.tel_test_wrap
795    def test_msim_sms_mt_csfb_volte_esim_dds_slot_0(self):
796        return self._test_msim_message(
797            None, 1, 0, mt_rat=["csfb", "volte"], msg="SMS", direction="mt")
798
799    @test_tracker_info(uuid="91577f12-4a0e-4743-82bc-1b7581a6940d")
800    @TelephonyBaseTest.tel_test_wrap
801    def test_msim_sms_mt_csfb_volte_esim_dds_slot_1(self):
802        return self._test_msim_message(
803            None, 1, 1, mt_rat=["csfb", "volte"], msg="SMS", direction="mt")
804
805    @test_tracker_info(uuid="a5f2c1b0-5ae7-4187-ad63-4782dc47f62b")
806    @TelephonyBaseTest.tel_test_wrap
807    def test_msim_sms_mo_volte_3g_psim_dds_slot_0(self):
808        return self._test_msim_message(
809            0, None, 0, mo_rat=["volte", "3g"], msg="SMS", direction="mo")
810
811    @test_tracker_info(uuid="0c983462-5372-4aae-a484-53da4d2b9553")
812    @TelephonyBaseTest.tel_test_wrap
813    def test_msim_sms_mo_volte_3g_psim_dds_slot_1(self):
814        return self._test_msim_message(
815            0, None, 1, mo_rat=["volte", "3g"], msg="SMS", direction="mo")
816
817    @test_tracker_info(uuid="8266aaac-9d67-42c3-9260-d80c377b1ef9")
818    @TelephonyBaseTest.tel_test_wrap
819    def test_msim_sms_mt_volte_3g_psim_dds_slot_0(self):
820        return self._test_msim_message(
821            None, 0, 0, mt_rat=["volte", "3g"], msg="SMS", direction="mt")
822
823    @test_tracker_info(uuid="d6ae749b-5e69-489e-8fda-fcb38aaa6cb0")
824    @TelephonyBaseTest.tel_test_wrap
825    def test_msim_sms_mt_volte_3g_psim_dds_slot_1(self):
826        return self._test_msim_message(
827            None, 0, 1, mt_rat=["volte", "3g"], msg="SMS", direction="mt")
828
829    @test_tracker_info(uuid="f4985e53-d530-491c-94cd-51ba22a34eff")
830    @TelephonyBaseTest.tel_test_wrap
831    def test_msim_sms_mo_volte_3g_esim_dds_slot_0(self):
832        return self._test_msim_message(
833            1, None, 0, mo_rat=["volte", "3g"], msg="SMS", direction="mo")
834
835    @test_tracker_info(uuid="b4fc2379-6937-404a-a659-249c1ccf9dd0")
836    @TelephonyBaseTest.tel_test_wrap
837    def test_msim_sms_mo_volte_3g_esim_dds_slot_1(self):
838        return self._test_msim_message(
839            1, None, 1, mo_rat=["volte", "3g"], msg="SMS", direction="mo")
840
841    @test_tracker_info(uuid="e1027a25-b19f-4fb7-bfb9-79919e380c25")
842    @TelephonyBaseTest.tel_test_wrap
843    def test_msim_sms_mt_volte_3g_esim_dds_slot_0(self):
844        return self._test_msim_message(
845            None, 1, 0, mt_rat=["volte", "3g"], msg="SMS", direction="mt")
846
847    @test_tracker_info(uuid="7cf99f83-0542-42c8-8e72-1653e381aa6c")
848    @TelephonyBaseTest.tel_test_wrap
849    def test_msim_sms_mt_volte_3g_esim_dds_slot_1(self):
850        return self._test_msim_message(
851            None, 1, 1, mt_rat=["volte", "3g"], msg="SMS", direction="mt")
852
853    @test_tracker_info(uuid="c1084606-a63b-41da-a0cb-2db972b6a8ce")
854    @TelephonyBaseTest.tel_test_wrap
855    def test_msim_sms_mo_3g_volte_psim_dds_slot_0(self):
856        return self._test_msim_message(
857            0, None, 0, mo_rat=["3g", "volte"], msg="SMS", direction="mo")
858
859    @test_tracker_info(uuid="4806716c-047a-4a33-a317-97d3cce5d2ca")
860    @TelephonyBaseTest.tel_test_wrap
861    def test_msim_sms_mo_3g_volte_psim_dds_slot_1(self):
862        return self._test_msim_message(
863            0, None, 1, mo_rat=["3g", "volte"], msg="SMS", direction="mo")
864
865    @test_tracker_info(uuid="2877ff0b-d567-4683-baa3-20e254ed025c")
866    @TelephonyBaseTest.tel_test_wrap
867    def test_msim_sms_mt_3g_volte_psim_dds_slot_0(self):
868        return self._test_msim_message(
869            None, 0, 0, mt_rat=["3g", "volte"], msg="SMS", direction="mt")
870
871    @test_tracker_info(uuid="6bf3ea1b-e75c-4844-a311-5a18b1b7a1b8")
872    @TelephonyBaseTest.tel_test_wrap
873    def test_msim_sms_mt_3g_volte_psim_dds_slot_1(self):
874        return self._test_msim_message(
875            None, 0, 1, mt_rat=["3g", "volte"], msg="SMS", direction="mt")
876
877    @test_tracker_info(uuid="fb7bf8b2-fa44-4e05-a0ab-16e7b1907e6b")
878    @TelephonyBaseTest.tel_test_wrap
879    def test_msim_sms_mo_3g_volte_esim_dds_slot_0(self):
880        return self._test_msim_message(
881            1, None, 0, mo_rat=["3g", "volte"], msg="SMS", direction="mo")
882
883    @test_tracker_info(uuid="d9090125-61cb-4ef5-97de-06c2ec8529bd")
884    @TelephonyBaseTest.tel_test_wrap
885    def test_msim_sms_mo_3g_volte_esim_dds_slot_1(self):
886        return self._test_msim_message(
887            1, None, 1, mo_rat=["3g", "volte"], msg="SMS", direction="mo")
888
889    @test_tracker_info(uuid="d764c5ea-a34a-4b29-ab50-63bd63ebe5c4")
890    @TelephonyBaseTest.tel_test_wrap
891    def test_msim_sms_mt_3g_volte_esim_dds_slot_0(self):
892        return self._test_msim_message(
893            None, 1, 0, mt_rat=["3g", "volte"], msg="SMS", direction="mt")
894
895    @test_tracker_info(uuid="fe7d2f8c-eeb6-4ae9-a57d-1636d3153d2b")
896    @TelephonyBaseTest.tel_test_wrap
897    def test_msim_sms_mt_3g_volte_esim_dds_slot_1(self):
898        return self._test_msim_message(
899            None, 1, 1, mt_rat=["3g", "volte"], msg="SMS", direction="mt")
900
901    @test_tracker_info(uuid="b9a5cb40-4986-4811-90e7-628d1729ccb2")
902    @TelephonyBaseTest.tel_test_wrap
903    def test_msim_sms_mo_csfb_psim_dds_slot_0(self):
904        return self._test_msim_message(
905            0, None, 0, mo_rat=["csfb", "csfb"], msg="SMS", direction="mo")
906
907    @test_tracker_info(uuid="220665c1-4c63-4450-b8bb-17fc6df24498")
908    @TelephonyBaseTest.tel_test_wrap
909    def test_msim_sms_mo_csfb_psim_dds_slot_1(self):
910        return self._test_msim_message(
911            0, None, 1, mo_rat=["csfb", "csfb"], msg="SMS", direction="mo")
912
913    @test_tracker_info(uuid="968217a6-320f-41f0-b401-7c377309d983")
914    @TelephonyBaseTest.tel_test_wrap
915    def test_msim_sms_mt_csfb_psim_dds_slot_0(self):
916        return self._test_msim_message(
917            None, 0, 0, mt_rat=["csfb", "csfb"], msg="SMS", direction="mt")
918
919    @test_tracker_info(uuid="c6a5bf63-af40-4619-a0eb-0d1835fde36c")
920    @TelephonyBaseTest.tel_test_wrap
921    def test_msim_sms_mt_csfb_psim_dds_slot_1(self):
922        return self._test_msim_message(
923            None, 0, 1, mt_rat=["csfb", "csfb"], msg="SMS", direction="mt")
924
925    @test_tracker_info(uuid="ea9f4e72-0dea-4f5f-b5ff-4a0bad0d29a0")
926    @TelephonyBaseTest.tel_test_wrap
927    def test_msim_sms_mo_csfb_esim_dds_slot_0(self):
928        return self._test_msim_message(
929            1, None, 0, mo_rat=["csfb", "csfb"], msg="SMS", direction="mo")
930
931    @test_tracker_info(uuid="4eb935f0-2b11-4b2d-8faa-9a022e36813a")
932    @TelephonyBaseTest.tel_test_wrap
933    def test_msim_sms_mo_csfb_esim_dds_slot_1(self):
934        return self._test_msim_message(
935            1, None, 1, mo_rat=["csfb", "csfb"], msg="SMS", direction="mo")
936
937    @test_tracker_info(uuid="765e31fd-b412-43a8-a6a8-5d3ae66cab18")
938    @TelephonyBaseTest.tel_test_wrap
939    def test_msim_sms_mt_csfb_esim_dds_slot_0(self):
940        return self._test_msim_message(
941            None, 1, 0, mt_rat=["csfb", "csfb"], msg="SMS", direction="mt")
942
943    @test_tracker_info(uuid="bc6ada03-6a5e-4fe7-80c4-3aebc9fa426f")
944    @TelephonyBaseTest.tel_test_wrap
945    def test_msim_sms_mt_csfb_esim_dds_slot_1(self):
946        return self._test_msim_message(
947            None, 1, 1, mt_rat=["csfb", "csfb"], msg="SMS", direction="mt")
948
949    @test_tracker_info(uuid="a42994d0-bdb3-487e-98f2-665899d3edba")
950    @TelephonyBaseTest.tel_test_wrap
951    def test_msim_sms_mo_csfb_3g_psim_dds_slot_0(self):
952        return self._test_msim_message(
953            0, None, 0, mo_rat=["csfb", "3g"], msg="SMS", direction="mo")
954
955    @test_tracker_info(uuid="d8ef0ac8-9cb1-4f32-8211-84dee563af00")
956    @TelephonyBaseTest.tel_test_wrap
957    def test_msim_sms_mo_csfb_3g_psim_dds_slot_1(self):
958        return self._test_msim_message(
959            0, None, 1, mo_rat=["csfb", "3g"], msg="SMS", direction="mo")
960
961    @test_tracker_info(uuid="f4eb2254-5148-4cf9-b53f-56d8665de645")
962    @TelephonyBaseTest.tel_test_wrap
963    def test_msim_sms_mt_csfb_3g_psim_dds_slot_0(self):
964        return self._test_msim_message(
965            None, 0, 0, mt_rat=["csfb", "3g"], msg="SMS", direction="mt")
966
967    @test_tracker_info(uuid="fd546290-f7e7-47ff-b165-a9bb01e91c64")
968    @TelephonyBaseTest.tel_test_wrap
969    def test_msim_sms_mt_csfb_3g_psim_dds_slot_1(self):
970        return self._test_msim_message(
971            None, 0, 1, mt_rat=["csfb", "3g"], msg="SMS", direction="mt")
972
973    @test_tracker_info(uuid="d6994024-e845-48e2-9cd6-d72e97480a8a")
974    @TelephonyBaseTest.tel_test_wrap
975    def test_msim_sms_mo_csfb_3g_esim_dds_slot_0(self):
976        return self._test_msim_message(
977            1, None, 0, mo_rat=["csfb", "3g"], msg="SMS", direction="mo")
978
979    @test_tracker_info(uuid="c816165e-49d8-4d0a-8bb5-e64ad910a55a")
980    @TelephonyBaseTest.tel_test_wrap
981    def test_msim_sms_mo_csfb_3g_esim_dds_slot_1(self):
982        return self._test_msim_message(
983            1, None, 1, mo_rat=["csfb", "3g"], msg="SMS", direction="mo")
984
985    @test_tracker_info(uuid="647d546f-b325-4b91-be84-0bedf5a33210")
986    @TelephonyBaseTest.tel_test_wrap
987    def test_msim_sms_mt_csfb_3g_esim_dds_slot_0(self):
988        return self._test_msim_message(
989            None, 1, 0, mt_rat=["csfb", "3g"], msg="SMS", direction="mt")
990
991    @test_tracker_info(uuid="98b7e161-4953-4566-a96c-21545bf05e51")
992    @TelephonyBaseTest.tel_test_wrap
993    def test_msim_sms_mt_csfb_3g_esim_dds_slot_1(self):
994        return self._test_msim_message(
995            None, 1, 1, mt_rat=["csfb", "3g"], msg="SMS", direction="mt")
996
997    @test_tracker_info(uuid="9a3d1330-e70e-4ac0-a8bc-fec5710a8dcd")
998    @TelephonyBaseTest.tel_test_wrap
999    def test_msim_sms_mo_3g_csfb_psim_dds_slot_0(self):
1000        return self._test_msim_message(
1001            0, None, 0, mo_rat=["3g", "csfb"], msg="SMS", direction="mo")
1002
1003    @test_tracker_info(uuid="51b4edd3-a867-409e-b367-2fd8cf0eb4a6")
1004    @TelephonyBaseTest.tel_test_wrap
1005    def test_msim_sms_mo_3g_csfb_psim_dds_slot_1(self):
1006        return self._test_msim_message(
1007            0, None, 1, mo_rat=["3g", "csfb"], msg="SMS", direction="mo")
1008
1009    @test_tracker_info(uuid="dba9cb2b-84bd-47db-a5a6-826e54a1bbeb")
1010    @TelephonyBaseTest.tel_test_wrap
1011    def test_msim_sms_mt_3g_csfb_psim_dds_slot_0(self):
1012        return self._test_msim_message(
1013            None, 0, 0, mt_rat=["3g", "csfb"], msg="SMS", direction="mt")
1014
1015    @test_tracker_info(uuid="263494aa-f3c4-450e-b5bf-b9331d9c9dd8")
1016    @TelephonyBaseTest.tel_test_wrap
1017    def test_msim_sms_mt_3g_csfb_psim_dds_slot_1(self):
1018        return self._test_msim_message(
1019            None, 0, 1, mt_rat=["3g", "csfb"], msg="SMS", direction="mt")
1020
1021    @test_tracker_info(uuid="7ba231b8-edc9-4f64-ba7e-5f0360c4eed5")
1022    @TelephonyBaseTest.tel_test_wrap
1023    def test_msim_sms_mo_3g_csfb_esim_dds_slot_0(self):
1024        return self._test_msim_message(
1025            1, None, 0, mo_rat=["3g", "csfb"], msg="SMS", direction="mo")
1026
1027    @test_tracker_info(uuid="ca1e9c35-07f2-4e32-8a59-61efc37f11a4")
1028    @TelephonyBaseTest.tel_test_wrap
1029    def test_msim_sms_mo_3g_csfb_esim_dds_slot_1(self):
1030        return self._test_msim_message(
1031            1, None, 1, mo_rat=["3g", "csfb"], msg="SMS", direction="mo")
1032
1033    @test_tracker_info(uuid="f19252c0-8ff6-4267-adcd-f676407333e6")
1034    @TelephonyBaseTest.tel_test_wrap
1035    def test_msim_sms_mt_3g_csfb_esim_dds_slot_0(self):
1036        return self._test_msim_message(
1037            None, 1, 0, mt_rat=["3g", "csfb"], msg="SMS", direction="mt")
1038
1039    @test_tracker_info(uuid="34ef2001-d80d-4818-b458-1e8a9556e5cd")
1040    @TelephonyBaseTest.tel_test_wrap
1041    def test_msim_sms_mt_3g_csfb_esim_dds_slot_1(self):
1042        return self._test_msim_message(
1043            None, 1, 1, mt_rat=["3g", "csfb"], msg="SMS", direction="mt")
1044
1045    @test_tracker_info(uuid="947ceba7-9aeb-402c-ba36-4856bc4352eb")
1046    @TelephonyBaseTest.tel_test_wrap
1047    def test_msim_sms_mo_3g_psim_dds_slot_0(self):
1048        return self._test_msim_message(
1049            0, None, 0, mo_rat=["3g", "3g"], msg="SMS", direction="mo")
1050
1051    @test_tracker_info(uuid="9f9677e1-1215-49ed-a671-22e7779659a9")
1052    @TelephonyBaseTest.tel_test_wrap
1053    def test_msim_sms_mo_3g_psim_dds_slot_1(self):
1054        return self._test_msim_message(
1055            0, None, 1, mo_rat=["3g", "3g"], msg="SMS", direction="mo")
1056
1057    @test_tracker_info(uuid="f77112c8-85e8-4584-a0b7-bba11c23be7d")
1058    @TelephonyBaseTest.tel_test_wrap
1059    def test_msim_sms_mt_3g_psim_dds_slot_0(self):
1060        return self._test_msim_message(
1061            None, 0, 0, mt_rat=["3g", "3g"], msg="SMS", direction="mt")
1062
1063    @test_tracker_info(uuid="facc19fd-7846-488e-9cf1-755f81d0fee2")
1064    @TelephonyBaseTest.tel_test_wrap
1065    def test_msim_sms_mt_3g_psim_dds_slot_1(self):
1066        return self._test_msim_message(
1067            None, 0, 1, mt_rat=["3g", "3g"], msg="SMS", direction="mt")
1068
1069    @test_tracker_info(uuid="5a26f35e-c038-409e-8941-7e0b475ebda8")
1070    @TelephonyBaseTest.tel_test_wrap
1071    def test_msim_sms_mo_3g_esim_dds_slot_0(self):
1072        return self._test_msim_message(
1073            1, None, 0, mo_rat=["3g", "3g"], msg="SMS", direction="mo")
1074
1075    @test_tracker_info(uuid="c303aa26-0fd0-44d7-b2fc-32782deaf5ea")
1076    @TelephonyBaseTest.tel_test_wrap
1077    def test_msim_sms_mo_3g_esim_dds_slot_1(self):
1078        return self._test_msim_message(
1079            1, None, 1, mo_rat=["3g", "3g"], msg="SMS", direction="mo")
1080
1081    @test_tracker_info(uuid="45cbddd3-889d-46ab-8d7f-9dd971287155")
1082    @TelephonyBaseTest.tel_test_wrap
1083    def test_msim_sms_mt_3g_esim_dds_slot_0(self):
1084        return self._test_msim_message(
1085            None, 1, 0, mt_rat=["3g", "3g"], msg="SMS", direction="mt")
1086
1087    @test_tracker_info(uuid="7dacd6b2-9d21-4c4d-bec4-fdfe685cdce8")
1088    @TelephonyBaseTest.tel_test_wrap
1089    def test_msim_sms_mt_3g_esim_dds_slot_1(self):
1090        return self._test_msim_message(
1091            None, 1, 1, mt_rat=["3g", "3g"], msg="SMS", direction="mt")
1092
1093    @test_tracker_info(uuid="24268e9f-b047-4c67-92f9-22e0bd8b3a11")
1094    @TelephonyBaseTest.tel_test_wrap
1095    def test_msim_mms_mo_volte_psim_dds_slot_0(self):
1096        return self._test_msim_message(
1097            0, None, 0, mo_rat=["volte", "volte"], msg="MMS", direction="mo")
1098
1099    @test_tracker_info(uuid="1d72b01d-5ca7-4899-ae57-ecbeff09bc39")
1100    @TelephonyBaseTest.tel_test_wrap
1101    def test_msim_mms_mo_volte_psim_dds_slot_1(self):
1102        return self._test_msim_message(
1103            0, None, 1, mo_rat=["volte", "volte"], msg="MMS", direction="mo")
1104
1105    @test_tracker_info(uuid="ca2ad510-7f5e-49e4-861e-d433f86c2237")
1106    @TelephonyBaseTest.tel_test_wrap
1107    def test_msim_mms_mt_volte_psim_dds_slot_0(self):
1108        return self._test_msim_message(
1109            None, 0, 0, mt_rat=["volte", "volte"], msg="MMS", direction="mt")
1110
1111    @test_tracker_info(uuid="63a0480a-18dd-43e5-82e9-45e008346ea9")
1112    @TelephonyBaseTest.tel_test_wrap
1113    def test_msim_mms_mt_volte_psim_dds_slot_1(self):
1114        return self._test_msim_message(
1115            None, 0, 1, mt_rat=["volte", "volte"], msg="MMS", direction="mt")
1116
1117    @test_tracker_info(uuid="5e51f0d9-f1b6-4bfe-88ab-f28ebaa6ee55")
1118    @TelephonyBaseTest.tel_test_wrap
1119    def test_msim_mms_mo_volte_esim_dds_slot_0(self):
1120        return self._test_msim_message(
1121            1, None, 0, mo_rat=["volte", "volte"], msg="MMS", direction="mo")
1122
1123    @test_tracker_info(uuid="fcc7e8aa-41a4-48a1-9586-d6080c77a79b")
1124    @TelephonyBaseTest.tel_test_wrap
1125    def test_msim_mms_mo_volte_esim_dds_slot_1(self):
1126        return self._test_msim_message(
1127            1, None, 1, mo_rat=["volte", "volte"], msg="MMS", direction="mo")
1128
1129    @test_tracker_info(uuid="f633bf56-2d15-462b-994d-e9294d87ca23")
1130    @TelephonyBaseTest.tel_test_wrap
1131    def test_msim_mms_mt_volte_esim_dds_slot_0(self):
1132        return self._test_msim_message(
1133            None, 1, 0, mt_rat=["volte", "volte"], msg="MMS", direction="mt")
1134
1135    @test_tracker_info(uuid="3c336061-32cf-4e9a-bb1e-b54e3357e644")
1136    @TelephonyBaseTest.tel_test_wrap
1137    def test_msim_mms_mt_volte_esim_dds_slot_1(self):
1138        return self._test_msim_message(
1139            None, 1, 1, mt_rat=["volte", "volte"], msg="MMS", direction="mt")
1140
1141    @test_tracker_info(uuid="50ee8103-0196-4194-b982-9d07c68e57e4")
1142    @TelephonyBaseTest.tel_test_wrap
1143    def test_msim_mms_mo_volte_csfb_psim_dds_slot_0(self):
1144        return self._test_msim_message(
1145            0, None, 0, mo_rat=["volte", "csfb"], msg="MMS", direction="mo")
1146
1147    @test_tracker_info(uuid="ec09405d-b12d-405c-9bfd-ba3eb20eb752")
1148    @TelephonyBaseTest.tel_test_wrap
1149    def test_msim_mms_mo_volte_csfb_psim_dds_slot_1(self):
1150        return self._test_msim_message(
1151            0, None, 1, mo_rat=["volte", "csfb"], msg="MMS", direction="mo")
1152
1153    @test_tracker_info(uuid="26bea731-b653-4e9f-98d1-1b290b959bfc")
1154    @TelephonyBaseTest.tel_test_wrap
1155    def test_msim_mms_mt_volte_csfb_psim_dds_slot_0(self):
1156        return self._test_msim_message(
1157            None, 0, 0, mt_rat=["volte", "csfb"], msg="MMS", direction="mt")
1158
1159    @test_tracker_info(uuid="ecc010da-1798-4da3-b041-13e2b2547548")
1160    @TelephonyBaseTest.tel_test_wrap
1161    def test_msim_mms_mt_volte_csfb_psim_dds_slot_1(self):
1162        return self._test_msim_message(
1163            None, 0, 1, mt_rat=["volte", "csfb"], msg="MMS", direction="mt")
1164
1165    @test_tracker_info(uuid="cf4c5bd0-525a-497a-a0f8-17acd9dbeabd")
1166    @TelephonyBaseTest.tel_test_wrap
1167    def test_msim_mms_mo_volte_csfb_esim_dds_slot_0(self):
1168        return self._test_msim_message(
1169            1, None, 0, mo_rat=["volte", "csfb"], msg="MMS", direction="mo")
1170
1171    @test_tracker_info(uuid="603f22db-913b-4ad3-b148-7c6d3624bc09")
1172    @TelephonyBaseTest.tel_test_wrap
1173    def test_msim_mms_mo_volte_csfb_esim_dds_slot_1(self):
1174        return self._test_msim_message(
1175            1, None, 1, mo_rat=["volte", "csfb"], msg="MMS", direction="mo")
1176
1177    @test_tracker_info(uuid="561efaf1-7fe4-4196-991e-d03eee28fb4e")
1178    @TelephonyBaseTest.tel_test_wrap
1179    def test_msim_mms_mt_volte_csfb_esim_dds_slot_0(self):
1180        return self._test_msim_message(
1181            None, 1, 0, mt_rat=["volte", "csfb"], msg="MMS", direction="mt")
1182
1183    @test_tracker_info(uuid="6f383ef0-d99a-4a3d-b137-e24fa03306b9")
1184    @TelephonyBaseTest.tel_test_wrap
1185    def test_msim_mms_mt_volte_csfb_esim_dds_slot_1(self):
1186        return self._test_msim_message(
1187            None, 1, 1, mt_rat=["volte", "csfb"], msg="MMS", direction="mt")
1188
1189    @test_tracker_info(uuid="eeaa1262-c2a0-4f47-baa5-7435fa9e9315")
1190    @TelephonyBaseTest.tel_test_wrap
1191    def test_msim_mms_mo_csfb_volte_psim_dds_slot_0(self):
1192        return self._test_msim_message(
1193            0, None, 0, mo_rat=["csfb", "volte"], msg="MMS", direction="mo")
1194
1195    @test_tracker_info(uuid="478f5497-cc21-4634-8b97-df70dbe286c0")
1196    @TelephonyBaseTest.tel_test_wrap
1197    def test_msim_mms_mo_csfb_volte_psim_dds_slot_1(self):
1198        return self._test_msim_message(
1199            0, None, 1, mo_rat=["csfb", "volte"], msg="MMS", direction="mo")
1200
1201    @test_tracker_info(uuid="1c4af9c6-87d6-438c-aba7-70d8bb4b357e")
1202    @TelephonyBaseTest.tel_test_wrap
1203    def test_msim_mms_mt_csfb_volte_psim_dds_slot_0(self):
1204        return self._test_msim_message(
1205            None, 0, 0, mt_rat=["csfb", "volte"], msg="MMS", direction="mt")
1206
1207    @test_tracker_info(uuid="825daee3-db6c-404a-a454-cea98182bf5a")
1208    @TelephonyBaseTest.tel_test_wrap
1209    def test_msim_mms_mt_csfb_volte_psim_dds_slot_1(self):
1210        return self._test_msim_message(
1211            None, 0, 1, mt_rat=["csfb", "volte"], msg="MMS", direction="mt")
1212
1213    @test_tracker_info(uuid="50fe9f3e-eae1-4a01-8655-02340f85037a")
1214    @TelephonyBaseTest.tel_test_wrap
1215    def test_msim_mms_mo_csfb_volte_esim_dds_slot_0(self):
1216        return self._test_msim_message(
1217            1, None, 0, mo_rat=["csfb", "volte"], msg="MMS", direction="mo")
1218
1219    @test_tracker_info(uuid="bae89139-f73f-4a06-bb65-a0bae385fae9")
1220    @TelephonyBaseTest.tel_test_wrap
1221    def test_msim_mms_mo_csfb_volte_esim_dds_slot_1(self):
1222        return self._test_msim_message(
1223            1, None, 1, mo_rat=["csfb", "volte"], msg="MMS", direction="mo")
1224
1225    @test_tracker_info(uuid="42e897e3-4411-45a0-bf62-3ea6f59c2617")
1226    @TelephonyBaseTest.tel_test_wrap
1227    def test_msim_mms_mt_csfb_volte_esim_dds_slot_0(self):
1228        return self._test_msim_message(
1229            None, 1, 0, mt_rat=["csfb", "volte"], msg="MMS", direction="mt")
1230
1231    @test_tracker_info(uuid="9847b0c8-517e-42ea-9306-8a4a1cd46cd8")
1232    @TelephonyBaseTest.tel_test_wrap
1233    def test_msim_mms_mt_csfb_volte_esim_dds_slot_1(self):
1234        return self._test_msim_message(
1235            None, 1, 1, mt_rat=["csfb", "volte"], msg="MMS", direction="mt")
1236
1237    @test_tracker_info(uuid="5057f8e4-19e7-42c0-bc63-1678d8ce1504")
1238    @TelephonyBaseTest.tel_test_wrap
1239    def test_msim_mms_mo_volte_3g_psim_dds_slot_0(self):
1240        return self._test_msim_message(
1241            0, None, 0, mo_rat=["volte", "3g"], msg="MMS", direction="mo")
1242
1243    @test_tracker_info(uuid="52bb44ae-0263-4415-8a61-337a8f990f8b")
1244    @TelephonyBaseTest.tel_test_wrap
1245    def test_msim_mms_mo_volte_3g_psim_dds_slot_1(self):
1246        return self._test_msim_message(
1247            0, None, 1, mo_rat=["volte", "3g"], msg="MMS", direction="mo")
1248
1249    @test_tracker_info(uuid="deb00e73-b63a-4ed8-8b7f-953704b5d783")
1250    @TelephonyBaseTest.tel_test_wrap
1251    def test_msim_mms_mt_volte_3g_psim_dds_slot_0(self):
1252        return self._test_msim_message(
1253            None, 0, 0, mt_rat=["volte", "3g"], msg="MMS", direction="mt")
1254
1255    @test_tracker_info(uuid="e0aa9846-2c02-4ba1-aeef-08a673c497ae")
1256    @TelephonyBaseTest.tel_test_wrap
1257    def test_msim_mms_mt_volte_3g_psim_dds_slot_1(self):
1258        return self._test_msim_message(
1259            None, 0, 1, mt_rat=["volte", "3g"], msg="MMS", direction="mt")
1260
1261    @test_tracker_info(uuid="ef06ae23-6f52-4c3b-b228-5c95ed780cd2")
1262    @TelephonyBaseTest.tel_test_wrap
1263    def test_msim_mms_mo_volte_3g_esim_dds_slot_0(self):
1264        return self._test_msim_message(
1265            1, None, 0, mo_rat=["volte", "3g"], msg="MMS", direction="mo")
1266
1267    @test_tracker_info(uuid="69a62cd6-290b-4e58-81ff-0b35ac82262c")
1268    @TelephonyBaseTest.tel_test_wrap
1269    def test_msim_mms_mo_volte_3g_esim_dds_slot_1(self):
1270        return self._test_msim_message(
1271            1, None, 1, mo_rat=["volte", "3g"], msg="MMS", direction="mo")
1272
1273    @test_tracker_info(uuid="645cef41-ddf8-49b4-8a58-2da019883f32")
1274    @TelephonyBaseTest.tel_test_wrap
1275    def test_msim_mms_mt_volte_3g_esim_dds_slot_0(self):
1276        return self._test_msim_message(
1277            None, 1, 0, mt_rat=["volte", "3g"], msg="MMS", direction="mt")
1278
1279    @test_tracker_info(uuid="b0b8aac3-cc85-47d9-828a-8016138fe466")
1280    @TelephonyBaseTest.tel_test_wrap
1281    def test_msim_mms_mt_volte_3g_esim_dds_slot_1(self):
1282        return self._test_msim_message(
1283            None, 1, 1, mt_rat=["volte", "3g"], msg="MMS", direction="mt")
1284
1285    @test_tracker_info(uuid="1dcebefb-3338-4550-96fa-07b64493db1c")
1286    @TelephonyBaseTest.tel_test_wrap
1287    def test_msim_mms_mo_3g_volte_psim_dds_slot_0(self):
1288        return self._test_msim_message(
1289            0, None, 0, mo_rat=["3g", "volte"], msg="MMS", direction="mo")
1290
1291    @test_tracker_info(uuid="3d06854e-5b86-46fb-9ca2-a217b026733d")
1292    @TelephonyBaseTest.tel_test_wrap
1293    def test_msim_mms_mo_3g_volte_psim_dds_slot_1(self):
1294        return self._test_msim_message(
1295            0, None, 1, mo_rat=["3g", "volte"], msg="MMS", direction="mo")
1296
1297    @test_tracker_info(uuid="0c0f72bc-4076-411d-8a8d-fc6ae414a73a")
1298    @TelephonyBaseTest.tel_test_wrap
1299    def test_msim_mms_mt_3g_volte_psim_dds_slot_0(self):
1300        return self._test_msim_message(
1301            None, 0, 0, mt_rat=["3g", "volte"], msg="MMS", direction="mt")
1302
1303    @test_tracker_info(uuid="b63211fa-baf0-4dff-bd18-d7f80e85e551")
1304    @TelephonyBaseTest.tel_test_wrap
1305    def test_msim_mms_mt_3g_volte_psim_dds_slot_1(self):
1306        return self._test_msim_message(
1307            None, 0, 1, mt_rat=["3g", "volte"], msg="MMS", direction="mt")
1308
1309    @test_tracker_info(uuid="80c2fe4d-e87a-45d7-9b83-23863e75cd94")
1310    @TelephonyBaseTest.tel_test_wrap
1311    def test_msim_mms_mo_3g_volte_esim_dds_slot_0(self):
1312        return self._test_msim_message(
1313            1, None, 0, mo_rat=["3g", "volte"], msg="MMS", direction="mo")
1314
1315    @test_tracker_info(uuid="84be29a1-0b29-4785-baaa-6cf84c503fa6")
1316    @TelephonyBaseTest.tel_test_wrap
1317    def test_msim_mms_mo_3g_volte_esim_dds_slot_1(self):
1318        return self._test_msim_message(
1319            1, None, 1, mo_rat=["3g", "volte"], msg="MMS", direction="mo")
1320
1321    @test_tracker_info(uuid="591d2948-2257-4a46-8ccb-5c628d85fc43")
1322    @TelephonyBaseTest.tel_test_wrap
1323    def test_msim_mms_mt_3g_volte_esim_dds_slot_0(self):
1324        return self._test_msim_message(
1325            None, 1, 0, mt_rat=["3g", "volte"], msg="MMS", direction="mt")
1326
1327    @test_tracker_info(uuid="67e4dae5-8ca5-475f-af0e-f91b89df68ed")
1328    @TelephonyBaseTest.tel_test_wrap
1329    def test_msim_mms_mt_3g_volte_esim_dds_slot_1(self):
1330        return self._test_msim_message(
1331            None, 1, 1, mt_rat=["3g", "volte"], msg="MMS", direction="mt")
1332
1333    @test_tracker_info(uuid="35d33d3e-f618-4ce1-8b40-3dac0ef2731a")
1334    @TelephonyBaseTest.tel_test_wrap
1335    def test_msim_mms_mo_csfb_psim_dds_slot_0(self):
1336        return self._test_msim_message(
1337            0, None, 0, mo_rat=["csfb", "csfb"], msg="MMS", direction="mo")
1338
1339    @test_tracker_info(uuid="179e49c7-7066-4285-9b5b-3ef639d8c5e4")
1340    @TelephonyBaseTest.tel_test_wrap
1341    def test_msim_mms_mo_csfb_psim_dds_slot_1(self):
1342        return self._test_msim_message(
1343            0, None, 1, mo_rat=["csfb", "csfb"], msg="MMS", direction="mo")
1344
1345    @test_tracker_info(uuid="09d6954f-d760-47e5-8667-3ed317fdbfbc")
1346    @TelephonyBaseTest.tel_test_wrap
1347    def test_msim_mms_mt_csfb_psim_dds_slot_0(self):
1348        return self._test_msim_message(
1349            None, 0, 0, mt_rat=["csfb", "csfb"], msg="MMS", direction="mt")
1350
1351    @test_tracker_info(uuid="80f8c18f-2bd6-4310-be39-472d7a24e08a")
1352    @TelephonyBaseTest.tel_test_wrap
1353    def test_msim_mms_mt_csfb_psim_dds_slot_1(self):
1354        return self._test_msim_message(
1355            None, 0, 1, mt_rat=["csfb", "csfb"], msg="MMS", direction="mt")
1356
1357    @test_tracker_info(uuid="b700d261-7616-4226-95cc-59ec54cc2678")
1358    @TelephonyBaseTest.tel_test_wrap
1359    def test_msim_mms_mo_csfb_esim_dds_slot_0(self):
1360        return self._test_msim_message(
1361            1, None, 0, mo_rat=["csfb", "csfb"], msg="MMS", direction="mo")
1362
1363    @test_tracker_info(uuid="5cb2cc81-bf3e-4025-b85b-2bf1a4797e41")
1364    @TelephonyBaseTest.tel_test_wrap
1365    def test_msim_mms_mo_csfb_esim_dds_slot_1(self):
1366        return self._test_msim_message(
1367            1, None, 1, mo_rat=["csfb", "csfb"], msg="MMS", direction="mo")
1368
1369    @test_tracker_info(uuid="1af2ac12-4d2d-4a36-8c46-8b3013eadab2")
1370    @TelephonyBaseTest.tel_test_wrap
1371    def test_msim_mms_mt_csfb_esim_dds_slot_0(self):
1372        return self._test_msim_message(
1373            None, 1, 0, mt_rat=["csfb", "csfb"], msg="MMS", direction="mt")
1374
1375    @test_tracker_info(uuid="66d8108e-8dd9-42e3-b2cd-49a538beecf6")
1376    @TelephonyBaseTest.tel_test_wrap
1377    def test_msim_mms_mt_csfb_esim_dds_slot_1(self):
1378        return self._test_msim_message(
1379            None, 1, 1, mt_rat=["csfb", "csfb"], msg="MMS", direction="mt")
1380
1381    @test_tracker_info(uuid="a35df875-72eb-43d7-874c-a7b3f0aea2a9")
1382    @TelephonyBaseTest.tel_test_wrap
1383    def test_msim_mms_mo_csfb_3g_psim_dds_slot_0(self):
1384        return self._test_msim_message(
1385            0, None, 0, mo_rat=["csfb", "3g"], msg="MMS", direction="mo")
1386
1387    @test_tracker_info(uuid="cf718bda-75d6-4906-a33e-110610b01d4d")
1388    @TelephonyBaseTest.tel_test_wrap
1389    def test_msim_mms_mo_csfb_3g_psim_dds_slot_1(self):
1390        return self._test_msim_message(
1391            0, None, 1, mo_rat=["csfb", "3g"], msg="MMS", direction="mo")
1392
1393    @test_tracker_info(uuid="342cbc1a-7151-425c-9bd6-81808a5eb7e6")
1394    @TelephonyBaseTest.tel_test_wrap
1395    def test_msim_mms_mt_csfb_3g_psim_dds_slot_0(self):
1396        return self._test_msim_message(
1397            None, 0, 0, mt_rat=["csfb", "3g"], msg="MMS", direction="mt")
1398
1399    @test_tracker_info(uuid="01e33aa4-27a9-48fd-b9e8-313980d06b0d")
1400    @TelephonyBaseTest.tel_test_wrap
1401    def test_msim_mms_mt_csfb_3g_psim_dds_slot_1(self):
1402        return self._test_msim_message(
1403            None, 0, 1, mt_rat=["csfb", "3g"], msg="MMS", direction="mt")
1404
1405    @test_tracker_info(uuid="fe527335-731e-49a5-a07e-f4999c536153")
1406    @TelephonyBaseTest.tel_test_wrap
1407    def test_msim_mms_mo_csfb_3g_esim_dds_slot_0(self):
1408        return self._test_msim_message(
1409            1, None, 0, mo_rat=["csfb", "3g"], msg="MMS", direction="mo")
1410
1411    @test_tracker_info(uuid="1c56f866-3b3c-45c0-9c13-face44246aca")
1412    @TelephonyBaseTest.tel_test_wrap
1413    def test_msim_mms_mo_csfb_3g_esim_dds_slot_1(self):
1414        return self._test_msim_message(
1415            1, None, 1, mo_rat=["csfb", "3g"], msg="MMS", direction="mo")
1416
1417    @test_tracker_info(uuid="4affd77a-afdc-4ac9-ba8a-a3599efe1e96")
1418    @TelephonyBaseTest.tel_test_wrap
1419    def test_msim_mms_mt_csfb_3g_esim_dds_slot_0(self):
1420        return self._test_msim_message(
1421            None, 1, 0, mt_rat=["csfb", "3g"], msg="MMS", direction="mt")
1422
1423    @test_tracker_info(uuid="8440c05e-28d9-45c7-b32e-127f240d12f0")
1424    @TelephonyBaseTest.tel_test_wrap
1425    def test_msim_mms_mt_csfb_3g_esim_dds_slot_1(self):
1426        return self._test_msim_message(
1427            None, 1, 1, mt_rat=["csfb", "3g"], msg="MMS", direction="mt")
1428
1429    @test_tracker_info(uuid="a53ebb84-945e-4068-a78a-fd78362e8073")
1430    @TelephonyBaseTest.tel_test_wrap
1431    def test_msim_mms_mo_3g_csfb_psim_dds_slot_0(self):
1432        return self._test_msim_message(
1433            0, None, 0, mo_rat=["3g", "csfb"], msg="MMS", direction="mo")
1434
1435    @test_tracker_info(uuid="23bedcbc-7c09-430d-a162-04de75244fd8")
1436    @TelephonyBaseTest.tel_test_wrap
1437    def test_msim_mms_mo_3g_csfb_psim_dds_slot_1(self):
1438        return self._test_msim_message(
1439            0, None, 1, mo_rat=["3g", "csfb"], msg="MMS", direction="mo")
1440
1441    @test_tracker_info(uuid="e1e1ef53-d91b-4b10-9bd6-e065ca48ab94")
1442    @TelephonyBaseTest.tel_test_wrap
1443    def test_msim_mms_mt_3g_csfb_psim_dds_slot_0(self):
1444        return self._test_msim_message(
1445            None, 0, 0, mt_rat=["3g", "csfb"], msg="MMS", direction="mt")
1446
1447    @test_tracker_info(uuid="e813ae3b-b875-43f6-a055-d2119cec9786")
1448    @TelephonyBaseTest.tel_test_wrap
1449    def test_msim_mms_mt_3g_csfb_psim_dds_slot_1(self):
1450        return self._test_msim_message(
1451            None, 0, 1, mt_rat=["3g", "csfb"], msg="MMS", direction="mt")
1452
1453    @test_tracker_info(uuid="d5863aab-a46a-4363-8bf8-5dcfc29a9055")
1454    @TelephonyBaseTest.tel_test_wrap
1455    def test_msim_mms_mo_3g_csfb_esim_dds_slot_0(self):
1456        return self._test_msim_message(
1457            1, None, 0, mo_rat=["3g", "csfb"], msg="MMS", direction="mo")
1458
1459    @test_tracker_info(uuid="79a0bd58-0de0-471e-9e53-9cc655700428")
1460    @TelephonyBaseTest.tel_test_wrap
1461    def test_msim_mms_mo_3g_csfb_esim_dds_slot_1(self):
1462        return self._test_msim_message(
1463            1, None, 1, mo_rat=["3g", "csfb"], msg="MMS", direction="mo")
1464
1465    @test_tracker_info(uuid="e9a340f4-22a7-4786-bb5b-370295324d5a")
1466    @TelephonyBaseTest.tel_test_wrap
1467    def test_msim_mms_mt_3g_csfb_esim_dds_slot_0(self):
1468        return self._test_msim_message(
1469            None, 1, 0, mt_rat=["3g", "csfb"], msg="MMS", direction="mt")
1470
1471    @test_tracker_info(uuid="8a261b43-2532-4c47-ac0c-3a5dd0d51b69")
1472    @TelephonyBaseTest.tel_test_wrap
1473    def test_msim_mms_mt_3g_csfb_esim_dds_slot_1(self):
1474        return self._test_msim_message(
1475            None, 1, 1, mt_rat=["3g", "csfb"], msg="MMS", direction="mt")
1476
1477    @test_tracker_info(uuid="2efdf7da-d2ec-4580-a164-5f7b740f9ac6")
1478    @TelephonyBaseTest.tel_test_wrap
1479    def test_msim_mms_mo_3g_psim_dds_slot_0(self):
1480        return self._test_msim_message(
1481            0, None, 0, mo_rat=["3g", "3g"], msg="MMS", direction="mo")
1482
1483    @test_tracker_info(uuid="459e9b40-ad4e-4a89-ac89-f3c8ec472d3f")
1484    @TelephonyBaseTest.tel_test_wrap
1485    def test_msim_mms_mo_3g_psim_dds_slot_1(self):
1486        return self._test_msim_message(
1487            0, None, 1, mo_rat=["3g", "3g"], msg="MMS", direction="mo")
1488
1489    @test_tracker_info(uuid="130a0e85-1653-4ddf-81b9-dadd26dde1e3")
1490    @TelephonyBaseTest.tel_test_wrap
1491    def test_msim_mms_mt_3g_psim_dds_slot_0(self):
1492        return self._test_msim_message(
1493            None, 0, 0, mt_rat=["3g", "3g"], msg="MMS", direction="mt")
1494
1495    @test_tracker_info(uuid="e81f0b33-38b3-4a4d-9e05-fb44a689230b")
1496    @TelephonyBaseTest.tel_test_wrap
1497    def test_msim_mms_mt_3g_psim_dds_slot_1(self):
1498        return self._test_msim_message(
1499            None, 0, 1, mt_rat=["3g", "3g"], msg="MMS", direction="mt")
1500
1501    @test_tracker_info(uuid="61894370-93b5-4ab5-80c7-d50948d38471")
1502    @TelephonyBaseTest.tel_test_wrap
1503    def test_msim_mms_mo_3g_esim_dds_slot_0(self):
1504        return self._test_msim_message(
1505            1, None, 0, mo_rat=["3g", "3g"], msg="MMS", direction="mo")
1506
1507    @test_tracker_info(uuid="8d41ee9a-fed9-4472-ada7-007e56690c67")
1508    @TelephonyBaseTest.tel_test_wrap
1509    def test_msim_mms_mo_3g_esim_dds_slot_1(self):
1510        return self._test_msim_message(
1511            1, None, 1, mo_rat=["3g", "3g"], msg="MMS", direction="mo")
1512
1513    @test_tracker_info(uuid="6aa41641-2619-48f6-8c5f-1c06260f0e28")
1514    @TelephonyBaseTest.tel_test_wrap
1515    def test_msim_mms_mt_3g_esim_dds_slot_0(self):
1516        return self._test_msim_message(
1517            None, 1, 0, mt_rat=["3g", "3g"], msg="MMS", direction="mt")
1518
1519    @test_tracker_info(uuid="94d8e05d-eb99-4a71-be00-e725cbd05cae")
1520    @TelephonyBaseTest.tel_test_wrap
1521    def test_msim_mms_mt_3g_esim_dds_slot_1(self):
1522        return self._test_msim_message(
1523            None, 1, 1, mt_rat=["3g", "3g"], msg="MMS", direction="mt")
1524
1525    @test_tracker_info(uuid="207a23b7-17f1-4e27-892d-6c276f463b07")
1526    @TelephonyBaseTest.tel_test_wrap
1527    def test_sms_mo_mt_at_the_same_time(
1528        self,
1529        slot_0_nw_gen="volte",
1530        slot_1_nw_gen="volte"):
1531        ad = self.android_devices[0]
1532        slot_0_subid = get_subid_from_slot_index(ad.log, ad, 0)
1533        slot_1_subid = get_subid_from_slot_index(ad.log, ad, 1)
1534
1535        if slot_0_subid == INVALID_SUB_ID or slot_1_subid == INVALID_SUB_ID:
1536            self.log.error("Not all slots have valid sub ID.")
1537            raise signals.TestFailure("Failed",
1538                extras={"fail_reason": "Not all slots have valid sub ID"})
1539
1540        slot0_phone_setup_func = phone_setup_on_rat(
1541            self.log,
1542            ad,
1543            slot_0_nw_gen,
1544            only_return_fn=True)
1545
1546        tasks = [(slot0_phone_setup_func, (self.log, ad, slot_0_subid))]
1547        if not multithread_func(self.log, tasks):
1548            self.log.error("Phone Failed to Set Up Properly.")
1549            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
1550            raise signals.TestFailure("Failed",
1551                extras={"fail_reason": "Phone Failed to Set Up Properly."})
1552
1553        slot1_phone_setup_func = phone_setup_on_rat(
1554            self.log,
1555            ad,
1556            slot_1_nw_gen,
1557            only_return_fn=True)
1558
1559        tasks = [(slot1_phone_setup_func, (self.log, ad, slot_1_subid))]
1560        if not multithread_func(self.log, tasks):
1561            self.log.error("Phone Failed to Set Up Properly.")
1562            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
1563            raise signals.TestFailure("Failed",
1564                extras={"fail_reason": "Phone Failed to Set Up Properly."})
1565
1566        ad_host = self.android_devices[0]
1567        ad_mt = self.android_devices[1]
1568        ad_mo = self.android_devices[2]
1569
1570        for ads in [[slot_0_subid, slot_1_subid], [slot_1_subid, slot_0_subid]]:
1571            set_message_subid(ad_host, ads[0])
1572            _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(
1573                self.android_devices, host_sub_id=ads[0])
1574
1575            _, _, mo_sub_id = get_subid_on_same_network_of_host_ad(
1576                self.android_devices, host_sub_id=ads[1])
1577            set_message_subid(ad_mo, mo_sub_id)
1578
1579            res = self._msim_sms_collision_test(
1580                ad_host,
1581                ad_mo,
1582                ad_mt,
1583                ad_host,
1584                ads[0],
1585                mo_sub_id,
1586                mt_sub_id,
1587                ads[1])
1588
1589            if not res:
1590                log_messaging_screen_shot(
1591                    ad_host,
1592                    test_name="sms tx subid: %s; sms rx subid: %s" % (
1593                        ads[0], ads[1]))
1594                log_messaging_screen_shot(
1595                    ad_mo, test_name="sms tx subid: %s" % mo_sub_id)
1596                log_messaging_screen_shot(
1597                    ad_mt, test_name="sms rx subid: %s" % mt_sub_id)
1598
1599                return False
1600
1601    @test_tracker_info(uuid="e0483de8-f760-4e40-a451-a867c7f94d3a")
1602    @TelephonyBaseTest.tel_test_wrap
1603    def test_sms_mt_at_both_slots_at_the_same_time(
1604        self,
1605        slot_0_nw_gen="volte",
1606        slot_1_nw_gen="volte"):
1607        return self.multiple_mt_sms(
1608            slot_0_nw_gen="volte",
1609            slot_1_nw_gen="volte",
1610            power_off=False)
1611
1612    @test_tracker_info(uuid="6594e5b5-6baf-4f1e-865b-0ea70ef23aee")
1613    @TelephonyBaseTest.tel_test_wrap
1614    def test_sms_mt_at_both_slots_when_power_off(
1615        self,
1616        slot_0_nw_gen="volte",
1617        slot_1_nw_gen="volte"):
1618        return self.multiple_mt_sms(
1619            slot_0_nw_gen="volte",
1620            slot_1_nw_gen="volte",
1621            power_off=True)
1622
1623    @test_tracker_info(uuid="13dfe0a1-c393-4c1a-b636-ac39d47a70b5")
1624    @TelephonyBaseTest.tel_test_wrap
1625    def test_interworking_between_mo_voice_call_in_collision_with_mt_sms(self):
1626        result = True
1627        self.log.info("Scenario 1: MO voice call at slot 0 & MT SMS at slot 0")
1628        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1629            0, 0, 0, rat=["volte", "volte"], call_direction="mo"):
1630            result =  False
1631        self.log.info("Scenario 2: MO voice call at slot 0 & MT SMS at slot 1")
1632        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1633            0, 1, 0, rat=["volte", "volte"], call_direction="mo"):
1634            result =  False
1635        self.log.info("Scenario 3: MO voice call at slot 1 & MT SMS at slot 0")
1636        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1637            1, 0, 0, rat=["volte", "volte"], call_direction="mo"):
1638            result =  False
1639        self.log.info("Scenario 1: MO voice call at slot 1 & MT SMS at slot 1")
1640        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1641            1, 1, 0, rat=["volte", "volte"], call_direction="mo"):
1642            result =  False
1643        return result
1644
1645    @test_tracker_info(uuid="a5c90676-c2ba-4ac6-b639-8f895d98480c")
1646    @TelephonyBaseTest.tel_test_wrap
1647    def test_interworking_between_mt_voice_call_in_collision_with_mt_sms(self):
1648        result = True
1649        self.log.info("Scenario 1: MT voice call at slot 0 & MT SMS at slot 0")
1650        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1651            0, 0, 0, rat=["volte", "volte"], call_direction="mt"):
1652            result =  False
1653        self.log.info("Scenario 2: MT voice call at slot 0 & MT SMS at slot 1")
1654        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1655            0, 1, 0, rat=["volte", "volte"], call_direction="mt"):
1656            result =  False
1657        self.log.info("Scenario 3: MT voice call at slot 1 & MT SMS at slot 0")
1658        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1659            1, 0, 0, rat=["volte", "volte"], call_direction="mt"):
1660            result =  False
1661        self.log.info("Scenario 4: MT voice call at slot 1 & MT SMS at slot 1")
1662        if not self._test_msim_voice_call_in_collision_with_mt_sms(
1663            1, 1, 0, rat=["volte", "volte"], call_direction="mt"):
1664            result =  False
1665        return result