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
17from acts import asserts
18from acts import signals
19from acts.test_decorators import test_tracker_info
20from acts.test_utils.tel.loggers.protos.telephony_metric_pb2 import \
21    TelephonyVoiceTestResult
22from acts.test_utils.tel.loggers.telephony_metric_logger import \
23    TelephonyMetricLogger
24from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
25from acts.test_utils.tel.tel_defines import CAPABILITY_CONFERENCE
26from acts.test_utils.tel.tel_defines import INVALID_SUB_ID
27from acts.test_utils.tel.tel_subscription_utils import \
28    get_incoming_voice_sub_id
29from acts.test_utils.tel.tel_subscription_utils import \
30    get_outgoing_voice_sub_id
31from acts.test_utils.tel.tel_subscription_utils import get_subid_from_slot_index
32from acts.test_utils.tel.tel_subscription_utils import set_incoming_voice_sub_id
33from acts.test_utils.tel.tel_subscription_utils import set_dds_on_slot_0
34from acts.test_utils.tel.tel_subscription_utils import set_dds_on_slot_1
35from acts.test_utils.tel.tel_subscription_utils import \
36    get_subid_on_same_network_of_host_ad
37from acts.test_utils.tel.tel_test_utils import hangup_call
38from acts.test_utils.tel.tel_test_utils import multithread_func
39from acts.test_utils.tel.tel_test_utils import get_capability_for_subscription
40from acts.test_utils.tel.tel_test_utils import verify_http_connection
41from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
42from acts.test_utils.tel.tel_test_utils import get_slot_index_from_subid
43from acts.test_utils.tel.tel_test_utils import get_operator_name
44from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_3g
45from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_csfb
46from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_volte
47from acts.test_utils.tel.tel_voice_utils import phone_setup_csfb
48from acts.test_utils.tel.tel_voice_utils import \
49    phone_setup_csfb_for_subscription
50from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_3g
51from acts.test_utils.tel.tel_voice_utils import \
52    phone_setup_voice_3g_for_subscription
53from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_general
54from acts.test_utils.tel.tel_voice_utils import \
55    phone_setup_voice_general_for_subscription
56from acts.test_utils.tel.tel_voice_utils import phone_setup_volte
57from acts.test_utils.tel.tel_voice_utils import \
58    phone_setup_volte_for_subscription
59from acts.test_utils.tel.tel_voice_utils import two_phone_call_msim_for_slot
60
61CallResult = TelephonyVoiceTestResult.CallResult.Value
62
63class TelLiveGFTDSDSVoiceTest(TelephonyBaseTest):
64    def __init__(self, controllers):
65        TelephonyBaseTest.__init__(self, controllers)
66        self.tel_logger = TelephonyMetricLogger.for_test_case()
67
68    def setup_class(self):
69        TelephonyBaseTest.setup_class(self)
70
71    def teardown_test(self):
72        ensure_phones_idle(self.log, self.android_devices)
73
74    def _hangup_call(self, ad, device_description='Device'):
75        if not hangup_call(self.log, ad):
76            ad.log.error("Failed to hang up on %s", device_description)
77            return False
78        return True
79
80    def _test_msim_call_voice(
81            self,
82            mo_slot,
83            mt_slot,
84            dds_slot,
85            mo_rat=["", ""],
86            mt_rat=["", ""],
87            call_direction="mo"):
88        """Make MO/MT voice call at specific slot in specific RAT with DDS at
89        specific slot.
90
91        Test step:
92        1. Get sub IDs of specific slots of both MO and MT devices.
93        2. Switch DDS to specific slot.
94        3. Check HTTP connection after DDS switch.
95        4. Set up phones in desired RAT.
96        5. Make voice call.
97
98        Args:
99            mo_slot: Slot making MO call (0 or 1)
100            mt_slot: Slot receiving MT call (0 or 1)
101            dds_slot: Preferred data slot
102            mo_rat: RAT for both slots of MO device
103            mt_rat: RAT for both slots of MT device
104            call_direction: "mo" or "mt"
105
106        Returns:
107            TestFailure if failed.
108        """
109        ads = self.android_devices
110
111        if call_direction == "mo":
112            ad_mo = ads[0]
113            ad_mt = ads[1]
114        else:
115            ad_mo = ads[1]
116            ad_mt = ads[0]
117
118        if mo_slot is not None:
119            mo_sub_id = get_subid_from_slot_index(self.log, ad_mo, mo_slot)
120            if mo_sub_id == INVALID_SUB_ID:
121                ad_mo.log.warning("Failed to get sub ID ar slot %s.", mo_slot)
122                return False
123            mo_other_sub_id = get_subid_from_slot_index(
124                self.log, ad_mo, 1-mo_slot)
125            set_incoming_voice_sub_id(ad_mo, mo_sub_id)
126        else:
127            _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(ads)
128            if mo_sub_id == INVALID_SUB_ID:
129                ad_mo.log.warning("Failed to get sub ID ar slot %s.", mo_slot)
130                return False
131            mo_slot = "auto"
132            set_incoming_voice_sub_id(ad_mo, mo_sub_id)
133        ad_mo.log.info("Sub ID for outgoing call at slot %s: %s",
134            mo_slot, get_outgoing_voice_sub_id(ad_mo))
135
136        if mt_slot is not None:
137            mt_sub_id = get_subid_from_slot_index(self.log, ad_mt, mt_slot)
138            if mt_sub_id == INVALID_SUB_ID:
139                ad_mt.log.warning("Failed to get sub ID at slot %s.", mt_slot)
140                return False
141            mt_other_sub_id = get_subid_from_slot_index(
142                self.log, ad_mt, 1-mt_slot)
143            set_incoming_voice_sub_id(ad_mt, mt_sub_id)
144        else:
145            _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(ads)
146            if mt_sub_id == INVALID_SUB_ID:
147                ad_mt.log.warning("Failed to get sub ID at slot %s.", mt_slot)
148                return False
149            mt_slot = "auto"
150            set_incoming_voice_sub_id(ad_mt, mt_sub_id)
151        ad_mt.log.info("Sub ID for incoming call at slot %s: %s", mt_slot,
152            get_incoming_voice_sub_id(ad_mt))
153
154        self.log.info("Step 1: Switch DDS.")
155        if dds_slot:
156            if not set_dds_on_slot_1(ads[0]):
157                ads[0].log.warning("Failed to set DDS at eSIM.")
158                return False
159        else:
160            if not set_dds_on_slot_0(ads[0]):
161                ads[0].log.warning("Failed to set DDS at pSIM.")
162                return False
163
164        self.log.info("Step 2: Check HTTP connection after DDS switch.")
165        if not verify_http_connection(self.log,
166           ads[0],
167           url="https://www.google.com",
168           retry=5,
169           retry_interval=15,
170           expected_state=True):
171
172            self.log.error("Failed to verify http connection.")
173            return False
174        else:
175            self.log.info("Verify http connection successfully.")
176
177        if mo_rat[0] == "volte":
178            mo_slot0_phone_setup_func = phone_setup_volte
179            is_mo_slot0_in_call = is_phone_in_call_volte
180        elif mo_rat[0] == "csfb":
181            mo_slot0_phone_setup_func = phone_setup_csfb
182            is_mo_slot0_in_call = is_phone_in_call_csfb
183        elif mo_rat[0] == "3g":
184            mo_slot0_phone_setup_func = phone_setup_voice_3g
185            is_mo_slot0_in_call = is_phone_in_call_3g
186        elif not mo_rat[0] or mo_rat[0] == "general":
187            mo_slot0_phone_setup_func = phone_setup_voice_general
188            is_mo_slot0_in_call = None
189
190        if mo_rat[1] == "volte":
191            mo_slot1_phone_setup_func = phone_setup_volte
192            is_mo_slot1_in_call = is_phone_in_call_volte
193        elif mo_rat[1] == "csfb":
194            mo_slot1_phone_setup_func = phone_setup_csfb
195            is_mo_slot1_in_call = is_phone_in_call_csfb
196        elif mo_rat[1] == "3g":
197            mo_slot1_phone_setup_func = phone_setup_voice_3g
198            is_mo_slot1_in_call = is_phone_in_call_3g
199        elif not mo_rat[1] or mo_rat[1] == "general":
200            mo_slot1_phone_setup_func = phone_setup_voice_general
201            is_mo_slot1_in_call = None
202
203        if mt_rat[0] == "volte":
204            mt_slot0_phone_setup_func = phone_setup_volte
205            is_mt_slot0_in_call = is_phone_in_call_volte
206        elif mt_rat[0] == "csfb":
207            mt_slot0_phone_setup_func = phone_setup_csfb
208            is_mt_slot0_in_call = is_phone_in_call_csfb
209        elif mt_rat[0] == "3g":
210            mt_slot0_phone_setup_func = phone_setup_voice_3g
211            is_mt_slot0_in_call = is_phone_in_call_3g
212        elif not mt_rat[0] or mt_rat[0] == "general":
213            mt_slot0_phone_setup_func = phone_setup_voice_general
214            is_mt_slot0_in_call = None
215
216        if mt_rat[1] == "volte":
217            mt_slot1_phone_setup_func = phone_setup_volte
218            is_mt_slot1_in_call = is_phone_in_call_volte
219        elif mt_rat[1] == "csfb":
220            mt_slot1_phone_setup_func = phone_setup_csfb
221            is_mt_slot1_in_call = is_phone_in_call_csfb
222        elif mt_rat[1] == "3g":
223            mt_slot1_phone_setup_func = phone_setup_voice_3g
224            is_mt_slot1_in_call = is_phone_in_call_3g
225        elif not mt_rat[1] or mt_rat[1] == "general":
226            mt_slot1_phone_setup_func = phone_setup_voice_general
227            is_mt_slot1_in_call = None
228
229        if mo_slot == 1:
230            mo_phone_setup_func = mo_slot1_phone_setup_func
231            is_mo_in_call = is_mo_slot1_in_call
232            if mo_rat[0] == "volte":
233                phone_setup_volte_for_subscription(
234                    self.log, ad_mo, mo_other_sub_id)
235            elif mo_rat[0] == "csfb":
236                phone_setup_csfb_for_subscription(
237                    self.log, ad_mo, mo_other_sub_id)
238            elif mo_rat[0] == "3g":
239                phone_setup_voice_3g_for_subscription(
240                    self.log, ad_mo, mo_other_sub_id)
241            elif not mo_rat[0] or mo_rat[0] == "general":
242                phone_setup_voice_general_for_subscription(
243                    self.log, ad_mo, mo_other_sub_id)
244        elif mo_slot == 0:
245            mo_phone_setup_func = mo_slot0_phone_setup_func
246            is_mo_in_call = is_mo_slot0_in_call
247            if mo_rat[1] == "volte":
248                phone_setup_volte_for_subscription(
249                    self.log, ad_mo, mo_other_sub_id)
250            elif mo_rat[1] == "csfb":
251                phone_setup_csfb_for_subscription(
252                    self.log, ad_mo, mo_other_sub_id)
253            elif mo_rat[1] == "3g":
254                phone_setup_voice_3g_for_subscription(
255                    self.log, ad_mo, mo_other_sub_id)
256            elif not mo_rat[1] or mo_rat[1] == "general":
257                phone_setup_voice_general_for_subscription(
258                    self.log, ad_mo, mo_other_sub_id)
259        else:
260            mo_phone_setup_func = phone_setup_voice_general
261            is_mo_in_call = None
262
263        if mt_slot == 1:
264            mt_phone_setup_func = mt_slot1_phone_setup_func
265            is_mt_in_call = is_mt_slot1_in_call
266            if mt_rat[0] == "volte":
267                phone_setup_volte_for_subscription(
268                    self.log, ad_mt, mt_other_sub_id)
269            elif mt_rat[0] == "csfb":
270                phone_setup_csfb_for_subscription(
271                    self.log, ad_mt, mt_other_sub_id)
272            elif mt_rat[0] == "3g":
273                phone_setup_voice_3g_for_subscription(
274                    self.log, ad_mt, mt_other_sub_id)
275            elif not mt_rat[0] or mt_rat[0] == "general":
276                phone_setup_voice_general_for_subscription(
277                    self.log, ad_mt, mt_other_sub_id)
278        elif mt_slot == 0:
279            mt_phone_setup_func = mt_slot0_phone_setup_func
280            is_mt_in_call = is_mt_slot0_in_call
281            if mt_rat[1] == "volte":
282                phone_setup_volte_for_subscription(
283                    self.log, ad_mt, mt_other_sub_id)
284            elif mt_rat[1] == "csfb":
285                phone_setup_csfb_for_subscription(
286                    self.log, ad_mt, mt_other_sub_id)
287            elif mt_rat[1] == "3g":
288                phone_setup_voice_3g_for_subscription(
289                    self.log, ad_mt, mt_other_sub_id)
290            elif not mt_rat[1] or mt_rat[1] == "general":
291                phone_setup_voice_general_for_subscription(
292                    self.log, ad_mt, mt_other_sub_id)
293        else:
294            mt_phone_setup_func = phone_setup_voice_general
295            is_mt_in_call = None
296
297        self.log.info("Step 3: Set up phones in desired RAT.")
298        tasks = [(mo_phone_setup_func, (self.log, ad_mo)),
299                 (mt_phone_setup_func, (self.log, ad_mt))]
300        if not multithread_func(self.log, tasks):
301            self.log.error("Phone Failed to Set Up Properly.")
302            self.tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
303            raise signals.TestFailure("Failed",
304                extras={"fail_reason": "Phone Failed to Set Up Properly."})
305
306        self.log.info("Step 4: Make voice call.")
307        result = two_phone_call_msim_for_slot(
308            self.log,
309            ad_mo,
310            get_slot_index_from_subid(self.log, ad_mo, mo_sub_id),
311            None,
312            is_mo_in_call,
313            ad_mt,
314            get_slot_index_from_subid(self.log, ad_mt, mt_sub_id),
315            None,
316            is_mt_in_call)
317        self.tel_logger.set_result(result.result_value)
318
319        if not result:
320            self.log.error(
321                "Failed to make MO call from %s slot %s to %s slot %s",
322                    ad_mo.serial, mo_slot, ad_mt.serial, mt_slot)
323            raise signals.TestFailure("Failed",
324                extras={"fail_reason": str(result.result_value)})
325
326
327    @test_tracker_info(uuid="e252aa07-c377-4e12-8f06-ed1dc8f2b6a6")
328    @TelephonyBaseTest.tel_test_wrap
329    def test_msim_voice_call_mo_volte_psim_dds_slot_0(self):
330        return self._test_msim_call_voice(
331            0, None, 0, mo_rat=["volte", "volte"], call_direction="mo")
332
333    @test_tracker_info(uuid="7631b805-48b6-4b91-99a3-eef392e5b0fc")
334    @TelephonyBaseTest.tel_test_wrap
335    def test_msim_voice_call_mo_volte_psim_dds_slot_1(self):
336        return self._test_msim_call_voice(
337            0, None, 1, mo_rat=["volte", "volte"], call_direction="mo")
338
339    @test_tracker_info(uuid="4771e517-08cf-4169-afe7-fe3e41f05c45")
340    @TelephonyBaseTest.tel_test_wrap
341    def test_msim_voice_call_mt_volte_psim_dds_slot_0(self):
342        return self._test_msim_call_voice(
343            None, 0, 0, mt_rat=["volte", "volte"], call_direction="mt")
344
345    @test_tracker_info(uuid="e8f914df-cada-4187-ab53-734624c9c941")
346    @TelephonyBaseTest.tel_test_wrap
347    def test_msim_voice_call_mt_volte_psim_dds_slot_1(self):
348        return self._test_msim_call_voice(
349            None, 0, 1, mt_rat=["volte", "volte"], call_direction="mt")
350
351    @test_tracker_info(uuid="967a665a-9614-4fe4-b293-e20b66637802")
352    @TelephonyBaseTest.tel_test_wrap
353    def test_msim_voice_call_mo_volte_esim_dds_slot_0(self):
354        return self._test_msim_call_voice(
355            1, None, 0, mo_rat=["volte", "volte"], call_direction="mo")
356
357    @test_tracker_info(uuid="901c7fa3-039f-4888-90eb-82af587fa8dd")
358    @TelephonyBaseTest.tel_test_wrap
359    def test_msim_voice_call_mo_volte_esim_dds_slot_1(self):
360        return self._test_msim_call_voice(
361            1, None, 1, mo_rat=["volte", "volte"], call_direction="mo")
362
363    @test_tracker_info(uuid="a78f2808-a6c6-4483-b7f5-ad1ec925dd52")
364    @TelephonyBaseTest.tel_test_wrap
365    def test_msim_voice_call_mt_volte_esim_dds_slot_0(self):
366        return self._test_msim_call_voice(
367            None, 1, 0, mt_rat=["volte", "volte"], call_direction="mt")
368
369    @test_tracker_info(uuid="f6994dbd-c5a0-42c7-a43d-67227f5dfb88")
370    @TelephonyBaseTest.tel_test_wrap
371    def test_msim_voice_call_mt_volte_esim_dds_slot_1(self):
372        return self._test_msim_call_voice(
373            None, 1, 1, mt_rat=["volte", "volte"], call_direction="mt")
374
375
376
377
378    @test_tracker_info(uuid="0786d7d3-d272-4233-83dd-0667e844094d")
379    @TelephonyBaseTest.tel_test_wrap
380    def test_msim_voice_call_mo_volte_csfb_psim_dds_slot_0(self):
381        return self._test_msim_call_voice(
382            0, None, 0, mo_rat=["volte", "csfb"], call_direction="mo")
383
384    @test_tracker_info(uuid="b9dfd46c-752c-4424-83b1-b5749a7018af")
385    @TelephonyBaseTest.tel_test_wrap
386    def test_msim_voice_call_mo_volte_csfb_psim_dds_slot_1(self):
387        return self._test_msim_call_voice(
388            0, None, 1, mo_rat=["volte", "csfb"], call_direction="mo")
389
390    @test_tracker_info(uuid="8bc57654-a5d9-4c82-b11a-62e76ece9b43")
391    @TelephonyBaseTest.tel_test_wrap
392    def test_msim_voice_call_mt_volte_csfb_psim_dds_slot_0(self):
393        return self._test_msim_call_voice(
394            None, 0, 0, mt_rat=["volte", "csfb"], call_direction="mt")
395
396    @test_tracker_info(uuid="dbe44bf1-4638-4490-a06f-406205681ca5")
397    @TelephonyBaseTest.tel_test_wrap
398    def test_msim_voice_call_mt_volte_csfb_psim_dds_slot_1(self):
399        return self._test_msim_call_voice(
400            None, 0, 1, mt_rat=["volte", "csfb"], call_direction="mt")
401
402    @test_tracker_info(uuid="ffd82db7-eaaa-4f96-9e3b-e0e15d054e62")
403    @TelephonyBaseTest.tel_test_wrap
404    def test_msim_voice_call_mo_volte_csfb_esim_dds_slot_0(self):
405        return self._test_msim_call_voice(
406            1, None, 0, mo_rat=["volte", "csfb"], call_direction="mo")
407
408    @test_tracker_info(uuid="f7f3f28b-eecf-42e5-ba28-168a38337c80")
409    @TelephonyBaseTest.tel_test_wrap
410    def test_msim_voice_call_mo_volte_csfb_esim_dds_slot_1(self):
411        return self._test_msim_call_voice(
412            1, None, 1, mo_rat=["volte", "csfb"], call_direction="mo")
413
414    @test_tracker_info(uuid="eb6ae70a-3251-4642-8268-b91b593cecfd")
415    @TelephonyBaseTest.tel_test_wrap
416    def test_msim_voice_call_mt_volte_csfb_esim_dds_slot_0(self):
417        return self._test_msim_call_voice(
418            None, 1, 0, mt_rat=["volte", "csfb"], call_direction="mt")
419
420    @test_tracker_info(uuid="1d927140-34d2-4fc7-8fe4-b23a303fd190")
421    @TelephonyBaseTest.tel_test_wrap
422    def test_msim_voice_call_mt_volte_csfb_esim_dds_slot_1(self):
423        return self._test_msim_call_voice(
424            None, 1, 1, mt_rat=["volte", "csfb"], call_direction="mt")
425
426
427
428
429    @test_tracker_info(uuid="f15f6696-6e11-414b-8e28-9c16793b66b0")
430    @TelephonyBaseTest.tel_test_wrap
431    def test_msim_voice_call_mo_csfb_volte_psim_dds_slot_0(self):
432        return self._test_msim_call_voice(
433            0, None, 0, mo_rat=["csfb", "volte"], call_direction="mo")
434
435    @test_tracker_info(uuid="ca99d987-0bdb-4034-892f-cc0b1d22f381")
436    @TelephonyBaseTest.tel_test_wrap
437    def test_msim_voice_call_mo_csfb_volte_psim_dds_slot_1(self):
438        return self._test_msim_call_voice(
439            0, None, 1, mo_rat=["csfb", "volte"], call_direction="mo")
440
441    @test_tracker_info(uuid="692bd3d0-05be-4597-afab-2f837a3f9bd4")
442    @TelephonyBaseTest.tel_test_wrap
443    def test_msim_voice_call_mt_csfb_volte_psim_dds_slot_0(self):
444        return self._test_msim_call_voice(
445            None, 0, 0, mt_rat=["csfb", "volte"], call_direction="mt")
446
447    @test_tracker_info(uuid="87a5fae2-f32c-4b4d-8028-d065b582b117")
448    @TelephonyBaseTest.tel_test_wrap
449    def test_msim_voice_call_mt_csfb_volte_psim_dds_slot_1(self):
450        return self._test_msim_call_voice(
451            None, 0, 1, mt_rat=["csfb", "volte"], call_direction="mt")
452
453    @test_tracker_info(uuid="f6375034-5ecb-4872-bab2-cf9529f20fda")
454    @TelephonyBaseTest.tel_test_wrap
455    def test_msim_voice_call_mo_csfb_volte_esim_dds_slot_0(self):
456        return self._test_msim_call_voice(
457            1, None, 0, mo_rat=["csfb", "volte"], call_direction="mo")
458
459    @test_tracker_info(uuid="6185bc28-1703-4ca2-a617-171d81adfe9a")
460    @TelephonyBaseTest.tel_test_wrap
461    def test_msim_voice_call_mo_csfb_volte_esim_dds_slot_1(self):
462        return self._test_msim_call_voice(
463            1, None, 1, mo_rat=["csfb", "volte"], call_direction="mo")
464
465    @test_tracker_info(uuid="06bad228-27af-47b4-9b74-aacba81f9da7")
466    @TelephonyBaseTest.tel_test_wrap
467    def test_msim_voice_call_mt_csfb_volte_esim_dds_slot_0(self):
468        return self._test_msim_call_voice(
469            None, 1, 0, mt_rat=["csfb", "volte"], call_direction="mt")
470
471    @test_tracker_info(uuid="5a5f2178-2ac6-4d21-bf6f-b9d8455365f1")
472    @TelephonyBaseTest.tel_test_wrap
473    def test_msim_voice_call_mt_csfb_volte_esim_dds_slot_1(self):
474        return self._test_msim_call_voice(
475            None, 1, 1, mt_rat=["csfb", "volte"], call_direction="mt")
476
477
478
479    @test_tracker_info(uuid="216f8569-8120-43c4-a9c5-da3081d168db")
480    @TelephonyBaseTest.tel_test_wrap
481    def test_msim_voice_call_mo_volte_3g_psim_dds_slot_0(self):
482        return self._test_msim_call_voice(
483            0, None, 0, mo_rat=["volte", "3g"], call_direction="mo")
484
485    @test_tracker_info(uuid="8d15524a-f7f9-4321-a962-b455bfdf4ec9")
486    @TelephonyBaseTest.tel_test_wrap
487    def test_msim_voice_call_mo_volte_3g_psim_dds_slot_1(self):
488        return self._test_msim_call_voice(
489            0, None, 1, mo_rat=["volte", "3g"], call_direction="mo")
490
491    @test_tracker_info(uuid="c6aa5975-9ea6-4367-a59e-a248fde2c8be")
492    @TelephonyBaseTest.tel_test_wrap
493    def test_msim_voice_call_mt_volte_3g_psim_dds_slot_0(self):
494        return self._test_msim_call_voice(
495            None, 0, 0, mt_rat=["volte", "3g"], call_direction="mt")
496
497    @test_tracker_info(uuid="a99a54e0-46ea-4d35-a3c1-d825c546cc21")
498    @TelephonyBaseTest.tel_test_wrap
499    def test_msim_voice_call_mt_volte_3g_psim_dds_slot_1(self):
500        return self._test_msim_call_voice(
501            None, 0, 1, mt_rat=["volte", "3g"], call_direction="mt")
502
503    @test_tracker_info(uuid="6d128732-8a8e-488b-bb38-fbb764d228dd")
504    @TelephonyBaseTest.tel_test_wrap
505    def test_msim_voice_call_mo_volte_3g_esim_dds_slot_0(self):
506        return self._test_msim_call_voice(
507            1, None, 0, mo_rat=["volte", "3g"], call_direction="mo")
508
509    @test_tracker_info(uuid="29517d00-5edf-4617-9d29-226d56426abf")
510    @TelephonyBaseTest.tel_test_wrap
511    def test_msim_voice_call_mo_volte_3g_esim_dds_slot_1(self):
512        return self._test_msim_call_voice(
513            1, None, 1, mo_rat=["volte", "3g"], call_direction="mo")
514
515    @test_tracker_info(uuid="d18ec79e-3bc3-4c7e-89fd-d03519b2e2a6")
516    @TelephonyBaseTest.tel_test_wrap
517    def test_msim_voice_call_mt_volte_3g_esim_dds_slot_0(self):
518        return self._test_msim_call_voice(
519            None, 1, 0, mt_rat=["volte", "3g"], call_direction="mt")
520
521    @test_tracker_info(uuid="6442b85a-b116-4987-b6d5-2d2b9bac7fd5")
522    @TelephonyBaseTest.tel_test_wrap
523    def test_msim_voice_call_mt_volte_3g_esim_dds_slot_1(self):
524        return self._test_msim_call_voice(
525            None, 1, 1, mt_rat=["volte", "3g"], call_direction="mt")
526
527
528
529
530    @test_tracker_info(uuid="82e6f955-5156-4ad3-885d-d1d5ff0526cb")
531    @TelephonyBaseTest.tel_test_wrap
532    def test_msim_voice_call_mo_3g_volte_psim_dds_slot_0(self):
533        return self._test_msim_call_voice(
534            0, None, 0, mo_rat=["3g", "volte"], call_direction="mo")
535
536    @test_tracker_info(uuid="ffdafbac-026d-4d7d-a1dc-f639c01db818")
537    @TelephonyBaseTest.tel_test_wrap
538    def test_msim_voice_call_mo_3g_volte_psim_dds_slot_1(self):
539        return self._test_msim_call_voice(
540            0, None, 1, mo_rat=["3g", "volte"], call_direction="mo")
541
542    @test_tracker_info(uuid="b18dc6a7-e4a1-4409-a4aa-4e4add2fee13")
543    @TelephonyBaseTest.tel_test_wrap
544    def test_msim_voice_call_mt_3g_volte_psim_dds_slot_0(self):
545        return self._test_msim_call_voice(
546            None, 0, 0, mt_rat=["3g", "volte"], call_direction="mt")
547
548    @test_tracker_info(uuid="ea6fc855-31b8-4680-b306-51228277e0d3")
549    @TelephonyBaseTest.tel_test_wrap
550    def test_msim_voice_call_mt_3g_volte_psim_dds_slot_1(self):
551        return self._test_msim_call_voice(
552            None, 0, 1, mt_rat=["3g", "volte"], call_direction="mt")
553
554    @test_tracker_info(uuid="fdf9f4ea-a6f6-4434-a912-13711bb33a72")
555    @TelephonyBaseTest.tel_test_wrap
556    def test_msim_voice_call_mo_3g_volte_esim_dds_slot_0(self):
557        return self._test_msim_call_voice(
558            1, None, 0, mo_rat=["3g", "volte"], call_direction="mo")
559
560    @test_tracker_info(uuid="deb8e2f6-e097-451e-9f19-aadaf1820fea")
561    @TelephonyBaseTest.tel_test_wrap
562    def test_msim_voice_call_mo_3g_volte_esim_dds_slot_1(self):
563        return self._test_msim_call_voice(
564            1, None, 1, mo_rat=["3g", "volte"], call_direction="mo")
565
566    @test_tracker_info(uuid="6a636c5d-5da9-4916-9751-435ab39aaa00")
567    @TelephonyBaseTest.tel_test_wrap
568    def test_msim_voice_call_mt_3g_volte_esim_dds_slot_0(self):
569        return self._test_msim_call_voice(
570            None, 1, 0, mt_rat=["3g", "volte"], call_direction="mt")
571
572    @test_tracker_info(uuid="0b9d9d5c-e5e7-4c9d-ab8a-0658fadbf450")
573    @TelephonyBaseTest.tel_test_wrap
574    def test_msim_voice_call_mt_3g_volte_esim_dds_slot_1(self):
575        return self._test_msim_call_voice(
576            None, 1, 1, mt_rat=["3g", "volte"], call_direction="mt")
577
578
579
580
581    @test_tracker_info(uuid="fce99df9-8931-4a34-9285-121145fb9b2f")
582    @TelephonyBaseTest.tel_test_wrap
583    def test_msim_voice_call_mo_csfb_psim_dds_slot_0(self):
584        return self._test_msim_call_voice(
585            0, None, 0, mo_rat=["csfb", "csfb"], call_direction="mo")
586
587    @test_tracker_info(uuid="81d9a087-e494-40e4-a0fb-7e4ef62e566c")
588    @TelephonyBaseTest.tel_test_wrap
589    def test_msim_voice_call_mo_csfb_psim_dds_slot_1(self):
590        return self._test_msim_call_voice(
591            0, None, 1, mo_rat=["csfb", "csfb"], call_direction="mo")
592
593    @test_tracker_info(uuid="d4520000-9cd1-4aff-9862-bfb6832d51ce")
594    @TelephonyBaseTest.tel_test_wrap
595    def test_msim_voice_call_mt_csfb_psim_dds_slot_0(self):
596        return self._test_msim_call_voice(
597            None, 0, 0, mt_rat=["csfb", "csfb"], call_direction="mt")
598
599    @test_tracker_info(uuid="0eaf1e67-6aec-4a39-8f06-4e49009400e0")
600    @TelephonyBaseTest.tel_test_wrap
601    def test_msim_voice_call_mt_csfb_psim_dds_slot_1(self):
602        return self._test_msim_call_voice(
603            None, 0, 1, mt_rat=["csfb", "csfb"], call_direction="mt")
604
605    @test_tracker_info(uuid="0e6bc15a-e510-4b56-826c-96e0add6b20a")
606    @TelephonyBaseTest.tel_test_wrap
607    def test_msim_voice_call_mo_csfb_esim_dds_slot_0(self):
608        return self._test_msim_call_voice(
609            1, None, 0, mo_rat=["csfb", "csfb"], call_direction="mo")
610
611    @test_tracker_info(uuid="ecead288-424d-4579-bf6a-10a1a78600d5")
612    @TelephonyBaseTest.tel_test_wrap
613    def test_msim_voice_call_mo_csfb_esim_dds_slot_1(self):
614        return self._test_msim_call_voice(
615            1, None, 1, mo_rat=["csfb", "csfb"], call_direction="mo")
616
617    @test_tracker_info(uuid="3a76076d-808e-45f8-b99c-95b82f2f07de")
618    @TelephonyBaseTest.tel_test_wrap
619    def test_msim_voice_call_mt_csfb_esim_dds_slot_0(self):
620        return self._test_msim_call_voice(
621            None, 1, 0, mt_rat=["csfb", "csfb"], call_direction="mt")
622
623    @test_tracker_info(uuid="af638c75-c0e1-4ac1-83f5-bc0e6cdd913c")
624    @TelephonyBaseTest.tel_test_wrap
625    def test_msim_voice_call_mt_csfb_esim_dds_slot_1(self):
626        return self._test_msim_call_voice(
627            None, 1, 1, mt_rat=["csfb", "csfb"], call_direction="mt")
628
629
630
631    @test_tracker_info(uuid="0bf59f38-ddbc-4a88-bc8a-d6985e7d7567")
632    @TelephonyBaseTest.tel_test_wrap
633    def test_msim_voice_call_mo_csfb_3g_psim_dds_slot_0(self):
634        return self._test_msim_call_voice(
635            0, None, 0, mo_rat=["csfb", "3g"], call_direction="mo")
636
637    @test_tracker_info(uuid="59f5a14a-c7e5-4bca-82dd-cb90b9a7a0e1")
638    @TelephonyBaseTest.tel_test_wrap
639    def test_msim_voice_call_mo_csfb_3g_psim_dds_slot_1(self):
640        return self._test_msim_call_voice(
641            0, None, 1, mo_rat=["csfb", "3g"], call_direction="mo")
642
643    @test_tracker_info(uuid="79fc4d6f-0915-4717-80ae-db656cf3a82c")
644    @TelephonyBaseTest.tel_test_wrap
645    def test_msim_voice_call_mt_csfb_3g_psim_dds_slot_0(self):
646        return self._test_msim_call_voice(
647            None, 0, 0, mt_rat=["csfb", "3g"], call_direction="mt")
648
649    @test_tracker_info(uuid="b4927ebb-ae36-4ca7-a0b7-ea011b271122")
650    @TelephonyBaseTest.tel_test_wrap
651    def test_msim_voice_call_mt_csfb_3g_psim_dds_slot_1(self):
652        return self._test_msim_call_voice(
653            None, 0, 1, mt_rat=["csfb", "3g"], call_direction="mt")
654
655    @test_tracker_info(uuid="620be8d5-40b7-45f2-abfd-f788c8ce1977")
656    @TelephonyBaseTest.tel_test_wrap
657    def test_msim_voice_call_mo_csfb_3g_esim_dds_slot_0(self):
658        return self._test_msim_call_voice(
659            1, None, 0, mo_rat=["csfb", "3g"], call_direction="mo")
660
661    @test_tracker_info(uuid="e277e0db-2dfb-4cfc-8d13-7c699f397b9b")
662    @TelephonyBaseTest.tel_test_wrap
663    def test_msim_voice_call_mo_csfb_3g_esim_dds_slot_1(self):
664        return self._test_msim_call_voice(
665            1, None, 1, mo_rat=["csfb", "3g"], call_direction="mo")
666
667    @test_tracker_info(uuid="f7822fca-a22d-4989-bca8-506e9652cee1")
668    @TelephonyBaseTest.tel_test_wrap
669    def test_msim_voice_call_mt_csfb_3g_esim_dds_slot_0(self):
670        return self._test_msim_call_voice(
671            None, 1, 0, mt_rat=["csfb", "3g"], call_direction="mt")
672
673    @test_tracker_info(uuid="60e5f5cd-a2e1-4a6a-b76b-25a8ce2b037d")
674    @TelephonyBaseTest.tel_test_wrap
675    def test_msim_voice_call_mt_csfb_3g_esim_dds_slot_1(self):
676        return self._test_msim_call_voice(
677            None, 1, 1, mt_rat=["csfb", "3g"], call_direction="mt")
678
679
680
681
682    @test_tracker_info(uuid="ef4b5c61-e9c9-4a29-8ff1-f9920ec9f4dd")
683    @TelephonyBaseTest.tel_test_wrap
684    def test_msim_voice_call_mo_3g_csfb_psim_dds_slot_0(self):
685        return self._test_msim_call_voice(
686            0, None, 0, mo_rat=["3g", "csfb"], call_direction="mo")
687
688    @test_tracker_info(uuid="0e82934d-391d-46af-9609-f59522140ea9")
689    @TelephonyBaseTest.tel_test_wrap
690    def test_msim_voice_call_mo_3g_csfb_psim_dds_slot_1(self):
691        return self._test_msim_call_voice(
692            0, None, 1, mo_rat=["3g", "csfb"], call_direction="mo")
693
694    @test_tracker_info(uuid="dab9ea2d-5370-4438-b0ee-67c68ebda024")
695    @TelephonyBaseTest.tel_test_wrap
696    def test_msim_voice_call_mt_3g_csfb_psim_dds_slot_0(self):
697        return self._test_msim_call_voice(
698            None, 0, 0, mt_rat=["3g", "csfb"], call_direction="mt")
699
700    @test_tracker_info(uuid="3ba5816e-11fe-4a39-968d-2e9853e8f47a")
701    @TelephonyBaseTest.tel_test_wrap
702    def test_msim_voice_call_mt_3g_csfb_psim_dds_slot_1(self):
703        return self._test_msim_call_voice(
704            None, 0, 1, mt_rat=["3g", "csfb"], call_direction="mt")
705
706    @test_tracker_info(uuid="e8246c60-031d-4362-94c6-ad0882511d21")
707    @TelephonyBaseTest.tel_test_wrap
708    def test_msim_voice_call_mo_3g_csfb_esim_dds_slot_0(self):
709        return self._test_msim_call_voice(
710            1, None, 0, mo_rat=["3g", "csfb"], call_direction="mo")
711
712    @test_tracker_info(uuid="db66ecb2-b09d-44be-991b-8025c6fab26a")
713    @TelephonyBaseTest.tel_test_wrap
714    def test_msim_voice_call_mo_3g_csfb_esim_dds_slot_1(self):
715        return self._test_msim_call_voice(
716            1, None, 1, mo_rat=["3g", "csfb"], call_direction="mo")
717
718    @test_tracker_info(uuid="008e990c-94e4-4adc-abaa-e328d84079a5")
719    @TelephonyBaseTest.tel_test_wrap
720    def test_msim_voice_call_mt_3g_csfb_esim_dds_slot_0(self):
721        return self._test_msim_call_voice(
722            None, 1, 0, mt_rat=["3g", "csfb"], call_direction="mt")
723
724    @test_tracker_info(uuid="0a87cbb1-96d9-4eed-b92c-745432dc4ba4")
725    @TelephonyBaseTest.tel_test_wrap
726    def test_msim_voice_call_mt_3g_csfb_esim_dds_slot_1(self):
727        return self._test_msim_call_voice(
728            None, 1, 1, mt_rat=["3g", "csfb"], call_direction="mt")
729
730
731
732
733    @test_tracker_info(uuid="5620c3c8-e847-42c1-ae4e-b3370a0b6f98")
734    @TelephonyBaseTest.tel_test_wrap
735    def test_msim_voice_call_mo_3g_psim_dds_slot_0(self):
736        return self._test_msim_call_voice(
737            0, None, 0, mo_rat=["3g", "3g"], call_direction="mo")
738
739    @test_tracker_info(uuid="a4415a1e-cd91-4a74-8f49-6c8ea428fe8f")
740    @TelephonyBaseTest.tel_test_wrap
741    def test_msim_voice_call_mo_3g_psim_dds_slot_1(self):
742        return self._test_msim_call_voice(
743            0, None, 1, mo_rat=["3g", "3g"], call_direction="mo")
744
745    @test_tracker_info(uuid="35a73981-15d7-491f-bade-42642cabbf76")
746    @TelephonyBaseTest.tel_test_wrap
747    def test_msim_voice_call_mt_3g_psim_dds_slot_0(self):
748        return self._test_msim_call_voice(
749            None, 0, 0, mt_rat=["3g", "3g"], call_direction="mt")
750
751    @test_tracker_info(uuid="e38de6bd-8f6b-4a95-8c0f-e685abc3e7ef")
752    @TelephonyBaseTest.tel_test_wrap
753    def test_msim_voice_call_mt_3g_psim_dds_slot_1(self):
754        return self._test_msim_call_voice(
755            None, 0, 1, mt_rat=["3g", "3g"], call_direction="mt")
756
757    @test_tracker_info(uuid="1c86a1cb-5bd6-404a-a38f-4619a4b641a2")
758    @TelephonyBaseTest.tel_test_wrap
759    def test_msim_voice_call_mo_3g_esim_dds_slot_0(self):
760        return self._test_msim_call_voice(
761            1, None, 0, mo_rat=["3g", "3g"], call_direction="mo")
762
763    @test_tracker_info(uuid="665736ff-206f-4c02-ae81-26f2e25d5988")
764    @TelephonyBaseTest.tel_test_wrap
765    def test_msim_voice_call_mo_3g_esim_dds_slot_1(self):
766        return self._test_msim_call_voice(
767            1, None, 1, mo_rat=["3g", "3g"], call_direction="mo")
768
769    @test_tracker_info(uuid="5e5c8f33-60e5-44be-bf69-56c7715ead41")
770    @TelephonyBaseTest.tel_test_wrap
771    def test_msim_voice_call_mt_3g_esim_dds_slot_0(self):
772        return self._test_msim_call_voice(
773            None, 1, 0, mt_rat=["3g", "3g"], call_direction="mt")
774
775    @test_tracker_info(uuid="2250b4d5-7b34-45cb-8ec2-300f4a4fbc2b")
776    @TelephonyBaseTest.tel_test_wrap
777    def test_msim_voice_call_mt_3g_esim_dds_slot_1(self):
778        return self._test_msim_call_voice(
779            None, 1, 1, mt_rat=["3g", "3g"], call_direction="mt")