1#!/usr/bin/env python3.4
2#
3#   Copyright 2016 - Google
4#
5#   Licensed under the Apache License, Version 2.0 (the "License");
6#   you may not use this file except in compliance with the License.
7#   You may obtain a copy of the License at
8#
9#       http://www.apache.org/licenses/LICENSE-2.0
10#
11#   Unless required by applicable law or agreed to in writing, software
12#   distributed under the License is distributed on an "AS IS" BASIS,
13#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14#   See the License for the specific language governing permissions and
15#   limitations under the License.
16"""
17    Test Script for Live Network Telephony Conference Call
18"""
19
20import time
21from acts import signals
22from acts.test_decorators import test_tracker_info
23from acts.libs.utils.multithread import multithread_func
24from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
25from acts_contrib.test_utils.tel.tel_defines import CALL_CAPABILITY_MERGE_CONFERENCE
26from acts_contrib.test_utils.tel.tel_defines import CALL_CAPABILITY_SWAP_CONFERENCE
27from acts_contrib.test_utils.tel.tel_defines import CALL_STATE_ACTIVE
28from acts_contrib.test_utils.tel.tel_defines import CAPABILITY_CONFERENCE
29from acts_contrib.test_utils.tel.tel_defines import PHONE_TYPE_CDMA
30from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL
31from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_ONLY
32from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
33from acts_contrib.test_utils.tel.tel_phone_setup_utils import ensure_phones_idle
34from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_3g
35from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_voice_2g
36from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_voice_3g
37from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_csfb
38from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_iwlan
39from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_voice_general
40from acts_contrib.test_utils.tel.tel_phone_setup_utils import phone_setup_volte
41from acts_contrib.test_utils.tel.tel_ss_utils import three_phone_call_forwarding_short_seq
42from acts_contrib.test_utils.tel.tel_ss_utils import three_phone_call_waiting_short_seq
43from acts_contrib.test_utils.tel.tel_subscription_utils import get_outgoing_voice_sub_id
44from acts_contrib.test_utils.tel.tel_test_utils import get_phone_number
45from acts_contrib.test_utils.tel.tel_test_utils import install_dialer_apk
46from acts_contrib.test_utils.tel.tel_test_utils import num_active_calls
47from acts_contrib.test_utils.tel.tel_test_utils import verify_incall_state
48from acts_contrib.test_utils.tel.tel_test_utils import get_capability_for_subscription
49from acts_contrib.test_utils.tel.tel_voice_utils import call_reject
50from acts_contrib.test_utils.tel.tel_voice_utils import call_setup_teardown
51from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_1x
52from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_2g
53from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_3g
54from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_csfb
55from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan
56from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_volte
57from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_wcdma
58from acts_contrib.test_utils.tel.tel_voice_utils import swap_calls
59from acts_contrib.test_utils.tel.tel_voice_utils import wait_and_answer_call
60from acts_contrib.test_utils.tel.tel_voice_conf_utils import _get_expected_call_state
61from acts_contrib.test_utils.tel.tel_voice_conf_utils import _hangup_call
62from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_ims_conference_merge_drop_first_call_from_host
63from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_ims_conference_merge_drop_first_call_from_participant
64from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_ims_conference_merge_drop_second_call_from_host
65from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_ims_conference_merge_drop_second_call_from_participant
66from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_call_mo_mo_add_swap_x
67from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_call_mo_mt_add_swap_x
68from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_call_mt_mt_add_swap_x
69from acts_contrib.test_utils.tel.tel_voice_conf_utils import _three_phone_call_mo_add_mo
70from acts_contrib.test_utils.tel.tel_voice_conf_utils import _three_phone_call_mo_add_mt
71from acts_contrib.test_utils.tel.tel_voice_conf_utils import _three_phone_hangup_call_verify_call_state
72from acts_contrib.test_utils.tel.tel_voice_conf_utils import _test_wcdma_conference_merge_drop
73
74class TelLiveVoiceConfTest(TelephonyBaseTest):
75    def setup_class(self):
76        TelephonyBaseTest.setup_class(self)
77        if not get_capability_for_subscription(
78            self.android_devices[0],
79            CAPABILITY_CONFERENCE,
80            get_outgoing_voice_sub_id(self.android_devices[0])):
81            self.android_devices[0].log.error(
82                "Conference call is not supported, abort test.")
83            raise signals.TestAbortClass(
84                "Conference call is not supported, abort test.")
85
86        self.dialer_util = self.user_params.get("dialer_apk", None)
87        if isinstance(self.dialer_util, list):
88            self.dialer_util = self.dialer_util[0]
89
90        if self.dialer_util:
91            ads = self.android_devices
92            for ad in ads:
93                install_dialer_apk(ad, self.dialer_util)
94
95    def teardown_test(self):
96        ensure_phones_idle(self.log, self.android_devices)
97
98    # Note: Currently Conference Call do not verify voice.
99    # So even if test cases passed, does not necessarily means
100    # conference call functionality is working.
101    # Need to add code to check for voice.
102    """ Private Test Utils """
103
104    def _three_phone_call_mo_add_mt_reject(self, ads, verify_funcs, reject):
105        """Use 3 phones to make MO call and MT call.
106
107        Call from PhoneA to PhoneB, accept on PhoneB.
108        Call from PhoneC to PhoneA. PhoneA receive incoming call.
109            if reject is True, then reject the call on PhoneA.
110            if reject if False, then just ignore the incoming call on PhoneA.
111
112        Args:
113            ads: list of ad object.
114                The list should have three objects.
115            verify_funcs: list of phone call verify functions for
116                PhoneA and PhoneB. The list should have two objects.
117
118        Returns:
119            True if no error happened.
120        """
121
122        class _CallException(Exception):
123            pass
124
125        try:
126            verify_func_a, verify_func_b = verify_funcs
127            self.log.info("Step1: Call From PhoneA to PhoneB.")
128            if not call_setup_teardown(
129                    self.log,
130                    ads[0],
131                    ads[1],
132                    ad_hangup=None,
133                    verify_caller_func=verify_func_a,
134                    verify_callee_func=verify_func_b):
135                raise _CallException("PhoneA call PhoneB failed.")
136
137            self.log.info("Step2: Call From PhoneC to PhoneA then decline.")
138            if not call_reject(self.log, ads[2], ads[0], reject):
139                raise _CallException("PhoneC call PhoneA then decline failed.")
140            time.sleep(WAIT_TIME_IN_CALL)
141            if not verify_incall_state(self.log, [ads[0], ads[1]], True):
142                raise _CallException("PhoneA and PhoneB are not in call.")
143
144        except _CallException:
145            return False
146
147        return True
148
149
150    def _test_1x_mo_mo_add(self):
151        """Test multi call feature in 1x call.
152
153        PhoneA (1x) call PhoneB, accept on PhoneB.
154        PhoneA (1x) call PhoneC, accept on PhoneC.
155
156        Returns:
157            call_ab_id, call_ac_id, call_conf_id if succeed;
158            None, None, None if failed.
159
160        """
161        ads = self.android_devices
162
163        # make sure PhoneA is CDMA phone before proceed.
164        if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
165            raise signals.TestSkip("not CDMA phone, abort this 1x test.")
166
167        call_ab_id = _three_phone_call_mo_add_mo(self.log,
168            [ads[0], ads[1], ads[2]], [
169                phone_setup_voice_3g, phone_setup_voice_general,
170                phone_setup_voice_general
171            ], [is_phone_in_call_1x, None, None])
172        if call_ab_id is None:
173            self.log.error("Failed to get call_ab_id")
174            return None, None, None
175
176        calls = ads[0].droid.telecomCallGetCallIds()
177        ads[0].log.info("Calls in PhoneA %s", calls)
178        if num_active_calls(self.log, ads[0]) != 3:
179            return None, None, None
180        for call_id in calls:
181            if (CALL_CAPABILITY_MERGE_CONFERENCE in ads[0]
182                    .droid.telecomCallGetCapabilities(call_id)):
183                call_conf_id = call_id
184            elif call_id != call_ab_id:
185                call_ac_id = call_id
186
187        return call_ab_id, call_ac_id, call_conf_id
188
189
190    def _test_1x_mo_mt_add_swap_x(self, num_swaps):
191        """Test multi call feature in 1x call.
192
193        PhoneA (1x) call PhoneB, accept on PhoneB.
194        PhoneC call PhoneA (1x), accept on PhoneA.
195        Swap active call on PhoneA.(N times)
196
197        Returns:
198            call_ab_id, call_ac_id, call_conf_id if succeed;
199            None, None, None if failed.
200
201        """
202        ads = self.android_devices
203
204        # make sure PhoneA is CDMA phone before proceed.
205        if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
206            raise signals.TestSkip("not CDMA phone, abort this 1x test.")
207
208        call_ab_id = _three_phone_call_mo_add_mt(self.log,
209            [ads[0], ads[1], ads[2]], [
210                phone_setup_voice_3g, phone_setup_voice_general,
211                phone_setup_voice_general
212            ], [is_phone_in_call_1x, None, None])
213        if call_ab_id is None:
214            self.log.error("Failed to get call_ab_id")
215            return None, None, None
216
217        call_conf_id = None
218        calls = ads[0].droid.telecomCallGetCallIds()
219        ads[0].log.info("Calls in PhoneA %s", calls)
220        if num_active_calls(self.log, ads[0]) != 3:
221            return None, None, None
222        for call_id in calls:
223            if (CALL_CAPABILITY_SWAP_CONFERENCE in ads[0]
224                    .droid.telecomCallGetCapabilities(call_id)):
225                call_conf_id = call_id
226            elif call_id != call_ab_id:
227                call_ac_id = call_id
228
229        if num_swaps > 0:
230            self.log.info("Step3: Begin Swap x%s test.", num_swaps)
231            if not swap_calls(
232                    self.log,
233                    ads,
234                    call_ab_id,
235                    call_ac_id,
236                    num_swaps,
237                    check_call_status=False):
238                self.log.error("Swap test failed.")
239                return None, None, None
240
241        return call_ab_id, call_ac_id, call_conf_id
242
243
244    def _test_1x_mt_mt_add_swap_x(self, num_swaps):
245        """Test multi call feature in 1x call.
246
247        PhoneB call PhoneA (1x), accept on PhoneA.
248        PhoneC call PhoneA (1x), accept on PhoneA.
249        Swap active call on PhoneA.(N times)
250
251        Returns:
252            call_ab_id, call_ac_id, call_conf_id if succeed;
253            None, None, None if failed.
254
255        """
256        ads = self.android_devices
257
258        # make sure PhoneA is CDMA phone before proceed.
259        if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
260            raise signals.TestSkip("not CDMA phone, abort this 1x test.")
261
262        call_ab_id = self._three_phone_call_mt_add_mt(
263            [ads[0], ads[1], ads[2]], [
264                phone_setup_voice_3g, phone_setup_voice_general,
265                phone_setup_voice_general
266            ], [is_phone_in_call_1x, None, None])
267        if call_ab_id is None:
268            self.log.error("Failed to get call_ab_id")
269            return None, None, None
270
271        call_conf_id = None
272        calls = ads[0].droid.telecomCallGetCallIds()
273        ads[0].log.info("Calls in PhoneA %s", calls)
274        if num_active_calls(self.log, ads[0]) != 3:
275            return None, None, None
276        for call_id in calls:
277            if (CALL_CAPABILITY_SWAP_CONFERENCE in ads[0]
278                    .droid.telecomCallGetCapabilities(call_id)):
279                call_conf_id = call_id
280            elif call_id != call_ab_id:
281                call_ac_id = call_id
282
283        if num_swaps > 0:
284            self.log.info("Step3: Begin Swap x%s test.", num_swaps)
285            if not swap_calls(
286                    self.log,
287                    ads,
288                    call_ab_id,
289                    call_ac_id,
290                    num_swaps,
291                    check_call_status=False):
292                self.log.error("Swap test failed.")
293                return None, None, None
294
295        return call_ab_id, call_ac_id, call_conf_id
296
297
298    def _test_1x_multi_call_drop_from_participant(self, host, first_drop_ad,
299                                                  second_drop_ad):
300        """Test private function to drop call from participant in 1x multi call.
301
302        Host(1x) is in multi call scenario with first_drop_ad and second_drop_ad.
303        Drop call on first_drop_ad.
304        Verify call continues between host and second_drop_ad.
305        Drop call on second_drop_ad and verify host also ends.
306
307        Args:
308            host: android device object for multi-call/conference-call host.
309            first_drop_ad: android device object for call participant, end call
310                on this participant first.
311            second_drop_ad: android device object for call participant, end call
312                on this participant second.
313
314        Returns:
315            True if no error happened. Otherwise False.
316        """
317        self.log.info("Drop 1st call.")
318        if not _hangup_call(self.log, first_drop_ad):
319            return False
320        time.sleep(WAIT_TIME_IN_CALL)
321        calls = host.droid.telecomCallGetCallIds()
322        host.log.info("Calls list: %s", calls)
323        if num_active_calls(self.log, host) != 3:
324            return False
325        if not verify_incall_state(self.log, [host, second_drop_ad], True):
326            return False
327        if not verify_incall_state(self.log, [first_drop_ad], False):
328            return False
329
330        self.log.info("Drop 2nd call.")
331        if not _hangup_call(self.log, second_drop_ad):
332            return False
333        time.sleep(WAIT_TIME_IN_CALL)
334        if not verify_incall_state(
335                self.log, [host, second_drop_ad, first_drop_ad], False):
336            return False
337        return True
338
339
340    def _test_1x_multi_call_drop_from_host(self, host, active_participant_ad,
341                                           held_participant_ad):
342        """Test private function to drop call from host in 1x multi call.
343
344        Host(1x) is in multi call scenario with first_drop_ad and second_drop_ad.
345        Drop call on host. Then active_participant_ad should ends as well.
346        Host should receive a call back from held_participant_ad. Answer on host.
347        Drop call on host. Then verify held_participant_ad ends as well.
348
349        Args:
350            host: android device object for multi-call/conference-call host.
351            active_participant_ad: android device object for the current active
352                call participant.
353            held_participant_ad: android device object for the current held
354                call participant.
355
356        Returns:
357            True if no error happened. Otherwise False.
358        """
359        self.log.info("Drop current call on Host.")
360        if not _hangup_call(self.log, host, "Host"):
361            return False
362        if not wait_and_answer_call(self.log, host,
363                                    get_phone_number(self.log,
364                                                     held_participant_ad)):
365            self.log.error("Did not receive call back.")
366            return False
367        time.sleep(WAIT_TIME_IN_CALL)
368        if not verify_incall_state(self.log, [host, held_participant_ad],
369                                   True):
370            return False
371        if not verify_incall_state(self.log, [active_participant_ad], False):
372            return False
373
374        self.log.info("Drop current call on Host.")
375        if not _hangup_call(self.log, host, "Host"):
376            return False
377        time.sleep(WAIT_TIME_IN_CALL)
378        if not verify_incall_state(
379                self.log, [host, held_participant_ad, active_participant_ad],
380                False):
381            return False
382        return True
383
384
385    def _test_1x_conf_call_drop_from_host(self, host, participant_list):
386        """Test private function to drop call from host in 1x conference call.
387
388        Host(1x) is in conference call scenario with phones in participant_list.
389        End call on host. Then all phones in participant_list should end call.
390
391        Args:
392            host: android device object for multi-call/conference-call host.
393            participant_list: android device objects list for all other
394                participants in multi-call/conference-call.
395
396        Returns:
397            True if no error happened. Otherwise False.
398        """
399        self.log.info("Drop conference call on Host.")
400        if not _hangup_call(self.log, host, "Host"):
401            return False
402        time.sleep(WAIT_TIME_IN_CALL)
403        if not verify_incall_state(self.log, [host], False):
404            return False
405        if not verify_incall_state(self.log, participant_list, False):
406            return False
407        return True
408
409
410    def _test_1x_merge_conference(self, host, participant_list, call_conf_id):
411        """Test private function to merge to conference in 1x multi call scenario.
412
413        Host(1x) is in multi call scenario with phones in participant_list.
414        Merge to conference on host.
415        Verify merge succeed.
416
417        Args:
418            host: android device object for multi-call/conference-call host.
419            participant_list: android device objects list for all other
420                participants in multi-call/conference-call.
421            call_conf_id: conference call id in host android device object.
422
423        Returns:
424            True if no error happened. Otherwise False.
425        """
426        host.droid.telecomCallMergeToConf(call_conf_id)
427        time.sleep(WAIT_TIME_IN_CALL)
428        calls = host.droid.telecomCallGetCallIds()
429        host.log.info("Calls in Phone %s", calls)
430        if num_active_calls(self.log, host) != 3:
431            return False
432        if not verify_incall_state(self.log, [host], True):
433            return False
434        if not verify_incall_state(self.log, participant_list, True):
435            return False
436        if (CALL_CAPABILITY_MERGE_CONFERENCE in
437                host.droid.telecomCallGetCapabilities(call_conf_id)):
438            self.log.error("Merge conference failed.")
439            return False
440        return True
441
442    """ Tests Begin """
443    @TelephonyBaseTest.tel_test_wrap
444    @test_tracker_info(uuid="3cd45972-3862-4956-9504-7fefacdd5ca6")
445    def test_wcdma_mo_mo_add_merge_drop(self):
446        """ Test Conf Call among three phones.
447
448        Call from PhoneA to PhoneB, accept on PhoneB.
449        Call from PhoneA to PhoneC, accept on PhoneC.
450        On PhoneA, merge to conference call.
451        End call on PhoneC, verify call continues.
452        End call on PhoneB, verify call end on PhoneA.
453
454        Returns:
455            True if pass; False if fail.
456        """
457        ads = self.android_devices
458        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
459                                        ads=ads,
460                                        num_swaps=0,
461                                        phone_setup_a=phone_setup_voice_3g,
462                                        phone_setup_b=phone_setup_voice_general,
463                                        phone_setup_c=phone_setup_voice_general,
464                                        verify_phone_a_network_subscription=is_phone_in_call_3g,
465                                        verify_phone_b_network_subscription=None,
466                                        verify_phone_c_network_subscription=None)
467
468        if call_ab_id is None or call_ac_id is None:
469            return False
470
471        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
472
473
474    @TelephonyBaseTest.tel_test_wrap
475    @test_tracker_info(uuid="c1158bd3-6327-4c91-96a7-400e69f68698")
476    def test_wcdma_mt_mt_add_merge_drop(self):
477        """ Test Conf Call among three phones.
478
479        Call from PhoneB to PhoneA, accept on PhoneA.
480        Call from PhoneC to PhoneA, accept on PhoneA.
481        On PhoneA, merge to conference call.
482        End call on PhoneC, verify call continues.
483        End call on PhoneB, verify call end on PhoneA.
484
485        Returns:
486            True if pass; False if fail.
487        """
488        ads = self.android_devices
489        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
490                                        ads=ads,
491                                        num_swaps=0,
492                                        phone_setup_a=phone_setup_voice_3g,
493                                        phone_setup_b=phone_setup_voice_general,
494                                        phone_setup_c=phone_setup_voice_general,
495                                        verify_phone_a_network_subscription=is_phone_in_call_3g,
496                                        verify_phone_b_network_subscription=None,
497                                        verify_phone_c_network_subscription=None)
498
499        if call_ab_id is None or call_ac_id is None:
500            return False
501
502        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
503
504
505    @TelephonyBaseTest.tel_test_wrap
506    @test_tracker_info(uuid="804478b4-a826-48be-a9fa-9a0cec66ee54")
507    def test_1x_mo_mo_add_merge_drop_from_participant(self):
508        """ Test 1x Conf Call among three phones.
509
510        Steps:
511        1. DUT in 1x idle, PhoneB and PhoneC idle.
512        2. Call from DUT to PhoneB, accept on PhoneB.
513        3. Call from DUT to PhoneC, accept on PhoneC.
514        4. On DUT, merge to conference call.
515        5. End call PhoneC, verify call continues on DUT and PhoneB.
516        6. End call on PhoneB, verify call end on PhoneA.
517
518        Expected Results:
519        4. Merge Call succeed on DUT.
520        5. PhoneC drop call, DUT and PhoneB call continues.
521        6. PhoneB drop call, call also end on DUT.
522
523        Returns:
524            True if pass; False if fail.
525        """
526        ads = self.android_devices
527
528        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mo_add()
529        if ((call_ab_id is None) or (call_ac_id is None)
530                or (call_conf_id is None)):
531            self.log.error("Failed to setup 3 way call.")
532            return False
533
534        self.log.info("Merge to Conf Call and verify Conf Call.")
535        if not self._test_1x_merge_conference(ads[0], [ads[1], ads[2]],
536                                              call_conf_id):
537            self.log.error("1x Conference merge failed.")
538
539        self.log.info("End call on PhoneC, and end call on PhoneB.")
540        return self._test_1x_multi_call_drop_from_participant(
541            ads[0], ads[2], ads[1])
542
543
544    @TelephonyBaseTest.tel_test_wrap
545    @test_tracker_info(uuid="a36b02a6-480e-4cb6-9201-bd8bfa5ae8a4")
546    def test_1x_mo_mo_add_merge_drop_from_host(self):
547        """ Test 1x Conf Call among three phones.
548
549        Steps:
550        1. DUT in 1x idle, PhoneB and PhoneC idle.
551        2. Call from DUT to PhoneB, accept on PhoneB.
552        3. Call from DUT to PhoneC, accept on PhoneC.
553        4. On DUT, merge to conference call.
554        5. End call on DUT, make sure all participants drop.
555
556        Expected Results:
557        4. Merge Call succeed on DUT.
558        5. Make sure DUT and all participants drop call.
559
560        Returns:
561            True if pass; False if fail.
562        """
563        ads = self.android_devices
564
565        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mo_add()
566        if ((call_ab_id is None) or (call_ac_id is None)
567                or (call_conf_id is None)):
568            self.log.error("Failed to setup 3 way call.")
569            return False
570
571        self.log.info("Merge to Conf Call and verify Conf Call.")
572        if not self._test_1x_merge_conference(ads[0], [ads[1], ads[2]],
573                                              call_conf_id):
574            self.log.error("1x Conference merge failed.")
575
576        self.log.info("End call on PhoneC, and end call on PhoneB.")
577        return self._test_1x_conf_call_drop_from_host(ads[0], [ads[2], ads[1]])
578
579
580    @TelephonyBaseTest.tel_test_wrap
581    @test_tracker_info(uuid="0c9e5da6-90db-4cb5-9b2c-4be3460b49d0")
582    def test_1x_mo_mt_add_drop_active(self):
583        """ Test 1x MO+MT call among three phones.
584
585        Steps:
586        1. DUT in 1x idle, PhoneB and PhoneC idle.
587        2. Call from DUT to PhoneB, accept on PhoneB.
588        3. Call from PhoneC to DUT, accept on DUT.
589        4. End call PhoneC, verify call continues on DUT and PhoneB.
590        5. End call on PhoneB, verify call end on PhoneA.
591
592        Expected Results:
593        4. PhoneC drop call, DUT and PhoneB call continues.
594        5. PhoneB drop call, call also end on DUT.
595
596        Returns:
597            True if pass; False if fail.
598        """
599        ads = self.android_devices
600
601        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
602            0)
603        if ((call_ab_id is None) or (call_ac_id is None)
604                or (call_conf_id is None)):
605            self.log.error("Failed to setup 3 way call.")
606            return False
607
608        self.log.info("Verify no one dropped call.")
609        time.sleep(WAIT_TIME_IN_CALL)
610        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
611            return False
612
613        self.log.info("End call on PhoneC, and end call on PhoneB.")
614        return self._test_1x_multi_call_drop_from_participant(
615            ads[0], ads[2], ads[1])
616
617
618    @TelephonyBaseTest.tel_test_wrap
619    @test_tracker_info(uuid="9dc16b45-3470-44c8-abf8-19cd5944a53c")
620    def test_1x_mo_mt_add_swap_twice_drop_active(self):
621        """ Test 1x MO+MT call among three phones.
622
623        Steps:
624        1. DUT in 1x idle, PhoneB and PhoneC idle.
625        2. DUT MO call to PhoneB, answer on PhoneB.
626        3. PhoneC call to DUT, answer on DUT
627        4. Swap active call on DUT.
628        5. Swap active call on DUT.
629        6. Drop on PhoneC.
630        7. Drop on PhoneB.
631
632        Expected Results:
633        4. Swap call succeed.
634        5. Swap call succeed.
635        6. Call between DUT and PhoneB continues.
636        7. All participant call end.
637
638        Returns:
639            True if pass; False if fail.
640        """
641        ads = self.android_devices
642
643        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
644            2)
645        if ((call_ab_id is None) or (call_ac_id is None)
646                or (call_conf_id is None)):
647            self.log.error("Failed to setup 3 way call.")
648            return False
649
650        self.log.info("Verify no one dropped call.")
651        time.sleep(WAIT_TIME_IN_CALL)
652        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
653            return False
654
655        self.log.info("End call on PhoneC, and end call on PhoneB.")
656        return self._test_1x_multi_call_drop_from_participant(
657            ads[0], ads[2], ads[1])
658
659
660    @TelephonyBaseTest.tel_test_wrap
661    @test_tracker_info(uuid="dc7a3187-142e-4754-a914-d0241397a2b3")
662    def test_1x_mo_mt_add_swap_once_drop_active(self):
663        """ Test 1x MO+MT call among three phones.
664
665        Steps:
666        1. DUT in 1x idle, PhoneB and PhoneC idle.
667        2. DUT MO call to PhoneB, answer on PhoneB.
668        3. PhoneC call to DUT, answer on DUT
669        4. Swap active call on DUT.
670        5. Drop on PhoneB.
671        6. Drop on PhoneC.
672
673        Expected Results:
674        4. Swap call succeed.
675        5. Call between DUT and PhoneC continues.
676        6. All participant call end.
677
678        Returns:
679            True if pass; False if fail.
680        """
681        ads = self.android_devices
682
683        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
684            1)
685        if ((call_ab_id is None) or (call_ac_id is None)
686                or (call_conf_id is None)):
687            self.log.error("Failed to setup 3 way call.")
688            return False
689
690        self.log.info("Verify no one dropped call.")
691        time.sleep(WAIT_TIME_IN_CALL)
692        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
693            return False
694
695        self.log.info("End call on PhoneB, and end call on PhoneC.")
696        return self._test_1x_multi_call_drop_from_participant(
697            ads[0], ads[1], ads[2])
698
699
700    @TelephonyBaseTest.tel_test_wrap
701    @test_tracker_info(uuid="24cd0ef0-1a69-4603-89c2-0f2b96715348")
702    def test_1x_mo_mt_add_drop_held(self):
703        """ Test 1x MO+MT call among three phones.
704
705        Steps:
706        1. DUT in 1x idle, PhoneB and PhoneC idle.
707        2. Call from DUT to PhoneB, accept on PhoneB.
708        3. Call from PhoneC to DUT, accept on DUT.
709        4. End call PhoneB, verify call continues on DUT and PhoneC.
710        5. End call on PhoneC, verify call end on PhoneA.
711
712        Expected Results:
713        4. DUT drop call, PhoneC also end. Then DUT receive callback from PhoneB.
714        5. DUT drop call, call also end on PhoneB.
715
716        Returns:
717            True if pass; False if fail.
718        """
719        ads = self.android_devices
720
721        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
722            0)
723        if ((call_ab_id is None) or (call_ac_id is None)
724                or (call_conf_id is None)):
725            self.log.error("Failed to setup 3 way call.")
726            return False
727
728        self.log.info("Verify no one dropped call.")
729        time.sleep(WAIT_TIME_IN_CALL)
730        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
731            return False
732
733        self.log.info("End call on PhoneB, and end call on PhoneC.")
734        return self._test_1x_multi_call_drop_from_participant(
735            ads[0], ads[1], ads[2])
736
737
738    @TelephonyBaseTest.tel_test_wrap
739    @test_tracker_info(uuid="1c5c1780-84c2-4547-9e57-eeadac6569d7")
740    def test_1x_mo_mt_add_swap_twice_drop_held(self):
741        """ Test 1x MO+MT call among three phones.
742
743        Steps:
744        1. DUT in 1x idle, PhoneB and PhoneC idle.
745        2. DUT MO call to PhoneB, answer on PhoneB.
746        3. PhoneC call to DUT, answer on DUT
747        4. Swap active call on DUT.
748        5. Swap active call on DUT.
749        6. Drop on PhoneB.
750        7. Drop on PhoneC.
751
752        Expected Results:
753        4. Swap call succeed.
754        5. Swap call succeed.
755        6. Call between DUT and PhoneC continues.
756        7. All participant call end.
757
758        Returns:
759            True if pass; False if fail.
760        """
761        ads = self.android_devices
762
763        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
764            2)
765        if ((call_ab_id is None) or (call_ac_id is None)
766                or (call_conf_id is None)):
767            self.log.error("Failed to setup 3 way call.")
768            return False
769
770        self.log.info("Verify no one dropped call.")
771        time.sleep(WAIT_TIME_IN_CALL)
772        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
773            return False
774
775        self.log.info("End call on PhoneB, and end call on PhoneC.")
776        return self._test_1x_multi_call_drop_from_participant(
777            ads[0], ads[1], ads[2])
778
779
780    @TelephonyBaseTest.tel_test_wrap
781    @test_tracker_info(uuid="928a2b21-c4ca-4553-9acc-8d3db61ed6eb")
782    def test_1x_mo_mt_add_swap_once_drop_held(self):
783        """ Test 1x MO+MT call among three phones.
784
785        Steps:
786        1. DUT in 1x idle, PhoneB and PhoneC idle.
787        2. DUT MO call to PhoneB, answer on PhoneB.
788        3. PhoneC call to DUT, answer on DUT
789        4. Swap active call on DUT.
790        5. Drop on PhoneC.
791        6. Drop on PhoneB.
792
793        Expected Results:
794        4. Swap call succeed.
795        5. Call between DUT and PhoneB continues.
796        6. All participant call end.
797
798        Returns:
799            True if pass; False if fail.
800        """
801        ads = self.android_devices
802
803        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
804            1)
805        if ((call_ab_id is None) or (call_ac_id is None)
806                or (call_conf_id is None)):
807            self.log.error("Failed to setup 3 way call.")
808            return False
809
810        self.log.info("Verify no one dropped call.")
811        time.sleep(WAIT_TIME_IN_CALL)
812        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
813            return False
814
815        self.log.info("End call on PhoneC, and end call on PhoneB.")
816        return self._test_1x_multi_call_drop_from_participant(
817            ads[0], ads[2], ads[1])
818
819
820    @TelephonyBaseTest.tel_test_wrap
821    @test_tracker_info(uuid="deb57627-a717-41f0-b8f4-f3ccf9ce2e15")
822    def test_1x_mo_mt_add_drop_on_dut(self):
823        """ Test 1x MO+MT call among three phones.
824
825        Steps:
826        1. DUT in 1x idle, PhoneB and PhoneC idle.
827        2. Call from DUT to PhoneB, accept on PhoneB.
828        3. Call from PhoneC to DUT, accept on DUT.
829        4. End call on DUT.
830        5. End call on DUT.
831
832        Expected Results:
833        4. DUT drop call, PhoneC also end. Then DUT receive callback from PhoneB.
834        5. DUT drop call, call also end on PhoneB.
835
836        Returns:
837            True if pass; False if fail.
838        """
839        ads = self.android_devices
840
841        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
842            0)
843        if ((call_ab_id is None) or (call_ac_id is None)
844                or (call_conf_id is None)):
845            self.log.error("Failed to setup 3 way call.")
846            return False
847
848        self.log.info("Verify no one dropped call.")
849        time.sleep(WAIT_TIME_IN_CALL)
850        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
851            return False
852
853        self.log.info("End call on DUT, DUT should receive callback.")
854        return self._test_1x_multi_call_drop_from_host(ads[0], ads[2], ads[1])
855
856
857    @TelephonyBaseTest.tel_test_wrap
858    @test_tracker_info(uuid="9cdee9c2-98cf-40de-9396-516192e493a1")
859    def test_1x_mo_mt_add_swap_twice_drop_on_dut(self):
860        """ Test 1x MO+MT call among three phones.
861
862        Steps:
863        1. DUT in 1x idle, PhoneB and PhoneC idle.
864        2. DUT MO call to PhoneB, answer on PhoneB.
865        3. PhoneC call to DUT, answer on DUT
866        4. Swap active call on DUT.
867        5. Swap active call on DUT.
868        6. Drop current call on DUT.
869        7. Drop current call on DUT.
870
871        Expected Results:
872        4. Swap call succeed.
873        5. Swap call succeed.
874        6. DUT drop call, PhoneC also end. Then DUT receive callback from PhoneB.
875        7. DUT drop call, call also end on PhoneB.
876
877        Returns:
878            True if pass; False if fail.
879        """
880        ads = self.android_devices
881
882        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
883            2)
884        if ((call_ab_id is None) or (call_ac_id is None)
885                or (call_conf_id is None)):
886            self.log.error("Failed to setup 3 way call.")
887            return False
888
889        self.log.info("Verify no one dropped call.")
890        time.sleep(WAIT_TIME_IN_CALL)
891        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
892            return False
893
894        self.log.info("End call on DUT, DUT should receive callback.")
895        return self._test_1x_multi_call_drop_from_host(ads[0], ads[2], ads[1])
896
897
898    @TelephonyBaseTest.tel_test_wrap
899    @test_tracker_info(uuid="26187827-64c0-436e-9792-20c216aeb442")
900    def test_1x_mo_mt_add_swap_once_drop_on_dut(self):
901        """ Test 1x MO+MT call among three phones.
902
903        Steps:
904        1. DUT in 1x idle, PhoneB and PhoneC idle.
905        2. DUT MO call to PhoneB, answer on PhoneB.
906        3. PhoneC call to DUT, answer on DUT
907        4. Swap active call on DUT.
908        5. Drop current call on DUT.
909        6. Drop current call on DUT.
910
911        Expected Results:
912        4. Swap call succeed.
913        5. DUT drop call, PhoneB also end. Then DUT receive callback from PhoneC.
914        6. DUT drop call, call also end on PhoneC.
915
916        Returns:
917            True if pass; False if fail.
918        """
919        ads = self.android_devices
920
921        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mo_mt_add_swap_x(
922            1)
923        if ((call_ab_id is None) or (call_ac_id is None)
924                or (call_conf_id is None)):
925            self.log.error("Failed to setup 3 way call.")
926            return False
927
928        self.log.info("Verify no one dropped call.")
929        time.sleep(WAIT_TIME_IN_CALL)
930        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
931            return False
932
933        self.log.info("End call on DUT, DUT should receive callback.")
934        return self._test_1x_multi_call_drop_from_host(ads[0], ads[1], ads[2])
935
936
937    @TelephonyBaseTest.tel_test_wrap
938    @test_tracker_info(uuid="ce590b72-b4ab-4a27-9c01-f8e3b110419f")
939    def test_1x_mt_mt_add_drop_active(self):
940        """ Test 1x MT+MT call among three phones.
941
942        Steps:
943        1. DUT in 1x idle, PhoneB and PhoneC idle.
944        2. Call from PhoneB to DUT, accept on DUT.
945        3. Call from PhoneC to DUT, accept on DUT.
946        4. End call PhoneC, verify call continues on DUT and PhoneB.
947        5. End call on PhoneB, verify call end on PhoneA.
948
949        Expected Results:
950        4. PhoneC drop call, DUT and PhoneB call continues.
951        5. PhoneB drop call, call also end on DUT.
952
953        Returns:
954            True if pass; False if fail.
955        """
956        ads = self.android_devices
957
958        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
959            0)
960        if ((call_ab_id is None) or (call_ac_id is None)
961                or (call_conf_id is None)):
962            self.log.error("Failed to setup 3 way call.")
963            return False
964
965        self.log.info("Verify no one dropped call.")
966        time.sleep(WAIT_TIME_IN_CALL)
967        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
968            return False
969
970        self.log.info("End call on PhoneC, and end call on PhoneB.")
971        return self._test_1x_multi_call_drop_from_participant(
972            ads[0], ads[2], ads[1])
973
974
975    @TelephonyBaseTest.tel_test_wrap
976    @test_tracker_info(uuid="736aa74e-1d0b-4f85-b0f7-11840543cf54")
977    def test_1x_mt_mt_add_swap_twice_drop_active(self):
978        """ Test 1x MT+MT call among three phones.
979
980        Steps:
981        1. DUT in 1x idle, PhoneB and PhoneC idle.
982        2. PhoneB call to DUT, answer on DUT.
983        3. PhoneC call to DUT, answer on DUT
984        4. Swap active call on DUT.
985        5. Swap active call on DUT.
986        6. Drop on PhoneC.
987        7. Drop on PhoneB.
988
989        Expected Results:
990        4. Swap call succeed.
991        5. Swap call succeed.
992        6. Call between DUT and PhoneB continues.
993        7. All participant call end.
994
995        Returns:
996            True if pass; False if fail.
997        """
998        ads = self.android_devices
999
1000        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1001            2)
1002        if ((call_ab_id is None) or (call_ac_id is None)
1003                or (call_conf_id is None)):
1004            self.log.error("Failed to setup 3 way call.")
1005            return False
1006
1007        self.log.info("Verify no one dropped call.")
1008        time.sleep(WAIT_TIME_IN_CALL)
1009        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1010            return False
1011
1012        self.log.info("End call on PhoneC, and end call on PhoneB.")
1013        return self._test_1x_multi_call_drop_from_participant(
1014            ads[0], ads[2], ads[1])
1015
1016
1017    @TelephonyBaseTest.tel_test_wrap
1018    @test_tracker_info(uuid="3eee6b6e-e1b1-43ec-82d5-d298b514fc07")
1019    def test_1x_mt_mt_add_swap_once_drop_active(self):
1020        """ Test 1x MT+MT call among three phones.
1021
1022        Steps:
1023        1. DUT in 1x idle, PhoneB and PhoneC idle.
1024        2. PhoneB call to DUT, answer on DUT.
1025        3. PhoneC call to DUT, answer on DUT
1026        4. Swap active call on DUT.
1027        5. Drop on PhoneB.
1028        6. Drop on PhoneC.
1029
1030        Expected Results:
1031        4. Swap call succeed.
1032        5. Call between DUT and PhoneC continues.
1033        6. All participant call end.
1034
1035        Returns:
1036            True if pass; False if fail.
1037        """
1038        ads = self.android_devices
1039
1040        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1041            1)
1042        if ((call_ab_id is None) or (call_ac_id is None)
1043                or (call_conf_id is None)):
1044            self.log.error("Failed to setup 3 way call.")
1045            return False
1046
1047        self.log.info("Verify no one dropped call.")
1048        time.sleep(WAIT_TIME_IN_CALL)
1049        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1050            return False
1051
1052        self.log.info("End call on PhoneB, and end call on PhoneC.")
1053        return self._test_1x_multi_call_drop_from_participant(
1054            ads[0], ads[1], ads[2])
1055
1056
1057    @TelephonyBaseTest.tel_test_wrap
1058    @test_tracker_info(uuid="432549a9-e4bb-44d3-bd44-befffc1af02d")
1059    def test_1x_mt_mt_add_drop_held(self):
1060        """ Test 1x MT+MT call among three phones.
1061
1062        Steps:
1063        1. DUT in 1x idle, PhoneB and PhoneC idle.
1064        2. Call from PhoneB to DUT, accept on DUT.
1065        3. Call from PhoneC to DUT, accept on DUT.
1066        4. End call PhoneB, verify call continues on DUT and PhoneC.
1067        5. End call on PhoneC, verify call end on PhoneA.
1068
1069        Expected Results:
1070        4. PhoneB drop call, DUT and PhoneC call continues.
1071        5. PhoneC drop call, call also end on DUT.
1072
1073        Returns:
1074            True if pass; False if fail.
1075        """
1076        ads = self.android_devices
1077
1078        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1079            0)
1080        if ((call_ab_id is None) or (call_ac_id is None)
1081                or (call_conf_id is None)):
1082            self.log.error("Failed to setup 3 way call.")
1083            return False
1084
1085        self.log.info("Verify no one dropped call.")
1086        time.sleep(WAIT_TIME_IN_CALL)
1087        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1088            return False
1089
1090        self.log.info("End call on PhoneB, and end call on PhoneC.")
1091        return self._test_1x_multi_call_drop_from_participant(
1092            ads[0], ads[1], ads[2])
1093
1094
1095    @TelephonyBaseTest.tel_test_wrap
1096    @test_tracker_info(uuid="c8f30fc1-8586-4eb0-854e-264989fd69b8")
1097    def test_1x_mt_mt_add_swap_twice_drop_held(self):
1098        """ Test 1x MT+MT call among three phones.
1099
1100        Steps:
1101        1. DUT in 1x idle, PhoneB and PhoneC idle.
1102        2. PhoneB call to DUT, answer on DUT.
1103        3. PhoneC call to DUT, answer on DUT
1104        4. Swap active call on DUT.
1105        5. Swap active call on DUT.
1106        6. Drop on PhoneB.
1107        7. Drop on PhoneC.
1108
1109        Expected Results:
1110        4. Swap call succeed.
1111        5. Swap call succeed.
1112        6. Call between DUT and PhoneC continues.
1113        7. All participant call end.
1114
1115        Returns:
1116            True if pass; False if fail.
1117        """
1118        ads = self.android_devices
1119
1120        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1121            2)
1122        if ((call_ab_id is None) or (call_ac_id is None)
1123                or (call_conf_id is None)):
1124            self.log.error("Failed to setup 3 way call.")
1125            return False
1126
1127        self.log.info("Verify no one dropped call.")
1128        time.sleep(WAIT_TIME_IN_CALL)
1129        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1130            return False
1131
1132        self.log.info("End call on PhoneB, and end call on PhoneC.")
1133        return self._test_1x_multi_call_drop_from_participant(
1134            ads[0], ads[1], ads[2])
1135
1136
1137    @TelephonyBaseTest.tel_test_wrap
1138    @test_tracker_info(uuid="065ba51e-9843-4018-8009-7fdc6590011d")
1139    def test_1x_mt_mt_add_swap_once_drop_held(self):
1140        """ Test 1x MT+MT call among three phones.
1141
1142        Steps:
1143        1. DUT in 1x idle, PhoneB and PhoneC idle.
1144        2. PhoneB call to DUT, answer on DUT.
1145        3. PhoneC call to DUT, answer on DUT
1146        4. Swap active call on DUT.
1147        5. Drop on PhoneC.
1148        6. Drop on PhoneB.
1149
1150        Expected Results:
1151        4. Swap call succeed.
1152        5. Call between DUT and PhoneB continues.
1153        6. All participant call end.
1154
1155        Returns:
1156            True if pass; False if fail.
1157        """
1158        ads = self.android_devices
1159
1160        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1161            1)
1162        if ((call_ab_id is None) or (call_ac_id is None)
1163                or (call_conf_id is None)):
1164            self.log.error("Failed to setup 3 way call.")
1165            return False
1166
1167        self.log.info("Verify no one dropped call.")
1168        time.sleep(WAIT_TIME_IN_CALL)
1169        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1170            return False
1171
1172        self.log.info("End call on PhoneC, and end call on PhoneB.")
1173        return self._test_1x_multi_call_drop_from_participant(
1174            ads[0], ads[2], ads[1])
1175
1176
1177    @TelephonyBaseTest.tel_test_wrap
1178    @test_tracker_info(uuid="69c69449-d430-4f00-ae19-c51242561ac9")
1179    def test_1x_mt_mt_add_drop_on_dut(self):
1180        """ Test 1x MT+MT call among three phones.
1181
1182        Steps:
1183        1. DUT in 1x idle, PhoneB and PhoneC idle.
1184        2. Call from PhoneB to DUT, accept on DUT.
1185        3. Call from PhoneC to DUT, accept on DUT.
1186        4. End call on DUT.
1187        5. End call on DUT.
1188
1189        Expected Results:
1190        4. DUT drop call, PhoneC also end. Then DUT receive callback from PhoneB.
1191        5. DUT drop call, call also end on PhoneB.
1192
1193        Returns:
1194            True if pass; False if fail.
1195        """
1196        ads = self.android_devices
1197
1198        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1199            0)
1200        if ((call_ab_id is None) or (call_ac_id is None)
1201                or (call_conf_id is None)):
1202            self.log.error("Failed to setup 3 way call.")
1203            return False
1204
1205        self.log.info("Verify no one dropped call.")
1206        time.sleep(WAIT_TIME_IN_CALL)
1207        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1208            return False
1209
1210        self.log.info("End call on DUT, DUT should receive callback.")
1211        return self._test_1x_multi_call_drop_from_host(ads[0], ads[2], ads[1])
1212
1213
1214    @TelephonyBaseTest.tel_test_wrap
1215    @test_tracker_info(uuid="282583a3-d455-4caf-a184-718f8bbccb91")
1216    def test_1x_mt_mt_add_swap_twice_drop_on_dut(self):
1217        """ Test 1x MT+MT call among three phones.
1218
1219        Steps:
1220        1. DUT in 1x idle, PhoneB and PhoneC idle.
1221        2. PhoneB call to DUT, answer on DUT.
1222        3. PhoneC call to DUT, answer on DUT
1223        4. Swap active call on DUT.
1224        5. Swap active call on DUT.
1225        6. Drop current call on DUT.
1226        7. Drop current call on DUT.
1227
1228        Expected Results:
1229        4. Swap call succeed.
1230        5. Swap call succeed.
1231        6. DUT drop call, PhoneC also end. Then DUT receive callback from PhoneB.
1232        7. DUT drop call, call also end on PhoneB.
1233
1234        Returns:
1235            True if pass; False if fail.
1236        """
1237        ads = self.android_devices
1238
1239        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1240            2)
1241        if ((call_ab_id is None) or (call_ac_id is None)
1242                or (call_conf_id is None)):
1243            self.log.error("Failed to setup 3 way call.")
1244            return False
1245
1246        self.log.info("Verify no one dropped call.")
1247        time.sleep(WAIT_TIME_IN_CALL)
1248        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1249            return False
1250
1251        self.log.info("End call on DUT, DUT should receive callback.")
1252        return self._test_1x_multi_call_drop_from_host(ads[0], ads[2], ads[1])
1253
1254
1255    @TelephonyBaseTest.tel_test_wrap
1256    @test_tracker_info(uuid="1cf83159-d230-41a4-842c-064be5ef11e6")
1257    def test_1x_mt_mt_add_swap_once_drop_on_dut(self):
1258        """ Test 1x MT+MT call among three phones.
1259
1260        Steps:
1261        1. DUT in 1x idle, PhoneB and PhoneC idle.
1262        2. PhoneB call to DUT, answer on DUT.
1263        3. PhoneC call to DUT, answer on DUT
1264        4. Swap active call on DUT.
1265        5. Drop current call on DUT.
1266        6. Drop current call on DUT.
1267
1268        Expected Results:
1269        4. Swap call succeed.
1270        5. DUT drop call, PhoneB also end. Then DUT receive callback from PhoneC.
1271        6. DUT drop call, call also end on PhoneC.
1272
1273        Returns:
1274            True if pass; False if fail.
1275        """
1276        ads = self.android_devices
1277
1278        call_ab_id, call_ac_id, call_conf_id = self._test_1x_mt_mt_add_swap_x(
1279            1)
1280        if ((call_ab_id is None) or (call_ac_id is None)
1281                or (call_conf_id is None)):
1282            self.log.error("Failed to setup 3 way call.")
1283            return False
1284
1285        self.log.info("Verify no one dropped call.")
1286        time.sleep(WAIT_TIME_IN_CALL)
1287        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
1288            return False
1289
1290        self.log.info("End call on DUT, DUT should receive callback.")
1291        return self._test_1x_multi_call_drop_from_host(ads[0], ads[1], ads[2])
1292
1293
1294    @TelephonyBaseTest.tel_test_wrap
1295    @test_tracker_info(uuid="602db3cb-e02b-4e4c-9043-338e1231f51b")
1296    def test_volte_mo_mo_add_volte_merge_drop_second_call_from_participant_no_cep(
1297            self):
1298        """ Test VoLTE Conference Call among three phones. No CEP.
1299
1300        Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1301        Call from PhoneA (VoLTE) to PhoneC (VoLTE), accept on PhoneC.
1302        On PhoneA, merge to conference call (No CEP).
1303        End call on PhoneC, verify call continues.
1304        End call on PhoneB, verify call end on PhoneA.
1305
1306        Returns:
1307            True if pass; False if fail.
1308        """
1309        ads = self.android_devices
1310        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1311                                        ads=ads,
1312                                        num_swaps=0,
1313                                        phone_setup_a=phone_setup_volte,
1314                                        phone_setup_b=phone_setup_volte,
1315                                        phone_setup_c=phone_setup_volte,
1316                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1317                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1318                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1319        if call_ab_id is None or call_ac_id is None:
1320            return False
1321
1322        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1323            call_ab_id, call_ac_id)
1324
1325
1326    @TelephonyBaseTest.tel_test_wrap
1327    @test_tracker_info(uuid="7c9ae738-9031-4a77-9ff7-356a186820a5")
1328    def test_volte_mo_mo_add_volte_merge_drop_second_call_from_participant_cep(
1329            self):
1330        """ Test VoLTE Conference Call among three phones. CEP enabled.
1331
1332        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1333        2. Call from PhoneA (VoLTE) to PhoneC (VoLTE), accept on PhoneC.
1334        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1335        4. End call on PhoneC, verify call continues.
1336        5. End call on PhoneB, verify call end on PhoneA.
1337
1338        Returns:
1339            True if pass; False if fail.
1340        """
1341        ads = self.android_devices
1342        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1343                                        ads=ads,
1344                                        num_swaps=0,
1345                                        phone_setup_a=phone_setup_volte,
1346                                        phone_setup_b=phone_setup_volte,
1347                                        phone_setup_c=phone_setup_volte,
1348                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1349                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1350                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1351        if call_ab_id is None or call_ac_id is None:
1352            return False
1353
1354        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1355            call_ab_id, call_ac_id)
1356
1357
1358    @TelephonyBaseTest.tel_test_wrap
1359    @test_tracker_info(uuid="f50e7e94-0956-41c4-b02b-384a12668f10")
1360    def test_volte_mo_mo_add_volte_merge_drop_second_call_from_host_cep(self):
1361        """ Test VoLTE Conference Call among three phones. CEP enabled.
1362
1363        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1364        2. Call from PhoneA (VoLTE) to PhoneC (VoLTE), accept on PhoneC.
1365        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1366        4. On PhoneA disconnect call between A-C, verify call continues.
1367        5. On PhoneA disconnect call between A-B, verify call continues.
1368
1369        Returns:
1370            True if pass; False if fail.
1371        """
1372        ads = self.android_devices
1373        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1374                                        ads=ads,
1375                                        num_swaps=0,
1376                                        phone_setup_a=phone_setup_volte,
1377                                        phone_setup_b=phone_setup_volte,
1378                                        phone_setup_c=phone_setup_volte,
1379                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1380                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1381                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1382        if call_ab_id is None or call_ac_id is None:
1383            return False
1384
1385        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
1386            call_ab_id, call_ac_id)
1387
1388
1389    @TelephonyBaseTest.tel_test_wrap
1390    @test_tracker_info(uuid="a6c22e39-fd7e-4bed-982a-145065572281")
1391    def test_volte_mo_mo_add_volte_merge_drop_first_call_from_participant_cep(
1392            self):
1393        """ Test VoLTE Conference Call among three phones. CEP enabled.
1394
1395        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1396        2. Call from PhoneA (VoLTE) to PhoneC (VoLTE), accept on PhoneC.
1397        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1398        4. End call on PhoneB, verify call continues.
1399        5. End call on PhoneC, verify call end on PhoneA.
1400
1401        Returns:
1402            True if pass; False if fail.
1403        """
1404        ads = self.android_devices
1405        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1406                                        ads=ads,
1407                                        num_swaps=0,
1408                                        phone_setup_a=phone_setup_volte,
1409                                        phone_setup_b=phone_setup_volte,
1410                                        phone_setup_c=phone_setup_volte,
1411                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1412                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1413                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1414        if call_ab_id is None or call_ac_id is None:
1415            return False
1416
1417        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
1418            call_ab_id, call_ac_id)
1419
1420
1421    @TelephonyBaseTest.tel_test_wrap
1422    @test_tracker_info(uuid="2188722a-31e3-4e46-8f74-6ea4cbc08476")
1423    def test_volte_mo_mo_add_volte_merge_drop_first_call_from_host_cep(self):
1424        """ Test VoLTE Conference Call among three phones. CEP enabled.
1425
1426        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1427        2. Call from PhoneA (VoLTE) to PhoneC (VoLTE), accept on PhoneC.
1428        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1429        4. On PhoneA disconnect call between A-B, verify call continues.
1430        5. On PhoneA disconnect call between A-C, verify call continues.
1431
1432        Returns:
1433            True if pass; False if fail.
1434        """
1435        ads = self.android_devices
1436        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1437                                        ads=ads,
1438                                        num_swaps=0,
1439                                        phone_setup_a=phone_setup_volte,
1440                                        phone_setup_b=phone_setup_volte,
1441                                        phone_setup_c=phone_setup_volte,
1442                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1443                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1444                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1445        if call_ab_id is None or call_ac_id is None:
1446            return False
1447
1448        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
1449            call_ab_id, call_ac_id)
1450
1451
1452    @TelephonyBaseTest.tel_test_wrap
1453    @test_tracker_info(uuid="ef5ec1c9-7771-4289-ad94-08a80145d680")
1454    def test_volte_mo_mt_add_volte_merge_drop_second_call_from_participant_no_cep(
1455            self):
1456        """ Test VoLTE Conference Call among three phones. No CEP.
1457
1458        Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1459        Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1460        On PhoneA, merge to conference call (No CEP).
1461        End call on PhoneC, verify call continues.
1462        End call on PhoneB, verify call end on PhoneA.
1463
1464        Returns:
1465            True if pass; False if fail.
1466        """
1467        ads = self.android_devices
1468        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1469                                        ads=ads,
1470                                        num_swaps=0,
1471                                        phone_setup_a=phone_setup_volte,
1472                                        phone_setup_b=phone_setup_volte,
1473                                        phone_setup_c=phone_setup_volte,
1474                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1475                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1476                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1477        if call_ab_id is None or call_ac_id is None:
1478            return False
1479
1480        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1481            call_ab_id, call_ac_id)
1482
1483
1484    @TelephonyBaseTest.tel_test_wrap
1485    @test_tracker_info(uuid="2111001d-c310-4eff-a6ef-201d199796ea")
1486    def test_volte_mo_mt_add_volte_merge_drop_second_call_from_participant_cep(
1487            self):
1488        """ Test VoLTE Conference Call among three phones. CEP enabled.
1489
1490        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1491        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1492        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1493        4. End call on PhoneC, verify call continues.
1494        5. End call on PhoneB, verify call end on PhoneA.
1495
1496        Returns:
1497            True if pass; False if fail.
1498        """
1499        ads = self.android_devices
1500        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1501                                        ads=ads,
1502                                        num_swaps=0,
1503                                        phone_setup_a=phone_setup_volte,
1504                                        phone_setup_b=phone_setup_volte,
1505                                        phone_setup_c=phone_setup_volte,
1506                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1507                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1508                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1509        if call_ab_id is None or call_ac_id is None:
1510            return False
1511
1512        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1513            call_ab_id, call_ac_id)
1514
1515
1516    @TelephonyBaseTest.tel_test_wrap
1517    @test_tracker_info(uuid="eee3577b-5427-43ee-aff0-ed7f7846b41c")
1518    def test_volte_mo_mt_add_volte_merge_drop_second_call_from_host_cep(self):
1519        """ Test VoLTE Conference Call among three phones. CEP enabled.
1520
1521        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1522        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1523        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1524        4. On PhoneA disconnect call between A-C, verify call continues.
1525        5. On PhoneA disconnect call between A-B, verify call continues.
1526
1527        Returns:
1528            True if pass; False if fail.
1529        """
1530        ads = self.android_devices
1531        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1532                                        ads=ads,
1533                                        num_swaps=0,
1534                                        phone_setup_a=phone_setup_volte,
1535                                        phone_setup_b=phone_setup_volte,
1536                                        phone_setup_c=phone_setup_volte,
1537                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1538                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1539                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1540        if call_ab_id is None or call_ac_id is None:
1541            return False
1542
1543        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
1544            call_ab_id, call_ac_id)
1545
1546
1547    @TelephonyBaseTest.tel_test_wrap
1548    @test_tracker_info(uuid="86faf200-be78-452d-8662-85e7f42a2d3b")
1549    def test_volte_mo_mt_add_volte_merge_drop_first_call_from_participant_cep(
1550            self):
1551        """ Test VoLTE Conference Call among three phones. CEP enabled.
1552
1553        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1554        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1555        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1556        4. End call on PhoneB, verify call continues.
1557        5. End call on PhoneC, verify call end on PhoneA.
1558
1559        Returns:
1560            True if pass; False if fail.
1561        """
1562        ads = self.android_devices
1563        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1564                                        ads=ads,
1565                                        num_swaps=0,
1566                                        phone_setup_a=phone_setup_volte,
1567                                        phone_setup_b=phone_setup_volte,
1568                                        phone_setup_c=phone_setup_volte,
1569                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1570                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1571                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1572        if call_ab_id is None or call_ac_id is None:
1573            return False
1574
1575        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
1576            call_ab_id, call_ac_id)
1577
1578
1579    @TelephonyBaseTest.tel_test_wrap
1580    @test_tracker_info(uuid="d0e18f3c-71a1-49c9-b3ad-b8c24f8a43ec")
1581    def test_volte_mo_mt_add_volte_merge_drop_first_call_from_host_cep(self):
1582        """ Test VoLTE Conference Call among three phones. CEP enabled.
1583
1584        1. Call from PhoneA (VoLTE) to PhoneB (VoLTE), accept on PhoneB.
1585        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1586        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1587        4. On PhoneA disconnect call between A-B, verify call continues.
1588        5. On PhoneA disconnect call between A-C, verify call continues.
1589
1590        Returns:
1591            True if pass; False if fail.
1592        """
1593        ads = self.android_devices
1594        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1595                                        ads=ads,
1596                                        num_swaps=0,
1597                                        phone_setup_a=phone_setup_volte,
1598                                        phone_setup_b=phone_setup_volte,
1599                                        phone_setup_c=phone_setup_volte,
1600                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1601                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1602                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1603        if call_ab_id is None or call_ac_id is None:
1604            return False
1605
1606        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
1607            call_ab_id, call_ac_id)
1608
1609
1610    @TelephonyBaseTest.tel_test_wrap
1611    @test_tracker_info(uuid="b27d6b3d-b73b-4a20-a5ae-2990d73a07fe")
1612    def test_volte_mt_mt_add_volte_merge_drop_second_call_from_participant_no_cep(
1613            self):
1614        """ Test VoLTE Conference Call among three phones. No CEP.
1615
1616        Call from PhoneB (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1617        Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1618        On PhoneA, merge to conference call (No CEP).
1619        End call on PhoneC, verify call continues.
1620        End call on PhoneB, verify call end on PhoneA.
1621
1622        Returns:
1623            True if pass; False if fail.
1624        """
1625        ads = self.android_devices
1626        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
1627                                        ads=ads,
1628                                        num_swaps=0,
1629                                        phone_setup_a=phone_setup_volte,
1630                                        phone_setup_b=phone_setup_volte,
1631                                        phone_setup_c=phone_setup_volte,
1632                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1633                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1634                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1635        if call_ab_id is None or call_ac_id is None:
1636            return False
1637
1638        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1639            call_ab_id, call_ac_id)
1640
1641
1642    @TelephonyBaseTest.tel_test_wrap
1643    @test_tracker_info(uuid="f66e940c-30bd-48c7-b5e2-91147fa04ba2")
1644    def test_volte_mt_mt_add_volte_merge_drop_second_call_from_participant_cep(
1645            self):
1646        """ Test VoLTE Conference Call among three phones. CEP enabled.
1647
1648        1. Call from PhoneB (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1649        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1650        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1651        4. End call on PhoneC, verify call continues.
1652        5. End call on PhoneB, verify call end on PhoneA.
1653
1654        Returns:
1655            True if pass; False if fail.
1656        """
1657        ads = self.android_devices
1658        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
1659                                        ads=ads,
1660                                        num_swaps=0,
1661                                        phone_setup_a=phone_setup_volte,
1662                                        phone_setup_b=phone_setup_volte,
1663                                        phone_setup_c=phone_setup_volte,
1664                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1665                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1666                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1667        if call_ab_id is None or call_ac_id is None:
1668            return False
1669
1670        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1671            call_ab_id, call_ac_id)
1672
1673
1674    @TelephonyBaseTest.tel_test_wrap
1675    @test_tracker_info(uuid="ad313a8b-8bb0-43eb-a10e-e2c17f530ee4")
1676    def test_volte_mt_mt_add_volte_merge_drop_second_call_from_host_cep(self):
1677        """ Test VoLTE Conference Call among three phones. CEP enabled.
1678
1679        1. Call from PhoneB (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1680        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1681        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1682        4. On PhoneA disconnect call between A-C, verify call continues.
1683        5. On PhoneA disconnect call between A-B, verify call continues.
1684
1685        Returns:
1686            True if pass; False if fail.
1687        """
1688        ads = self.android_devices
1689        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
1690                                        ads=ads,
1691                                        num_swaps=0,
1692                                        phone_setup_a=phone_setup_volte,
1693                                        phone_setup_b=phone_setup_volte,
1694                                        phone_setup_c=phone_setup_volte,
1695                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1696                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1697                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1698        if call_ab_id is None or call_ac_id is None:
1699            return False
1700
1701        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
1702            call_ab_id, call_ac_id)
1703
1704
1705    @TelephonyBaseTest.tel_test_wrap
1706    @test_tracker_info(uuid="18b30c14-fef1-4055-8987-ee6137609b81")
1707    def test_volte_mt_mt_add_volte_merge_drop_first_call_from_participant_cep(
1708            self):
1709        """ Test VoLTE Conference Call among three phones. CEP enabled.
1710
1711        1. Call from PhoneB (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1712        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1713        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1714        4. End call on PhoneB, verify call continues.
1715        5. End call on PhoneC, verify call end on PhoneA.
1716
1717        Returns:
1718            True if pass; False if fail.
1719        """
1720        ads = self.android_devices
1721        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
1722                                        ads=ads,
1723                                        num_swaps=0,
1724                                        phone_setup_a=phone_setup_volte,
1725                                        phone_setup_b=phone_setup_volte,
1726                                        phone_setup_c=phone_setup_volte,
1727                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1728                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1729                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1730        if call_ab_id is None or call_ac_id is None:
1731            return False
1732
1733        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
1734            call_ab_id, call_ac_id)
1735
1736
1737    @TelephonyBaseTest.tel_test_wrap
1738    @test_tracker_info(uuid="7dc24162-f06e-453b-93e6-926d31e6d387")
1739    def test_volte_mt_mt_add_volte_merge_drop_first_call_from_host_cep(self):
1740        """ Test VoLTE Conference Call among three phones. CEP enabled.
1741
1742        1. Call from PhoneB (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1743        2. Call from PhoneC (VoLTE) to PhoneA (VoLTE), accept on PhoneA.
1744        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1745        4. On PhoneA disconnect call between A-B, verify call continues.
1746        5. On PhoneA disconnect call between A-C, verify call continues.
1747
1748        Returns:
1749            True if pass; False if fail.
1750        """
1751        ads = self.android_devices
1752        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
1753                                        ads=ads,
1754                                        num_swaps=0,
1755                                        phone_setup_a=phone_setup_volte,
1756                                        phone_setup_b=phone_setup_volte,
1757                                        phone_setup_c=phone_setup_volte,
1758                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1759                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
1760                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
1761        if call_ab_id is None or call_ac_id is None:
1762            return False
1763
1764        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
1765            call_ab_id, call_ac_id)
1766
1767
1768    @TelephonyBaseTest.tel_test_wrap
1769    @test_tracker_info(uuid="eb90a56b-2085-4fde-a156-ada3620200df")
1770    def test_volte_mo_mo_add_wcdma_merge_drop_second_call_from_participant_no_cep(
1771            self):
1772        """ Test VoLTE Conference Call among three phones. No CEP.
1773
1774        Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1775        Call from PhoneA (VOLTE) to PhoneC (WCDMA), accept on PhoneC.
1776        On PhoneA, merge to conference call (No CEP).
1777        End call on PhoneC, verify call continues.
1778        End call on PhoneB, verify call end on PhoneA.
1779
1780        Returns:
1781            True if pass; False if fail.
1782        """
1783        ads = self.android_devices
1784        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1785                                        ads=ads,
1786                                        num_swaps=0,
1787                                        phone_setup_a=phone_setup_volte,
1788                                        phone_setup_b=phone_setup_voice_3g,
1789                                        phone_setup_c=phone_setup_voice_3g,
1790                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1791                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1792                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1793        if call_ab_id is None or call_ac_id is None:
1794            return False
1795
1796        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1797            call_ab_id, call_ac_id)
1798
1799
1800    @TelephonyBaseTest.tel_test_wrap
1801    @test_tracker_info(uuid="ae999260-7856-41cc-bf4c-67b26e18c9a3")
1802    def test_volte_mo_mo_add_wcdma_merge_drop_second_call_from_participant_cep(
1803            self):
1804        """ Test VoLTE Conference Call among three phones. CEP enabled.
1805
1806        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1807        2. Call from PhoneA (VoLTE) to PhoneC (WCDMA), accept on PhoneC.
1808        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1809        4. End call on PhoneC, verify call continues.
1810        5. End call on PhoneB, verify call end on PhoneA.
1811
1812        Returns:
1813            True if pass; False if fail.
1814        """
1815        ads = self.android_devices
1816        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1817                                        ads=ads,
1818                                        num_swaps=0,
1819                                        phone_setup_a=phone_setup_volte,
1820                                        phone_setup_b=phone_setup_voice_3g,
1821                                        phone_setup_c=phone_setup_voice_3g,
1822                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1823                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1824                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1825        if call_ab_id is None or call_ac_id is None:
1826            return False
1827
1828        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1829            call_ab_id, call_ac_id)
1830
1831
1832    @TelephonyBaseTest.tel_test_wrap
1833    @test_tracker_info(uuid="cd48de00-c1e5-4716-b232-3f1f98e89510")
1834    def test_volte_mo_mo_add_wcdma_merge_drop_second_call_from_host_cep(self):
1835        """ Test VoLTE Conference Call among three phones. CEP enabled.
1836
1837        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1838        2. Call from PhoneA (VoLTE) to PhoneC (WCDMA), accept on PhoneC.
1839        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1840        4. On PhoneA disconnect call between A-C, verify call continues.
1841        5. On PhoneA disconnect call between A-B, verify call continues.
1842
1843        Returns:
1844            True if pass; False if fail.
1845        """
1846        ads = self.android_devices
1847        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1848                                        ads=ads,
1849                                        num_swaps=0,
1850                                        phone_setup_a=phone_setup_volte,
1851                                        phone_setup_b=phone_setup_voice_3g,
1852                                        phone_setup_c=phone_setup_voice_3g,
1853                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1854                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1855                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1856        if call_ab_id is None or call_ac_id is None:
1857            return False
1858
1859        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
1860            call_ab_id, call_ac_id)
1861
1862
1863    @TelephonyBaseTest.tel_test_wrap
1864    @test_tracker_info(uuid="a84ea6e8-dabc-4bab-b6d1-700b0a0fb9e9")
1865    def test_volte_mo_mo_add_wcdma_merge_drop_first_call_from_participant_cep(
1866            self):
1867        """ Test VoLTE Conference Call among three phones. CEP enabled.
1868
1869        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1870        2. Call from PhoneA (VoLTE) to PhoneC (WCDMA), accept on PhoneC.
1871        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1872        4. End call on PhoneB, verify call continues.
1873        5. End call on PhoneC, verify call end on PhoneA.
1874
1875        Returns:
1876            True if pass; False if fail.
1877        """
1878        ads = self.android_devices
1879        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1880                                        ads=ads,
1881                                        num_swaps=0,
1882                                        phone_setup_a=phone_setup_volte,
1883                                        phone_setup_b=phone_setup_voice_3g,
1884                                        phone_setup_c=phone_setup_voice_3g,
1885                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1886                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1887                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1888        if call_ab_id is None or call_ac_id is None:
1889            return False
1890
1891        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
1892            call_ab_id, call_ac_id)
1893
1894
1895    @TelephonyBaseTest.tel_test_wrap
1896    @test_tracker_info(uuid="7ac9a806-c608-42dd-a4fd-66b0ba535434")
1897    def test_volte_mo_mo_add_wcdma_merge_drop_first_call_from_host_cep(self):
1898        """ Test VoLTE Conference Call among three phones. CEP enabled.
1899
1900        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1901        2. Call from PhoneA (VoLTE) to PhoneC (WCDMA), accept on PhoneC.
1902        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1903        4. On PhoneA disconnect call between A-B, verify call continues.
1904        5. On PhoneA disconnect call between A-C, verify call continues.
1905
1906        Returns:
1907            True if pass; False if fail.
1908        """
1909        ads = self.android_devices
1910        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
1911                                        ads=ads,
1912                                        num_swaps=0,
1913                                        phone_setup_a=phone_setup_volte,
1914                                        phone_setup_b=phone_setup_voice_3g,
1915                                        phone_setup_c=phone_setup_voice_3g,
1916                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1917                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1918                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1919        if call_ab_id is None or call_ac_id is None:
1920            return False
1921
1922        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
1923            call_ab_id, call_ac_id)
1924
1925
1926    @TelephonyBaseTest.tel_test_wrap
1927    @test_tracker_info(uuid="35f9eb31-3a77-457c-aeb0-55a73c60dda1")
1928    def test_volte_mo_mt_add_wcdma_merge_drop_second_call_from_participant_no_cep(
1929            self):
1930        """ Test VoLTE Conference Call among three phones. No CEP.
1931
1932        Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1933        Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
1934        On PhoneA, merge to conference call (No CEP).
1935        End call on PhoneC, verify call continues.
1936        End call on PhoneB, verify call end on PhoneA.
1937
1938        Returns:
1939            True if pass; False if fail.
1940        """
1941        ads = self.android_devices
1942        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1943                                        ads=ads,
1944                                        num_swaps=0,
1945                                        phone_setup_a=phone_setup_volte,
1946                                        phone_setup_b=phone_setup_voice_3g,
1947                                        phone_setup_c=phone_setup_voice_3g,
1948                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1949                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1950                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1951        if call_ab_id is None or call_ac_id is None:
1952            return False
1953
1954        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1955            call_ab_id, call_ac_id)
1956
1957
1958    @TelephonyBaseTest.tel_test_wrap
1959    @test_tracker_info(uuid="f3314f74-e929-45ed-91cb-27c1c26e240f")
1960    def test_volte_mo_mt_add_wcdma_merge_drop_second_call_from_participant_cep(
1961            self):
1962        """ Test VoLTE Conference Call among three phones. CEP enabled.
1963
1964        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1965        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
1966        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1967        4. End call on PhoneC, verify call continues.
1968        5. End call on PhoneB, verify call end on PhoneA.
1969
1970        Returns:
1971            True if pass; False if fail.
1972        """
1973        ads = self.android_devices
1974        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
1975                                        ads=ads,
1976                                        num_swaps=0,
1977                                        phone_setup_a=phone_setup_volte,
1978                                        phone_setup_b=phone_setup_voice_3g,
1979                                        phone_setup_c=phone_setup_voice_3g,
1980                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
1981                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
1982                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
1983        if call_ab_id is None or call_ac_id is None:
1984            return False
1985
1986        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
1987            call_ab_id, call_ac_id)
1988
1989
1990    @TelephonyBaseTest.tel_test_wrap
1991    @test_tracker_info(uuid="5e521ff1-505b-4d63-8b12-7b0187dea94b")
1992    def test_volte_mo_mt_add_wcdma_merge_drop_second_call_from_host_cep(self):
1993        """ Test VoLTE Conference Call among three phones. CEP enabled.
1994
1995        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
1996        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
1997        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
1998        4. On PhoneA disconnect call between A-C, verify call continues.
1999        5. On PhoneA disconnect call between A-B, verify call continues.
2000
2001        Returns:
2002            True if pass; False if fail.
2003        """
2004        ads = self.android_devices
2005        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2006                                        ads=ads,
2007                                        num_swaps=0,
2008                                        phone_setup_a=phone_setup_volte,
2009                                        phone_setup_b=phone_setup_voice_3g,
2010                                        phone_setup_c=phone_setup_voice_3g,
2011                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2012                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2013                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2014        if call_ab_id is None or call_ac_id is None:
2015            return False
2016
2017        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
2018            call_ab_id, call_ac_id)
2019
2020
2021    @TelephonyBaseTest.tel_test_wrap
2022    @test_tracker_info(uuid="d5732ea2-a657-40ea-bb30-151e53cf8058")
2023    def test_volte_mo_mt_add_wcdma_merge_drop_first_call_from_participant_cep(
2024            self):
2025        """ Test VoLTE Conference Call among three phones. CEP enabled.
2026
2027        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
2028        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2029        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2030        4. End call on PhoneB, verify call continues.
2031        5. End call on PhoneC, verify call end on PhoneA.
2032
2033        Returns:
2034            True if pass; False if fail.
2035        """
2036        ads = self.android_devices
2037        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2038                                        ads=ads,
2039                                        num_swaps=0,
2040                                        phone_setup_a=phone_setup_volte,
2041                                        phone_setup_b=phone_setup_voice_3g,
2042                                        phone_setup_c=phone_setup_voice_3g,
2043                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2044                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2045                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2046        if call_ab_id is None or call_ac_id is None:
2047            return False
2048
2049        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
2050            call_ab_id, call_ac_id)
2051
2052
2053    @TelephonyBaseTest.tel_test_wrap
2054    @test_tracker_info(uuid="78e73444-3dde-465f-bf5e-dc48b40a93f3")
2055    def test_volte_mo_mt_add_wcdma_merge_drop_first_call_from_host_cep(self):
2056        """ Test VoLTE Conference Call among three phones. CEP enabled.
2057
2058        1. Call from PhoneA (VoLTE) to PhoneB (WCDMA), accept on PhoneB.
2059        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2060        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2061        4. On PhoneA disconnect call between A-B, verify call continues.
2062        5. On PhoneA disconnect call between A-C, verify call continues.
2063
2064        Returns:
2065            True if pass; False if fail.
2066        """
2067        ads = self.android_devices
2068        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2069                                        ads=ads,
2070                                        num_swaps=0,
2071                                        phone_setup_a=phone_setup_volte,
2072                                        phone_setup_b=phone_setup_voice_3g,
2073                                        phone_setup_c=phone_setup_voice_3g,
2074                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2075                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2076                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2077        if call_ab_id is None or call_ac_id is None:
2078            return False
2079
2080        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
2081            call_ab_id, call_ac_id)
2082
2083
2084    @TelephonyBaseTest.tel_test_wrap
2085    @test_tracker_info(uuid="f4efbf04-b117-4508-ba86-0ef37481cc3a")
2086    def test_volte_mt_mt_add_wcdma_merge_drop_second_call_from_participant_no_cep(
2087            self):
2088        """ Test VoLTE Conference Call among three phones. No CEP.
2089
2090        Call from PhoneB (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2091        Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2092        On PhoneA, merge to conference call (No CEP).
2093        End call on PhoneC, verify call continues.
2094        End call on PhoneB, verify call end on PhoneA.
2095
2096        Returns:
2097            True if pass; False if fail.
2098        """
2099        ads = self.android_devices
2100        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2101                                        ads=ads,
2102                                        num_swaps=0,
2103                                        phone_setup_a=phone_setup_volte,
2104                                        phone_setup_b=phone_setup_voice_3g,
2105                                        phone_setup_c=phone_setup_voice_3g,
2106                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2107                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2108                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2109        if call_ab_id is None or call_ac_id is None:
2110            return False
2111
2112        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2113            call_ab_id, call_ac_id)
2114
2115
2116    @TelephonyBaseTest.tel_test_wrap
2117    @test_tracker_info(uuid="064109cf-d166-448a-8655-81744ea37e05")
2118    def test_volte_mt_mt_add_wcdma_merge_drop_second_call_from_participant_cep(
2119            self):
2120        """ Test VoLTE Conference Call among three phones. CEP enabled.
2121
2122        1. Call from PhoneB (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2123        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2124        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2125        4. End call on PhoneC, verify call continues.
2126        5. End call on PhoneB, verify call end on PhoneA.
2127
2128        Returns:
2129            True if pass; False if fail.
2130        """
2131        ads = self.android_devices
2132        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2133                                        ads=ads,
2134                                        num_swaps=0,
2135                                        phone_setup_a=phone_setup_volte,
2136                                        phone_setup_b=phone_setup_voice_3g,
2137                                        phone_setup_c=phone_setup_voice_3g,
2138                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2139                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2140                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2141        if call_ab_id is None or call_ac_id is None:
2142            return False
2143
2144        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2145            call_ab_id, call_ac_id)
2146
2147
2148    @TelephonyBaseTest.tel_test_wrap
2149    @test_tracker_info(uuid="bedd0576-5bb6-4fef-9700-f638cf742201")
2150    def test_volte_mt_mt_add_wcdma_merge_drop_second_call_from_host_cep(self):
2151        """ Test VoLTE Conference Call among three phones. CEP enabled.
2152
2153        1. Call from PhoneB (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2154        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2155        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2156        4. On PhoneA disconnect call between A-C, verify call continues.
2157        5. On PhoneA disconnect call between A-B, verify call continues.
2158
2159        Returns:
2160            True if pass; False if fail.
2161        """
2162        ads = self.android_devices
2163        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2164                                        ads=ads,
2165                                        num_swaps=0,
2166                                        phone_setup_a=phone_setup_volte,
2167                                        phone_setup_b=phone_setup_voice_3g,
2168                                        phone_setup_c=phone_setup_voice_3g,
2169                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2170                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2171                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2172        if call_ab_id is None or call_ac_id is None:
2173            return False
2174
2175        return _test_ims_conference_merge_drop_second_call_from_host(self.log, self.android_devices,
2176            call_ab_id, call_ac_id)
2177
2178
2179    @TelephonyBaseTest.tel_test_wrap
2180    @test_tracker_info(uuid="46178387-a0dc-4e77-8ca4-06f731e1104f")
2181    def test_volte_mt_mt_add_wcdma_merge_drop_first_call_from_participant_cep(
2182            self):
2183        """ Test VoLTE Conference Call among three phones. CEP enabled.
2184
2185        1. Call from PhoneB (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2186        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2187        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2188        4. End call on PhoneB, verify call continues.
2189        5. End call on PhoneC, verify call end on PhoneA.
2190
2191        Returns:
2192            True if pass; False if fail.
2193        """
2194        ads = self.android_devices
2195        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2196                                        ads=ads,
2197                                        num_swaps=0,
2198                                        phone_setup_a=phone_setup_volte,
2199                                        phone_setup_b=phone_setup_voice_3g,
2200                                        phone_setup_c=phone_setup_voice_3g,
2201                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2202                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2203                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2204        if call_ab_id is None or call_ac_id is None:
2205            return False
2206
2207        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
2208            call_ab_id, call_ac_id)
2209
2210
2211    @TelephonyBaseTest.tel_test_wrap
2212    @test_tracker_info(uuid="a1d13168-078b-47d8-89f0-0798b085502d")
2213    def test_volte_mt_mt_add_wcdma_merge_drop_first_call_from_host_cep(self):
2214        """ Test VoLTE Conference Call among three phones. CEP enabled.
2215
2216        1. Call from PhoneB (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2217        2. Call from PhoneC (WCDMA) to PhoneA (VoLTE), accept on PhoneA.
2218        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2219        4. On PhoneA disconnect call between A-B, verify call continues.
2220        5. On PhoneA disconnect call between A-C, verify call continues.
2221
2222        Returns:
2223            True if pass; False if fail.
2224        """
2225        ads = self.android_devices
2226        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2227                                        ads=ads,
2228                                        num_swaps=0,
2229                                        phone_setup_a=phone_setup_volte,
2230                                        phone_setup_b=phone_setup_voice_3g,
2231                                        phone_setup_c=phone_setup_voice_3g,
2232                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2233                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
2234                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
2235        if call_ab_id is None or call_ac_id is None:
2236            return False
2237
2238        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
2239            call_ab_id, call_ac_id)
2240
2241
2242    @TelephonyBaseTest.tel_test_wrap
2243    @test_tracker_info(uuid="08a26dc4-78e5-47cb-af75-9695453e82bb")
2244    def test_volte_mo_mo_add_1x_merge_drop_second_call_from_participant_no_cep(
2245            self):
2246        """ Test VoLTE Conference Call among three phones. No CEP.
2247
2248        Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2249        Call from PhoneA (VOLTE) to PhoneC (1x), accept on PhoneC.
2250        On PhoneA, merge to conference call (No CEP).
2251        End call on PhoneC, verify call continues.
2252        End call on PhoneB, verify call end on PhoneA.
2253
2254        Returns:
2255            True if pass; False if fail.
2256        """
2257        ads = self.android_devices
2258        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2259                                        ads=ads,
2260                                        num_swaps=0,
2261                                        phone_setup_a=phone_setup_volte,
2262                                        phone_setup_b=phone_setup_voice_3g,
2263                                        phone_setup_c=phone_setup_voice_3g,
2264                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2265                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2266                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2267        if call_ab_id is None or call_ac_id is None:
2268            return False
2269
2270        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2271            call_ab_id, call_ac_id)
2272
2273
2274    @TelephonyBaseTest.tel_test_wrap
2275    @test_tracker_info(uuid="bde45028-b844-4192-89b1-8579941a03ed")
2276    def test_volte_mo_mo_add_1x_merge_drop_second_call_from_participant_cep(
2277            self):
2278        """ Test VoLTE Conference Call among three phones. CEP enabled.
2279
2280        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2281        2. Call from PhoneA (VoLTE) to PhoneC (1x), accept on PhoneC.
2282        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2283        4. End call on PhoneC, verify call continues.
2284        5. End call on PhoneB, verify call end on PhoneA.
2285
2286        Returns:
2287            True if pass; False if fail.
2288        """
2289        ads = self.android_devices
2290        call_ab_id, call_ac_id =  _test_call_mo_mo_add_swap_x(log=self.log,
2291                                        ads=ads,
2292                                        num_swaps=0,
2293                                        phone_setup_a=phone_setup_volte,
2294                                        phone_setup_b=phone_setup_voice_3g,
2295                                        phone_setup_c=phone_setup_voice_3g,
2296                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2297                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2298                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2299        if call_ab_id is None or call_ac_id is None:
2300            return False
2301
2302        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2303            call_ab_id, call_ac_id)
2304
2305
2306    @TelephonyBaseTest.tel_test_wrap
2307    @test_tracker_info(uuid="f38d3031-d7f1-4990-bce3-9c329beb5eeb")
2308    def test_volte_mo_mo_add_1x_merge_drop_second_call_from_host_cep(self):
2309        """ Test VoLTE Conference Call among three phones. CEP enabled.
2310
2311        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2312        2. Call from PhoneA (VoLTE) to PhoneC (1x), accept on PhoneC.
2313        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2314        4. On PhoneA disconnect call between A-C, verify call continues.
2315        5. On PhoneA disconnect call between A-B, verify call continues.
2316
2317        Returns:
2318            True if pass; False if fail.
2319        """
2320        ads = self.android_devices
2321        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2322                                        ads=ads,
2323                                        num_swaps=0,
2324                                        phone_setup_a=phone_setup_volte,
2325                                        phone_setup_b=phone_setup_voice_3g,
2326                                        phone_setup_c=phone_setup_voice_3g,
2327                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2328                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2329                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2330        if call_ab_id is None or call_ac_id is None:
2331            return False
2332
2333        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
2334            call_ab_id, call_ac_id)
2335
2336
2337    @TelephonyBaseTest.tel_test_wrap
2338    @test_tracker_info(uuid="d1391513-8592-4159-81b7-16cb10c406e8")
2339    def test_volte_mo_mo_add_1x_merge_drop_first_call_from_participant_cep(
2340            self):
2341        """ Test VoLTE Conference Call among three phones. CEP enabled.
2342
2343        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2344        2. Call from PhoneA (VoLTE) to PhoneC (1x), accept on PhoneC.
2345        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2346        4. End call on PhoneB, verify call continues.
2347        5. End call on PhoneC, verify call end on PhoneA.
2348
2349        Returns:
2350            True if pass; False if fail.
2351        """
2352        ads = self.android_devices
2353        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2354                                        ads=ads,
2355                                        num_swaps=0,
2356                                        phone_setup_a=phone_setup_volte,
2357                                        phone_setup_b=phone_setup_voice_3g,
2358                                        phone_setup_c=phone_setup_voice_3g,
2359                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2360                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2361                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2362        if call_ab_id is None or call_ac_id is None:
2363            return False
2364
2365        return self._test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
2366            call_ab_id, call_ac_id)
2367
2368
2369    @TelephonyBaseTest.tel_test_wrap
2370    @test_tracker_info(uuid="e05c261e-e99a-4ca7-a8db-9ad982e06913")
2371    def test_volte_mo_mo_add_1x_merge_drop_first_call_from_host_cep(self):
2372        """ Test VoLTE Conference Call among three phones. CEP enabled.
2373
2374        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2375        2. Call from PhoneA (VoLTE) to PhoneC (1x), accept on PhoneC.
2376        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2377        4. On PhoneA disconnect call between A-B, verify call continues.
2378        5. On PhoneA disconnect call between A-C, verify call continues.
2379
2380        Returns:
2381            True if pass; False if fail.
2382        """
2383        ads = self.android_devices
2384        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2385                                        ads=ads,
2386                                        num_swaps=0,
2387                                        phone_setup_a=phone_setup_volte,
2388                                        phone_setup_b=phone_setup_voice_3g,
2389                                        phone_setup_c=phone_setup_voice_3g,
2390                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2391                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2392                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2393        if call_ab_id is None or call_ac_id is None:
2394            return False
2395
2396        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
2397            call_ab_id, call_ac_id)
2398
2399
2400    @TelephonyBaseTest.tel_test_wrap
2401    @test_tracker_info(uuid="f4329201-a388-4070-9225-37d4c8045096")
2402    def test_volte_mo_mt_add_1x_merge_drop_second_call_from_participant_no_cep(
2403            self):
2404        """ Test VoLTE Conference Call among three phones. No CEP.
2405
2406        Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2407        Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2408        On PhoneA, merge to conference call (No CEP).
2409        End call on PhoneC, verify call continues.
2410        End call on PhoneB, verify call end on PhoneA.
2411
2412        Returns:
2413            True if pass; False if fail.
2414        """
2415        ads = self.android_devices
2416        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2417                                        ads=ads,
2418                                        num_swaps=0,
2419                                        phone_setup_a=phone_setup_volte,
2420                                        phone_setup_b=phone_setup_voice_3g,
2421                                        phone_setup_c=phone_setup_voice_3g,
2422                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2423                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2424                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2425        if call_ab_id is None or call_ac_id is None:
2426            return False
2427
2428        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2429            call_ab_id, call_ac_id)
2430
2431
2432    @TelephonyBaseTest.tel_test_wrap
2433    @test_tracker_info(uuid="fafa96ef-649a-4ff7-8fed-d4bfd6d88c2e")
2434    def test_volte_mo_mt_add_1x_merge_drop_second_call_from_participant_cep(
2435            self):
2436        """ Test VoLTE Conference Call among three phones. CEP enabled.
2437
2438        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2439        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2440        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2441        4. End call on PhoneC, verify call continues.
2442        5. End call on PhoneB, verify call end on PhoneA.
2443
2444        Returns:
2445            True if pass; False if fail.
2446        """
2447        ads = self.android_devices
2448        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2449                                        ads=ads,
2450                                        num_swaps=0,
2451                                        phone_setup_a=phone_setup_volte,
2452                                        phone_setup_b=phone_setup_voice_3g,
2453                                        phone_setup_c=phone_setup_voice_3g,
2454                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2455                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2456                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2457        if call_ab_id is None or call_ac_id is None:
2458            return False
2459
2460        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2461            call_ab_id, call_ac_id)
2462
2463
2464    @TelephonyBaseTest.tel_test_wrap
2465    @test_tracker_info(uuid="66d79e0b-879d-461c-bf5d-b27495f73754")
2466    def test_volte_mo_mt_add_1x_merge_drop_second_call_from_host_cep(self):
2467        """ Test VoLTE Conference Call among three phones. CEP enabled.
2468
2469        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2470        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2471        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2472        4. On PhoneA disconnect call between A-C, verify call continues.
2473        5. On PhoneA disconnect call between A-B, verify call continues.
2474
2475        Returns:
2476            True if pass; False if fail.
2477        """
2478        ads = self.android_devices
2479        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2480                                        ads=ads,
2481                                        num_swaps=0,
2482                                        phone_setup_a=phone_setup_volte,
2483                                        phone_setup_b=phone_setup_voice_3g,
2484                                        phone_setup_c=phone_setup_voice_3g,
2485                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2486                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2487                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2488        if call_ab_id is None or call_ac_id is None:
2489            return False
2490
2491        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
2492            call_ab_id, call_ac_id)
2493
2494
2495    @TelephonyBaseTest.tel_test_wrap
2496    @test_tracker_info(uuid="a5f2a3d0-9b00-4496-8316-ea626b1c978a")
2497    def test_volte_mo_mt_add_1x_merge_drop_first_call_from_participant_cep(
2498            self):
2499        """ Test VoLTE Conference Call among three phones. CEP enabled.
2500
2501        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2502        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2503        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2504        4. End call on PhoneB, verify call continues.
2505        5. End call on PhoneC, verify call end on PhoneA.
2506
2507        Returns:
2508            True if pass; False if fail.
2509        """
2510        ads = self.android_devices
2511        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2512                                        ads=ads,
2513                                        num_swaps=0,
2514                                        phone_setup_a=phone_setup_volte,
2515                                        phone_setup_b=phone_setup_voice_3g,
2516                                        phone_setup_c=phone_setup_voice_3g,
2517                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2518                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2519                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2520        if call_ab_id is None or call_ac_id is None:
2521            return False
2522
2523        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
2524            call_ab_id, call_ac_id)
2525
2526
2527    @TelephonyBaseTest.tel_test_wrap
2528    @test_tracker_info(uuid="98cfd8d8-200f-4820-94ed-1561df1ed152")
2529    def test_volte_mo_mt_add_1x_merge_drop_first_call_from_host_cep(self):
2530        """ Test VoLTE Conference Call among three phones. CEP enabled.
2531
2532        1. Call from PhoneA (VoLTE) to PhoneB (1x), accept on PhoneB.
2533        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2534        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2535        4. On PhoneA disconnect call between A-B, verify call continues.
2536        5. On PhoneA disconnect call between A-C, verify call continues.
2537
2538        Returns:
2539            True if pass; False if fail.
2540        """
2541        ads = self.android_devices
2542        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2543                                        ads=ads,
2544                                        num_swaps=0,
2545                                        phone_setup_a=phone_setup_volte,
2546                                        phone_setup_b=phone_setup_voice_3g,
2547                                        phone_setup_c=phone_setup_voice_3g,
2548                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2549                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2550                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2551        if call_ab_id is None or call_ac_id is None:
2552            return False
2553
2554        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
2555            call_ab_id, call_ac_id)
2556
2557
2558    @TelephonyBaseTest.tel_test_wrap
2559    @test_tracker_info(uuid="c9ee6bb1-4aee-4fc9-95b0-f899d3d31d82")
2560    def test_volte_mt_mt_add_1x_merge_drop_second_call_from_participant_no_cep(
2561            self):
2562        """ Test VoLTE Conference Call among three phones. No CEP.
2563
2564        Call from PhoneB (1x) to PhoneA (VoLTE), accept on PhoneA.
2565        Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2566        On PhoneA, merge to conference call (No CEP).
2567        End call on PhoneC, verify call continues.
2568        End call on PhoneB, verify call end on PhoneA.
2569
2570        Returns:
2571            True if pass; False if fail.
2572        """
2573        ads = self.android_devices
2574        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2575                                        ads=ads,
2576                                        num_swaps=0,
2577                                        phone_setup_a=phone_setup_volte,
2578                                        phone_setup_b=phone_setup_voice_3g,
2579                                        phone_setup_c=phone_setup_voice_3g,
2580                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2581                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2582                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2583        if call_ab_id is None or call_ac_id is None:
2584            return False
2585
2586        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2587            call_ab_id, call_ac_id)
2588
2589
2590    @TelephonyBaseTest.tel_test_wrap
2591    @test_tracker_info(uuid="f4fb92a1-d4a0-4796-bdb4-f441b926c63c")
2592    def test_volte_mt_mt_add_1x_merge_drop_second_call_from_participant_cep(
2593            self):
2594        """ Test VoLTE Conference Call among three phones. CEP enabled.
2595
2596        1. Call from PhoneB (1x) to PhoneA (VoLTE), accept on PhoneA.
2597        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2598        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2599        4. End call on PhoneC, verify call continues.
2600        5. End call on PhoneB, verify call end on PhoneA.
2601
2602        Returns:
2603            True if pass; False if fail.
2604        """
2605        ads = self.android_devices
2606        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2607                                        ads=ads,
2608                                        num_swaps=0,
2609                                        phone_setup_a=phone_setup_volte,
2610                                        phone_setup_b=phone_setup_voice_3g,
2611                                        phone_setup_c=phone_setup_voice_3g,
2612                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2613                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2614                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2615        if call_ab_id is None or call_ac_id is None:
2616            return False
2617
2618        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
2619            call_ab_id, call_ac_id)
2620
2621
2622    @TelephonyBaseTest.tel_test_wrap
2623    @test_tracker_info(uuid="8ad0e672-83cc-463a-aa12-d331faa5eb17")
2624    def test_volte_mt_mt_add_1x_merge_drop_second_call_from_host_cep(self):
2625        """ Test VoLTE Conference Call among three phones. CEP enabled.
2626
2627        1. Call from PhoneB (1x) to PhoneA (VoLTE), accept on PhoneA.
2628        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2629        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2630        4. On PhoneA disconnect call between A-C, verify call continues.
2631        5. On PhoneA disconnect call between A-B, verify call continues.
2632
2633        Returns:
2634            True if pass; False if fail.
2635        """
2636        ads = self.android_devices
2637        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2638                                        ads=ads,
2639                                        num_swaps=0,
2640                                        phone_setup_a=phone_setup_volte,
2641                                        phone_setup_b=phone_setup_voice_3g,
2642                                        phone_setup_c=phone_setup_voice_3g,
2643                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2644                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2645                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2646        if call_ab_id is None or call_ac_id is None:
2647            return False
2648
2649        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
2650            call_ab_id, call_ac_id)
2651
2652
2653    @TelephonyBaseTest.tel_test_wrap
2654    @test_tracker_info(uuid="3dad2fd1-d2c0-477c-a758-3c054df6e92a")
2655    def test_volte_mt_mt_add_1x_merge_drop_first_call_from_participant_cep(
2656            self):
2657        """ Test VoLTE Conference Call among three phones. CEP enabled.
2658
2659        1. Call from PhoneB (1x) to PhoneA (VoLTE), accept on PhoneA.
2660        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2661        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2662        4. End call on PhoneB, verify call continues.
2663        5. End call on PhoneC, verify call end on PhoneA.
2664
2665        Returns:
2666            True if pass; False if fail.
2667        """
2668        ads = self.android_devices
2669        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2670                                        ads=ads,
2671                                        num_swaps=0,
2672                                        phone_setup_a=phone_setup_volte,
2673                                        phone_setup_b=phone_setup_voice_3g,
2674                                        phone_setup_c=phone_setup_voice_3g,
2675                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2676                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2677                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2678        if call_ab_id is None or call_ac_id is None:
2679            return False
2680
2681        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
2682            call_ab_id, call_ac_id)
2683
2684
2685    @TelephonyBaseTest.tel_test_wrap
2686    @test_tracker_info(uuid="e382469b-8767-47fd-b3e6-8c81d8fb45ef")
2687    def test_volte_mt_mt_add_1x_merge_drop_first_call_from_host_cep(self):
2688        """ Test VoLTE Conference Call among three phones. CEP enabled.
2689
2690        1. Call from PhoneB (1x) to PhoneA (VoLTE), accept on PhoneA.
2691        2. Call from PhoneC (1x) to PhoneA (VoLTE), accept on PhoneA.
2692        3. On PhoneA, merge to conference call (VoLTE CEP conference call).
2693        4. On PhoneA disconnect call between A-B, verify call continues.
2694        5. On PhoneA disconnect call between A-C, verify call continues.
2695
2696        Returns:
2697            True if pass; False if fail.
2698        """
2699        ads = self.android_devices
2700        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
2701                                        ads=ads,
2702                                        num_swaps=0,
2703                                        phone_setup_a=phone_setup_volte,
2704                                        phone_setup_b=phone_setup_voice_3g,
2705                                        phone_setup_c=phone_setup_voice_3g,
2706                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2707                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
2708                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
2709        if call_ab_id is None or call_ac_id is None:
2710            return False
2711
2712        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
2713            call_ab_id, call_ac_id)
2714
2715
2716    @TelephonyBaseTest.tel_test_wrap
2717    @test_tracker_info(uuid="98db2430-07c2-4ec7-8644-2aa081a3eb22")
2718    def test_volte_mo_mo_add_volte_swap_twice_drop_held(self):
2719        """Test swap feature in VoLTE call.
2720
2721        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2722        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
2723        Swap active call on PhoneA.
2724        Swap active call on PhoneA.
2725        Hangup call from PhoneB, check if call continues between AC.
2726
2727        """
2728        ads = self.android_devices
2729
2730        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2731                                        ads=ads,
2732                                        num_swaps=2,
2733                                        phone_setup_a=phone_setup_volte,
2734                                        phone_setup_b=phone_setup_volte,
2735                                        phone_setup_c=phone_setup_volte,
2736                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2737                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2738                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2739        if call_ab_id is None or call_ac_id is None:
2740            return False
2741
2742        return _three_phone_hangup_call_verify_call_state(log=self.log,
2743            ad_hangup=ads[1],
2744            ad_verify=ads[0],
2745            call_id=call_ac_id,
2746            call_state=CALL_STATE_ACTIVE,
2747            ads_active=[ads[0], ads[2]])
2748
2749
2750    @TelephonyBaseTest.tel_test_wrap
2751    @test_tracker_info(uuid="7504958b-172b-4afc-97ea-9562b8429dfe")
2752    def test_volte_mo_mo_add_volte_swap_twice_drop_active(self):
2753        """Test swap feature in VoLTE call.
2754
2755        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2756        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
2757        Swap active call on PhoneA.
2758        Swap active call on PhoneA.
2759        Hangup call from PhoneC, check if call continues between AB.
2760
2761        """
2762        ads = self.android_devices
2763
2764        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2765                                        ads=ads,
2766                                        num_swaps=2,
2767                                        phone_setup_a=phone_setup_volte,
2768                                        phone_setup_b=phone_setup_volte,
2769                                        phone_setup_c=phone_setup_volte,
2770                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2771                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2772                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2773        if call_ab_id is None or call_ac_id is None:
2774            return False
2775
2776        return _three_phone_hangup_call_verify_call_state(log=self.log,
2777            ad_hangup=ads[2],
2778            ad_verify=ads[0],
2779            call_id=call_ab_id,
2780            call_state=_get_expected_call_state(ads[0]),
2781            ads_active=[ads[0], ads[1]])
2782
2783
2784    @TelephonyBaseTest.tel_test_wrap
2785    @test_tracker_info(uuid="ac02ce22-fd8c-48ba-9e68-6748d1e48c68")
2786    def test_volte_mo_mt_add_volte_swap_twice_drop_held(self):
2787        """Test swap feature in VoLTE call.
2788
2789        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2790        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
2791        Swap active call on PhoneA.
2792        Swap active call on PhoneA.
2793        Hangup call from PhoneB, check if call continues between AC.
2794
2795        """
2796        ads = self.android_devices
2797
2798        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2799                                        ads=ads,
2800                                        num_swaps=2,
2801                                        phone_setup_a=phone_setup_volte,
2802                                        phone_setup_b=phone_setup_volte,
2803                                        phone_setup_c=phone_setup_volte,
2804                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2805                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2806                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2807        if call_ab_id is None or call_ac_id is None:
2808            return False
2809
2810        return _three_phone_hangup_call_verify_call_state(log=self.log,
2811            ad_hangup=ads[1],
2812            ad_verify=ads[0],
2813            call_id=call_ac_id,
2814            call_state=CALL_STATE_ACTIVE,
2815            ads_active=[ads[0], ads[2]])
2816
2817
2818    @TelephonyBaseTest.tel_test_wrap
2819    @test_tracker_info(uuid="2fb2c4f6-1c14-4122-bc3e-a7a6416003a3")
2820    def test_volte_mo_mt_add_volte_swap_twice_drop_active(self):
2821        """Test swap feature in VoLTE call.
2822
2823        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2824        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
2825        Swap active call on PhoneA.
2826        Swap active call on PhoneA.
2827        Hangup call from PhoneC, check if call continues between AB.
2828
2829        """
2830        ads = self.android_devices
2831
2832        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2833                                        ads=ads,
2834                                        num_swaps=2,
2835                                        phone_setup_a=phone_setup_volte,
2836                                        phone_setup_b=phone_setup_volte,
2837                                        phone_setup_c=phone_setup_volte,
2838                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2839                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2840                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2841        if call_ab_id is None or call_ac_id is None:
2842            return False
2843
2844        return _three_phone_hangup_call_verify_call_state(log=self.log,
2845            ad_hangup=ads[2],
2846            ad_verify=ads[0],
2847            call_id=call_ab_id,
2848            call_state=_get_expected_call_state(ads[0]),
2849            ads_active=[ads[0], ads[1]])
2850
2851
2852    @TelephonyBaseTest.tel_test_wrap
2853    @test_tracker_info(uuid="deed9c13-2e9d-464a-b8f7-62e91265451d")
2854    def test_volte_mo_mo_add_volte_swap_once_drop_held(self):
2855        """Test swap feature in VoLTE call.
2856
2857        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2858        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
2859        Swap active call on PhoneA.
2860        Hangup call from PhoneC, check if call continues between AB.
2861
2862        """
2863        ads = self.android_devices
2864
2865        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2866                                        ads=ads,
2867                                        num_swaps=1,
2868                                        phone_setup_a=phone_setup_volte,
2869                                        phone_setup_b=phone_setup_volte,
2870                                        phone_setup_c=phone_setup_volte,
2871                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2872                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2873                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2874        if call_ab_id is None or call_ac_id is None:
2875            return False
2876
2877        return _three_phone_hangup_call_verify_call_state(log=self.log,
2878            ad_hangup=ads[2],
2879            ad_verify=ads[0],
2880            call_id=call_ab_id,
2881            call_state=CALL_STATE_ACTIVE,
2882            ads_active=[ads[0], ads[1]])
2883
2884
2885    @TelephonyBaseTest.tel_test_wrap
2886    @test_tracker_info(uuid="3324a4d3-68db-41a4-b0d0-3e8e82b84f46")
2887    def test_volte_mo_mo_add_volte_swap_once_drop_active(self):
2888        """Test swap feature in VoLTE call.
2889
2890        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2891        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
2892        Swap active call on PhoneA.
2893        Swap active call on PhoneA.
2894        Hangup call from PhoneB, check if call continues between AC.
2895
2896        """
2897        ads = self.android_devices
2898
2899        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2900                                        ads=ads,
2901                                        num_swaps=1,
2902                                        phone_setup_a=phone_setup_volte,
2903                                        phone_setup_b=phone_setup_volte,
2904                                        phone_setup_c=phone_setup_volte,
2905                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2906                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2907                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2908        if call_ab_id is None or call_ac_id is None:
2909            return False
2910
2911        return _three_phone_hangup_call_verify_call_state(log=self.log,
2912            ad_hangup=ads[1],
2913            ad_verify=ads[0],
2914            call_id=call_ac_id,
2915            call_state=_get_expected_call_state(ads[0]),
2916            ads_active=[ads[0], ads[2]])
2917
2918
2919    @TelephonyBaseTest.tel_test_wrap
2920    @test_tracker_info(uuid="57c8c3f6-c690-41c3-aaed-98e5548cc4b6")
2921    def test_volte_mo_mt_add_volte_swap_once_drop_held(self):
2922        """Test swap feature in VoLTE call.
2923
2924        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2925        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
2926        Swap active call on PhoneA.
2927        Hangup call from PhoneC, check if call continues between AB.
2928
2929        """
2930        ads = self.android_devices
2931
2932        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2933                                        ads=ads,
2934                                        num_swaps=1,
2935                                        phone_setup_a=phone_setup_volte,
2936                                        phone_setup_b=phone_setup_volte,
2937                                        phone_setup_c=phone_setup_volte,
2938                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2939                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2940                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2941        if call_ab_id is None or call_ac_id is None:
2942            return False
2943        return _three_phone_hangup_call_verify_call_state(log=self.log,
2944            ad_hangup=ads[2],
2945            ad_verify=ads[0],
2946            call_id=call_ab_id,
2947            call_state=CALL_STATE_ACTIVE,
2948            ads_active=[ads[0], ads[1]])
2949
2950
2951    @TelephonyBaseTest.tel_test_wrap
2952    @test_tracker_info(uuid="96376148-f069-41f9-b22f-f5240de427f7")
2953    def test_volte_mo_mt_add_volte_swap_once_drop_active(self):
2954        """Test swap feature in VoLTE call.
2955
2956        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
2957        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
2958        Swap active call on PhoneA.
2959        Hangup call from PhoneB, check if call continues between AC.
2960
2961        """
2962        ads = self.android_devices
2963
2964        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
2965                                        ads=ads,
2966                                        num_swaps=1,
2967                                        phone_setup_a=phone_setup_volte,
2968                                        phone_setup_b=phone_setup_volte,
2969                                        phone_setup_c=phone_setup_volte,
2970                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
2971                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
2972                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
2973        if call_ab_id is None or call_ac_id is None:
2974            return False
2975
2976        return _three_phone_hangup_call_verify_call_state(log=self.log,
2977            ad_hangup=ads[1],
2978            ad_verify=ads[0],
2979            call_id=call_ac_id,
2980            call_state=_get_expected_call_state(ads[0]),
2981            ads_active=[ads[0], ads[2]])
2982
2983
2984    @TelephonyBaseTest.tel_test_wrap
2985    @test_tracker_info(uuid="baac4ef4-198b-4a33-a09a-5507c6aa740d")
2986    def test_wcdma_mo_mo_add_swap_twice_drop_held(self):
2987        """Test swap feature in WCDMA call.
2988
2989        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
2990        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
2991        Swap active call on PhoneA.
2992        Swap active call on PhoneA.
2993        Hangup call from PhoneB, check if call continues between AC.
2994
2995        """
2996        ads = self.android_devices
2997
2998        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
2999                                            ads=ads,
3000                                            num_swaps=2,
3001                                            phone_setup_a=phone_setup_voice_3g,
3002                                            phone_setup_b=phone_setup_voice_general,
3003                                            phone_setup_c=phone_setup_voice_general,
3004                                            verify_phone_a_network_subscription=is_phone_in_call_3g,
3005                                            verify_phone_b_network_subscription=None,
3006                                            verify_phone_c_network_subscription=None)
3007
3008        if call_ab_id is None or call_ac_id is None:
3009            return False
3010
3011        return _three_phone_hangup_call_verify_call_state(log=self.log,
3012            ad_hangup=ads[1],
3013            ad_verify=ads[0],
3014            call_id=call_ac_id,
3015            call_state=CALL_STATE_ACTIVE,
3016            ads_active=[ads[0], ads[2]])
3017
3018
3019    @TelephonyBaseTest.tel_test_wrap
3020    @test_tracker_info(uuid="8c2588ff-3857-49eb-8db0-9e76d7c99c68")
3021    def test_wcdma_mo_mo_add_swap_twice_drop_active(self):
3022        """Test swap feature in WCDMA call.
3023
3024        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3025        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
3026        Swap active call on PhoneA.
3027        Swap active call on PhoneA.
3028        Hangup call from PhoneC, check if call continues between AB.
3029
3030        """
3031        ads = self.android_devices
3032
3033        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3034                                            ads=ads,
3035                                            num_swaps=2,
3036                                            phone_setup_a=phone_setup_voice_3g,
3037                                            phone_setup_b=phone_setup_voice_general,
3038                                            phone_setup_c=phone_setup_voice_general,
3039                                            verify_phone_a_network_subscription=is_phone_in_call_3g,
3040                                            verify_phone_b_network_subscription=None,
3041                                            verify_phone_c_network_subscription=None)
3042        if call_ab_id is None or call_ac_id is None:
3043            return False
3044
3045        return _three_phone_hangup_call_verify_call_state(log=self.log,
3046            ad_hangup=ads[2],
3047            ad_verify=ads[0],
3048            call_id=call_ab_id,
3049            call_state=_get_expected_call_state(ads[0]),
3050            ads_active=[ads[0], ads[1]])
3051
3052
3053    @TelephonyBaseTest.tel_test_wrap
3054    @test_tracker_info(uuid="16a6aa3c-fe68-41b4-af42-75847062d4ec")
3055    def test_wcdma_mo_mt_add_swap_twice_drop_held(self):
3056        """Test swap feature in WCDMA call.
3057
3058        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3059        PhoneC call PhoneA (WCDMA), accept on PhoneA.
3060        Swap active call on PhoneA.
3061        Swap active call on PhoneA.
3062        Hangup call from PhoneB, check if call continues between AC.
3063
3064        """
3065        ads = self.android_devices
3066
3067        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3068                                        ads=ads,
3069                                        num_swaps=2,
3070                                        phone_setup_a=phone_setup_voice_3g,
3071                                        phone_setup_b=phone_setup_voice_general,
3072                                        phone_setup_c=phone_setup_voice_general,
3073                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
3074                                        verify_phone_b_network_subscription=None,
3075                                        verify_phone_c_network_subscription=None)
3076
3077        if call_ab_id is None or call_ac_id is None:
3078            return False
3079
3080        return _three_phone_hangup_call_verify_call_state(log=self.log,
3081            ad_hangup=ads[1],
3082            ad_verify=ads[0],
3083            call_id=call_ac_id,
3084            call_state=CALL_STATE_ACTIVE,
3085            ads_active=[ads[0], ads[2]])
3086
3087
3088    @TelephonyBaseTest.tel_test_wrap
3089    @test_tracker_info(uuid="f38c4cd5-53b4-43d0-a5fa-2a008a96cedc")
3090    def test_wcdma_mo_mt_add_swap_twice_drop_active(self):
3091        """Test swap feature in WCDMA call.
3092
3093        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3094        PhoneC call PhoneA (WCDMA), accept on PhoneA.
3095        Swap active call on PhoneA.
3096        Swap active call on PhoneA.
3097        Hangup call from PhoneC, check if call continues between AB.
3098
3099        """
3100        ads = self.android_devices
3101
3102        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3103                                        ads=ads,
3104                                        num_swaps=2,
3105                                        phone_setup_a=phone_setup_voice_3g,
3106                                        phone_setup_b=phone_setup_voice_general,
3107                                        phone_setup_c=phone_setup_voice_general,
3108                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
3109                                        verify_phone_b_network_subscription=None,
3110                                        verify_phone_c_network_subscription=None)
3111        if call_ab_id is None or call_ac_id is None:
3112            return False
3113
3114        return _three_phone_hangup_call_verify_call_state(log=self.log,
3115            ad_hangup=ads[2],
3116            ad_verify=ads[0],
3117            call_id=call_ab_id,
3118            call_state=_get_expected_call_state(ads[0]),
3119            ads_active=[ads[0], ads[1]])
3120
3121
3122    @TelephonyBaseTest.tel_test_wrap
3123    @test_tracker_info(uuid="734689e8-2acd-405f-be93-db62e2606252")
3124    def test_wcdma_mo_mo_add_swap_once_drop_held(self):
3125        """Test swap feature in WCDMA call.
3126
3127        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3128        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
3129        Swap active call on PhoneA.
3130        Hangup call from PhoneC, check if call continues between AB.
3131
3132        """
3133        ads = self.android_devices
3134
3135        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3136                                           ads=ads,
3137                                           num_swaps=1,
3138                                           phone_setup_a=phone_setup_voice_3g,
3139                                           phone_setup_b=phone_setup_voice_general,
3140                                           phone_setup_c=phone_setup_voice_general,
3141                                           verify_phone_a_network_subscription=is_phone_in_call_3g,
3142                                           verify_phone_b_network_subscription=None,
3143                                           verify_phone_c_network_subscription=None)
3144
3145        if call_ab_id is None or call_ac_id is None:
3146            return False
3147
3148        return _three_phone_hangup_call_verify_call_state(log=self.log,
3149            ad_hangup=ads[2],
3150            ad_verify=ads[0],
3151            call_id=call_ab_id,
3152            call_state=CALL_STATE_ACTIVE,
3153            ads_active=[ads[0], ads[1]])
3154
3155
3156    @TelephonyBaseTest.tel_test_wrap
3157    @test_tracker_info(uuid="126f294e-590a-4392-8fbd-1b826cd97214")
3158    def test_wcdma_mo_mo_add_swap_once_drop_active(self):
3159        """Test swap feature in WCDMA call.
3160
3161        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3162        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
3163        Swap active call on PhoneA.
3164        Hangup call from PhoneB, check if call continues between AC.
3165
3166        """
3167        ads = self.android_devices
3168
3169        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3170                                           ads=ads,
3171                                           num_swaps=1,
3172                                           phone_setup_a=phone_setup_voice_3g,
3173                                           phone_setup_b=phone_setup_voice_general,
3174                                           phone_setup_c=phone_setup_voice_general,
3175                                           verify_phone_a_network_subscription=is_phone_in_call_3g,
3176                                           verify_phone_b_network_subscription=None,
3177                                           verify_phone_c_network_subscription=None)
3178
3179        if call_ab_id is None or call_ac_id is None:
3180            return False
3181
3182        return _three_phone_hangup_call_verify_call_state(log=self.log,
3183            ad_hangup=ads[1],
3184            ad_verify=ads[0],
3185            call_id=call_ac_id,
3186            call_state=_get_expected_call_state(ads[0]),
3187            ads_active=[ads[0], ads[2]])
3188
3189
3190    @TelephonyBaseTest.tel_test_wrap
3191    @test_tracker_info(uuid="e5f36f28-ec2b-4958-8578-c0454ef2a8ad")
3192    def test_wcdma_mo_mt_add_swap_once_drop_held(self):
3193        """Test swap feature in WCDMA call.
3194
3195        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3196        PhoneC call PhoneA (WCDMA), accept on PhoneA.
3197        Swap active call on PhoneA.
3198        Hangup call from PhoneC, check if call continues between AB.
3199
3200        """
3201        ads = self.android_devices
3202
3203        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3204                                        ads=ads,
3205                                        num_swaps=1,
3206                                        phone_setup_a=phone_setup_voice_3g,
3207                                        phone_setup_b=phone_setup_voice_general,
3208                                        phone_setup_c=phone_setup_voice_general,
3209                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
3210                                        verify_phone_b_network_subscription=None,
3211                                        verify_phone_c_network_subscription=None)
3212
3213        if call_ab_id is None or call_ac_id is None:
3214            return False
3215
3216        return _three_phone_hangup_call_verify_call_state(log=self.log,
3217            ad_hangup=ads[2],
3218            ad_verify=ads[0],
3219            call_id=call_ab_id,
3220            call_state=CALL_STATE_ACTIVE,
3221            ads_active=[ads[0], ads[1]])
3222
3223
3224    @TelephonyBaseTest.tel_test_wrap
3225    @test_tracker_info(uuid="a2252ebe-3ee2-4b9e-b76b-6be68d6b2719")
3226    def test_wcdma_mo_mt_add_swap_once_drop_active(self):
3227        """Test swap feature in WCDMA call.
3228
3229        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
3230        PhoneC call PhoneA (WCDMA), accept on PhoneA.
3231        Swap active call on PhoneA.
3232        Hangup call from PhoneB, check if call continues between AC.
3233
3234        """
3235        ads = self.android_devices
3236
3237        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3238                                        ads=ads,
3239                                        num_swaps=1,
3240                                        phone_setup_a=phone_setup_voice_3g,
3241                                        phone_setup_b=phone_setup_voice_general,
3242                                        phone_setup_c=phone_setup_voice_general,
3243                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
3244                                        verify_phone_b_network_subscription=None,
3245                                        verify_phone_c_network_subscription=None)
3246
3247        if call_ab_id is None or call_ac_id is None:
3248            return False
3249
3250        return _three_phone_hangup_call_verify_call_state(log=self.log,
3251            ad_hangup=ads[1],
3252            ad_verify=ads[0],
3253            call_id=call_ac_id,
3254            call_state=_get_expected_call_state(ads[0]),
3255            ads_active=[ads[0], ads[2]])
3256
3257
3258    @TelephonyBaseTest.tel_test_wrap
3259    @test_tracker_info(uuid="cba48f87-4026-422d-a760-f913d2763ee9")
3260    def test_csfb_wcdma_mo_mo_add_swap_twice_drop_held(self):
3261        """Test swap feature in CSFB WCDMA call.
3262
3263        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3264        PhoneA (CSFB WCDMA) call PhoneC, accept on PhoneC.
3265        Swap active call on PhoneA.
3266        Swap active call on PhoneA.
3267        Hangup call from PhoneB, check if call continues between AC.
3268
3269        """
3270        ads = self.android_devices
3271
3272        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3273                                        ads=ads,
3274                                        num_swaps=2,
3275                                        phone_setup_a=phone_setup_csfb,
3276                                        phone_setup_b=phone_setup_voice_general,
3277                                        phone_setup_c=phone_setup_voice_general,
3278                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3279                                        verify_phone_b_network_subscription=None,
3280                                        verify_phone_c_network_subscription=None)
3281
3282        if call_ab_id is None or call_ac_id is None:
3283            return False
3284
3285        return _three_phone_hangup_call_verify_call_state(log=self.log,
3286            ad_hangup=ads[1],
3287            ad_verify=ads[0],
3288            call_id=call_ac_id,
3289            call_state=CALL_STATE_ACTIVE,
3290            ads_active=[ads[0], ads[2]])
3291
3292
3293    @TelephonyBaseTest.tel_test_wrap
3294    @test_tracker_info(uuid="3e6bd083-ccae-4962-a3d7-4194ed685b64")
3295    def test_csfb_wcdma_mo_mo_add_swap_twice_drop_active(self):
3296        """Test swap feature in CSFB WCDMA call.
3297
3298        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3299        PhoneA (CSFB WCDMA) call PhoneC, accept on PhoneC.
3300        Swap active call on PhoneA.
3301        Swap active call on PhoneA.
3302        Hangup call from PhoneC, check if call continues between AB.
3303
3304        """
3305        ads = self.android_devices
3306
3307        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3308                                        ads=ads,
3309                                        num_swaps=2,
3310                                        phone_setup_a=phone_setup_csfb,
3311                                        phone_setup_b=phone_setup_voice_general,
3312                                        phone_setup_c=phone_setup_voice_general,
3313                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3314                                        verify_phone_b_network_subscription=None,
3315                                        verify_phone_c_network_subscription=None)
3316        if call_ab_id is None or call_ac_id is None:
3317            return False
3318
3319        return _three_phone_hangup_call_verify_call_state(log=self.log,
3320            ad_hangup=ads[2],
3321            ad_verify=ads[0],
3322            call_id=call_ab_id,
3323            call_state=_get_expected_call_state(ads[0]),
3324            ads_active=[ads[0], ads[1]])
3325
3326
3327    @TelephonyBaseTest.tel_test_wrap
3328    @test_tracker_info(uuid="a1972846-0bca-4583-a966-11ebf0670c04")
3329    def test_csfb_wcdma_mo_mt_add_swap_twice_drop_held(self):
3330        """Test swap feature in CSFB WCDMA call.
3331
3332        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3333        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
3334        Swap active call on PhoneA.
3335        Swap active call on PhoneA.
3336        Hangup call from PhoneB, check if call continues between AC.
3337
3338        """
3339        ads = self.android_devices
3340
3341        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3342                                        ads=ads,
3343                                        num_swaps=2,
3344                                        phone_setup_a=phone_setup_csfb,
3345                                        phone_setup_b=phone_setup_voice_general,
3346                                        phone_setup_c=phone_setup_voice_general,
3347                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3348                                        verify_phone_b_network_subscription=None,
3349                                        verify_phone_c_network_subscription=None)
3350
3351        if call_ab_id is None or call_ac_id is None:
3352            return False
3353
3354        return _three_phone_hangup_call_verify_call_state(log=self.log,
3355            ad_hangup=ads[1],
3356            ad_verify=ads[0],
3357            call_id=call_ac_id,
3358            call_state=CALL_STATE_ACTIVE,
3359            ads_active=[ads[0], ads[2]])
3360
3361
3362    @TelephonyBaseTest.tel_test_wrap
3363    @test_tracker_info(uuid="98609dfd-07fb-4414-bf6e-46144205fe70")
3364    def test_csfb_wcdma_mo_mt_add_swap_twice_drop_active(self):
3365        """Test swap feature in CSFB WCDMA call.
3366
3367        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3368        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
3369        Swap active call on PhoneA.
3370        Swap active call on PhoneA.
3371        Hangup call from PhoneC, check if call continues between AB.
3372
3373        """
3374        ads = self.android_devices
3375
3376        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3377                                        ads=ads,
3378                                        num_swaps=2,
3379                                        phone_setup_a=phone_setup_csfb,
3380                                        phone_setup_b=phone_setup_voice_general,
3381                                        phone_setup_c=phone_setup_voice_general,
3382                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3383                                        verify_phone_b_network_subscription=None,
3384                                        verify_phone_c_network_subscription=None)
3385        if call_ab_id is None or call_ac_id is None:
3386            return False
3387
3388        return _three_phone_hangup_call_verify_call_state(log=self.log,
3389            ad_hangup=ads[2],
3390            ad_verify=ads[0],
3391            call_id=call_ab_id,
3392            call_state=_get_expected_call_state(ads[0]),
3393            ads_active=[ads[0], ads[1]])
3394
3395
3396    @TelephonyBaseTest.tel_test_wrap
3397    @test_tracker_info(uuid="0c4c9b0b-ef7a-4e3d-9d31-dde721444820")
3398    def test_csfb_wcdma_mo_mo_add_swap_once_drop_held(self):
3399        """Test swap feature in CSFB WCDMA call.
3400
3401        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3402        PhoneA (CSFB WCDMA) call PhoneC, accept on PhoneC.
3403        Swap active call on PhoneA.
3404        Hangup call from PhoneC, check if call continues between AB.
3405
3406        """
3407        ads = self.android_devices
3408
3409        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3410                                        ads=ads,
3411                                        num_swaps=1,
3412                                        phone_setup_a=phone_setup_csfb,
3413                                        phone_setup_b=phone_setup_voice_general,
3414                                        phone_setup_c=phone_setup_voice_general,
3415                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3416                                        verify_phone_b_network_subscription=None,
3417                                        verify_phone_c_network_subscription=None)
3418        if call_ab_id is None or call_ac_id is None:
3419            return False
3420
3421        return _three_phone_hangup_call_verify_call_state(log=self.log,
3422            ad_hangup=ads[2],
3423            ad_verify=ads[0],
3424            call_id=call_ab_id,
3425            call_state=CALL_STATE_ACTIVE,
3426            ads_active=[ads[0], ads[1]])
3427
3428
3429    @TelephonyBaseTest.tel_test_wrap
3430    @test_tracker_info(uuid="ee0f7772-9e58-4a00-8eb5-a03b3e5baf40")
3431    def test_csfb_wcdma_mo_mo_add_swap_once_drop_active(self):
3432        """Test swap feature in CSFB WCDMA call.
3433
3434        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3435        PhoneA (CSFB WCDMA) call PhoneC, accept on PhoneC.
3436        Swap active call on PhoneA.
3437        Hangup call from PhoneB, check if call continues between AC.
3438
3439        """
3440        ads = self.android_devices
3441
3442        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3443                                        ads=ads,
3444                                        num_swaps=1,
3445                                        phone_setup_a=phone_setup_csfb,
3446                                        phone_setup_b=phone_setup_voice_general,
3447                                        phone_setup_c=phone_setup_voice_general,
3448                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3449                                        verify_phone_b_network_subscription=None,
3450                                        verify_phone_c_network_subscription=None)
3451        if call_ab_id is None or call_ac_id is None:
3452            return False
3453
3454        return _three_phone_hangup_call_verify_call_state(log=self.log,
3455            ad_hangup=ads[1],
3456            ad_verify=ads[0],
3457            call_id=call_ac_id,
3458            call_state=_get_expected_call_state(ads[0]),
3459            ads_active=[ads[0], ads[2]])
3460
3461
3462    @TelephonyBaseTest.tel_test_wrap
3463    @test_tracker_info(uuid="2f9e0120-c052-467b-be45-313ada433dce")
3464    def test_csfb_wcdma_mo_mt_add_swap_once_drop_held(self):
3465        """Test swap feature in CSFB WCDMA call.
3466
3467        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3468        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
3469        Swap active call on PhoneA.
3470        Hangup call from PhoneC, check if call continues between AB.
3471
3472        """
3473        ads = self.android_devices
3474
3475        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3476                                        ads=ads,
3477                                        num_swaps=1,
3478                                        phone_setup_a=phone_setup_csfb,
3479                                        phone_setup_b=phone_setup_voice_general,
3480                                        phone_setup_c=phone_setup_voice_general,
3481                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3482                                        verify_phone_b_network_subscription=None,
3483                                        verify_phone_c_network_subscription=None)
3484
3485        if call_ab_id is None or call_ac_id is None:
3486            return False
3487
3488        return _three_phone_hangup_call_verify_call_state(log=self.log,
3489            ad_hangup=ads[2],
3490            ad_verify=ads[0],
3491            call_id=call_ab_id,
3492            call_state=CALL_STATE_ACTIVE,
3493            ads_active=[ads[0], ads[1]])
3494
3495
3496    @TelephonyBaseTest.tel_test_wrap
3497    @test_tracker_info(uuid="9110ad34-04e4-4d0f-9ac0-183ad9e6fa8a")
3498    def test_csfb_wcdma_mo_mt_add_swap_once_drop_active(self):
3499        """Test swap feature in CSFB WCDMA call.
3500
3501        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
3502        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
3503        Swap active call on PhoneA.
3504        Hangup call from PhoneB, check if call continues between AC.
3505
3506        """
3507        ads = self.android_devices
3508
3509        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3510                                        ads=ads,
3511                                        num_swaps=1,
3512                                        phone_setup_a=phone_setup_csfb,
3513                                        phone_setup_b=phone_setup_voice_general,
3514                                        phone_setup_c=phone_setup_voice_general,
3515                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
3516                                        verify_phone_b_network_subscription=None,
3517                                        verify_phone_c_network_subscription=None)
3518        if call_ab_id is None or call_ac_id is None:
3519            return False
3520
3521        return _three_phone_hangup_call_verify_call_state(log=self.log,
3522            ad_hangup=ads[1],
3523            ad_verify=ads[0],
3524            call_id=call_ac_id,
3525            call_state=_get_expected_call_state(ads[0]),
3526            ads_active=[ads[0], ads[2]])
3527
3528
3529    @TelephonyBaseTest.tel_test_wrap
3530    @test_tracker_info(uuid="8cca4681-a5d4-472a-b0b5-46b79a6892a7")
3531    def test_volte_mo_mo_add_volte_swap_once_merge_drop_second_call_from_participant_no_cep(
3532            self):
3533        """ Test swap and merge features in VoLTE call. No CEP.
3534
3535        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3536        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3537        Swap active call on PhoneA.
3538        On PhoneA, merge to conference call (No CEP).
3539        End call on PhoneC, verify call continues.
3540        End call on PhoneB, verify call end on PhoneA.
3541
3542        Returns:
3543            True if pass; False if fail.
3544        """
3545        ads = self.android_devices
3546        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3547                                        ads=ads,
3548                                        num_swaps=1,
3549                                        phone_setup_a=phone_setup_volte,
3550                                        phone_setup_b=phone_setup_volte,
3551                                        phone_setup_c=phone_setup_volte,
3552                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3553                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3554                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3555        if call_ab_id is None or call_ac_id is None:
3556            return False
3557
3558        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3559            call_ab_id, call_ac_id)
3560
3561
3562    @TelephonyBaseTest.tel_test_wrap
3563    @test_tracker_info(uuid="9168698e-987a-42e3-8bc6-2a433fa4b5e3")
3564    def test_volte_mo_mo_add_volte_swap_once_merge_drop_second_call_from_participant_cep(
3565            self):
3566        """ Test swap and merge features in VoLTE call. CEP enabled.
3567
3568        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3569        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3570        3. Swap active call on PhoneA.
3571        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3572        5. End call on PhoneC, verify call continues.
3573        6. End call on PhoneB, verify call end on PhoneA.
3574
3575        Returns:
3576            True if pass; False if fail.
3577        """
3578        ads = self.android_devices
3579        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3580                                        ads=ads,
3581                                        num_swaps=1,
3582                                        phone_setup_a=phone_setup_volte,
3583                                        phone_setup_b=phone_setup_volte,
3584                                        phone_setup_c=phone_setup_volte,
3585                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3586                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3587                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3588        if call_ab_id is None or call_ac_id is None:
3589            return False
3590
3591        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3592            call_ab_id, call_ac_id)
3593
3594
3595    @TelephonyBaseTest.tel_test_wrap
3596    @test_tracker_info(uuid="397bfab8-6651-4438-a603-22657fd69b84")
3597    def test_volte_mo_mo_add_volte_swap_once_merge_drop_second_call_from_host_cep(
3598            self):
3599        """ Test swap and merge features in VoLTE call. CEP enabled.
3600
3601        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3602        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3603        3. Swap active call on PhoneA.
3604        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3605        5. On PhoneA disconnect call between A-C, verify call continues.
3606        6. On PhoneA disconnect call between A-B, verify call continues.
3607
3608        Returns:
3609            True if pass; False if fail.
3610        """
3611        ads = self.android_devices
3612        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3613                                        ads=ads,
3614                                        num_swaps=1,
3615                                        phone_setup_a=phone_setup_volte,
3616                                        phone_setup_b=phone_setup_volte,
3617                                        phone_setup_c=phone_setup_volte,
3618                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3619                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3620                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3621        if call_ab_id is None or call_ac_id is None:
3622            return False
3623
3624        return _test_ims_conference_merge_drop_second_call_from_host(self.log, self.android_devices,
3625            call_ab_id, call_ac_id)
3626
3627
3628    @TelephonyBaseTest.tel_test_wrap
3629    @test_tracker_info(uuid="ba766c4c-690f-407b-87f8-05a91783e224")
3630    def test_volte_mo_mo_add_volte_swap_once_merge_drop_first_call_from_participant_cep(
3631            self):
3632        """ Test swap and merge features in VoLTE call. CEP enabled.
3633
3634        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3635        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3636        3. Swap active call on PhoneA.
3637        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3638        5. End call on PhoneB, verify call continues.
3639        6. End call on PhoneC, verify call end on PhoneA.
3640
3641        Returns:
3642            True if pass; False if fail.
3643        """
3644        ads = self.android_devices
3645        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3646                                        ads=ads,
3647                                        num_swaps=1,
3648                                        phone_setup_a=phone_setup_volte,
3649                                        phone_setup_b=phone_setup_volte,
3650                                        phone_setup_c=phone_setup_volte,
3651                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3652                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3653                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3654        if call_ab_id is None or call_ac_id is None:
3655            return False
3656
3657        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
3658            call_ab_id, call_ac_id)
3659
3660
3661    @TelephonyBaseTest.tel_test_wrap
3662    @test_tracker_info(uuid="1e45c749-6d4c-4d30-b104-bfcc37e13f1d")
3663    def test_volte_mo_mo_add_volte_swap_once_merge_drop_first_call_from_host_cep(
3664            self):
3665        """ Test swap and merge features in VoLTE call. CEP enabled.
3666
3667        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3668        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3669        3. Swap active call on PhoneA.
3670        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3671        5. On PhoneA disconnect call between A-B, verify call continues.
3672        6. On PhoneA disconnect call between A-C, verify call continues.
3673
3674        Returns:
3675            True if pass; False if fail.
3676        """
3677        ads = self.android_devices
3678        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3679                                        ads=ads,
3680                                        num_swaps=1,
3681                                        phone_setup_a=phone_setup_volte,
3682                                        phone_setup_b=phone_setup_volte,
3683                                        phone_setup_c=phone_setup_volte,
3684                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3685                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3686                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3687        if call_ab_id is None or call_ac_id is None:
3688            return False
3689
3690        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
3691            call_ab_id, call_ac_id)
3692
3693
3694    @TelephonyBaseTest.tel_test_wrap
3695    @test_tracker_info(uuid="d6648e19-8001-483a-a83b-a92b638a7650")
3696    def test_volte_mo_mo_add_volte_swap_twice_merge_drop_second_call_from_participant_no_cep(
3697            self):
3698        """ Test swap and merge features in VoLTE call. No CEP.
3699
3700        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3701        PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3702        Swap active call on PhoneA.
3703        Swap active call on PhoneA.
3704        On PhoneA, merge to conference call (No CEP).
3705        End call on PhoneC, verify call continues.
3706        End call on PhoneB, verify call end on PhoneA.
3707
3708        Returns:
3709            True if pass; False if fail.
3710        """
3711        ads = self.android_devices
3712        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3713                                        ads=ads,
3714                                        num_swaps=2,
3715                                        phone_setup_a=phone_setup_volte,
3716                                        phone_setup_b=phone_setup_volte,
3717                                        phone_setup_c=phone_setup_volte,
3718                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3719                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3720                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3721        if call_ab_id is None or call_ac_id is None:
3722            return False
3723
3724        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3725            call_ab_id, call_ac_id)
3726
3727
3728    @TelephonyBaseTest.tel_test_wrap
3729    @test_tracker_info(uuid="18d3c304-ad04-409f-bfd4-fd3f01f9a51e")
3730    def test_volte_mo_mo_add_volte_swap_twice_merge_drop_second_call_from_participant_cep(
3731            self):
3732        """ Test swap and merge features in VoLTE call. CEP enabled.
3733
3734        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3735        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3736        3. Swap active call on PhoneA.
3737        4. Swap active call on PhoneA.
3738        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
3739        6. End call on PhoneC, verify call continues.
3740        7. End call on PhoneB, verify call end on PhoneA.
3741
3742        Returns:
3743            True if pass; False if fail.
3744        """
3745        ads = self.android_devices
3746        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3747                                        ads=ads,
3748                                        num_swaps=2,
3749                                        phone_setup_a=phone_setup_volte,
3750                                        phone_setup_b=phone_setup_volte,
3751                                        phone_setup_c=phone_setup_volte,
3752                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3753                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3754                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3755        if call_ab_id is None or call_ac_id is None:
3756            return False
3757
3758        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3759            call_ab_id, call_ac_id)
3760
3761
3762    @TelephonyBaseTest.tel_test_wrap
3763    @test_tracker_info(uuid="f1e71550-3a45-45e4-88e4-7e4da919d58e")
3764    def test_volte_mo_mo_add_volte_swap_twice_merge_drop_second_call_from_host_cep(
3765            self):
3766        """ Test swap and merge features in VoLTE call. CEP enabled.
3767
3768        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3769        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3770        3. Swap active call on PhoneA.
3771        4. Swap active call on PhoneA.
3772        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
3773        6. On PhoneA disconnect call between A-C, verify call continues.
3774        7. On PhoneA disconnect call between A-B, verify call continues.
3775
3776        Returns:
3777            True if pass; False if fail.
3778        """
3779        ads = self.android_devices
3780        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3781                                        ads=ads,
3782                                        num_swaps=2,
3783                                        phone_setup_a=phone_setup_volte,
3784                                        phone_setup_b=phone_setup_volte,
3785                                        phone_setup_c=phone_setup_volte,
3786                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3787                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3788                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3789        if call_ab_id is None or call_ac_id is None:
3790            return False
3791
3792        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
3793            call_ab_id, call_ac_id)
3794
3795
3796    @TelephonyBaseTest.tel_test_wrap
3797    @test_tracker_info(uuid="60cc8bd1-4270-4b5c-9d29-9fa36a357503")
3798    def test_volte_mo_mo_add_volte_swap_twice_merge_drop_first_call_from_participant_cep(
3799            self):
3800        """ Test swap and merge features in VoLTE call. CEP enabled.
3801
3802        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3803        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3804        3. Swap active call on PhoneA.
3805        4. Swap active call on PhoneA.
3806        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
3807        6. End call on PhoneB, verify call continues.
3808        7. End call on PhoneC, verify call end on PhoneA.
3809
3810        Returns:
3811            True if pass; False if fail.
3812        """
3813        ads = self.android_devices
3814        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3815                                        ads=ads,
3816                                        num_swaps=2,
3817                                        phone_setup_a=phone_setup_volte,
3818                                        phone_setup_b=phone_setup_volte,
3819                                        phone_setup_c=phone_setup_volte,
3820                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3821                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3822                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3823        if call_ab_id is None or call_ac_id is None:
3824            return False
3825
3826        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
3827            call_ab_id, call_ac_id)
3828
3829
3830    @TelephonyBaseTest.tel_test_wrap
3831    @test_tracker_info(uuid="7d81c5f8-5ee1-4ad2-b08e-3e4c97748a66")
3832    def test_volte_mo_mo_add_volte_swap_twice_merge_drop_first_call_from_host_cep(
3833            self):
3834        """ Test swap and merge features in VoLTE call. CEP enabled.
3835
3836        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3837        2. PhoneA (VoLTE) call PhoneC (VoLTE), accept on PhoneC.
3838        3. Swap active call on PhoneA.
3839        4. Swap active call on PhoneA.
3840        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
3841        6. On PhoneA disconnect call between A-B, verify call continues.
3842        7. On PhoneA disconnect call between A-C, verify call continues.
3843
3844        Returns:
3845            True if pass; False if fail.
3846        """
3847        ads = self.android_devices
3848        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
3849                                        ads=ads,
3850                                        num_swaps=2,
3851                                        phone_setup_a=phone_setup_volte,
3852                                        phone_setup_b=phone_setup_volte,
3853                                        phone_setup_c=phone_setup_volte,
3854                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3855                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3856                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3857        if call_ab_id is None or call_ac_id is None:
3858            return False
3859
3860        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
3861            call_ab_id, call_ac_id)
3862
3863
3864    @TelephonyBaseTest.tel_test_wrap
3865    @test_tracker_info(uuid="5a887fde-8f9b-436b-ae8d-5ff97a884fc9")
3866    def test_volte_mo_mt_add_volte_swap_once_merge_drop_second_call_from_participant_no_cep(
3867            self):
3868        """ Test swap and merge features in VoLTE call. No CEP.
3869
3870        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3871        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
3872        Swap active call on PhoneA.
3873        On PhoneA, merge to conference call (No CEP).
3874        End call on PhoneC, verify call continues.
3875        End call on PhoneB, verify call end on PhoneA.
3876
3877        Returns:
3878            True if pass; False if fail.
3879        """
3880        ads = self.android_devices
3881        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3882                                        ads=ads,
3883                                        num_swaps=1,
3884                                        phone_setup_a=phone_setup_volte,
3885                                        phone_setup_b=phone_setup_volte,
3886                                        phone_setup_c=phone_setup_volte,
3887                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3888                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3889                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3890        if call_ab_id is None or call_ac_id is None:
3891            return False
3892
3893        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3894            call_ab_id, call_ac_id)
3895
3896
3897    @TelephonyBaseTest.tel_test_wrap
3898    @test_tracker_info(uuid="82574508-0d77-42cf-bf60-9fdddee24c42")
3899    def test_volte_mo_mt_add_volte_swap_once_merge_drop_second_call_from_participant_cep(
3900            self):
3901        """ Test swap and merge features in VoLTE call. CEP enabled.
3902
3903        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3904        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
3905        3. Swap active call on PhoneA.
3906        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3907        5. End call on PhoneC, verify call continues.
3908        6. End call on PhoneB, verify call end on PhoneA.
3909
3910        Returns:
3911            True if pass; False if fail.
3912        """
3913        ads = self.android_devices
3914        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3915                                        ads=ads,
3916                                        num_swaps=1,
3917                                        phone_setup_a=phone_setup_volte,
3918                                        phone_setup_b=phone_setup_volte,
3919                                        phone_setup_c=phone_setup_volte,
3920                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3921                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3922                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3923        if call_ab_id is None or call_ac_id is None:
3924            return False
3925
3926        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
3927            call_ab_id, call_ac_id)
3928
3929
3930    @TelephonyBaseTest.tel_test_wrap
3931    @test_tracker_info(uuid="8f30c425-c689-43b8-84f3-f24f7d9216f6")
3932    def test_volte_mo_mt_add_volte_swap_once_merge_drop_second_call_from_host_cep(
3933            self):
3934        """ Test swap and merge features in VoLTE call. CEP enabled.
3935
3936        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3937        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
3938        3. Swap active call on PhoneA.
3939        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3940        5. On PhoneA disconnect call between A-C, verify call continues.
3941        6. On PhoneA disconnect call between A-B, verify call continues.
3942
3943        Returns:
3944            True if pass; False if fail.
3945        """
3946        ads = self.android_devices
3947        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3948                                        ads=ads,
3949                                        num_swaps=1,
3950                                        phone_setup_a=phone_setup_volte,
3951                                        phone_setup_b=phone_setup_volte,
3952                                        phone_setup_c=phone_setup_volte,
3953                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3954                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3955                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3956        if call_ab_id is None or call_ac_id is None:
3957            return False
3958
3959        return _test_ims_conference_merge_drop_second_call_from_host(self.log, self.android_devices,
3960            call_ab_id, call_ac_id)
3961
3962
3963    @TelephonyBaseTest.tel_test_wrap
3964    @test_tracker_info(uuid="2a67845f-ccfd-4c06-aedc-9d6c1f022959")
3965    def test_volte_mo_mt_add_volte_swap_once_merge_drop_first_call_from_participant_cep(
3966            self):
3967        """ Test swap and merge features in VoLTE call. CEP enabled.
3968
3969        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
3970        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
3971        3. Swap active call on PhoneA.
3972        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
3973        5. End call on PhoneB, verify call continues.
3974        6. End call on PhoneC, verify call end on PhoneA.
3975
3976        Returns:
3977            True if pass; False if fail.
3978        """
3979        ads = self.android_devices
3980        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
3981                                        ads=ads,
3982                                        num_swaps=1,
3983                                        phone_setup_a=phone_setup_volte,
3984                                        phone_setup_b=phone_setup_volte,
3985                                        phone_setup_c=phone_setup_volte,
3986                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
3987                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
3988                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
3989        if call_ab_id is None or call_ac_id is None:
3990            return False
3991
3992        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
3993            call_ab_id, call_ac_id)
3994
3995
3996    @TelephonyBaseTest.tel_test_wrap
3997    @test_tracker_info(uuid="0a5d1305-0890-40c4-8c7a-070876423e16")
3998    def test_volte_mo_mt_add_volte_swap_once_merge_drop_first_call_from_host_cep(
3999            self):
4000        """ Test swap and merge features in VoLTE call. CEP enabled.
4001
4002        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4003        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4004        3. Swap active call on PhoneA.
4005        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4006        5. On PhoneA disconnect call between A-B, verify call continues.
4007        6. On PhoneA disconnect call between A-C, verify call continues.
4008
4009        Returns:
4010            True if pass; False if fail.
4011        """
4012        ads = self.android_devices
4013        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4014                                        ads=ads,
4015                                        num_swaps=1,
4016                                        phone_setup_a=phone_setup_volte,
4017                                        phone_setup_b=phone_setup_volte,
4018                                        phone_setup_c=phone_setup_volte,
4019                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4020                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4021                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4022        if call_ab_id is None or call_ac_id is None:
4023            return False
4024
4025        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4026            call_ab_id, call_ac_id)
4027
4028
4029    @TelephonyBaseTest.tel_test_wrap
4030    @test_tracker_info(uuid="77bbb5ec-fd16-4031-b316-7f6563b79a3d")
4031    def test_volte_mo_mt_add_volte_swap_twice_merge_drop_second_call_from_participant_no_cep(
4032            self):
4033        """ Test swap and merge features in VoLTE call. No CEP.
4034
4035        PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4036        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4037        Swap active call on PhoneA.
4038        Swap active call on PhoneA.
4039        On PhoneA, merge to conference call (No CEP).
4040        End call on PhoneC, verify call continues.
4041        End call on PhoneB, verify call end on PhoneA.
4042
4043        Returns:
4044            True if pass; False if fail.
4045        """
4046        ads = self.android_devices
4047        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4048                                        ads=ads,
4049                                        num_swaps=2,
4050                                        phone_setup_a=phone_setup_volte,
4051                                        phone_setup_b=phone_setup_volte,
4052                                        phone_setup_c=phone_setup_volte,
4053                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4054                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4055                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4056        if call_ab_id is None or call_ac_id is None:
4057            return False
4058
4059        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4060            call_ab_id, call_ac_id)
4061
4062
4063    @TelephonyBaseTest.tel_test_wrap
4064    @test_tracker_info(uuid="09cd41cd-821d-4d09-9b1e-7330dca77150")
4065    def test_volte_mo_mt_add_volte_swap_twice_merge_drop_second_call_from_participant_cep(
4066            self):
4067        """ Test swap and merge features in VoLTE call. CEP enabled.
4068
4069        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4070        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4071        3. Swap active call on PhoneA.
4072        4. Swap active call on PhoneA.
4073        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4074        6. End call on PhoneC, verify call continues.
4075        7. End call on PhoneB, verify call end on PhoneA.
4076
4077        Returns:
4078            True if pass; False if fail.
4079        """
4080        ads = self.android_devices
4081        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4082                                        ads=ads,
4083                                        num_swaps=2,
4084                                        phone_setup_a=phone_setup_volte,
4085                                        phone_setup_b=phone_setup_volte,
4086                                        phone_setup_c=phone_setup_volte,
4087                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4088                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4089                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4090        if call_ab_id is None or call_ac_id is None:
4091            return False
4092
4093        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4094            call_ab_id, call_ac_id)
4095
4096
4097    @TelephonyBaseTest.tel_test_wrap
4098    @test_tracker_info(uuid="bdb2791e-92d0-44a3-aa8f-bd83e8159cb7")
4099    def test_volte_mo_mt_add_volte_swap_twice_merge_drop_second_call_from_host_cep(
4100            self):
4101        """ Test swap and merge features in VoLTE call. CEP enabled.
4102
4103        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4104        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4105        3. Swap active call on PhoneA.
4106        4. Swap active call on PhoneA.
4107        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4108        6. On PhoneA disconnect call between A-C, verify call continues.
4109        7. On PhoneA disconnect call between A-B, verify call continues.
4110
4111        Returns:
4112            True if pass; False if fail.
4113        """
4114        ads = self.android_devices
4115        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4116                                        ads=ads,
4117                                        num_swaps=2,
4118                                        phone_setup_a=phone_setup_volte,
4119                                        phone_setup_b=phone_setup_volte,
4120                                        phone_setup_c=phone_setup_volte,
4121                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4122                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4123                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4124        if call_ab_id is None or call_ac_id is None:
4125            return False
4126
4127        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4128            call_ab_id, call_ac_id)
4129
4130
4131    @TelephonyBaseTest.tel_test_wrap
4132    @test_tracker_info(uuid="4f54e67d-7c7a-4952-ae09-f940094ec1ff")
4133    def test_volte_mo_mt_add_volte_swap_twice_merge_drop_first_call_from_participant_cep(
4134            self):
4135        """ Test swap and merge features in VoLTE call. CEP enabled.
4136
4137        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4138        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4139        3. Swap active call on PhoneA.
4140        4. Swap active call on PhoneA.
4141        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4142        6. End call on PhoneB, verify call continues.
4143        7. End call on PhoneC, verify call end on PhoneA.
4144
4145        Returns:
4146            True if pass; False if fail.
4147        """
4148        ads = self.android_devices
4149        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4150                                        ads=ads,
4151                                        num_swaps=2,
4152                                        phone_setup_a=phone_setup_volte,
4153                                        phone_setup_b=phone_setup_volte,
4154                                        phone_setup_c=phone_setup_volte,
4155                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4156                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4157                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4158        if call_ab_id is None or call_ac_id is None:
4159            return False
4160
4161        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
4162            call_ab_id, call_ac_id)
4163
4164
4165    @TelephonyBaseTest.tel_test_wrap
4166    @test_tracker_info(uuid="4ca28f9f-098f-4f71-b89c-9b2793aa2f5f")
4167    def test_volte_mo_mt_add_volte_swap_twice_merge_drop_first_call_from_host_cep(
4168            self):
4169        """ Test swap and merge features in VoLTE call. CEP enabled.
4170
4171        1. PhoneA (VoLTE) call PhoneB (VoLTE), accept on PhoneB.
4172        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4173        3. Swap active call on PhoneA.
4174        4. Swap active call on PhoneA.
4175        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4176        6. On PhoneA disconnect call between A-B, verify call continues.
4177        7. On PhoneA disconnect call between A-C, verify call continues.
4178
4179        Returns:
4180            True if pass; False if fail.
4181        """
4182        ads = self.android_devices
4183        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4184                                        ads=ads,
4185                                        num_swaps=2,
4186                                        phone_setup_a=phone_setup_volte,
4187                                        phone_setup_b=phone_setup_volte,
4188                                        phone_setup_c=phone_setup_volte,
4189                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4190                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4191                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4192        if call_ab_id is None or call_ac_id is None:
4193            return False
4194
4195        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4196            call_ab_id, call_ac_id)
4197
4198
4199    @TelephonyBaseTest.tel_test_wrap
4200    @test_tracker_info(uuid="f025c100-bb77-436e-b8ab-0c23a3d43318")
4201    def test_volte_mt_mt_add_volte_swap_once_merge_drop_second_call_from_participant_no_cep(
4202            self):
4203        """ Test swap and merge features in VoLTE call. No CEP.
4204
4205        PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4206        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4207        Swap active call on PhoneA.
4208        On PhoneA, merge to conference call (No CEP).
4209        End call on PhoneC, verify call continues.
4210        End call on PhoneB, verify call end on PhoneA.
4211
4212        Returns:
4213            True if pass; False if fail.
4214        """
4215        ads = self.android_devices
4216        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4217                                        ads=ads,
4218                                        num_swaps=1,
4219                                        phone_setup_a=phone_setup_volte,
4220                                        phone_setup_b=phone_setup_volte,
4221                                        phone_setup_c=phone_setup_volte,
4222                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4223                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4224                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4225        if call_ab_id is None or call_ac_id is None:
4226            return False
4227
4228        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4229            call_ab_id, call_ac_id)
4230
4231
4232    @TelephonyBaseTest.tel_test_wrap
4233    @test_tracker_info(uuid="b6cd6b06-0984-4588-892e-939d332bf147")
4234    def test_volte_mt_mt_add_volte_swap_once_merge_drop_second_call_from_participant_cep(
4235            self):
4236        """ Test swap and merge features in VoLTE call. CEP enabled.
4237
4238        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4239        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4240        3. Swap active call on PhoneA.
4241        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4242        5. End call on PhoneC, verify call continues.
4243        6. End call on PhoneB, verify call end on PhoneA.
4244
4245        Returns:
4246            True if pass; False if fail.
4247        """
4248        ads = self.android_devices
4249        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4250                                        ads=ads,
4251                                        num_swaps=1,
4252                                        phone_setup_a=phone_setup_volte,
4253                                        phone_setup_b=phone_setup_volte,
4254                                        phone_setup_c=phone_setup_volte,
4255                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4256                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4257                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4258        if call_ab_id is None or call_ac_id is None:
4259            return False
4260
4261        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4262            call_ab_id, call_ac_id)
4263
4264
4265    @TelephonyBaseTest.tel_test_wrap
4266    @test_tracker_info(uuid="f7bda827-79bd-41cc-b720-140f49b381d9")
4267    def test_volte_mt_mt_add_volte_swap_once_merge_drop_second_call_from_host_cep(
4268            self):
4269        """ Test swap and merge features in VoLTE call. CEP enabled.
4270
4271        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4272        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4273        3. Swap active call on PhoneA.
4274        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4275        5. On PhoneA disconnect call between A-C, verify call continues.
4276        6. On PhoneA disconnect call between A-B, verify call continues.
4277
4278        Returns:
4279            True if pass; False if fail.
4280        """
4281        ads = self.android_devices
4282        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4283                                        ads=ads,
4284                                        num_swaps=1,
4285                                        phone_setup_a=phone_setup_volte,
4286                                        phone_setup_b=phone_setup_volte,
4287                                        phone_setup_c=phone_setup_volte,
4288                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4289                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4290                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4291        if call_ab_id is None or call_ac_id is None:
4292            return False
4293
4294        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4295            call_ab_id, call_ac_id)
4296
4297
4298    @TelephonyBaseTest.tel_test_wrap
4299    @test_tracker_info(uuid="de8aae4e-c8fc-4996-9d0b-56c3904c9bb4")
4300    def test_volte_mt_mt_add_volte_swap_once_merge_drop_first_call_from_participant_cep(
4301            self):
4302        """ Test swap and merge features in VoLTE call. CEP enabled.
4303
4304        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4305        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4306        3. Swap active call on PhoneA.
4307        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4308        5. End call on PhoneB, verify call continues.
4309        6. End call on PhoneC, verify call end on PhoneA.
4310
4311        Returns:
4312            True if pass; False if fail.
4313        """
4314        ads = self.android_devices
4315        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4316                                        ads=ads,
4317                                        num_swaps=1,
4318                                        phone_setup_a=phone_setup_volte,
4319                                        phone_setup_b=phone_setup_volte,
4320                                        phone_setup_c=phone_setup_volte,
4321                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4322                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4323                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4324        if call_ab_id is None or call_ac_id is None:
4325            return False
4326
4327        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
4328            call_ab_id, call_ac_id)
4329
4330
4331    @TelephonyBaseTest.tel_test_wrap
4332    @test_tracker_info(uuid="35d72ebf-1a99-4571-8993-2899925f5489")
4333    def test_volte_mt_mt_add_volte_swap_once_merge_drop_first_call_from_host_cep(
4334            self):
4335        """ Test swap and merge features in VoLTE call. CEP enabled.
4336
4337        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4338        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4339        3. Swap active call on PhoneA.
4340        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4341        5. On PhoneA disconnect call between A-B, verify call continues.
4342        6. On PhoneA disconnect call between A-C, verify call continues.
4343
4344        Returns:
4345            True if pass; False if fail.
4346        """
4347        ads = self.android_devices
4348        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4349                                        ads=ads,
4350                                        num_swaps=1,
4351                                        phone_setup_a=phone_setup_volte,
4352                                        phone_setup_b=phone_setup_volte,
4353                                        phone_setup_c=phone_setup_volte,
4354                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4355                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4356                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4357        if call_ab_id is None or call_ac_id is None:
4358            return False
4359
4360        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4361            call_ab_id, call_ac_id)
4362
4363
4364    @TelephonyBaseTest.tel_test_wrap
4365    @test_tracker_info(uuid="96c4c9d2-2e00-41a8-b4ce-3a9377262d36")
4366    def test_volte_mt_mt_add_volte_swap_twice_merge_drop_second_call_from_participant_no_cep(
4367            self):
4368        """ Test swap and merge features in VoLTE call. No CEP.
4369
4370        PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4371        PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4372        Swap active call on PhoneA.
4373        Swap active call on PhoneA.
4374        On PhoneA, merge to conference call (No CEP).
4375        End call on PhoneC, verify call continues.
4376        End call on PhoneB, verify call end on PhoneA.
4377
4378        Returns:
4379            True if pass; False if fail.
4380        """
4381        ads = self.android_devices
4382        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4383                                        ads=ads,
4384                                        num_swaps=2,
4385                                        phone_setup_a=phone_setup_volte,
4386                                        phone_setup_b=phone_setup_volte,
4387                                        phone_setup_c=phone_setup_volte,
4388                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4389                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4390                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4391        if call_ab_id is None or call_ac_id is None:
4392            return False
4393
4394        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4395            call_ab_id, call_ac_id)
4396
4397
4398    @TelephonyBaseTest.tel_test_wrap
4399    @test_tracker_info(uuid="e1e0bb6c-c2d5-4566-80b1-46bfb0b95544")
4400    def test_volte_mt_mt_add_volte_swap_twice_merge_drop_second_call_from_participant_cep(
4401            self):
4402        """ Test swap and merge features in VoLTE call. CEP enabled.
4403
4404        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4405        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4406        3. Swap active call on PhoneA.
4407        4. Swap active call on PhoneA.
4408        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4409        6. End call on PhoneC, verify call continues.
4410        7. End call on PhoneB, verify call end on PhoneA.
4411
4412        Returns:
4413            True if pass; False if fail.
4414        """
4415        ads = self.android_devices
4416        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4417                                        ads=ads,
4418                                        num_swaps=2,
4419                                        phone_setup_a=phone_setup_volte,
4420                                        phone_setup_b=phone_setup_volte,
4421                                        phone_setup_c=phone_setup_volte,
4422                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4423                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4424                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4425        if call_ab_id is None or call_ac_id is None:
4426            return False
4427
4428        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4429            call_ab_id, call_ac_id)
4430
4431
4432    @TelephonyBaseTest.tel_test_wrap
4433    @test_tracker_info(uuid="764b5930-ba96-4901-b629-e753bc5c8d8e")
4434    def test_volte_mt_mt_add_volte_swap_twice_merge_drop_second_call_from_host_cep(
4435            self):
4436        """ Test swap and merge features in VoLTE call. CEP enabled.
4437
4438        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4439        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4440        3. Swap active call on PhoneA.
4441        4. Swap active call on PhoneA.
4442        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4443        6. On PhoneA disconnect call between A-C, verify call continues.
4444        7. On PhoneA disconnect call between A-B, verify call continues.
4445
4446        Returns:
4447            True if pass; False if fail.
4448        """
4449        ads = self.android_devices
4450        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4451                                        ads=ads,
4452                                        num_swaps=2,
4453                                        phone_setup_a=phone_setup_volte,
4454                                        phone_setup_b=phone_setup_volte,
4455                                        phone_setup_c=phone_setup_volte,
4456                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4457                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4458                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4459        if call_ab_id is None or call_ac_id is None:
4460            return False
4461
4462        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4463            call_ab_id, call_ac_id)
4464
4465
4466    @TelephonyBaseTest.tel_test_wrap
4467    @test_tracker_info(uuid="e03e52a1-7e7b-4a53-a496-3092a35153ae")
4468    def test_volte_mt_mt_add_volte_swap_twice_merge_drop_first_call_from_participant_cep(
4469            self):
4470        """ Test swap and merge features in VoLTE call. CEP enabled.
4471
4472        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4473        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4474        3. Swap active call on PhoneA.
4475        4. Swap active call on PhoneA.
4476        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4477        6. End call on PhoneB, verify call continues.
4478        7. End call on PhoneC, verify call end on PhoneA.
4479
4480        Returns:
4481            True if pass; False if fail.
4482        """
4483        ads = self.android_devices
4484        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4485                                        ads=ads,
4486                                        num_swaps=2,
4487                                        phone_setup_a=phone_setup_volte,
4488                                        phone_setup_b=phone_setup_volte,
4489                                        phone_setup_c=phone_setup_volte,
4490                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4491                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4492                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4493        if call_ab_id is None or call_ac_id is None:
4494            return False
4495
4496        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
4497            call_ab_id, call_ac_id)
4498
4499
4500    @TelephonyBaseTest.tel_test_wrap
4501    @test_tracker_info(uuid="10a63692-56de-4563-b223-91e8814ddbc9")
4502    def test_volte_mt_mt_add_volte_swap_twice_merge_drop_first_call_from_host_cep(
4503            self):
4504        """ Test swap and merge features in VoLTE call. CEP enabled.
4505
4506        1. PhoneB (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4507        2. PhoneC (VoLTE) call PhoneA (VoLTE), accept on PhoneA.
4508        3. Swap active call on PhoneA.
4509        4. Swap active call on PhoneA.
4510        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4511        6. On PhoneA disconnect call between A-B, verify call continues.
4512        7. On PhoneA disconnect call between A-C, verify call continues.
4513
4514        Returns:
4515            True if pass; False if fail.
4516        """
4517        ads = self.android_devices
4518        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
4519                                        ads=ads,
4520                                        num_swaps=2,
4521                                        phone_setup_a=phone_setup_volte,
4522                                        phone_setup_b=phone_setup_volte,
4523                                        phone_setup_c=phone_setup_volte,
4524                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4525                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
4526                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
4527        if call_ab_id is None or call_ac_id is None:
4528            return False
4529
4530        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4531            call_ab_id, call_ac_id)
4532
4533
4534    @TelephonyBaseTest.tel_test_wrap
4535    @test_tracker_info(uuid="cf4b1fe2-40d7-409b-a4ec-06bdb9a0d957")
4536    def test_volte_mo_mo_add_wcdma_swap_once_merge_drop_second_call_from_participant_no_cep(
4537            self):
4538        """ Test VoLTE Conference Call among three phones. No CEP.
4539
4540        PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4541        PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4542        Swap active call on PhoneA.
4543        On PhoneA, merge to conference call (No CEP).
4544        End call on PhoneC, verify call continues.
4545        End call on PhoneB, verify call end on PhoneA.
4546
4547        Returns:
4548            True if pass; False if fail.
4549        """
4550        ads = self.android_devices
4551        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4552                                        ads=ads,
4553                                        num_swaps=1,
4554                                        phone_setup_a=phone_setup_volte,
4555                                        phone_setup_b=phone_setup_voice_3g,
4556                                        phone_setup_c=phone_setup_voice_3g,
4557                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4558                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4559                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4560
4561        if call_ab_id is None or call_ac_id is None:
4562            return False
4563
4564        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4565            call_ab_id, call_ac_id)
4566
4567
4568    @TelephonyBaseTest.tel_test_wrap
4569    @test_tracker_info(uuid="fcc9dbd2-919d-4552-838c-2b672fb24b2b")
4570    def test_volte_mo_mo_add_wcdma_swap_once_merge_drop_second_call_from_participant_cep(
4571            self):
4572        """ Test swap and merge features in VoLTE call. CEP enabled.
4573
4574        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4575        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4576        3. Swap active call on PhoneA.
4577        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4578        5. End call on PhoneC, verify call continues.
4579        6. End call on PhoneB, verify call end on PhoneA.
4580
4581        Returns:
4582            True if pass; False if fail.
4583        """
4584        ads = self.android_devices
4585        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4586                                        ads=ads,
4587                                        num_swaps=1,
4588                                        phone_setup_a=phone_setup_volte,
4589                                        phone_setup_b=phone_setup_voice_3g,
4590                                        phone_setup_c=phone_setup_voice_3g,
4591                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4592                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4593                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4594        if call_ab_id is None or call_ac_id is None:
4595            return False
4596
4597        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4598            call_ab_id, call_ac_id)
4599
4600
4601    @TelephonyBaseTest.tel_test_wrap
4602    @test_tracker_info(uuid="37021d31-4242-46a2-adbf-eb7b987e4a43")
4603    def test_volte_mo_mo_add_wcdma_swap_once_merge_drop_second_call_from_host_cep(
4604            self):
4605        """ Test swap and merge features in VoLTE call. CEP enabled.
4606
4607        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4608        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4609        3. Swap active call on PhoneA.
4610        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4611        5. On PhoneA disconnect call between A-C, verify call continues.
4612        6. On PhoneA disconnect call between A-B, verify call continues.
4613
4614        Returns:
4615            True if pass; False if fail.
4616        """
4617        ads = self.android_devices
4618        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4619                                        ads=ads,
4620                                        num_swaps=1,
4621                                        phone_setup_a=phone_setup_volte,
4622                                        phone_setup_b=phone_setup_voice_3g,
4623                                        phone_setup_c=phone_setup_voice_3g,
4624                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4625                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4626                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4627        if call_ab_id is None or call_ac_id is None:
4628            return False
4629
4630        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4631            call_ab_id, call_ac_id)
4632
4633
4634    @TelephonyBaseTest.tel_test_wrap
4635    @test_tracker_info(uuid="cc362118-ccd1-4502-96f1-b3584b0c6bf3")
4636    def test_volte_mo_mo_add_wcdma_swap_once_merge_drop_first_call_from_participant_cep(
4637            self):
4638        """ Test swap and merge features in VoLTE call. CEP enabled.
4639
4640        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4641        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4642        3. Swap active call on PhoneA.
4643        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4644        5. End call on PhoneB, verify call continues.
4645        6. End call on PhoneC, verify call end on PhoneA.
4646
4647        Returns:
4648            True if pass; False if fail.
4649        """
4650        ads = self.android_devices
4651        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4652                                        ads=ads,
4653                                        num_swaps=1,
4654                                        phone_setup_a=phone_setup_volte,
4655                                        phone_setup_b=phone_setup_voice_3g,
4656                                        phone_setup_c=phone_setup_voice_3g,
4657                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4658                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4659                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4660        if call_ab_id is None or call_ac_id is None:
4661            return False
4662
4663        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
4664            call_ab_id, call_ac_id)
4665
4666
4667    @TelephonyBaseTest.tel_test_wrap
4668    @test_tracker_info(uuid="be57dd4f-020f-4491-9cd0-2461dcd0806b")
4669    def test_volte_mo_mo_add_wcdma_swap_once_merge_drop_first_call_from_host_cep(
4670            self):
4671        """ Test swap and merge features in VoLTE call. CEP enabled.
4672
4673        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4674        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4675        3. Swap active call on PhoneA.
4676        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4677        5. On PhoneA disconnect call between A-B, verify call continues.
4678        6. On PhoneA disconnect call between A-C, verify call continues.
4679
4680        Returns:
4681            True if pass; False if fail.
4682        """
4683        ads = self.android_devices
4684        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4685                                        ads=ads,
4686                                        num_swaps=1,
4687                                        phone_setup_a=phone_setup_volte,
4688                                        phone_setup_b=phone_setup_voice_3g,
4689                                        phone_setup_c=phone_setup_voice_3g,
4690                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4691                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4692                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4693        if call_ab_id is None or call_ac_id is None:
4694            return False
4695
4696        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4697            call_ab_id, call_ac_id)
4698
4699
4700    @TelephonyBaseTest.tel_test_wrap
4701    @test_tracker_info(uuid="058425ca-7b25-4a85-a5c7-bfdcd7920f15")
4702    def test_volte_mo_mo_add_wcdma_swap_twice_merge_drop_second_call_from_participant_no_cep(
4703            self):
4704        """ Test VoLTE Conference Call among three phones. No CEP.
4705
4706        PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4707        PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4708        Swap active call on PhoneA.
4709        Swap active call on PhoneA.
4710        On PhoneA, merge to conference call (No CEP).
4711        End call on PhoneC, verify call continues.
4712        End call on PhoneB, verify call end on PhoneA.
4713
4714        Returns:
4715            True if pass; False if fail.
4716        """
4717        ads = self.android_devices
4718        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4719                                        ads=ads,
4720                                        num_swaps=2,
4721                                        phone_setup_a=phone_setup_volte,
4722                                        phone_setup_b=phone_setup_voice_3g,
4723                                        phone_setup_c=phone_setup_voice_3g,
4724                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4725                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4726                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4727        if call_ab_id is None or call_ac_id is None:
4728            return False
4729
4730        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4731            call_ab_id, call_ac_id)
4732
4733
4734    @TelephonyBaseTest.tel_test_wrap
4735    @test_tracker_info(uuid="5f691165-d099-419d-a50e-1547c8677f6b")
4736    def test_volte_mo_mo_add_wcdma_swap_twice_merge_drop_second_call_from_participant_cep(
4737            self):
4738        """ Test swap and merge features in VoLTE call. CEP enabled.
4739
4740        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4741        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4742        3. Swap active call on PhoneA.
4743        4. Swap active call on PhoneA.
4744        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4745        6. End call on PhoneC, verify call continues.
4746        7. End call on PhoneB, verify call end on PhoneA.
4747
4748        Returns:
4749            True if pass; False if fail.
4750        """
4751        ads = self.android_devices
4752        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4753                                        ads=ads,
4754                                        num_swaps=2,
4755                                        phone_setup_a=phone_setup_volte,
4756                                        phone_setup_b=phone_setup_voice_3g,
4757                                        phone_setup_c=phone_setup_voice_3g,
4758                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4759                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4760                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4761        if call_ab_id is None or call_ac_id is None:
4762            return False
4763
4764        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4765            call_ab_id, call_ac_id)
4766
4767
4768    @TelephonyBaseTest.tel_test_wrap
4769    @test_tracker_info(uuid="4fc8459e-23c6-408a-a061-e8f182086dd6")
4770    def test_volte_mo_mo_add_wcdma_swap_twice_merge_drop_second_call_from_host_cep(
4771            self):
4772        """ Test swap and merge features in VoLTE call. CEP enabled.
4773
4774        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4775        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4776        3. Swap active call on PhoneA.
4777        4. Swap active call on PhoneA.
4778        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4779        6. On PhoneA disconnect call between A-C, verify call continues.
4780        7. On PhoneA disconnect call between A-B, verify call continues.
4781
4782        Returns:
4783            True if pass; False if fail.
4784        """
4785        ads = self.android_devices
4786        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4787                                        ads=ads,
4788                                        num_swaps=2,
4789                                        phone_setup_a=phone_setup_volte,
4790                                        phone_setup_b=phone_setup_voice_3g,
4791                                        phone_setup_c=phone_setup_voice_3g,
4792                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4793                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4794                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4795        if call_ab_id is None or call_ac_id is None:
4796            return False
4797
4798        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4799            call_ab_id, call_ac_id)
4800
4801
4802    @TelephonyBaseTest.tel_test_wrap
4803    @test_tracker_info(uuid="3026802f-ddca-41e4-ae6f-db0c994613a7")
4804    def test_volte_mo_mo_add_wcdma_swap_twice_merge_drop_first_call_from_participant_cep(
4805            self):
4806        """ Test swap and merge features in VoLTE call. CEP enabled.
4807
4808        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4809        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4810        3. Swap active call on PhoneA.
4811        4. Swap active call on PhoneA.
4812        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4813        6. End call on PhoneB, verify call continues.
4814        7. End call on PhoneC, verify call end on PhoneA.
4815
4816        Returns:
4817            True if pass; False if fail.
4818        """
4819        ads = self.android_devices
4820        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4821                                        ads=ads,
4822                                        num_swaps=2,
4823                                        phone_setup_a=phone_setup_volte,
4824                                        phone_setup_b=phone_setup_voice_3g,
4825                                        phone_setup_c=phone_setup_voice_3g,
4826                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4827                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4828                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4829        if call_ab_id is None or call_ac_id is None:
4830            return False
4831
4832        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
4833            call_ab_id, call_ac_id)
4834
4835
4836    @TelephonyBaseTest.tel_test_wrap
4837    @test_tracker_info(uuid="5ce98774-66b4-4710-b0da-e43bb7fa1c0f")
4838    def test_volte_mo_mo_add_wcdma_swap_twice_merge_drop_first_call_from_host_cep(
4839            self):
4840        """ Test swap and merge features in VoLTE call. CEP enabled.
4841
4842        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4843        2. PhoneA (VoLTE) call PhoneC (WCDMA), accept on PhoneC.
4844        3. Swap active call on PhoneA.
4845        4. Swap active call on PhoneA.
4846        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
4847        6. On PhoneA disconnect call between A-B, verify call continues.
4848        7. On PhoneA disconnect call between A-C, verify call continues.
4849
4850        Returns:
4851            True if pass; False if fail.
4852        """
4853        ads = self.android_devices
4854        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
4855                                        ads=ads,
4856                                        num_swaps=2,
4857                                        phone_setup_a=phone_setup_volte,
4858                                        phone_setup_b=phone_setup_voice_3g,
4859                                        phone_setup_c=phone_setup_voice_3g,
4860                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4861                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4862                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4863        if call_ab_id is None or call_ac_id is None:
4864            return False
4865
4866        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
4867            call_ab_id, call_ac_id)
4868
4869
4870    @TelephonyBaseTest.tel_test_wrap
4871    @test_tracker_info(uuid="61766517-8762-4db3-9366-609c0f1a43b5")
4872    def test_volte_mo_mt_add_wcdma_swap_once_merge_drop_second_call_from_participant_no_cep(
4873            self):
4874        """ Test VoLTE Conference Call among three phones. No CEP.
4875
4876        PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4877        PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
4878        Swap active call on PhoneA.
4879        On PhoneA, merge to conference call (No CEP).
4880        End call on PhoneC, verify call continues.
4881        End call on PhoneB, verify call end on PhoneA.
4882
4883        Returns:
4884            True if pass; False if fail.
4885        """
4886        ads = self.android_devices
4887        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4888                                        ads=ads,
4889                                        num_swaps=1,
4890                                        phone_setup_a=phone_setup_volte,
4891                                        phone_setup_b=phone_setup_voice_3g,
4892                                        phone_setup_c=phone_setup_voice_3g,
4893                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4894                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4895                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4896
4897        if call_ab_id is None or call_ac_id is None:
4898            return False
4899
4900        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4901            call_ab_id, call_ac_id)
4902
4903
4904    @TelephonyBaseTest.tel_test_wrap
4905    @test_tracker_info(uuid="9a809168-1ca4-4672-a5b3-934aeed0f06c")
4906    def test_volte_mo_mt_add_wcdma_swap_once_merge_drop_second_call_from_participant_cep(
4907            self):
4908        """ Test swap and merge features in VoLTE call. CEP enabled.
4909
4910        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4911        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
4912        3. Swap active call on PhoneA.
4913        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4914        5. End call on PhoneC, verify call continues.
4915        6. End call on PhoneB, verify call end on PhoneA.
4916
4917        Returns:
4918            True if pass; False if fail.
4919        """
4920        ads = self.android_devices
4921        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4922                                        ads=ads,
4923                                        num_swaps=1,
4924                                        phone_setup_a=phone_setup_volte,
4925                                        phone_setup_b=phone_setup_voice_3g,
4926                                        phone_setup_c=phone_setup_voice_3g,
4927                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4928                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4929                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4930        if call_ab_id is None or call_ac_id is None:
4931            return False
4932
4933        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
4934            call_ab_id, call_ac_id)
4935
4936
4937    @TelephonyBaseTest.tel_test_wrap
4938    @test_tracker_info(uuid="4a146608-fbc7-4828-b2ee-77e08c19ddec")
4939    def test_volte_mo_mt_add_wcdma_swap_once_merge_drop_second_call_from_host_cep(
4940            self):
4941        """ Test swap and merge features in VoLTE call. CEP enabled.
4942
4943        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4944        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
4945        3. Swap active call on PhoneA.
4946        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4947        5. On PhoneA disconnect call between A-C, verify call continues.
4948        6. On PhoneA disconnect call between A-B, verify call continues.
4949
4950        Returns:
4951            True if pass; False if fail.
4952        """
4953        ads = self.android_devices
4954        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4955                                        ads=ads,
4956                                        num_swaps=1,
4957                                        phone_setup_a=phone_setup_volte,
4958                                        phone_setup_b=phone_setup_voice_3g,
4959                                        phone_setup_c=phone_setup_voice_3g,
4960                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4961                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4962                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4963        if call_ab_id is None or call_ac_id is None:
4964            return False
4965
4966        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
4967            call_ab_id, call_ac_id)
4968
4969
4970    @TelephonyBaseTest.tel_test_wrap
4971    @test_tracker_info(uuid="4a3d4c0b-912a-4922-a4a3-f0bdf600c376")
4972    def test_volte_mo_mt_add_wcdma_swap_once_merge_drop_first_call_from_participant_cep(
4973            self):
4974        """ Test swap and merge features in VoLTE call. CEP enabled.
4975
4976        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
4977        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
4978        3. Swap active call on PhoneA.
4979        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
4980        5. End call on PhoneB, verify call continues.
4981        6. End call on PhoneC, verify call end on PhoneA.
4982
4983        Returns:
4984            True if pass; False if fail.
4985        """
4986        ads = self.android_devices
4987        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
4988                                        ads=ads,
4989                                        num_swaps=1,
4990                                        phone_setup_a=phone_setup_volte,
4991                                        phone_setup_b=phone_setup_voice_3g,
4992                                        phone_setup_c=phone_setup_voice_3g,
4993                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
4994                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
4995                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
4996        if call_ab_id is None or call_ac_id is None:
4997            return False
4998
4999        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5000            call_ab_id, call_ac_id)
5001
5002
5003    @TelephonyBaseTest.tel_test_wrap
5004    @test_tracker_info(uuid="614903e0-7091-4791-9af6-076799e43a97")
5005    def test_volte_mo_mt_add_wcdma_swap_once_merge_drop_first_call_from_host_cep(
5006            self):
5007        """ Test swap and merge features in VoLTE call. CEP enabled.
5008
5009        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5010        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5011        3. Swap active call on PhoneA.
5012        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5013        5. On PhoneA disconnect call between A-B, verify call continues.
5014        6. On PhoneA disconnect call between A-C, verify call continues.
5015
5016        Returns:
5017            True if pass; False if fail.
5018        """
5019        ads = self.android_devices
5020        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5021                                        ads=ads,
5022                                        num_swaps=1,
5023                                        phone_setup_a=phone_setup_volte,
5024                                        phone_setup_b=phone_setup_voice_3g,
5025                                        phone_setup_c=phone_setup_voice_3g,
5026                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5027                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5028                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5029        if call_ab_id is None or call_ac_id is None:
5030            return False
5031
5032        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5033            call_ab_id, call_ac_id)
5034
5035
5036    @TelephonyBaseTest.tel_test_wrap
5037    @test_tracker_info(uuid="cea2ffc9-b8c8-46df-8f58-b606f3d352e2")
5038    def test_volte_mo_mt_add_wcdma_swap_twice_merge_drop_second_call_from_participant_no_cep(
5039            self):
5040        """ Test VoLTE Conference Call among three phones. No CEP.
5041
5042        PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5043        PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5044        Swap active call on PhoneA.
5045        Swap active call on PhoneA.
5046        On PhoneA, merge to conference call (No CEP).
5047        End call on PhoneC, verify call continues.
5048        End call on PhoneB, verify call end on PhoneA.
5049
5050        Returns:
5051            True if pass; False if fail.
5052        """
5053        ads = self.android_devices
5054        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5055                                        ads=ads,
5056                                        num_swaps=2,
5057                                        phone_setup_a=phone_setup_volte,
5058                                        phone_setup_b=phone_setup_voice_3g,
5059                                        phone_setup_c=phone_setup_voice_3g,
5060                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5061                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5062                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5063        if call_ab_id is None or call_ac_id is None:
5064            return False
5065
5066        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5067            call_ab_id, call_ac_id)
5068
5069
5070    @TelephonyBaseTest.tel_test_wrap
5071    @test_tracker_info(uuid="4b0e040a-f199-4dc4-9f98-eb923f79814e")
5072    def test_volte_mo_mt_add_wcdma_swap_twice_merge_drop_second_call_from_participant_cep(
5073            self):
5074        """ Test swap and merge features in VoLTE call. CEP enabled.
5075
5076        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5077        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5078        3. Swap active call on PhoneA.
5079        4. Swap active call on PhoneA.
5080        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5081        6. End call on PhoneC, verify call continues.
5082        7. End call on PhoneB, verify call end on PhoneA.
5083
5084        Returns:
5085            True if pass; False if fail.
5086        """
5087        ads = self.android_devices
5088        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5089                                        ads=ads,
5090                                        num_swaps=2,
5091                                        phone_setup_a=phone_setup_volte,
5092                                        phone_setup_b=phone_setup_voice_3g,
5093                                        phone_setup_c=phone_setup_voice_3g,
5094                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5095                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5096                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5097        if call_ab_id is None or call_ac_id is None:
5098            return False
5099
5100        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5101            call_ab_id, call_ac_id)
5102
5103
5104    @TelephonyBaseTest.tel_test_wrap
5105    @test_tracker_info(uuid="56d45561-8e9b-40d4-bacc-a4c5ac4c2af0")
5106    def test_volte_mo_mt_add_wcdma_swap_twice_merge_drop_second_call_from_host_cep(
5107            self):
5108        """ Test swap and merge features in VoLTE call. CEP enabled.
5109
5110        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5111        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5112        3. Swap active call on PhoneA.
5113        4. Swap active call on PhoneA.
5114        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5115        6. On PhoneA disconnect call between A-C, verify call continues.
5116        7. On PhoneA disconnect call between A-B, verify call continues.
5117
5118        Returns:
5119            True if pass; False if fail.
5120        """
5121        ads = self.android_devices
5122        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5123                                        ads=ads,
5124                                        num_swaps=2,
5125                                        phone_setup_a=phone_setup_volte,
5126                                        phone_setup_b=phone_setup_voice_3g,
5127                                        phone_setup_c=phone_setup_voice_3g,
5128                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5129                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5130                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5131        if call_ab_id is None or call_ac_id is None:
5132            return False
5133
5134        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5135            call_ab_id, call_ac_id)
5136
5137
5138    @TelephonyBaseTest.tel_test_wrap
5139    @test_tracker_info(uuid="790ccd53-07e6-471b-a224-b7eeb3a83116")
5140    def test_volte_mo_mt_add_wcdma_swap_twice_merge_drop_first_call_from_participant_cep(
5141            self):
5142        """ Test swap and merge features in VoLTE call. CEP enabled.
5143
5144        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5145        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5146        3. Swap active call on PhoneA.
5147        4. Swap active call on PhoneA.
5148        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5149        6. End call on PhoneB, verify call continues.
5150        7. End call on PhoneC, verify call end on PhoneA.
5151
5152        Returns:
5153            True if pass; False if fail.
5154        """
5155        ads = self.android_devices
5156        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5157                                        ads=ads,
5158                                        num_swaps=2,
5159                                        phone_setup_a=phone_setup_volte,
5160                                        phone_setup_b=phone_setup_voice_3g,
5161                                        phone_setup_c=phone_setup_voice_3g,
5162                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5163                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5164                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5165        if call_ab_id is None or call_ac_id is None:
5166            return False
5167
5168        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5169            call_ab_id, call_ac_id)
5170
5171
5172    @TelephonyBaseTest.tel_test_wrap
5173    @test_tracker_info(uuid="84083401-22af-4568-929a-4fd29e39db5c")
5174    def test_volte_mo_mt_add_wcdma_swap_twice_merge_drop_first_call_from_host_cep(
5175            self):
5176        """ Test swap and merge features in VoLTE call. CEP enabled.
5177
5178        1. PhoneA (VoLTE) call PhoneB (WCDMA), accept on PhoneB.
5179        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5180        3. Swap active call on PhoneA.
5181        4. Swap active call on PhoneA.
5182        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5183        6. On PhoneA disconnect call between A-B, verify call continues.
5184        7. On PhoneA disconnect call between A-C, verify call continues.
5185
5186        Returns:
5187            True if pass; False if fail.
5188        """
5189        ads = self.android_devices
5190        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5191                                        ads=ads,
5192                                        num_swaps=2,
5193                                        phone_setup_a=phone_setup_volte,
5194                                        phone_setup_b=phone_setup_voice_3g,
5195                                        phone_setup_c=phone_setup_voice_3g,
5196                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5197                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5198                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5199        if call_ab_id is None or call_ac_id is None:
5200            return False
5201
5202        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5203            call_ab_id, call_ac_id)
5204
5205
5206    @TelephonyBaseTest.tel_test_wrap
5207    @test_tracker_info(uuid="11a3d9cd-6f05-4638-9683-3ee475e41fdb")
5208    def test_volte_mt_mt_add_wcdma_swap_once_merge_drop_second_call_from_participant_no_cep(
5209            self):
5210        """ Test VoLTE Conference Call among three phones. No CEP.
5211
5212        PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5213        PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5214        Swap active call on PhoneA.
5215        On PhoneA, merge to conference call (No CEP).
5216        End call on PhoneC, verify call continues.
5217        End call on PhoneB, verify call end on PhoneA.
5218
5219        Returns:
5220            True if pass; False if fail.
5221        """
5222        ads = self.android_devices
5223        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5224                                        ads=ads,
5225                                        num_swaps=1,
5226                                        phone_setup_a=phone_setup_volte,
5227                                        phone_setup_b=phone_setup_voice_3g,
5228                                        phone_setup_c=phone_setup_voice_3g,
5229                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5230                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5231                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5232        if call_ab_id is None or call_ac_id is None:
5233            return False
5234
5235        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5236            call_ab_id, call_ac_id)
5237
5238
5239    @TelephonyBaseTest.tel_test_wrap
5240    @test_tracker_info(uuid="ff03b64e-fccd-45e3-8245-f8c6cb328212")
5241    def test_volte_mt_mt_add_wcdma_swap_once_merge_drop_second_call_from_participant_cep(
5242            self):
5243        """ Test swap and merge features in VoLTE call. CEP enabled.
5244
5245        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5246        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5247        3. Swap active call on PhoneA.
5248        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5249        5. End call on PhoneC, verify call continues.
5250        6. End call on PhoneB, verify call end on PhoneA.
5251
5252        Returns:
5253            True if pass; False if fail.
5254        """
5255        ads = self.android_devices
5256        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5257                                        ads=ads,
5258                                        num_swaps=1,
5259                                        phone_setup_a=phone_setup_volte,
5260                                        phone_setup_b=phone_setup_voice_3g,
5261                                        phone_setup_c=phone_setup_voice_3g,
5262                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5263                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5264                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5265        if call_ab_id is None or call_ac_id is None:
5266            return False
5267
5268        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5269            call_ab_id, call_ac_id)
5270
5271
5272    @TelephonyBaseTest.tel_test_wrap
5273    @test_tracker_info(uuid="c1822404-df8e-4b0c-b5d2-f70bb8c3119d")
5274    def test_volte_mt_mt_add_wcdma_swap_once_merge_drop_second_call_from_host_cep(
5275            self):
5276        """ Test swap and merge features in VoLTE call. CEP enabled.
5277
5278        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5279        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5280        3. Swap active call on PhoneA.
5281        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5282        5. On PhoneA disconnect call between A-C, verify call continues.
5283        6. On PhoneA disconnect call between A-B, verify call continues.
5284
5285        Returns:
5286            True if pass; False if fail.
5287        """
5288        ads = self.android_devices
5289        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5290                                        ads=ads,
5291                                        num_swaps=1,
5292                                        phone_setup_a=phone_setup_volte,
5293                                        phone_setup_b=phone_setup_voice_3g,
5294                                        phone_setup_c=phone_setup_voice_3g,
5295                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5296                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5297                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5298        if call_ab_id is None or call_ac_id is None:
5299            return False
5300
5301        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5302            call_ab_id, call_ac_id)
5303
5304
5305    @TelephonyBaseTest.tel_test_wrap
5306    @test_tracker_info(uuid="3ebf7526-57f9-47f5-9196-b483384d6759")
5307    def test_volte_mt_mt_add_wcdma_swap_once_merge_drop_first_call_from_participant_cep(
5308            self):
5309        """ Test swap and merge features in VoLTE call. CEP enabled.
5310
5311        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5312        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5313        3. Swap active call on PhoneA.
5314        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5315        5. End call on PhoneB, verify call continues.
5316        6. End call on PhoneC, verify call end on PhoneA.
5317
5318        Returns:
5319            True if pass; False if fail.
5320        """
5321        ads = self.android_devices
5322        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5323                                        ads=ads,
5324                                        num_swaps=1,
5325                                        phone_setup_a=phone_setup_volte,
5326                                        phone_setup_b=phone_setup_voice_3g,
5327                                        phone_setup_c=phone_setup_voice_3g,
5328                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5329                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5330                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5331        if call_ab_id is None or call_ac_id is None:
5332            return False
5333
5334        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5335            call_ab_id, call_ac_id)
5336
5337
5338    @TelephonyBaseTest.tel_test_wrap
5339    @test_tracker_info(uuid="8b8e664d-e872-493f-bff9-34a9500b2c25")
5340    def test_volte_mt_mt_add_wcdma_swap_once_merge_drop_first_call_from_host_cep(
5341            self):
5342        """ Test swap and merge features in VoLTE call. CEP enabled.
5343
5344        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5345        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5346        3. Swap active call on PhoneA.
5347        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5348        5. On PhoneA disconnect call between A-B, verify call continues.
5349        6. On PhoneA disconnect call between A-C, verify call continues.
5350
5351        Returns:
5352            True if pass; False if fail.
5353        """
5354        ads = self.android_devices
5355        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5356                                        ads=ads,
5357                                        num_swaps=1,
5358                                        phone_setup_a=phone_setup_volte,
5359                                        phone_setup_b=phone_setup_voice_3g,
5360                                        phone_setup_c=phone_setup_voice_3g,
5361                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5362                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5363                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5364        if call_ab_id is None or call_ac_id is None:
5365            return False
5366
5367        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5368            call_ab_id, call_ac_id)
5369
5370
5371    @TelephonyBaseTest.tel_test_wrap
5372    @test_tracker_info(uuid="aa4079dd-b5c6-41a3-ae0f-99f17fd0bae0")
5373    def test_volte_mt_mt_add_wcdma_swap_twice_merge_drop_second_call_from_participant_no_cep(
5374            self):
5375        """ Test VoLTE Conference Call among three phones. No CEP.
5376
5377        PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5378        PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5379        Swap active call on PhoneA.
5380        Swap active call on PhoneA.
5381        On PhoneA, merge to conference call (No CEP).
5382        End call on PhoneC, verify call continues.
5383        End call on PhoneB, verify call end on PhoneA.
5384
5385        Returns:
5386            True if pass; False if fail.
5387        """
5388        ads = self.android_devices
5389        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5390                                        ads=ads,
5391                                        num_swaps=2,
5392                                        phone_setup_a=phone_setup_volte,
5393                                        phone_setup_b=phone_setup_voice_3g,
5394                                        phone_setup_c=phone_setup_voice_3g,
5395                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5396                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5397                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5398        if call_ab_id is None or call_ac_id is None:
5399            return False
5400
5401        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5402            call_ab_id, call_ac_id)
5403
5404
5405    @TelephonyBaseTest.tel_test_wrap
5406    @test_tracker_info(uuid="d9f32013-529c-46c3-9963-405ebbdbc537")
5407    def test_volte_mt_mt_add_wcdma_swap_twice_merge_drop_second_call_from_participant_cep(
5408            self):
5409        """ Test swap and merge features in VoLTE call. CEP enabled.
5410
5411        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5412        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5413        3. Swap active call on PhoneA.
5414        4. Swap active call on PhoneA.
5415        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5416        6. End call on PhoneC, verify call continues.
5417        7. End call on PhoneB, verify call end on PhoneA.
5418
5419        Returns:
5420            True if pass; False if fail.
5421        """
5422        ads = self.android_devices
5423        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5424                                        ads=ads,
5425                                        num_swaps=2,
5426                                        phone_setup_a=phone_setup_volte,
5427                                        phone_setup_b=phone_setup_voice_3g,
5428                                        phone_setup_c=phone_setup_voice_3g,
5429                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5430                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5431                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5432        if call_ab_id is None or call_ac_id is None:
5433            return False
5434
5435        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5436            call_ab_id, call_ac_id)
5437
5438
5439    @TelephonyBaseTest.tel_test_wrap
5440    @test_tracker_info(uuid="93331954-4403-47ec-8af3-1a791ea2fc8b")
5441    def test_volte_mt_mt_add_wcdma_swap_twice_merge_drop_second_call_from_host_cep(
5442            self):
5443        """ Test swap and merge features in VoLTE call. CEP enabled.
5444
5445        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5446        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5447        3. Swap active call on PhoneA.
5448        4. Swap active call on PhoneA.
5449        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5450        6. On PhoneA disconnect call between A-C, verify call continues.
5451        7. On PhoneA disconnect call between A-B, verify call continues.
5452
5453        Returns:
5454            True if pass; False if fail.
5455        """
5456        ads = self.android_devices
5457        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5458                                        ads=ads,
5459                                        num_swaps=2,
5460                                        phone_setup_a=phone_setup_volte,
5461                                        phone_setup_b=phone_setup_voice_3g,
5462                                        phone_setup_c=phone_setup_voice_3g,
5463                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5464                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5465                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5466        if call_ab_id is None or call_ac_id is None:
5467            return False
5468
5469        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5470            call_ab_id, call_ac_id)
5471
5472
5473    @TelephonyBaseTest.tel_test_wrap
5474    @test_tracker_info(uuid="c5a47e45-166b-46db-8b12-734d5d062509")
5475    def test_volte_mt_mt_add_wcdma_swap_twice_merge_drop_first_call_from_participant_cep(
5476            self):
5477        """ Test swap and merge features in VoLTE call. CEP enabled.
5478
5479        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5480        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5481        3. Swap active call on PhoneA.
5482        4. Swap active call on PhoneA.
5483        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5484        6. End call on PhoneB, verify call continues.
5485        7. End call on PhoneC, verify call end on PhoneA.
5486
5487        Returns:
5488            True if pass; False if fail.
5489        """
5490        ads = self.android_devices
5491        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5492                                        ads=ads,
5493                                        num_swaps=2,
5494                                        phone_setup_a=phone_setup_volte,
5495                                        phone_setup_b=phone_setup_voice_3g,
5496                                        phone_setup_c=phone_setup_voice_3g,
5497                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5498                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5499                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5500        if call_ab_id is None or call_ac_id is None:
5501            return False
5502
5503        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5504            call_ab_id, call_ac_id)
5505
5506
5507    @TelephonyBaseTest.tel_test_wrap
5508    @test_tracker_info(uuid="05bff9cf-492d-4511-ac0e-b54f1d5fa454")
5509    def test_volte_mt_mt_add_wcdma_swap_twice_merge_drop_first_call_from_host_cep(
5510            self):
5511        """ Test swap and merge features in VoLTE call. CEP enabled.
5512
5513        1. PhoneB (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5514        2. PhoneC (WCDMA) call PhoneA (VoLTE), accept on PhoneA.
5515        3. Swap active call on PhoneA.
5516        4. Swap active call on PhoneA.
5517        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5518        6. On PhoneA disconnect call between A-B, verify call continues.
5519        7. On PhoneA disconnect call between A-C, verify call continues.
5520
5521        Returns:
5522            True if pass; False if fail.
5523        """
5524        ads = self.android_devices
5525        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
5526                                        ads=ads,
5527                                        num_swaps=2,
5528                                        phone_setup_a=phone_setup_volte,
5529                                        phone_setup_b=phone_setup_voice_3g,
5530                                        phone_setup_c=phone_setup_voice_3g,
5531                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5532                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
5533                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
5534        if call_ab_id is None or call_ac_id is None:
5535            return False
5536
5537        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5538            call_ab_id, call_ac_id)
5539
5540
5541    @TelephonyBaseTest.tel_test_wrap
5542    @test_tracker_info(uuid="f02add29-d61a-42f4-a1f0-271815e03c45")
5543    def test_volte_mo_mo_add_1x_swap_once_merge_drop_second_call_from_participant_no_cep(
5544            self):
5545        """ Test swap and merge features in VoLTE call. No CEP.
5546
5547        PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5548        PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5549        Swap active call on PhoneA.
5550        On PhoneA, merge to conference call (No CEP).
5551        End call on PhoneC, verify call continues.
5552        End call on PhoneB, verify call end on PhoneA.
5553
5554        Returns:
5555            True if pass; False if fail.
5556        """
5557        ads = self.android_devices
5558        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5559                                        ads=ads,
5560                                        num_swaps=1,
5561                                        phone_setup_a=phone_setup_volte,
5562                                        phone_setup_b=phone_setup_voice_3g,
5563                                        phone_setup_c=phone_setup_voice_3g,
5564                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5565                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5566                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5567
5568        if call_ab_id is None or call_ac_id is None:
5569            return False
5570
5571        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5572            call_ab_id, call_ac_id)
5573
5574
5575    @TelephonyBaseTest.tel_test_wrap
5576    @test_tracker_info(uuid="776821e8-259b-441e-a126-45a990e6e14d")
5577    def test_volte_mo_mo_add_1x_swap_once_merge_drop_second_call_from_participant_cep(
5578            self):
5579        """ Test swap and merge features in VoLTE call. CEP enabled.
5580
5581        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5582        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5583        3. Swap active call on PhoneA.
5584        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5585        5. End call on PhoneC, verify call continues.
5586        6. End call on PhoneB, verify call end on PhoneA.
5587
5588        Returns:
5589            True if pass; False if fail.
5590        """
5591        ads = self.android_devices
5592        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5593                                        ads=ads,
5594                                        num_swaps=1,
5595                                        phone_setup_a=phone_setup_volte,
5596                                        phone_setup_b=phone_setup_voice_3g,
5597                                        phone_setup_c=phone_setup_voice_3g,
5598                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5599                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5600                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5601        if call_ab_id is None or call_ac_id is None:
5602            return False
5603
5604        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5605            call_ab_id, call_ac_id)
5606
5607
5608    @TelephonyBaseTest.tel_test_wrap
5609    @test_tracker_info(uuid="c542c999-d1c7-47f9-ba5c-50a582afa9e5")
5610    def test_volte_mo_mo_add_1x_swap_once_merge_drop_second_call_from_host_cep(
5611            self):
5612        """ Test swap and merge features in VoLTE call. CEP enabled.
5613
5614        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5615        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5616        3. Swap active call on PhoneA.
5617        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5618        5. On PhoneA disconnect call between A-C, verify call continues.
5619        6. On PhoneA disconnect call between A-B, verify call continues.
5620
5621        Returns:
5622            True if pass; False if fail.
5623        """
5624        ads = self.android_devices
5625        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5626                                        ads=ads,
5627                                        num_swaps=1,
5628                                        phone_setup_a=phone_setup_volte,
5629                                        phone_setup_b=phone_setup_voice_3g,
5630                                        phone_setup_c=phone_setup_voice_3g,
5631                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5632                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5633                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5634        if call_ab_id is None or call_ac_id is None:
5635            return False
5636
5637        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5638            call_ab_id, call_ac_id)
5639
5640
5641    @TelephonyBaseTest.tel_test_wrap
5642    @test_tracker_info(uuid="d40c681a-1bce-4012-a30c-774e6698ba3a")
5643    def test_volte_mo_mo_add_1x_swap_once_merge_drop_first_call_from_participant_cep(
5644            self):
5645        """ Test swap and merge features in VoLTE call. CEP enabled.
5646
5647        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5648        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5649        3. Swap active call on PhoneA.
5650        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5651        5. End call on PhoneB, verify call continues.
5652        6. End call on PhoneC, verify call end on PhoneA.
5653
5654        Returns:
5655            True if pass; False if fail.
5656        """
5657        ads = self.android_devices
5658        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5659                                        ads=ads,
5660                                        num_swaps=1,
5661                                        phone_setup_a=phone_setup_volte,
5662                                        phone_setup_b=phone_setup_voice_3g,
5663                                        phone_setup_c=phone_setup_voice_3g,
5664                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5665                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5666                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5667        if call_ab_id is None or call_ac_id is None:
5668            return False
5669
5670        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5671            call_ab_id, call_ac_id)
5672
5673
5674    @TelephonyBaseTest.tel_test_wrap
5675    @test_tracker_info(uuid="2805f272-5ada-4dd4-916a-36070905aec4")
5676    def test_volte_mo_mo_add_1x_swap_once_merge_drop_first_call_from_host_cep(
5677            self):
5678        """ Test swap and merge features in VoLTE call. CEP enabled.
5679
5680        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5681        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5682        3. Swap active call on PhoneA.
5683        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5684        5. On PhoneA disconnect call between A-B, verify call continues.
5685        6. On PhoneA disconnect call between A-C, verify call continues.
5686
5687        Returns:
5688            True if pass; False if fail.
5689        """
5690        ads = self.android_devices
5691        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5692                                        ads=ads,
5693                                        num_swaps=1,
5694                                        phone_setup_a=phone_setup_volte,
5695                                        phone_setup_b=phone_setup_voice_3g,
5696                                        phone_setup_c=phone_setup_voice_3g,
5697                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5698                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5699                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5700        if call_ab_id is None or call_ac_id is None:
5701            return False
5702
5703        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5704            call_ab_id, call_ac_id)
5705
5706
5707    @TelephonyBaseTest.tel_test_wrap
5708    @test_tracker_info(uuid="eb2d010c-ec32-409b-8272-5b950e0076f9")
5709    def test_volte_mo_mo_add_1x_swap_twice_merge_drop_second_call_from_participant_no_cep(
5710            self):
5711        """ Test swap and merge features in VoLTE call. No CEP.
5712
5713        PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5714        PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5715        Swap active call on PhoneA.
5716        Swap active call on PhoneA.
5717        On PhoneA, merge to conference call (No CEP).
5718        End call on PhoneC, verify call continues.
5719        End call on PhoneB, verify call end on PhoneA.
5720
5721        Returns:
5722            True if pass; False if fail.
5723        """
5724        ads = self.android_devices
5725        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5726                                        ads=ads,
5727                                        num_swaps=2,
5728                                        phone_setup_a=phone_setup_volte,
5729                                        phone_setup_b=phone_setup_voice_3g,
5730                                        phone_setup_c=phone_setup_voice_3g,
5731                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5732                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5733                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5734        if call_ab_id is None or call_ac_id is None:
5735            return False
5736
5737        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5738            call_ab_id, call_ac_id)
5739
5740
5741    @TelephonyBaseTest.tel_test_wrap
5742    @test_tracker_info(uuid="03bb2fa3-8596-4c66-8adb-a3f9c9085420")
5743    def test_volte_mo_mo_add_1x_swap_twice_merge_drop_second_call_from_participant_cep(
5744            self):
5745        """ Test swap and merge features in VoLTE call. CEP enabled.
5746
5747        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5748        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5749        3. Swap active call on PhoneA.
5750        4. Swap active call on PhoneA.
5751        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5752        6. End call on PhoneC, verify call continues.
5753        7. End call on PhoneB, verify call end on PhoneA.
5754
5755        Returns:
5756            True if pass; False if fail.
5757        """
5758        ads = self.android_devices
5759        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5760                                        ads=ads,
5761                                        num_swaps=2,
5762                                        phone_setup_a=phone_setup_volte,
5763                                        phone_setup_b=phone_setup_voice_3g,
5764                                        phone_setup_c=phone_setup_voice_3g,
5765                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5766                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5767                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5768        if call_ab_id is None or call_ac_id is None:
5769            return False
5770
5771        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5772            call_ab_id, call_ac_id)
5773
5774
5775    @TelephonyBaseTest.tel_test_wrap
5776    @test_tracker_info(uuid="df3bb0e7-7d72-487a-8cb8-fa75b86662ef")
5777    def test_volte_mo_mo_add_1x_swap_twice_merge_drop_second_call_from_host_cep(
5778            self):
5779        """ Test swap and merge features in VoLTE call. CEP enabled.
5780
5781        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5782        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5783        3. Swap active call on PhoneA.
5784        4. Swap active call on PhoneA.
5785        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5786        6. On PhoneA disconnect call between A-C, verify call continues.
5787        7. On PhoneA disconnect call between A-B, verify call continues.
5788
5789        Returns:
5790            True if pass; False if fail.
5791        """
5792        ads = self.android_devices
5793        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5794                                        ads=ads,
5795                                        num_swaps=2,
5796                                        phone_setup_a=phone_setup_volte,
5797                                        phone_setup_b=phone_setup_voice_3g,
5798                                        phone_setup_c=phone_setup_voice_3g,
5799                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5800                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5801                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5802        if call_ab_id is None or call_ac_id is None:
5803            return False
5804
5805        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5806            call_ab_id, call_ac_id)
5807
5808
5809    @TelephonyBaseTest.tel_test_wrap
5810    @test_tracker_info(uuid="3893ce25-0fad-4eb8-af35-f9ebf47c0615")
5811    def test_volte_mo_mo_add_1x_swap_twice_merge_drop_first_call_from_participant_cep(
5812            self):
5813        """ Test swap and merge features in VoLTE call. CEP enabled.
5814
5815        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5816        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5817        3. Swap active call on PhoneA.
5818        4. Swap active call on PhoneA.
5819        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5820        6. End call on PhoneB, verify call continues.
5821        7. End call on PhoneC, verify call end on PhoneA.
5822
5823        Returns:
5824            True if pass; False if fail.
5825        """
5826        ads = self.android_devices
5827        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5828                                        ads=ads,
5829                                        num_swaps=2,
5830                                        phone_setup_a=phone_setup_volte,
5831                                        phone_setup_b=phone_setup_voice_3g,
5832                                        phone_setup_c=phone_setup_voice_3g,
5833                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5834                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5835                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5836        if call_ab_id is None or call_ac_id is None:
5837            return False
5838
5839        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
5840            call_ab_id, call_ac_id)
5841
5842
5843    @TelephonyBaseTest.tel_test_wrap
5844    @test_tracker_info(uuid="fcd0e656-4e98-40f2-b0ce-5ed90c7c4a81")
5845    def test_volte_mo_mo_add_1x_swap_twice_merge_drop_first_call_from_host_cep(
5846            self):
5847        """ Test swap and merge features in VoLTE call. CEP enabled.
5848
5849        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5850        2. PhoneA (VoLTE) call PhoneC (1x), accept on PhoneC.
5851        3. Swap active call on PhoneA.
5852        4. Swap active call on PhoneA.
5853        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
5854        6. On PhoneA disconnect call between A-B, verify call continues.
5855        7. On PhoneA disconnect call between A-C, verify call continues.
5856
5857        Returns:
5858            True if pass; False if fail.
5859        """
5860        ads = self.android_devices
5861        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
5862                                        ads=ads,
5863                                        num_swaps=2,
5864                                        phone_setup_a=phone_setup_volte,
5865                                        phone_setup_b=phone_setup_voice_3g,
5866                                        phone_setup_c=phone_setup_voice_3g,
5867                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5868                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5869                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5870        if call_ab_id is None or call_ac_id is None:
5871            return False
5872
5873        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
5874            call_ab_id, call_ac_id)
5875
5876
5877    @TelephonyBaseTest.tel_test_wrap
5878    @test_tracker_info(uuid="009b5b45-d863-4891-8403-06656b542f3d")
5879    def test_volte_mo_mt_add_1x_swap_once_merge_drop_second_call_from_participant_no_cep(
5880            self):
5881        """ Test swap and merge features in VoLTE call. No CEP.
5882
5883        PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5884        PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
5885        Swap active call on PhoneA.
5886        On PhoneA, merge to conference call (No CEP).
5887        End call on PhoneC, verify call continues.
5888        End call on PhoneB, verify call end on PhoneA.
5889
5890        Returns:
5891            True if pass; False if fail.
5892        """
5893        ads = self.android_devices
5894        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5895                                        ads=ads,
5896                                        num_swaps=1,
5897                                        phone_setup_a=phone_setup_volte,
5898                                        phone_setup_b=phone_setup_voice_3g,
5899                                        phone_setup_c=phone_setup_voice_3g,
5900                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5901                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5902                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5903
5904        if call_ab_id is None or call_ac_id is None:
5905            return False
5906
5907        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5908            call_ab_id, call_ac_id)
5909
5910
5911    @TelephonyBaseTest.tel_test_wrap
5912    @test_tracker_info(uuid="8cfe9354-70db-4dbb-8950-b02e65f9d6ba")
5913    def test_volte_mo_mt_add_1x_swap_once_merge_drop_second_call_from_participant_cep(
5914            self):
5915        """ Test swap and merge features in VoLTE call. CEP enabled.
5916
5917        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5918        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
5919        3. Swap active call on PhoneA.
5920        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5921        5. End call on PhoneC, verify call continues.
5922        6. End call on PhoneB, verify call end on PhoneA.
5923
5924        Returns:
5925            True if pass; False if fail.
5926        """
5927        ads = self.android_devices
5928        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5929                                        ads=ads,
5930                                        num_swaps=1,
5931                                        phone_setup_a=phone_setup_volte,
5932                                        phone_setup_b=phone_setup_voice_3g,
5933                                        phone_setup_c=phone_setup_voice_3g,
5934                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5935                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5936                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5937        if call_ab_id is None or call_ac_id is None:
5938            return False
5939
5940        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
5941            call_ab_id, call_ac_id)
5942
5943
5944    @TelephonyBaseTest.tel_test_wrap
5945    @test_tracker_info(uuid="d2502a9f-b35a-4390-b664-300b8310b55a")
5946    def test_volte_mo_mt_add_1x_swap_once_merge_drop_second_call_from_host_cep(
5947            self):
5948        """ Test swap and merge features in VoLTE call. CEP enabled.
5949
5950        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5951        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
5952        3. Swap active call on PhoneA.
5953        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5954        5. On PhoneA disconnect call between A-C, verify call continues.
5955        6. On PhoneA disconnect call between A-B, verify call continues.
5956
5957        Returns:
5958            True if pass; False if fail.
5959        """
5960        ads = self.android_devices
5961        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5962                                        ads=ads,
5963                                        num_swaps=1,
5964                                        phone_setup_a=phone_setup_volte,
5965                                        phone_setup_b=phone_setup_voice_3g,
5966                                        phone_setup_c=phone_setup_voice_3g,
5967                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
5968                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
5969                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
5970        if call_ab_id is None or call_ac_id is None:
5971            return False
5972
5973        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
5974            call_ab_id, call_ac_id)
5975
5976
5977    @TelephonyBaseTest.tel_test_wrap
5978    @test_tracker_info(uuid="1fbddcd1-2268-4c2c-a737-c0bcbdc842cb")
5979    def test_volte_mo_mt_add_1x_swap_once_merge_drop_first_call_from_participant_cep(
5980            self):
5981        """ Test swap and merge features in VoLTE call. CEP enabled.
5982
5983        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
5984        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
5985        3. Swap active call on PhoneA.
5986        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
5987        5. End call on PhoneB, verify call continues.
5988        6. End call on PhoneC, verify call end on PhoneA.
5989
5990        Returns:
5991            True if pass; False if fail.
5992        """
5993        ads = self.android_devices
5994        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
5995                                        ads=ads,
5996                                        num_swaps=1,
5997                                        phone_setup_a=phone_setup_volte,
5998                                        phone_setup_b=phone_setup_voice_3g,
5999                                        phone_setup_c=phone_setup_voice_3g,
6000                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6001                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6002                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6003        if call_ab_id is None or call_ac_id is None:
6004            return False
6005
6006        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
6007            call_ab_id, call_ac_id)
6008
6009
6010    @TelephonyBaseTest.tel_test_wrap
6011    @test_tracker_info(uuid="91a33ca8-508b-457e-a72f-6fabd00b2453")
6012    def test_volte_mo_mt_add_1x_swap_once_merge_drop_first_call_from_host_cep(
6013            self):
6014        """ Test swap and merge features in VoLTE call. CEP enabled.
6015
6016        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6017        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6018        3. Swap active call on PhoneA.
6019        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
6020        5. On PhoneA disconnect call between A-B, verify call continues.
6021        6. On PhoneA disconnect call between A-C, verify call continues.
6022
6023        Returns:
6024            True if pass; False if fail.
6025        """
6026        ads = self.android_devices
6027        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6028                                        ads=ads,
6029                                        num_swaps=1,
6030                                        phone_setup_a=phone_setup_volte,
6031                                        phone_setup_b=phone_setup_voice_3g,
6032                                        phone_setup_c=phone_setup_voice_3g,
6033                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6034                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6035                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6036        if call_ab_id is None or call_ac_id is None:
6037            return False
6038
6039        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
6040            call_ab_id, call_ac_id)
6041
6042
6043    @TelephonyBaseTest.tel_test_wrap
6044    @test_tracker_info(uuid="3642995f-4de0-4327-86d6-c9e37416c7e7")
6045    def test_volte_mo_mt_add_1x_swap_twice_merge_drop_second_call_from_participant_no_cep(
6046            self):
6047        """ Test swap and merge features in VoLTE call. No CEP.
6048
6049        PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6050        PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6051        Swap active call on PhoneA.
6052        Swap active call on PhoneA.
6053        On PhoneA, merge to conference call (No CEP).
6054        End call on PhoneC, verify call continues.
6055        End call on PhoneB, verify call end on PhoneA.
6056
6057        Returns:
6058            True if pass; False if fail.
6059        """
6060        ads = self.android_devices
6061        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6062                                        ads=ads,
6063                                        num_swaps=2,
6064                                        phone_setup_a=phone_setup_volte,
6065                                        phone_setup_b=phone_setup_voice_3g,
6066                                        phone_setup_c=phone_setup_voice_3g,
6067                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6068                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6069                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6070        if call_ab_id is None or call_ac_id is None:
6071            return False
6072
6073        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6074            call_ab_id, call_ac_id)
6075
6076
6077    @TelephonyBaseTest.tel_test_wrap
6078    @test_tracker_info(uuid="dd11f3af-09af-4fa3-9c90-8497bbd8687e")
6079    def test_volte_mo_mt_add_1x_swap_twice_merge_drop_second_call_from_participant_cep(
6080            self):
6081        """ Test swap and merge features in VoLTE call. CEP enabled.
6082
6083        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6084        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6085        3. Swap active call on PhoneA.
6086        4. Swap active call on PhoneA.
6087        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6088        6. End call on PhoneC, verify call continues.
6089        7. End call on PhoneB, verify call end on PhoneA.
6090
6091        Returns:
6092            True if pass; False if fail.
6093        """
6094        ads = self.android_devices
6095        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6096                                        ads=ads,
6097                                        num_swaps=2,
6098                                        phone_setup_a=phone_setup_volte,
6099                                        phone_setup_b=phone_setup_voice_3g,
6100                                        phone_setup_c=phone_setup_voice_3g,
6101                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6102                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6103                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6104        if call_ab_id is None or call_ac_id is None:
6105            return False
6106
6107        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6108            call_ab_id, call_ac_id)
6109
6110
6111    @TelephonyBaseTest.tel_test_wrap
6112    @test_tracker_info(uuid="172360a1-47b2-430a-8a9c-cae6d29813b6")
6113    def test_volte_mo_mt_add_1x_swap_twice_merge_drop_second_call_from_host_cep(
6114            self):
6115        """ Test swap and merge features in VoLTE call. CEP enabled.
6116
6117        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6118        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6119        3. Swap active call on PhoneA.
6120        4. Swap active call on PhoneA.
6121        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6122        6. On PhoneA disconnect call between A-C, verify call continues.
6123        7. On PhoneA disconnect call between A-B, verify call continues.
6124
6125        Returns:
6126            True if pass; False if fail.
6127        """
6128        ads = self.android_devices
6129        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6130                                        ads=ads,
6131                                        num_swaps=2,
6132                                        phone_setup_a=phone_setup_volte,
6133                                        phone_setup_b=phone_setup_voice_3g,
6134                                        phone_setup_c=phone_setup_voice_3g,
6135                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6136                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6137                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6138        if call_ab_id is None or call_ac_id is None:
6139            return False
6140
6141        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
6142            call_ab_id, call_ac_id)
6143
6144
6145    @TelephonyBaseTest.tel_test_wrap
6146    @test_tracker_info(uuid="05d63cef-45b6-47df-8999-aac2e6ecfc9f")
6147    def test_volte_mo_mt_add_1x_swap_twice_merge_drop_first_call_from_participant_cep(
6148            self):
6149        """ Test swap and merge features in VoLTE call. CEP enabled.
6150
6151        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6152        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6153        3. Swap active call on PhoneA.
6154        4. Swap active call on PhoneA.
6155        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6156        6. End call on PhoneB, verify call continues.
6157        7. End call on PhoneC, verify call end on PhoneA.
6158
6159        Returns:
6160            True if pass; False if fail.
6161        """
6162        ads = self.android_devices
6163        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6164                                        ads=ads,
6165                                        num_swaps=2,
6166                                        phone_setup_a=phone_setup_volte,
6167                                        phone_setup_b=phone_setup_voice_3g,
6168                                        phone_setup_c=phone_setup_voice_3g,
6169                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6170                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6171                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6172        if call_ab_id is None or call_ac_id is None:
6173            return False
6174
6175        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
6176            call_ab_id, call_ac_id)
6177
6178
6179    @TelephonyBaseTest.tel_test_wrap
6180    @test_tracker_info(uuid="e02dfbc5-ffa3-4bff-a45e-1b3f4147005e")
6181    def test_volte_mo_mt_add_1x_swap_twice_merge_drop_first_call_from_host_cep(
6182            self):
6183        """ Test swap and merge features in VoLTE call. CEP enabled.
6184
6185        1. PhoneA (VoLTE) call PhoneB (1x), accept on PhoneB.
6186        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6187        3. Swap active call on PhoneA.
6188        4. Swap active call on PhoneA.
6189        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6190        6. On PhoneA disconnect call between A-B, verify call continues.
6191        7. On PhoneA disconnect call between A-C, verify call continues.
6192
6193        Returns:
6194            True if pass; False if fail.
6195        """
6196        ads = self.android_devices
6197        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6198                                        ads=ads,
6199                                        num_swaps=2,
6200                                        phone_setup_a=phone_setup_volte,
6201                                        phone_setup_b=phone_setup_voice_3g,
6202                                        phone_setup_c=phone_setup_voice_3g,
6203                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6204                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6205                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6206        if call_ab_id is None or call_ac_id is None:
6207            return False
6208
6209        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
6210            call_ab_id, call_ac_id)
6211
6212
6213    @TelephonyBaseTest.tel_test_wrap
6214    @test_tracker_info(uuid="55bb85a0-bfbd-4b97-bd94-871e82276875")
6215    def test_volte_mt_mt_add_1x_swap_once_merge_drop_second_call_from_participant_no_cep(
6216            self):
6217        """ Test swap and merge features in VoLTE call. No CEP.
6218
6219        PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6220        PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6221        Swap active call on PhoneA.
6222        On PhoneA, merge to conference call (No CEP).
6223        End call on PhoneC, verify call continues.
6224        End call on PhoneB, verify call end on PhoneA.
6225
6226        Returns:
6227            True if pass; False if fail.
6228        """
6229        ads = self.android_devices
6230        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6231                                        ads=ads,
6232                                        num_swaps=1,
6233                                        phone_setup_a=phone_setup_volte,
6234                                        phone_setup_b=phone_setup_voice_3g,
6235                                        phone_setup_c=phone_setup_voice_3g,
6236                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6237                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6238                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6239
6240        if call_ab_id is None or call_ac_id is None:
6241            return False
6242
6243        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6244            call_ab_id, call_ac_id)
6245
6246
6247    @TelephonyBaseTest.tel_test_wrap
6248    @test_tracker_info(uuid="31e71818-3522-4e04-8f26-ad26683f16d1")
6249    def test_volte_mt_mt_add_1x_swap_once_merge_drop_second_call_from_participant_cep(
6250            self):
6251        """ Test swap and merge features in VoLTE call. CEP enabled.
6252
6253        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6254        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6255        3. Swap active call on PhoneA.
6256        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
6257        5. End call on PhoneC, verify call continues.
6258        6. End call on PhoneB, verify call end on PhoneA.
6259
6260        Returns:
6261            True if pass; False if fail.
6262        """
6263        ads = self.android_devices
6264        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6265                                        ads=ads,
6266                                        num_swaps=1,
6267                                        phone_setup_a=phone_setup_volte,
6268                                        phone_setup_b=phone_setup_voice_3g,
6269                                        phone_setup_c=phone_setup_voice_3g,
6270                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6271                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6272                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6273        if call_ab_id is None or call_ac_id is None:
6274            return False
6275
6276        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6277            call_ab_id, call_ac_id)
6278
6279
6280    @TelephonyBaseTest.tel_test_wrap
6281    @test_tracker_info(uuid="0b51183d-3f92-4fe8-9487-64a72696a838")
6282    def test_volte_mt_mt_add_1x_swap_once_merge_drop_second_call_from_host_cep(
6283            self):
6284        """ Test swap and merge features in VoLTE call. CEP enabled.
6285
6286        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6287        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6288        3. Swap active call on PhoneA.
6289        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
6290        5. On PhoneA disconnect call between A-C, verify call continues.
6291        6. On PhoneA disconnect call between A-B, verify call continues.
6292
6293        Returns:
6294            True if pass; False if fail.
6295        """
6296        ads = self.android_devices
6297        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6298                                        ads=ads,
6299                                        num_swaps=1,
6300                                        phone_setup_a=phone_setup_volte,
6301                                        phone_setup_b=phone_setup_voice_3g,
6302                                        phone_setup_c=phone_setup_voice_3g,
6303                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6304                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6305                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6306        if call_ab_id is None or call_ac_id is None:
6307            return False
6308
6309        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
6310            call_ab_id, call_ac_id)
6311
6312
6313    @TelephonyBaseTest.tel_test_wrap
6314    @test_tracker_info(uuid="2aee2db7-fcd0-4b0a-aaa0-b946a14e91bd")
6315    def test_volte_mt_mt_add_1x_swap_once_merge_drop_first_call_from_participant_cep(
6316            self):
6317        """ Test swap and merge features in VoLTE call. CEP enabled.
6318
6319        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6320        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6321        3. Swap active call on PhoneA.
6322        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
6323        5. End call on PhoneB, verify call continues.
6324        6. End call on PhoneC, verify call end on PhoneA.
6325
6326        Returns:
6327            True if pass; False if fail.
6328        """
6329        ads = self.android_devices
6330        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6331                                        ads=ads,
6332                                        num_swaps=1,
6333                                        phone_setup_a=phone_setup_volte,
6334                                        phone_setup_b=phone_setup_voice_3g,
6335                                        phone_setup_c=phone_setup_voice_3g,
6336                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6337                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6338                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6339        if call_ab_id is None or call_ac_id is None:
6340            return False
6341
6342        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
6343            call_ab_id, call_ac_id)
6344
6345
6346    @TelephonyBaseTest.tel_test_wrap
6347    @test_tracker_info(uuid="d78bbe8e-6d39-4843-9eaa-47f06b6e9a95")
6348    def test_volte_mt_mt_add_1x_swap_once_merge_drop_first_call_from_host_cep(
6349            self):
6350        """ Test swap and merge features in VoLTE call. CEP enabled.
6351
6352        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6353        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6354        3. Swap active call on PhoneA.
6355        4. On PhoneA, merge to conference call (VoLTE CEP conference call).
6356        5. On PhoneA disconnect call between A-B, verify call continues.
6357        6. On PhoneA disconnect call between A-C, verify call continues.
6358
6359        Returns:
6360            True if pass; False if fail.
6361        """
6362        ads = self.android_devices
6363        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6364                                        ads=ads,
6365                                        num_swaps=1,
6366                                        phone_setup_a=phone_setup_volte,
6367                                        phone_setup_b=phone_setup_voice_3g,
6368                                        phone_setup_c=phone_setup_voice_3g,
6369                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6370                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6371                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6372        if call_ab_id is None or call_ac_id is None:
6373            return False
6374
6375        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
6376            call_ab_id, call_ac_id)
6377
6378
6379    @TelephonyBaseTest.tel_test_wrap
6380    @test_tracker_info(uuid="bbf4dcd8-3e1d-4ad0-a4fd-bf875e409f15")
6381    def test_volte_mt_mt_add_1x_swap_twice_merge_drop_second_call_from_participant_no_cep(
6382            self):
6383        """ Test swap and merge features in VoLTE call. No CEP.
6384
6385        PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6386        PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6387        Swap active call on PhoneA.
6388        Swap active call on PhoneA.
6389        On PhoneA, merge to conference call (No CEP).
6390        End call on PhoneC, verify call continues.
6391        End call on PhoneB, verify call end on PhoneA.
6392
6393        Returns:
6394            True if pass; False if fail.
6395        """
6396        ads = self.android_devices
6397        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6398                                        ads=ads,
6399                                        num_swaps=2,
6400                                        phone_setup_a=phone_setup_volte,
6401                                        phone_setup_b=phone_setup_voice_3g,
6402                                        phone_setup_c=phone_setup_voice_3g,
6403                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6404                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6405                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6406        if call_ab_id is None or call_ac_id is None:
6407            return False
6408
6409        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6410            call_ab_id, call_ac_id)
6411
6412
6413    @TelephonyBaseTest.tel_test_wrap
6414    @test_tracker_info(uuid="c222e199-497b-4c34-886d-b35592ccd3b2")
6415    def test_volte_mt_mt_add_1x_swap_twice_merge_drop_second_call_from_participant_cep(
6416            self):
6417        """ Test swap and merge features in VoLTE call. CEP enabled.
6418
6419        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6420        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6421        3. Swap active call on PhoneA.
6422        4. Swap active call on PhoneA.
6423        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6424        6. End call on PhoneC, verify call continues.
6425        7. End call on PhoneB, verify call end on PhoneA.
6426
6427        Returns:
6428            True if pass; False if fail.
6429        """
6430        ads = self.android_devices
6431        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6432                                        ads=ads,
6433                                        num_swaps=2,
6434                                        phone_setup_a=phone_setup_volte,
6435                                        phone_setup_b=phone_setup_voice_3g,
6436                                        phone_setup_c=phone_setup_voice_3g,
6437                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6438                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6439                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6440        if call_ab_id is None or call_ac_id is None:
6441            return False
6442
6443        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6444            call_ab_id, call_ac_id)
6445
6446
6447    @TelephonyBaseTest.tel_test_wrap
6448    @test_tracker_info(uuid="d916eef5-b942-48fe-9c63-be7e283b197d")
6449    def test_volte_mt_mt_add_1x_swap_twice_merge_drop_second_call_from_host_cep(
6450            self):
6451        """ Test swap and merge features in VoLTE call. CEP enabled.
6452
6453        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6454        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6455        3. Swap active call on PhoneA.
6456        4. Swap active call on PhoneA.
6457        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6458        6. On PhoneA disconnect call between A-C, verify call continues.
6459        7. On PhoneA disconnect call between A-B, verify call continues.
6460
6461        Returns:
6462            True if pass; False if fail.
6463        """
6464        ads = self.android_devices
6465        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6466                                        ads=ads,
6467                                        num_swaps=2,
6468                                        phone_setup_a=phone_setup_volte,
6469                                        phone_setup_b=phone_setup_voice_3g,
6470                                        phone_setup_c=phone_setup_voice_3g,
6471                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6472                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6473                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6474        if call_ab_id is None or call_ac_id is None:
6475            return False
6476
6477        return _test_ims_conference_merge_drop_second_call_from_host(self.log, self.android_devices,
6478            call_ab_id, call_ac_id)
6479
6480
6481    @TelephonyBaseTest.tel_test_wrap
6482    @test_tracker_info(uuid="e34acc9d-4389-4bc3-b34d-6b7e8173cadf")
6483    def test_volte_mt_mt_add_1x_swap_twice_merge_drop_first_call_from_participant_cep(
6484            self):
6485        """ Test swap and merge features in VoLTE call. CEP enabled.
6486
6487        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6488        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6489        3. Swap active call on PhoneA.
6490        4. Swap active call on PhoneA.
6491        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6492        6. End call on PhoneB, verify call continues.
6493        7. End call on PhoneC, verify call end on PhoneA.
6494
6495        Returns:
6496            True if pass; False if fail.
6497        """
6498        ads = self.android_devices
6499        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6500                                        ads=ads,
6501                                        num_swaps=2,
6502                                        phone_setup_a=phone_setup_volte,
6503                                        hone_setup_b=phone_setup_voice_3g,
6504                                        phone_setup_c=phone_setup_voice_3g,
6505                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6506                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6507                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6508        if call_ab_id is None or call_ac_id is None:
6509            return False
6510
6511        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
6512            call_ab_id, call_ac_id)
6513
6514
6515    @TelephonyBaseTest.tel_test_wrap
6516    @test_tracker_info(uuid="31ddc496-03a5-407f-b925-8cea04dbdae0")
6517    def test_volte_mt_mt_add_1x_swap_twice_merge_drop_first_call_from_host_cep(
6518            self):
6519        """ Test swap and merge features in VoLTE call. CEP enabled.
6520
6521        1. PhoneB (1x) call PhoneA (VoLTE), accept on PhoneA.
6522        2. PhoneC (1x) call PhoneA (VoLTE), accept on PhoneA.
6523        3. Swap active call on PhoneA.
6524        4. Swap active call on PhoneA.
6525        5. On PhoneA, merge to conference call (VoLTE CEP conference call).
6526        6. On PhoneA disconnect call between A-B, verify call continues.
6527        7. On PhoneA disconnect call between A-C, verify call continues.
6528
6529        Returns:
6530            True if pass; False if fail.
6531        """
6532        ads = self.android_devices
6533        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6534                                        ads=ads,
6535                                        num_swaps=2,
6536                                        phone_setup_a=phone_setup_volte,
6537                                        phone_setup_b=phone_setup_voice_3g,
6538                                        phone_setup_c=phone_setup_voice_3g,
6539                                        verify_phone_a_network_subscription=is_phone_in_call_volte,
6540                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
6541                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
6542        if call_ab_id is None or call_ac_id is None:
6543            return False
6544
6545        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
6546            call_ab_id, call_ac_id)
6547
6548
6549    @TelephonyBaseTest.tel_test_wrap
6550    @test_tracker_info(uuid="35b6fa0f-780f-4436-93a0-70f9b79bc71a")
6551    def test_csfb_wcdma_mo_mo_add_swap_once_merge_drop(self):
6552        """Test swap and merge feature in CSFB WCDMA call.
6553
6554        PhoneA (CSFB_WCDMA) call PhoneB, accept on PhoneB.
6555        PhoneA (CSFB_WCDMA) call PhoneC, accept on PhoneC.
6556        Swap active call on PhoneA.
6557        Merge calls to conference on PhoneA.
6558        Hangup on PhoneC, check call continues between AB.
6559        Hangup on PhoneB, check A ends.
6560
6561        """
6562        ads = self.android_devices
6563        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
6564                                        ads=ads,
6565                                        num_swaps=1,
6566                                        phone_setup_a=phone_setup_csfb,
6567                                        phone_setup_b=phone_setup_voice_general,
6568                                        phone_setup_c=phone_setup_voice_general,
6569                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
6570                                        verify_phone_b_network_subscription=None,
6571                                        verify_phone_c_network_subscription=None)
6572        if call_ab_id is None or call_ac_id is None:
6573            return False
6574
6575        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6576
6577
6578    @TelephonyBaseTest.tel_test_wrap
6579    @test_tracker_info(uuid="9102ce81-0c17-4c7a-93df-f240245a07c5")
6580    def test_csfb_wcdma_mo_mo_add_swap_twice_merge_drop(self):
6581        """Test swap and merge feature in CSFB WCDMA call.
6582
6583        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
6584        PhoneA (CSFB WCDMA) call PhoneC, accept on PhoneC.
6585        Swap active call on PhoneA.
6586        Swap active call on PhoneA.
6587        Merge calls to conference on PhoneA.
6588        Hangup on PhoneC, check call continues between AB.
6589        Hangup on PhoneB, check A ends.
6590
6591        """
6592        ads = self.android_devices
6593        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
6594                                        ads=ads,
6595                                        num_swaps=2,
6596                                        phone_setup_a=phone_setup_csfb,
6597                                        phone_setup_b=phone_setup_voice_general,
6598                                        phone_setup_c=phone_setup_voice_general,
6599                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
6600                                        verify_phone_b_network_subscription=None,
6601                                        verify_phone_c_network_subscription=None)
6602        if call_ab_id is None or call_ac_id is None:
6603            return False
6604
6605        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6606
6607
6608    @TelephonyBaseTest.tel_test_wrap
6609    @test_tracker_info(uuid="b85ff5a7-f512-4585-a6b1-d92c9e7c25de")
6610    def test_csfb_wcdma_mo_mt_add_swap_once_merge_drop(self):
6611        """Test swap and merge feature in CSFB WCDMA call.
6612
6613        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
6614        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
6615        Swap active call on PhoneA.
6616        Merge calls to conference on PhoneA.
6617        Hangup on PhoneC, check call continues between AB.
6618        Hangup on PhoneB, check A ends.
6619
6620        """
6621        ads = self.android_devices
6622        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6623                                        ads=ads,
6624                                        num_swaps=1,
6625                                        phone_setup_a=phone_setup_csfb,
6626                                        phone_setup_b=phone_setup_voice_general,
6627                                        phone_setup_c=phone_setup_voice_general,
6628                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
6629                                        verify_phone_b_network_subscription=None,
6630                                        verify_phone_c_network_subscription=None)
6631        if call_ab_id is None or call_ac_id is None:
6632            return False
6633
6634        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6635
6636
6637    @TelephonyBaseTest.tel_test_wrap
6638    @test_tracker_info(uuid="83a74ce1-9028-4e67-a417-599616ab0b2c")
6639    def test_csfb_wcdma_mo_mt_add_swap_twice_merge_drop(self):
6640        """Test swap and merge feature in CSFB WCDMA call.
6641
6642        PhoneA (CSFB WCDMA) call PhoneB, accept on PhoneB.
6643        PhoneC call PhoneA (CSFB WCDMA), accept on PhoneA.
6644        Swap active call on PhoneA.
6645        Swap active call on PhoneA.
6646        Merge calls to conference on PhoneA.
6647        Hangup on PhoneC, check call continues between AB.
6648        Hangup on PhoneB, check A ends.
6649
6650        """
6651        ads = self.android_devices
6652        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6653                                        ads=ads,
6654                                        num_swaps=2,
6655                                        phone_setup_a=phone_setup_csfb,
6656                                        phone_setup_b=phone_setup_voice_general,
6657                                        phone_setup_c=phone_setup_voice_general,
6658                                        verify_phone_a_network_subscription=is_phone_in_call_csfb,
6659                                        verify_phone_b_network_subscription=None,
6660                                        verify_phone_c_network_subscription=None)
6661        if call_ab_id is None or call_ac_id is None:
6662            return False
6663
6664        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6665
6666
6667    @TelephonyBaseTest.tel_test_wrap
6668    @test_tracker_info(uuid="835fe3d6-4e44-451c-9c5f-277b8842bf10")
6669    def test_wcdma_mo_mo_add_swap_once_merge_drop(self):
6670        """Test swap and merge feature in WCDMA call.
6671
6672        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
6673        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
6674        Swap active call on PhoneA.
6675        Merge calls to conference on PhoneA.
6676        Hangup on PhoneC, check call continues between AB.
6677        Hangup on PhoneB, check A ends.
6678
6679        """
6680        ads = self.android_devices
6681        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
6682                                           ads=ads,
6683                                           num_swaps=1,
6684                                           phone_setup_a=phone_setup_voice_3g,
6685                                           phone_setup_b=phone_setup_voice_general,
6686                                           phone_setup_c=phone_setup_voice_general,
6687                                           verify_phone_a_network_subscription=is_phone_in_call_3g,
6688                                           verify_phone_b_network_subscription=None,
6689                                           verify_phone_c_network_subscription=None)
6690        if call_ab_id is None or call_ac_id is None:
6691            return False
6692
6693        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6694
6695
6696    @TelephonyBaseTest.tel_test_wrap
6697    @test_tracker_info(uuid="627eb239-c6f6-47dc-b4cf-8d1796599417")
6698    def test_wcdma_mo_mo_add_swap_twice_merge_drop(self):
6699        """Test swap and merge feature in WCDMA call.
6700
6701        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
6702        PhoneA (WCDMA) call PhoneC, accept on PhoneC.
6703        Swap active call on PhoneA.
6704        Swap active call on PhoneA.
6705        Merge calls to conference on PhoneA.
6706        Hangup on PhoneC, check call continues between AB.
6707        Hangup on PhoneB, check A ends.
6708
6709        """
6710        ads = self.android_devices
6711        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
6712                                            ads=ads,
6713                                            num_swaps=2,
6714                                            phone_setup_a=phone_setup_voice_3g,
6715                                            phone_setup_b=phone_setup_voice_general,
6716                                            phone_setup_c=phone_setup_voice_general,
6717                                            verify_phone_a_network_subscription=is_phone_in_call_3g,
6718                                            verify_phone_b_network_subscription=None,
6719                                            verify_phone_c_network_subscription=None)
6720        if call_ab_id is None or call_ac_id is None:
6721            return False
6722
6723        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6724
6725
6726    @TelephonyBaseTest.tel_test_wrap
6727    @test_tracker_info(uuid="571efb21-0ed5-4871-a7d8-f86d94e0ef25")
6728    def test_wcdma_mo_mt_add_swap_once_merge_drop(self):
6729        """Test swap and merge feature in WCDMA call.
6730
6731        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
6732        PhoneC call PhoneA (WCDMA), accept on PhoneA.
6733        Swap active call on PhoneA.
6734        Merge calls to conference on PhoneA.
6735        Hangup on PhoneC, check call continues between AB.
6736        Hangup on PhoneB, check A ends.
6737
6738        """
6739        ads = self.android_devices
6740        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6741                                        ads=ads,
6742                                        num_swaps=1,
6743                                        phone_setup_a=phone_setup_voice_3g,
6744                                        phone_setup_b=phone_setup_voice_general,
6745                                        phone_setup_c=phone_setup_voice_general,
6746                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
6747                                        verify_phone_b_network_subscription=None,
6748                                        verify_phone_c_network_subscription=None)
6749
6750        if call_ab_id is None or call_ac_id is None:
6751            return False
6752
6753        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6754
6755
6756    @TelephonyBaseTest.tel_test_wrap
6757    @test_tracker_info(uuid="c981a90a-19b8-4582-a07c-1e9447fbe9ae")
6758    def test_wcdma_mo_mt_add_swap_twice_merge_drop(self):
6759        """Test swap and merge feature in WCDMA call.
6760
6761        PhoneA (WCDMA) call PhoneB, accept on PhoneB.
6762        PhoneC call PhoneA (WCDMA), accept on PhoneA.
6763        Swap active call on PhoneA.
6764        Swap active call on PhoneA.
6765        Merge calls to conference on PhoneA.
6766        Hangup on PhoneC, check call continues between AB.
6767        Hangup on PhoneB, check A ends.
6768
6769        """
6770        ads = self.android_devices
6771        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
6772                                        ads=ads,
6773                                        num_swaps=2,
6774                                        phone_setup_a=phone_setup_voice_3g,
6775                                        phone_setup_b=phone_setup_voice_general,
6776                                        phone_setup_c=phone_setup_voice_general,
6777                                        verify_phone_a_network_subscription=is_phone_in_call_wcdma,
6778                                        verify_phone_b_network_subscription=None,
6779                                        verify_phone_c_network_subscription=None)
6780        if call_ab_id is None or call_ac_id is None:
6781            return False
6782
6783        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6784
6785
6786    @TelephonyBaseTest.tel_test_wrap
6787    @test_tracker_info(uuid="23843881-320b-4071-bbc8-93cd1ee08408")
6788    def test_wcdma_mt_mt_add_swap_once_merge_drop(self):
6789        """Test swap and merge feature in WCDMA call.
6790
6791        PhoneB call PhoneA (WCDMA), accept on PhoneA.
6792        PhoneC call PhoneA (WCDMA), accept on PhoneA.
6793        Swap active call on PhoneA.
6794        Merge calls to conference on PhoneA.
6795        Hangup on PhoneC, check call continues between AB.
6796        Hangup on PhoneB, check A ends.
6797
6798        """
6799        ads = self.android_devices
6800        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6801                                           ads=ads,
6802                                           num_swaps=1,
6803                                           phone_setup_a=phone_setup_voice_3g,
6804                                           phone_setup_b=phone_setup_voice_general,
6805                                           phone_setup_c=phone_setup_voice_general,
6806                                           verify_phone_a_network_subscription=is_phone_in_call_3g,
6807                                           verify_phone_b_network_subscription=None,
6808                                           verify_phone_c_network_subscription=None)
6809        if call_ab_id is None or call_ac_id is None:
6810            return False
6811
6812        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6813
6814
6815    @TelephonyBaseTest.tel_test_wrap
6816    @test_tracker_info(uuid="e447ec45-016c-4723-a954-4bde2e342cb2")
6817    def test_wcdma_mt_mt_add_swap_twice_merge_drop(self):
6818        """Test swap and merge feature in WCDMA call.
6819
6820        PhoneB call PhoneA (WCDMA), accept on PhoneA.
6821        PhoneC call PhoneA (WCDMA), accept on PhoneA.
6822        Swap active call on PhoneA.
6823        Swap active call on PhoneA.
6824        Merge calls to conference on PhoneA.
6825        Hangup on PhoneC, check call continues between AB.
6826        Hangup on PhoneB, check A ends.
6827
6828        """
6829        ads = self.android_devices
6830        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6831                                            ads=ads,
6832                                            num_swaps=2,
6833                                            phone_setup_a=phone_setup_voice_3g,
6834                                            phone_setup_b=phone_setup_voice_general,
6835                                            phone_setup_c=phone_setup_voice_general,
6836                                            verify_phone_a_network_subscription=is_phone_in_call_3g,
6837                                            verify_phone_b_network_subscription=None,
6838                                            verify_phone_c_network_subscription=None)
6839        if call_ab_id is None or call_ac_id is None:
6840            return False
6841
6842        return _test_wcdma_conference_merge_drop(self.log, ads, call_ab_id, call_ac_id)
6843
6844
6845    @TelephonyBaseTest.tel_test_wrap
6846    @test_tracker_info(uuid="876dc6b2-75c2-4fb5-92a0-35d3d29fbd42")
6847    def test_wcdma_mt_mt_add_merge_unmerge_swap_drop(self):
6848        """Test Conference Call Unmerge operation.
6849
6850        Phones A, B, C are in WCDMA Conference call (MT-MT-Merge)
6851        Unmerge call with B on PhoneA
6852        Check the number of Call Ids to be 2 on PhoneA
6853        Check if call AB is active since 'B' was unmerged
6854        Swap call to C
6855        Check if call AC is active
6856        Tear down calls
6857        All Phones should be in Idle
6858
6859        """
6860        ads = self.android_devices
6861        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
6862                                            ads=ads,
6863                                            num_swaps=0,
6864                                            phone_setup_a=phone_setup_voice_3g,
6865                                            phone_setup_b=phone_setup_voice_general,
6866                                            phone_setup_c=phone_setup_voice_general,
6867                                            verify_phone_a_network_subscription=is_phone_in_call_3g,
6868                                            verify_phone_b_network_subscription=None,
6869                                            verify_phone_c_network_subscription=None)
6870        if call_ab_id is None or call_ac_id is None:
6871            self.log.error("Either of Call AB ID or Call AC ID is None.")
6872            return False
6873
6874        self.log.info("Step4: Merge to Conf Call and verify Conf Call.")
6875        ads[0].droid.telecomCallJoinCallsInConf(call_ab_id, call_ac_id)
6876        time.sleep(WAIT_TIME_IN_CALL)
6877        calls = ads[0].droid.telecomCallGetCallIds()
6878        ads[0].log.info("Calls in PhoneA %s", calls)
6879        if num_active_calls(self.log, ads[0]) != 3:
6880            ads[0].log.error("Total number of call ids is not 3.")
6881            return False
6882        call_conf_id = None
6883        for call_id in calls:
6884            if call_id != call_ab_id and call_id != call_ac_id:
6885                call_conf_id = call_id
6886        if not call_conf_id:
6887            self.log.error("Merge call fail, no new conference call id.")
6888            return False
6889        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
6890            return False
6891
6892        # Check if Conf Call currently active
6893        if ads[0].droid.telecomCallGetCallState(
6894                call_conf_id) != CALL_STATE_ACTIVE:
6895            ads[0].log.error(
6896                "Call_id: %s, state: %s, expected: STATE_ACTIVE", call_conf_id,
6897                ads[0].droid.telecomCallGetCallState(call_conf_id))
6898            return False
6899
6900        # Unmerge
6901        self.log.info("Step5: UnMerge Conf Call into individual participants.")
6902        ads[0].droid.telecomCallSplitFromConf(call_ab_id)
6903        time.sleep(WAIT_TIME_IN_CALL)
6904        calls = ads[0].droid.telecomCallGetCallIds()
6905        ads[0].log.info("Calls in PhoneA %s", calls)
6906
6907        # Are there 2 calls?
6908        if num_active_calls(self.log, ads[0]) != 2:
6909            ads[0].log.error("Total number of call ids is not 2")
6910            return False
6911
6912        # Unmerged calls not dropped?
6913        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
6914            self.log.error("Either Call_AB or Call_AC was dropped")
6915            return False
6916
6917        # Unmerged call in call state ACTIVE?
6918        if ads[0].droid.telecomCallGetCallState(
6919                call_ab_id) != CALL_STATE_ACTIVE:
6920            ads[0].log.error("Call_id: %s, state:%s, expected: STATE_ACTIVE",
6921                             call_ab_id,
6922                             ads[0].droid.telecomCallGetCallState(call_ab_id))
6923            return False
6924
6925        # Swap call
6926        self.log.info("Step6: Swap call and see if Call_AC is ACTIVE.")
6927        num_swaps = 1
6928        if not swap_calls(self.log, ads, call_ac_id, call_ab_id, num_swaps):
6929            self.log.error("Failed to swap calls.")
6930            return False
6931
6932        # Other call in call state ACTIVE?
6933        if ads[0].droid.telecomCallGetCallState(
6934                call_ac_id) != CALL_STATE_ACTIVE:
6935            ads[0].log.error("Call_id: %s, state: %s, expected: STATE_ACTIVE",
6936                             call_ac_id,
6937                             ads[0].droid.telecomCallGetCallState(call_ac_id))
6938            return False
6939
6940        # All calls still CONNECTED?
6941        return _three_phone_hangup_call_verify_call_state(log=self.log,
6942            ad_hangup=ads[2],
6943            ad_verify=ads[0],
6944            call_id=call_ab_id,
6945            call_state=_get_expected_call_state(ads[0]),
6946            ads_active=[ads[0], ads[1]])
6947
6948
6949    @TelephonyBaseTest.tel_test_wrap
6950    @test_tracker_info(uuid="63da439e-23f3-4c3c-9e7e-3af6500342c5")
6951    def test_epdg_mo_mo_add_epdg_merge_drop_wfc_wifi_only(self):
6952        """ Test Conf Call among three phones.
6953
6954        Call from PhoneA (epdg) to PhoneB (epdg), accept on PhoneB.
6955        Call from PhoneA (epdg) to PhoneC (epdg), accept on PhoneC.
6956        On PhoneA, merge to conference call.
6957        End call on PhoneC, verify call continues.
6958        End call on PhoneB, verify call end on PhoneA.
6959
6960        Returns:
6961            True if pass; False if fail.
6962        """
6963        ads = self.android_devices
6964
6965        tasks = [(phone_setup_iwlan,
6966                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
6967                   self.wifi_network_ssid, self.wifi_network_pass)),
6968                 (phone_setup_iwlan,
6969                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
6970                   self.wifi_network_ssid, self.wifi_network_pass)),
6971                 (phone_setup_iwlan,
6972                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
6973                   self.wifi_network_ssid, self.wifi_network_pass))]
6974        if not multithread_func(self.log, tasks):
6975            self.log.error("Phone Failed to Set Up Properly.")
6976            return False
6977
6978        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
6979                                     ads=ads,
6980                                     num_swaps=0,
6981                                     phone_setup_a=None,
6982                                     phone_setup_b=None,
6983                                     phone_setup_c=None,
6984                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
6985                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
6986                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
6987
6988        if call_ab_id is None or call_ac_id is None:
6989            return False
6990
6991        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
6992                                                                            call_ab_id, call_ac_id)
6993
6994
6995    @TelephonyBaseTest.tel_test_wrap
6996    @test_tracker_info(uuid="89b9f228-97a6-4e5c-96b9-a7f87d847c22")
6997    def test_epdg_mo_mo_add_epdg_merge_drop_wfc_wifi_preferred(self):
6998        """ Test Conf Call among three phones.
6999
7000        Call from PhoneA (epdg) to PhoneB (epdg), accept on PhoneB.
7001        Call from PhoneA (epdg) to PhoneC (epdg), accept on PhoneC.
7002        On PhoneA, merge to conference call.
7003        End call on PhoneC, verify call continues.
7004        End call on PhoneB, verify call end on PhoneA.
7005
7006        Returns:
7007            True if pass; False if fail.
7008        """
7009        ads = self.android_devices
7010
7011        tasks = [(phone_setup_iwlan,
7012                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7013                   self.wifi_network_ssid, self.wifi_network_pass)),
7014                 (phone_setup_iwlan,
7015                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7016                   self.wifi_network_ssid, self.wifi_network_pass)),
7017                 (phone_setup_iwlan,
7018                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7019                   self.wifi_network_ssid, self.wifi_network_pass))]
7020        if not multithread_func(self.log, tasks):
7021            self.log.error("Phone Failed to Set Up Properly.")
7022            return False
7023
7024        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7025                                     ads=ads,
7026                                     num_swaps=0,
7027                                     phone_setup_a=None,
7028                                     phone_setup_b=None,
7029                                     phone_setup_c=None,
7030                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7031                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7032                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7033        if call_ab_id is None or call_ac_id is None:
7034            return False
7035
7036        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7037            call_ab_id, call_ac_id)
7038
7039
7040    @TelephonyBaseTest.tel_test_wrap
7041    @test_tracker_info(uuid="2c6dc281-59b0-4ea4-b811-e4c3a4d654ab")
7042    def test_epdg_mo_mt_add_epdg_merge_drop_wfc_wifi_only(self):
7043        """ Test Conf Call among three phones.
7044
7045        Call from PhoneA (epdg) to PhoneB (epdg), accept on PhoneB.
7046        Call from PhoneC (epdg) to PhoneA (epdg), accept on PhoneA.
7047        On PhoneA, merge to conference call.
7048        End call on PhoneC, verify call continues.
7049        End call on PhoneB, verify call end on PhoneA.
7050
7051        Returns:
7052            True if pass; False if fail.
7053        """
7054        ads = self.android_devices
7055
7056        tasks = [(phone_setup_iwlan,
7057                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7058                   self.wifi_network_ssid, self.wifi_network_pass)),
7059                 (phone_setup_iwlan,
7060                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
7061                   self.wifi_network_ssid, self.wifi_network_pass)),
7062                 (phone_setup_iwlan,
7063                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
7064                   self.wifi_network_ssid, self.wifi_network_pass))]
7065        if not multithread_func(self.log, tasks):
7066            self.log.error("Phone Failed to Set Up Properly.")
7067            return False
7068
7069        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7070                                     ads=ads,
7071                                     num_swaps=0,
7072                                     phone_setup_a=None,
7073                                     phone_setup_b=None,
7074                                     phone_setup_c=None,
7075                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7076                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7077                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7078
7079        if call_ab_id is None or call_ac_id is None:
7080            return False
7081
7082        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7083            call_ab_id, call_ac_id)
7084
7085
7086    @TelephonyBaseTest.tel_test_wrap
7087    @test_tracker_info(uuid="f6727241-b727-4eb8-8c0d-f61d3a14a635")
7088    def test_epdg_mo_mt_add_epdg_merge_drop_wfc_wifi_preferred(self):
7089        """ Test Conf Call among three phones.
7090
7091        Call from PhoneA (epdg) to PhoneB (epdg), accept on PhoneB.
7092        Call from PhoneC (epdg) to PhoneA (epdg), accept on PhoneA.
7093        On PhoneA, merge to conference call.
7094        End call on PhoneC, verify call continues.
7095        End call on PhoneB, verify call end on PhoneA.
7096
7097        Returns:
7098            True if pass; False if fail.
7099        """
7100        ads = self.android_devices
7101
7102        tasks = [(phone_setup_iwlan,
7103                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7104                   self.wifi_network_ssid, self.wifi_network_pass)),
7105                 (phone_setup_iwlan,
7106                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7107                   self.wifi_network_ssid, self.wifi_network_pass)),
7108                 (phone_setup_iwlan,
7109                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7110                   self.wifi_network_ssid, self.wifi_network_pass))]
7111        if not multithread_func(self.log, tasks):
7112            self.log.error("Phone Failed to Set Up Properly.")
7113            return False
7114
7115        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7116                                     ads=ads,
7117                                     num_swaps=0,
7118                                     phone_setup_a=None,
7119                                     phone_setup_b=None,
7120                                     phone_setup_c=None,
7121                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7122                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7123                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7124        if call_ab_id is None or call_ac_id is None:
7125            return False
7126
7127        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7128            call_ab_id, call_ac_id)
7129
7130
7131    @TelephonyBaseTest.tel_test_wrap
7132    @test_tracker_info(uuid="c9e54db0-2b0b-428b-ba63-619ad0b8637b")
7133    def test_epdg_mt_mt_add_epdg_merge_drop_wfc_wifi_only(self):
7134        """ Test Conf Call among three phones.
7135
7136        Call from PhoneB (epdg) to PhoneA (epdg), accept on PhoneA.
7137        Call from PhoneC (epdg) to PhoneA (epdg), accept on PhoneA.
7138        On PhoneA, merge to conference call.
7139        End call on PhoneC, verify call continues.
7140        End call on PhoneB, verify call end on PhoneA.
7141
7142        Returns:
7143            True if pass; False if fail.
7144        """
7145        ads = self.android_devices
7146
7147        tasks = [(phone_setup_iwlan,
7148                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7149                   self.wifi_network_ssid, self.wifi_network_pass)),
7150                 (phone_setup_iwlan,
7151                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
7152                   self.wifi_network_ssid, self.wifi_network_pass)),
7153                 (phone_setup_iwlan,
7154                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
7155                   self.wifi_network_ssid, self.wifi_network_pass))]
7156        if not multithread_func(self.log, tasks):
7157            self.log.error("Phone Failed to Set Up Properly.")
7158            return False
7159
7160        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
7161                                     ads=ads,
7162                                     num_swaps=0,
7163                                     phone_setup_a=None,
7164                                     phone_setup_b=None,
7165                                     phone_setup_c=None,
7166                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7167                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7168                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7169        if call_ab_id is None or call_ac_id is None:
7170            return False
7171
7172        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7173            call_ab_id, call_ac_id)
7174
7175
7176    @TelephonyBaseTest.tel_test_wrap
7177    @test_tracker_info(uuid="a478cc82-d95c-43fc-9735-d8333b8937e2")
7178    def test_epdg_mt_mt_add_epdg_merge_drop_wfc_wifi_preferred(self):
7179        """ Test Conf Call among three phones.
7180
7181        Call from PhoneB (epdg) to PhoneA (epdg), accept on PhoneA.
7182        Call from PhoneC (epdg) to PhoneA (epdg), accept on PhoneA.
7183        On PhoneA, merge to conference call.
7184        End call on PhoneC, verify call continues.
7185        End call on PhoneB, verify call end on PhoneA.
7186
7187        Returns:
7188            True if pass; False if fail.
7189        """
7190        ads = self.android_devices
7191
7192        tasks = [(phone_setup_iwlan,
7193                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7194                   self.wifi_network_ssid, self.wifi_network_pass)),
7195                 (phone_setup_iwlan,
7196                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7197                   self.wifi_network_ssid, self.wifi_network_pass)),
7198                 (phone_setup_iwlan,
7199                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7200                   self.wifi_network_ssid, self.wifi_network_pass))]
7201        if not multithread_func(self.log, tasks):
7202            self.log.error("Phone Failed to Set Up Properly.")
7203            return False
7204
7205        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
7206                                     ads=ads,
7207                                     num_swaps=0,
7208                                     phone_setup_a=None,
7209                                     phone_setup_b=None,
7210                                     phone_setup_c=None,
7211                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7212                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7213                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7214        if call_ab_id is None or call_ac_id is None:
7215            return False
7216
7217        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7218            call_ab_id, call_ac_id)
7219
7220
7221    @TelephonyBaseTest.tel_test_wrap
7222    @test_tracker_info(uuid="b1acb263-1481-44a5-b18e-58bdeff7bc1e")
7223    def test_epdg_mo_mo_add_volte_merge_drop_wfc_wifi_only(self):
7224        """ Test Conf Call among three phones.
7225
7226        Call from PhoneA (epdg) to PhoneB (VoLTE), accept on PhoneB.
7227        Call from PhoneA (epdg) to PhoneC (VoLTE), accept on PhoneC.
7228        On PhoneA, merge to conference call.
7229        End call on PhoneC, verify call continues.
7230        End call on PhoneB, verify call end on PhoneA.
7231
7232        Returns:
7233            True if pass; False if fail.
7234        """
7235        ads = self.android_devices
7236
7237        tasks = [(phone_setup_iwlan,
7238                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7239                   self.wifi_network_ssid, self.wifi_network_pass)),
7240                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
7241                                                           (self.log, ads[2]))]
7242        if not multithread_func(self.log, tasks):
7243            self.log.error("Phone Failed to Set Up Properly.")
7244            return False
7245
7246        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7247                                    ads=ads,
7248                                    num_swaps=0,
7249                                    phone_setup_a=None,
7250                                    phone_setup_b=None,
7251                                    phone_setup_c=None,
7252                                    verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7253                                    verify_phone_b_network_subscription=is_phone_in_call_volte,
7254                                    verify_phone_c_network_subscription=is_phone_in_call_volte)
7255
7256        if call_ab_id is None or call_ac_id is None:
7257            return False
7258
7259        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7260            call_ab_id, call_ac_id)
7261
7262
7263    @TelephonyBaseTest.tel_test_wrap
7264    @test_tracker_info(uuid="03b8a0d2-80dd-465a-ad14-5db94cdbcc53")
7265    def test_epdg_mo_mo_add_volte_merge_drop_wfc_wifi_preferred(self):
7266        """ Test Conf Call among three phones.
7267
7268        Call from PhoneA (epdg) to PhoneB (VoLTE), accept on PhoneB.
7269        Call from PhoneA (epdg) to PhoneC (VoLTE), accept on PhoneC.
7270        On PhoneA, merge to conference call.
7271        End call on PhoneC, verify call continues.
7272        End call on PhoneB, verify call end on PhoneA.
7273
7274        Returns:
7275            True if pass; False if fail.
7276        """
7277        ads = self.android_devices
7278
7279        tasks = [(phone_setup_iwlan,
7280                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7281                   self.wifi_network_ssid, self.wifi_network_pass)),
7282                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
7283                                                           (self.log, ads[2]))]
7284        if not multithread_func(self.log, tasks):
7285            self.log.error("Phone Failed to Set Up Properly.")
7286            return False
7287
7288        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7289                                    ads=ads,
7290                                    num_swaps=0,
7291                                    phone_setup_a=None,
7292                                    phone_setup_b=None,
7293                                    phone_setup_c=None,
7294                                    verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7295                                    verify_phone_b_network_subscription=is_phone_in_call_volte,
7296                                    verify_phone_c_network_subscription=is_phone_in_call_volte)
7297        if call_ab_id is None or call_ac_id is None:
7298            return False
7299
7300        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7301            call_ab_id, call_ac_id)
7302
7303
7304    @TelephonyBaseTest.tel_test_wrap
7305    @test_tracker_info(uuid="9eb1a816-1e2c-41da-b083-2026163a3893")
7306    def test_epdg_mo_mt_add_volte_merge_drop_wfc_wifi_only(self):
7307        """ Test Conf Call among three phones.
7308
7309        Call from PhoneA (epdg) to PhoneB (VoLTE), accept on PhoneB.
7310        Call from PhoneC (VoLTE) to PhoneA (epdg), accept on PhoneA.
7311        On PhoneA, merge to conference call.
7312        End call on PhoneC, verify call continues.
7313        End call on PhoneB, verify call end on PhoneA.
7314
7315        Returns:
7316            True if pass; False if fail.
7317        """
7318        ads = self.android_devices
7319
7320        tasks = [(phone_setup_iwlan,
7321                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7322                   self.wifi_network_ssid, self.wifi_network_pass)),
7323                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
7324                                                           (self.log, ads[2]))]
7325        if not multithread_func(self.log, tasks):
7326            self.log.error("Phone Failed to Set Up Properly.")
7327            return False
7328
7329        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7330                                    ads=ads,
7331                                    num_swaps=0,
7332                                    phone_setup_a=None,
7333                                    phone_setup_b=None,
7334                                    phone_setup_c=None,
7335                                    verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7336                                    verify_phone_b_network_subscription=is_phone_in_call_volte,
7337                                    verify_phone_c_network_subscription=is_phone_in_call_volte)
7338
7339        if call_ab_id is None or call_ac_id is None:
7340            return False
7341
7342        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7343            call_ab_id, call_ac_id)
7344
7345
7346    @TelephonyBaseTest.tel_test_wrap
7347    @test_tracker_info(uuid="3d66a1b6-916f-4221-bd99-21ff4d40ebb8")
7348    def test_epdg_mo_mt_add_volte_merge_drop_wfc_wifi_preferred(self):
7349        """ Test Conf Call among three phones.
7350
7351        Call from PhoneA (epdg) to PhoneB (VoLTE), accept on PhoneB.
7352        Call from PhoneC (VoLTE) to PhoneA (epdg), accept on PhoneA.
7353        On PhoneA, merge to conference call.
7354        End call on PhoneC, verify call continues.
7355        End call on PhoneB, verify call end on PhoneA.
7356
7357        Returns:
7358            True if pass; False if fail.
7359        """
7360        ads = self.android_devices
7361
7362        tasks = [(phone_setup_iwlan,
7363                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7364                   self.wifi_network_ssid, self.wifi_network_pass)),
7365                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
7366                                                           (self.log, ads[2]))]
7367        if not multithread_func(self.log, tasks):
7368            self.log.error("Phone Failed to Set Up Properly.")
7369            return False
7370
7371        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7372                                    ads=ads,
7373                                    num_swaps=0,
7374                                    phone_setup_a=None,
7375                                    phone_setup_b=None,
7376                                    phone_setup_c=None,
7377                                    verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7378                                    verify_phone_b_network_subscription=is_phone_in_call_volte,
7379                                    verify_phone_c_network_subscription=is_phone_in_call_volte)
7380        if call_ab_id is None or call_ac_id is None:
7381            return False
7382
7383        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7384            call_ab_id, call_ac_id)
7385
7386
7387    @TelephonyBaseTest.tel_test_wrap
7388    @test_tracker_info(uuid="9d8e8b2f-e2b9-4607-8c54-6233b3096123")
7389    def test_epdg_mo_mo_add_wcdma_merge_drop_wfc_wifi_only(self):
7390        """ Test Conf Call among three phones.
7391
7392        Call from PhoneA (epdg) to PhoneB (WCDMA), accept on PhoneB.
7393        Call from PhoneA (epdg) to PhoneC (WCDMA), accept on PhoneC.
7394        On PhoneA, merge to conference call.
7395        End call on PhoneC, verify call continues.
7396        End call on PhoneB, verify call end on PhoneA.
7397
7398        Returns:
7399            True if pass; False if fail.
7400        """
7401        ads = self.android_devices
7402
7403        tasks = [(phone_setup_iwlan,
7404                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7405                   self.wifi_network_ssid, self.wifi_network_pass)),
7406                 (phone_setup_voice_3g, (self.log, ads[1])),
7407                 (phone_setup_voice_3g, (self.log, ads[2]))]
7408        if not multithread_func(self.log, tasks):
7409            self.log.error("Phone Failed to Set Up Properly.")
7410            return False
7411
7412        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7413                                        ads=ads,
7414                                        num_swaps=0,
7415                                        phone_setup_a=None,
7416                                        phone_setup_b=None,
7417                                        phone_setup_c=None,
7418                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7419                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
7420                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
7421
7422        if call_ab_id is None or call_ac_id is None:
7423            return False
7424
7425        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7426            call_ab_id, call_ac_id)
7427
7428
7429    @TelephonyBaseTest.tel_test_wrap
7430    @test_tracker_info(uuid="0884206b-2471-4a7e-95aa-228379416ff8")
7431    def test_epdg_mo_mo_add_wcdma_merge_drop_wfc_wifi_preferred(self):
7432        """ Test Conf Call among three phones.
7433
7434        Call from PhoneA (epdg) to PhoneB (WCDMA), accept on PhoneB.
7435        Call from PhoneA (epdg) to PhoneC (WCDMA), accept on PhoneC.
7436        On PhoneA, merge to conference call.
7437        End call on PhoneC, verify call continues.
7438        End call on PhoneB, verify call end on PhoneA.
7439
7440        Returns:
7441            True if pass; False if fail.
7442        """
7443        ads = self.android_devices
7444
7445        tasks = [(phone_setup_iwlan,
7446                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7447                   self.wifi_network_ssid, self.wifi_network_pass)),
7448                 (phone_setup_voice_3g, (self.log, ads[1])),
7449                 (phone_setup_voice_3g, (self.log, ads[2]))]
7450        if not multithread_func(self.log, tasks):
7451            self.log.error("Phone Failed to Set Up Properly.")
7452            return False
7453
7454        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7455                                        ads=ads,
7456                                        num_swaps=0,
7457                                        phone_setup_a=None,
7458                                        phone_setup_b=None,
7459                                        phone_setup_c=None,
7460                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7461                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
7462                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
7463        if call_ab_id is None or call_ac_id is None:
7464            return False
7465
7466        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7467            call_ab_id, call_ac_id)
7468
7469
7470    @TelephonyBaseTest.tel_test_wrap
7471    @test_tracker_info(uuid="c7706af6-dc77-4002-b295-66c60aeace6b")
7472    def test_epdg_mo_mt_add_wcdma_merge_drop_wfc_wifi_only(self):
7473        """ Test Conf Call among three phones.
7474
7475        Call from PhoneA (epdg) to PhoneB (WCDMA), accept on PhoneB.
7476        Call from PhoneC (WCDMA) to PhoneA (epdg), accept on PhoneA.
7477        On PhoneA, merge to conference call.
7478        End call on PhoneC, verify call continues.
7479        End call on PhoneB, verify call end on PhoneA.
7480
7481        Returns:
7482            True if pass; False if fail.
7483        """
7484        ads = self.android_devices
7485
7486        tasks = [(phone_setup_iwlan,
7487                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7488                   self.wifi_network_ssid, self.wifi_network_pass)),
7489                 (phone_setup_voice_3g, (self.log, ads[1])),
7490                 (phone_setup_voice_3g, (self.log, ads[2]))]
7491        if not multithread_func(self.log, tasks):
7492            self.log.error("Phone Failed to Set Up Properly.")
7493            return False
7494
7495        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7496                                        ads=ads,
7497                                        num_swaps=0,
7498                                        phone_setup_a=None,
7499                                        phone_setup_b=None,
7500                                        phone_setup_c=None,
7501                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7502                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
7503                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
7504
7505        if call_ab_id is None or call_ac_id is None:
7506            return False
7507
7508        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7509            call_ab_id, call_ac_id)
7510
7511
7512    @TelephonyBaseTest.tel_test_wrap
7513    @test_tracker_info(uuid="b079618f-e32b-4ba0-9009-06e013805c39")
7514    def test_epdg_mo_mt_add_wcdma_merge_drop_wfc_wifi_preferred(self):
7515        """ Test Conf Call among three phones.
7516
7517        Call from PhoneA (epdg) to PhoneB (WCDMA), accept on PhoneB.
7518        Call from PhoneC (WCDMA) to PhoneA (epdg), accept on PhoneA.
7519        On PhoneA, merge to conference call.
7520        End call on PhoneC, verify call continues.
7521        End call on PhoneB, verify call end on PhoneA.
7522
7523        Returns:
7524            True if pass; False if fail.
7525        """
7526        ads = self.android_devices
7527
7528        tasks = [(phone_setup_iwlan,
7529                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7530                   self.wifi_network_ssid, self.wifi_network_pass)),
7531                 (phone_setup_voice_3g, (self.log, ads[1])),
7532                 (phone_setup_voice_3g, (self.log, ads[2]))]
7533        if not multithread_func(self.log, tasks):
7534            self.log.error("Phone Failed to Set Up Properly.")
7535            return False
7536
7537        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7538                                        ads=ads,
7539                                        num_swaps=0,
7540                                        phone_setup_a=None,
7541                                        phone_setup_b=None,
7542                                        phone_setup_c=None,
7543                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7544                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
7545                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
7546        if call_ab_id is None or call_ac_id is None:
7547            return False
7548
7549        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7550            call_ab_id, call_ac_id)
7551
7552
7553    @TelephonyBaseTest.tel_test_wrap
7554    @test_tracker_info(uuid="571fe98b-354f-4038-8441-0e4b1840eb7a")
7555    def test_epdg_mo_mo_add_1x_merge_drop_wfc_wifi_only(self):
7556        """ Test Conf Call among three phones.
7557
7558        Call from PhoneA (epdg) to PhoneB (1x), accept on PhoneB.
7559        Call from PhoneA (epdg) to PhoneC (1x), accept on PhoneC.
7560        On PhoneA, merge to conference call.
7561        End call on PhoneC, verify call continues.
7562        End call on PhoneB, verify call end on PhoneA.
7563
7564        Returns:
7565            True if pass; False if fail.
7566        """
7567        ads = self.android_devices
7568
7569        tasks = [(phone_setup_iwlan,
7570                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7571                   self.wifi_network_ssid, self.wifi_network_pass)),
7572                 (phone_setup_voice_3g, (self.log, ads[1])),
7573                 (phone_setup_voice_3g, (self.log, ads[2]))]
7574        if not multithread_func(self.log, tasks):
7575            self.log.error("Phone Failed to Set Up Properly.")
7576            return False
7577
7578        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7579                                         ads=ads,
7580                                         num_swaps=0,
7581                                         phone_setup_a=None,
7582                                         phone_setup_b=None,
7583                                         phone_setup_c=None,
7584                                         verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7585                                         verify_phone_b_network_subscription=is_phone_in_call_1x,
7586                                         verify_phone_c_network_subscription=is_phone_in_call_1x)
7587
7588        if call_ab_id is None or call_ac_id is None:
7589            return False
7590
7591        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7592            call_ab_id, call_ac_id)
7593
7594
7595    @TelephonyBaseTest.tel_test_wrap
7596    @test_tracker_info(uuid="8f531f3c-493e-43d6-9d6d-f4990b5feba4")
7597    def test_epdg_mo_mo_add_1x_merge_drop_wfc_wifi_preferred(self):
7598        """ Test Conf Call among three phones.
7599
7600        Call from PhoneA (epdg) to PhoneB (1x), accept on PhoneB.
7601        Call from PhoneA (epdg) to PhoneC (1x), accept on PhoneC.
7602        On PhoneA, merge to conference call.
7603        End call on PhoneC, verify call continues.
7604        End call on PhoneB, verify call end on PhoneA.
7605
7606        Returns:
7607            True if pass; False if fail.
7608        """
7609        ads = self.android_devices
7610
7611        tasks = [(phone_setup_iwlan,
7612                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7613                   self.wifi_network_ssid, self.wifi_network_pass)),
7614                 (phone_setup_voice_3g, (self.log, ads[1])),
7615                 (phone_setup_voice_3g, (self.log, ads[2]))]
7616        if not multithread_func(self.log, tasks):
7617            self.log.error("Phone Failed to Set Up Properly.")
7618            return False
7619
7620        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7621                                         ads=ads,
7622                                         num_swaps=0,
7623                                         phone_setup_a=None,
7624                                         phone_setup_b=None,
7625                                         phone_setup_c=None,
7626                                         verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7627                                         verify_phone_b_network_subscription=is_phone_in_call_1x,
7628                                         verify_phone_c_network_subscription=is_phone_in_call_1x)
7629        if call_ab_id is None or call_ac_id is None:
7630            return False
7631
7632        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7633            call_ab_id, call_ac_id)
7634
7635
7636    @TelephonyBaseTest.tel_test_wrap
7637    @test_tracker_info(uuid="00e1194b-3c06-46c4-8764-0339c0aa9f9e")
7638    def test_epdg_mo_mt_add_1x_merge_drop_wfc_wifi_only(self):
7639        """ Test Conf Call among three phones.
7640
7641        Call from PhoneA (epdg) to PhoneB (1x), accept on PhoneB.
7642        Call from PhoneC (1x) to PhoneA (epdg), accept on PhoneA.
7643        On PhoneA, merge to conference call.
7644        End call on PhoneC, verify call continues.
7645        End call on PhoneB, verify call end on PhoneA.
7646
7647        Returns:
7648            True if pass; False if fail.
7649        """
7650        ads = self.android_devices
7651
7652        tasks = [(phone_setup_iwlan,
7653                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7654                   self.wifi_network_ssid, self.wifi_network_pass)),
7655                 (phone_setup_voice_3g, (self.log, ads[1])),
7656                 (phone_setup_voice_3g, (self.log, ads[2]))]
7657        if not multithread_func(self.log, tasks):
7658            self.log.error("Phone Failed to Set Up Properly.")
7659            return False
7660
7661        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7662                                         ads=ads,
7663                                         num_swaps=0,
7664                                         phone_setup_a=None,
7665                                         phone_setup_b=None,
7666                                         phone_setup_c=None,
7667                                         verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7668                                         verify_phone_b_network_subscription=is_phone_in_call_1x,
7669                                         verify_phone_c_network_subscription=is_phone_in_call_1x)
7670
7671        if call_ab_id is None or call_ac_id is None:
7672            return False
7673
7674        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7675            call_ab_id, call_ac_id)
7676
7677
7678    @TelephonyBaseTest.tel_test_wrap
7679    @test_tracker_info(uuid="c94f6444-d265-4277-9555-57041e3c4ff4")
7680    def test_epdg_mo_mt_add_1x_merge_drop_wfc_wifi_preferred(self):
7681        """ Test Conf Call among three phones.
7682
7683        Call from PhoneA (epdg) to PhoneB (1x), accept on PhoneB.
7684        Call from PhoneC (1x) to PhoneA (epdg), accept on PhoneA.
7685        On PhoneA, merge to conference call.
7686        End call on PhoneC, verify call continues.
7687        End call on PhoneB, verify call end on PhoneA.
7688
7689        Returns:
7690            True if pass; False if fail.
7691        """
7692        ads = self.android_devices
7693
7694        tasks = [(phone_setup_iwlan,
7695                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7696                   self.wifi_network_ssid, self.wifi_network_pass)),
7697                 (phone_setup_voice_3g, (self.log, ads[1])),
7698                 (phone_setup_voice_3g, (self.log, ads[2]))]
7699        if not multithread_func(self.log, tasks):
7700            self.log.error("Phone Failed to Set Up Properly.")
7701            return False
7702
7703        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7704                                         ads=ads,
7705                                         num_swaps=0,
7706                                         phone_setup_a=None,
7707                                         phone_setup_b=None,
7708                                         phone_setup_c=None,
7709                                         verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7710                                         verify_phone_b_network_subscription=is_phone_in_call_1x,
7711                                         verify_phone_c_network_subscription=is_phone_in_call_1x)
7712        if call_ab_id is None or call_ac_id is None:
7713            return False
7714
7715        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7716            call_ab_id, call_ac_id)
7717
7718
7719    @TelephonyBaseTest.tel_test_wrap
7720    @test_tracker_info(uuid="0980745e-dcdc-4c56-84e3-e2ee076059ee")
7721    def test_epdg_mo_mo_add_epdg_swap_once_merge_drop_wfc_wifi_only(self):
7722        """Test swap and merge feature in epdg call.
7723
7724        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7725        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
7726        Swap active call on PhoneA.
7727        Merge calls to conference on PhoneA.
7728        Hangup on PhoneC, check call continues between AB.
7729        Hangup on PhoneB, check A ends.
7730
7731        """
7732        ads = self.android_devices
7733
7734        tasks = [(phone_setup_iwlan,
7735                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7736                   self.wifi_network_ssid, self.wifi_network_pass)),
7737                 (phone_setup_iwlan,
7738                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
7739                   self.wifi_network_ssid, self.wifi_network_pass)),
7740                 (phone_setup_iwlan,
7741                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
7742                   self.wifi_network_ssid, self.wifi_network_pass))]
7743        if not multithread_func(self.log, tasks):
7744            self.log.error("Phone Failed to Set Up Properly.")
7745            return False
7746
7747        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7748                                        ads=ads,
7749                                        num_swaps=1,
7750                                        phone_setup_a=None,
7751                                        phone_setup_b=None,
7752                                        phone_setup_c=None,
7753                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7754                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7755                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7756        if call_ab_id is None or call_ac_id is None:
7757            return False
7758
7759        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7760            call_ab_id, call_ac_id)
7761
7762
7763    @TelephonyBaseTest.tel_test_wrap
7764    @test_tracker_info(uuid="6bf0b152-fb1c-4edc-9525-b39e8640b967")
7765    def test_epdg_mo_mo_add_epdg_swap_once_merge_drop_wfc_wifi_preferred(self):
7766        """Test swap and merge feature in epdg call.
7767
7768        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7769        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
7770        Swap active call on PhoneA.
7771        Merge calls to conference on PhoneA.
7772        Hangup on PhoneC, check call continues between AB.
7773        Hangup on PhoneB, check A ends.
7774
7775        """
7776        ads = self.android_devices
7777
7778        tasks = [(phone_setup_iwlan,
7779                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7780                   self.wifi_network_ssid, self.wifi_network_pass)),
7781                 (phone_setup_iwlan,
7782                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7783                   self.wifi_network_ssid, self.wifi_network_pass)),
7784                 (phone_setup_iwlan,
7785                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7786                   self.wifi_network_ssid, self.wifi_network_pass))]
7787        if not multithread_func(self.log, tasks):
7788            self.log.error("Phone Failed to Set Up Properly.")
7789            return False
7790
7791        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7792                                        ads=ads,
7793                                        num_swaps=1,
7794                                        phone_setup_a=None,
7795                                        phone_setup_b=None,
7796                                        phone_setup_c=None,
7797                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7798                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7799                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7800        if call_ab_id is None or call_ac_id is None:
7801            return False
7802
7803        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7804            call_ab_id, call_ac_id)
7805
7806
7807    @TelephonyBaseTest.tel_test_wrap
7808    @test_tracker_info(uuid="e3013df6-98ca-4318-85ba-04011ba0a24f")
7809    def test_epdg_mo_mo_add_epdg_swap_twice_merge_drop_wfc_wifi_only(self):
7810        """Test swap and merge feature in epdg call.
7811
7812        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7813        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
7814        Swap active call on PhoneA.
7815        Swap active call on PhoneA.
7816        Merge calls to conference on PhoneA.
7817        Hangup on PhoneC, check call continues between AB.
7818        Hangup on PhoneB, check A ends.
7819
7820        """
7821        ads = self.android_devices
7822
7823        tasks = [(phone_setup_iwlan,
7824                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7825                   self.wifi_network_ssid, self.wifi_network_pass)),
7826                 (phone_setup_iwlan,
7827                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
7828                   self.wifi_network_ssid, self.wifi_network_pass)),
7829                 (phone_setup_iwlan,
7830                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
7831                   self.wifi_network_ssid, self.wifi_network_pass))]
7832        if not multithread_func(self.log, tasks):
7833            self.log.error("Phone Failed to Set Up Properly.")
7834            return False
7835
7836        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7837                                        ads=ads,
7838                                        num_swaps=2,
7839                                        phone_setup_a=None,
7840                                        phone_setup_b=None,
7841                                        phone_setup_c=None,
7842                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7843                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7844                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7845        if call_ab_id is None or call_ac_id is None:
7846            return False
7847
7848        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7849            call_ab_id, call_ac_id)
7850
7851
7852    @TelephonyBaseTest.tel_test_wrap
7853    @test_tracker_info(uuid="e88bf042-8799-44c7-bc50-66ac1e1fb2ac")
7854    def test_epdg_mo_mo_add_epdg_swap_twice_merge_drop_wfc_wifi_preferred(
7855            self):
7856        """Test swap and merge feature in epdg call.
7857
7858        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7859        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
7860        Swap active call on PhoneA.
7861        Swap active call on PhoneA.
7862        Merge calls to conference on PhoneA.
7863        Hangup on PhoneC, check call continues between AB.
7864        Hangup on PhoneB, check A ends.
7865
7866        """
7867        ads = self.android_devices
7868
7869        tasks = [(phone_setup_iwlan,
7870                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7871                   self.wifi_network_ssid, self.wifi_network_pass)),
7872                 (phone_setup_iwlan,
7873                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7874                   self.wifi_network_ssid, self.wifi_network_pass)),
7875                 (phone_setup_iwlan,
7876                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7877                   self.wifi_network_ssid, self.wifi_network_pass))]
7878        if not multithread_func(self.log, tasks):
7879            self.log.error("Phone Failed to Set Up Properly.")
7880            return False
7881
7882        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
7883                                        ads=ads,
7884                                        num_swaps=2,
7885                                        phone_setup_a=None,
7886                                        phone_setup_b=None,
7887                                        phone_setup_c=None,
7888                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7889                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7890                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7891        if call_ab_id is None or call_ac_id is None:
7892            return False
7893
7894        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7895            call_ab_id, call_ac_id)
7896
7897
7898    @TelephonyBaseTest.tel_test_wrap
7899    @test_tracker_info(uuid="a8302e73-82a4-4409-b038-5c604fb4c66c")
7900    def test_epdg_mo_mt_add_epdg_swap_once_merge_drop_wfc_wifi_only(self):
7901        """Test swap and merge feature in epdg call.
7902
7903        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7904        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
7905        Swap active call on PhoneA.
7906        Merge calls to conference on PhoneA.
7907        Hangup on PhoneC, check call continues between AB.
7908        Hangup on PhoneB, check A ends.
7909
7910        """
7911        ads = self.android_devices
7912
7913        tasks = [(phone_setup_iwlan,
7914                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
7915                   self.wifi_network_ssid, self.wifi_network_pass)),
7916                 (phone_setup_iwlan,
7917                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
7918                   self.wifi_network_ssid, self.wifi_network_pass)),
7919                 (phone_setup_iwlan,
7920                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
7921                   self.wifi_network_ssid, self.wifi_network_pass))]
7922        if not multithread_func(self.log, tasks):
7923            self.log.error("Phone Failed to Set Up Properly.")
7924            return False
7925
7926        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7927                                        ads=ads,
7928                                        num_swaps=1,
7929                                        phone_setup_a=None,
7930                                        phone_setup_b=None,
7931                                        phone_setup_c=None,
7932                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7933                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7934                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7935        if call_ab_id is None or call_ac_id is None:
7936            return False
7937
7938        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7939            call_ab_id, call_ac_id)
7940
7941
7942    @TelephonyBaseTest.tel_test_wrap
7943    @test_tracker_info(uuid="80f69baf-1649-4858-b35c-b25baf79b42c")
7944    def test_epdg_mo_mt_add_epdg_swap_once_merge_drop_wfc_wifi_preferred(self):
7945        """Test swap and merge feature in epdg call.
7946
7947        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7948        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
7949        Swap active call on PhoneA.
7950        Merge calls to conference on PhoneA.
7951        Hangup on PhoneC, check call continues between AB.
7952        Hangup on PhoneB, check A ends.
7953
7954        """
7955        ads = self.android_devices
7956
7957        tasks = [(phone_setup_iwlan,
7958                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
7959                   self.wifi_network_ssid, self.wifi_network_pass)),
7960                 (phone_setup_iwlan,
7961                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
7962                   self.wifi_network_ssid, self.wifi_network_pass)),
7963                 (phone_setup_iwlan,
7964                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
7965                   self.wifi_network_ssid, self.wifi_network_pass))]
7966        if not multithread_func(self.log, tasks):
7967            self.log.error("Phone Failed to Set Up Properly.")
7968            return False
7969
7970        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
7971                                        ads=ads,
7972                                        num_swaps=1,
7973                                        phone_setup_a=None,
7974                                        phone_setup_b=None,
7975                                        phone_setup_c=None,
7976                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
7977                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
7978                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
7979        if call_ab_id is None or call_ac_id is None:
7980            return False
7981
7982        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
7983            call_ab_id, call_ac_id)
7984
7985
7986    @TelephonyBaseTest.tel_test_wrap
7987    @test_tracker_info(uuid="1ac0c067-49fb-41d9-8649-cc709bdd8926")
7988    def test_epdg_mo_mt_add_epdg_swap_twice_merge_drop_wfc_wifi_only(self):
7989        """Test swap and merge feature in epdg call.
7990
7991        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
7992        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
7993        Swap active call on PhoneA.
7994        Swap active call on PhoneA.
7995        Merge calls to conference on PhoneA.
7996        Hangup on PhoneC, check call continues between AB.
7997        Hangup on PhoneB, check A ends.
7998
7999        """
8000        ads = self.android_devices
8001
8002        tasks = [(phone_setup_iwlan,
8003                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8004                   self.wifi_network_ssid, self.wifi_network_pass)),
8005                 (phone_setup_iwlan,
8006                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
8007                   self.wifi_network_ssid, self.wifi_network_pass)),
8008                 (phone_setup_iwlan,
8009                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
8010                   self.wifi_network_ssid, self.wifi_network_pass))]
8011        if not multithread_func(self.log, tasks):
8012            self.log.error("Phone Failed to Set Up Properly.")
8013            return False
8014
8015        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8016                                        ads=ads,
8017                                        num_swaps=2,
8018                                        phone_setup_a=None,
8019                                        phone_setup_b=None,
8020                                        phone_setup_c=None,
8021                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8022                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
8023                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
8024        if call_ab_id is None or call_ac_id is None:
8025            return False
8026
8027        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8028            call_ab_id, call_ac_id)
8029
8030
8031    @TelephonyBaseTest.tel_test_wrap
8032    @test_tracker_info(uuid="b20b1a94-048c-4f10-9261-dde79e1edb00")
8033    def test_epdg_mo_mt_add_epdg_swap_twice_merge_drop_wfc_wifi_preferred(
8034            self):
8035        """Test swap and merge feature in epdg call.
8036
8037        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
8038        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
8039        Swap active call on PhoneA.
8040        Swap active call on PhoneA.
8041        Merge calls to conference on PhoneA.
8042        Hangup on PhoneC, check call continues between AB.
8043        Hangup on PhoneB, check A ends.
8044
8045        """
8046        ads = self.android_devices
8047
8048        tasks = [(phone_setup_iwlan,
8049                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8050                   self.wifi_network_ssid, self.wifi_network_pass)),
8051                 (phone_setup_iwlan,
8052                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
8053                   self.wifi_network_ssid, self.wifi_network_pass)),
8054                 (phone_setup_iwlan,
8055                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
8056                   self.wifi_network_ssid, self.wifi_network_pass))]
8057        if not multithread_func(self.log, tasks):
8058            self.log.error("Phone Failed to Set Up Properly.")
8059            return False
8060
8061        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8062                                        ads=ads,
8063                                        num_swaps=2,
8064                                        phone_setup_a=None,
8065                                        phone_setup_b=None,
8066                                        phone_setup_c=None,
8067                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8068                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
8069                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
8070        if call_ab_id is None or call_ac_id is None:
8071            return False
8072
8073        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8074            call_ab_id, call_ac_id)
8075
8076
8077    @TelephonyBaseTest.tel_test_wrap
8078    @test_tracker_info(uuid="402b175f-1510-4e2a-97c2-7c9ea5ce40f6")
8079    def test_epdg_mo_mo_add_volte_swap_once_merge_drop_wfc_wifi_only(self):
8080        """Test swap and merge feature in epdg call.
8081
8082        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8083        PhoneA (epdg) call PhoneC (VoLTE), accept on PhoneC.
8084        Swap active call on PhoneA.
8085        Merge calls to conference on PhoneA.
8086        Hangup on PhoneC, check call continues between AB.
8087        Hangup on PhoneB, check A ends.
8088
8089        """
8090        ads = self.android_devices
8091
8092        tasks = [(phone_setup_iwlan,
8093                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8094                   self.wifi_network_ssid, self.wifi_network_pass)),
8095                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8096                                                           (self.log, ads[2]))]
8097        if not multithread_func(self.log, tasks):
8098            self.log.error("Phone Failed to Set Up Properly.")
8099            return False
8100
8101        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8102                                        ads=ads,
8103                                        num_swaps=1,
8104                                        phone_setup_a=None,
8105                                        phone_setup_b=None,
8106                                        phone_setup_c=None,
8107                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8108                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8109                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8110        if call_ab_id is None or call_ac_id is None:
8111            return False
8112
8113        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8114            call_ab_id, call_ac_id)
8115
8116
8117    @TelephonyBaseTest.tel_test_wrap
8118    @test_tracker_info(uuid="7c710fbf-4b77-4b46-9719-e17b3d047cfc")
8119    def test_epdg_mo_mo_add_volte_swap_once_merge_drop_wfc_wifi_preferred(
8120            self):
8121        """Test swap and merge feature in epdg call.
8122
8123        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8124        PhoneA (epdg) call PhoneC (VoLTE), accept on PhoneC.
8125        Swap active call on PhoneA.
8126        Merge calls to conference on PhoneA.
8127        Hangup on PhoneC, check call continues between AB.
8128        Hangup on PhoneB, check A ends.
8129
8130        """
8131        ads = self.android_devices
8132
8133        tasks = [(phone_setup_iwlan,
8134                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8135                   self.wifi_network_ssid, self.wifi_network_pass)),
8136                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8137                                                           (self.log, ads[2]))]
8138        if not multithread_func(self.log, tasks):
8139            self.log.error("Phone Failed to Set Up Properly.")
8140            return False
8141
8142        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8143                                        ads=ads,
8144                                        num_swaps=1,
8145                                        phone_setup_a=None,
8146                                        phone_setup_b=None,
8147                                        phone_setup_c=None,
8148                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8149                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8150                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8151        if call_ab_id is None or call_ac_id is None:
8152            return False
8153
8154        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8155            call_ab_id, call_ac_id)
8156
8157
8158    @TelephonyBaseTest.tel_test_wrap
8159    @test_tracker_info(uuid="642afbac-30c1-4dbf-bf3e-758ab6c3a306")
8160    def test_epdg_mo_mo_add_volte_swap_twice_merge_drop_wfc_wifi_only(self):
8161        """Test swap and merge feature in epdg call.
8162
8163        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8164        PhoneA (epdg) call PhoneC (VoLTE), accept on PhoneC.
8165        Swap active call on PhoneA.
8166        Swap active call on PhoneA.
8167        Merge calls to conference on PhoneA.
8168        Hangup on PhoneC, check call continues between AB.
8169        Hangup on PhoneB, check A ends.
8170
8171        """
8172        ads = self.android_devices
8173
8174        tasks = [(phone_setup_iwlan,
8175                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8176                   self.wifi_network_ssid, self.wifi_network_pass)),
8177                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8178                                                           (self.log, ads[2]))]
8179        if not multithread_func(self.log, tasks):
8180            self.log.error("Phone Failed to Set Up Properly.")
8181            return False
8182
8183        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8184                                        ads=ads,
8185                                        num_swaps=2,
8186                                        phone_setup_a=None,
8187                                        phone_setup_b=None,
8188                                        phone_setup_c=None,
8189                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8190                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8191                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8192        if call_ab_id is None or call_ac_id is None:
8193            return False
8194
8195        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8196            call_ab_id, call_ac_id)
8197
8198
8199    @TelephonyBaseTest.tel_test_wrap
8200    @test_tracker_info(uuid="a4ae1e39-ed6d-412e-b821-321c715a5d47")
8201    def test_epdg_mo_mo_add_volte_swap_twice_merge_drop_wfc_wifi_preferred(
8202            self):
8203        """Test swap and merge feature in epdg call.
8204
8205        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8206        PhoneA (epdg) call PhoneC (VoLTE), accept on PhoneC.
8207        Swap active call on PhoneA.
8208        Swap active call on PhoneA.
8209        Merge calls to conference on PhoneA.
8210        Hangup on PhoneC, check call continues between AB.
8211        Hangup on PhoneB, check A ends.
8212
8213        """
8214        ads = self.android_devices
8215
8216        tasks = [(phone_setup_iwlan,
8217                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8218                   self.wifi_network_ssid, self.wifi_network_pass)),
8219                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8220                                                           (self.log, ads[2]))]
8221        if not multithread_func(self.log, tasks):
8222            self.log.error("Phone Failed to Set Up Properly.")
8223            return False
8224
8225        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8226                                        ads=ads,
8227                                        num_swaps=2,
8228                                        phone_setup_a=None,
8229                                        phone_setup_b=None,
8230                                        phone_setup_c=None,
8231                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8232                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8233                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8234        if call_ab_id is None or call_ac_id is None:
8235            return False
8236
8237        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8238            call_ab_id, call_ac_id)
8239
8240
8241    @TelephonyBaseTest.tel_test_wrap
8242    @test_tracker_info(uuid="7b8431f2-8a49-4aa9-b84d-77f16a6a2c30")
8243    def test_epdg_mo_mt_add_volte_swap_once_merge_drop_wfc_wifi_only(self):
8244        """Test swap and merge feature in epdg call.
8245
8246        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8247        PhoneC (VoLTE) call PhoneA (epdg), accept on PhoneA.
8248        Swap active call on PhoneA.
8249        Merge calls to conference on PhoneA.
8250        Hangup on PhoneC, check call continues between AB.
8251        Hangup on PhoneB, check A ends.
8252
8253        """
8254        ads = self.android_devices
8255
8256        tasks = [(phone_setup_iwlan,
8257                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8258                   self.wifi_network_ssid, self.wifi_network_pass)),
8259                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8260                                                           (self.log, ads[2]))]
8261        if not multithread_func(self.log, tasks):
8262            self.log.error("Phone Failed to Set Up Properly.")
8263            return False
8264
8265        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8266                                        ads=ads,
8267                                        num_swaps=1,
8268                                        phone_setup_a=None,
8269                                        phone_setup_b=None,
8270                                        phone_setup_c=None,
8271                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8272                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8273                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8274        if call_ab_id is None or call_ac_id is None:
8275            return False
8276
8277        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8278            call_ab_id, call_ac_id)
8279
8280
8281    @TelephonyBaseTest.tel_test_wrap
8282    @test_tracker_info(uuid="5b4d7444-32a1-4e82-8847-1c4ae002edca")
8283    def test_epdg_mo_mt_add_volte_swap_once_merge_drop_wfc_wifi_preferred(
8284            self):
8285        """Test swap and merge feature in epdg call.
8286
8287        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8288        PhoneC (VoLTE) call PhoneA (epdg), accept on PhoneA.
8289        Swap active call on PhoneA.
8290        Merge calls to conference on PhoneA.
8291        Hangup on PhoneC, check call continues between AB.
8292        Hangup on PhoneB, check A ends.
8293
8294        """
8295        ads = self.android_devices
8296
8297        tasks = [(phone_setup_iwlan,
8298                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8299                   self.wifi_network_ssid, self.wifi_network_pass)),
8300                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8301                                                           (self.log, ads[2]))]
8302        if not multithread_func(self.log, tasks):
8303            self.log.error("Phone Failed to Set Up Properly.")
8304            return False
8305
8306        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8307                                        ads=ads,
8308                                        num_swaps=1,
8309                                        phone_setup_a=None,
8310                                        phone_setup_b=None,
8311                                        phone_setup_c=None,
8312                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8313                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8314                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8315        if call_ab_id is None or call_ac_id is None:
8316            return False
8317
8318        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8319            call_ab_id, call_ac_id)
8320
8321
8322    @TelephonyBaseTest.tel_test_wrap
8323    @test_tracker_info(uuid="88c6c179-0b56-4d03-b5e4-76a147a40995")
8324    def test_epdg_mo_mt_add_volte_swap_twice_merge_drop_wfc_wifi_only(self):
8325        """Test swap and merge feature in epdg call.
8326
8327        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8328        PhoneC (VoLTE) call PhoneA (epdg), accept on PhoneA.
8329        Swap active call on PhoneA.
8330        Swap active call on PhoneA.
8331        Merge calls to conference on PhoneA.
8332        Hangup on PhoneC, check call continues between AB.
8333        Hangup on PhoneB, check A ends.
8334
8335        """
8336        ads = self.android_devices
8337
8338        tasks = [(phone_setup_iwlan,
8339                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8340                   self.wifi_network_ssid, self.wifi_network_pass)),
8341                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8342                                                           (self.log, ads[2]))]
8343        if not multithread_func(self.log, tasks):
8344            self.log.error("Phone Failed to Set Up Properly.")
8345            return False
8346
8347        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8348                                        ads=ads,
8349                                        num_swaps=2,
8350                                        phone_setup_a=None,
8351                                        phone_setup_b=None,
8352                                        phone_setup_c=None,
8353                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8354                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8355                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8356        if call_ab_id is None or call_ac_id is None:
8357            return False
8358
8359        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8360            call_ab_id, call_ac_id)
8361
8362
8363    @TelephonyBaseTest.tel_test_wrap
8364    @test_tracker_info(uuid="7f744ab3-f919-4a7a-83ce-e38487d619cc")
8365    def test_epdg_mo_mt_add_volte_swap_twice_merge_drop_wfc_wifi_preferred(
8366            self):
8367        """Test swap and merge feature in epdg call.
8368
8369        PhoneA (epdg) call PhoneB (VoLTE), accept on PhoneB.
8370        PhoneC (VoLTE) call PhoneA (epdg), accept on PhoneA.
8371        Swap active call on PhoneA.
8372        Swap active call on PhoneA.
8373        Merge calls to conference on PhoneA.
8374        Hangup on PhoneC, check call continues between AB.
8375        Hangup on PhoneB, check A ends.
8376
8377        """
8378        ads = self.android_devices
8379
8380        tasks = [(phone_setup_iwlan,
8381                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8382                   self.wifi_network_ssid, self.wifi_network_pass)),
8383                 (phone_setup_volte, (self.log, ads[1])), (phone_setup_volte,
8384                                                           (self.log, ads[2]))]
8385        if not multithread_func(self.log, tasks):
8386            self.log.error("Phone Failed to Set Up Properly.")
8387            return False
8388
8389        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8390                                        ads=ads,
8391                                        num_swaps=2,
8392                                        phone_setup_a=None,
8393                                        phone_setup_b=None,
8394                                        phone_setup_c=None,
8395                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8396                                        verify_phone_b_network_subscription=is_phone_in_call_volte,
8397                                        verify_phone_c_network_subscription=is_phone_in_call_volte)
8398        if call_ab_id is None or call_ac_id is None:
8399            return False
8400
8401        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8402            call_ab_id, call_ac_id)
8403
8404
8405    @TelephonyBaseTest.tel_test_wrap
8406    @test_tracker_info(uuid="5c861a99-a1b8-45fc-ba67-f8fde4575efc")
8407    def test_epdg_mo_mo_add_wcdma_swap_once_merge_drop_wfc_wifi_only(self):
8408        """Test swap and merge feature in epdg call.
8409
8410        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8411        PhoneA (epdg) call PhoneC (WCDMA), accept on PhoneC.
8412        Swap active call on PhoneA.
8413        Merge calls to conference on PhoneA.
8414        Hangup on PhoneC, check call continues between AB.
8415        Hangup on PhoneB, check A ends.
8416
8417        """
8418        ads = self.android_devices
8419
8420        tasks = [(phone_setup_iwlan,
8421                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8422                   self.wifi_network_ssid, self.wifi_network_pass)),
8423                 (phone_setup_voice_3g, (self.log, ads[1])),
8424                 (phone_setup_voice_3g, (self.log, ads[2]))]
8425        if not multithread_func(self.log, tasks):
8426            self.log.error("Phone Failed to Set Up Properly.")
8427            return False
8428
8429        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8430                                        ads=ads,
8431                                        num_swaps=1,
8432                                        phone_setup_a=None,
8433                                        phone_setup_b=None,
8434                                        phone_setup_c=None,
8435                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8436                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8437                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8438        if call_ab_id is None or call_ac_id is None:
8439            return False
8440
8441        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8442            call_ab_id, call_ac_id)
8443
8444
8445    @TelephonyBaseTest.tel_test_wrap
8446    @test_tracker_info(uuid="fdb32a13-302c-4c1c-a77e-f78ed7e90911")
8447    def test_epdg_mo_mo_add_wcdma_swap_once_merge_drop_wfc_wifi_preferred(
8448            self):
8449        """Test swap and merge feature in epdg call.
8450
8451        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8452        PhoneA (epdg) call PhoneC (WCDMA), accept on PhoneC.
8453        Swap active call on PhoneA.
8454        Merge calls to conference on PhoneA.
8455        Hangup on PhoneC, check call continues between AB.
8456        Hangup on PhoneB, check A ends.
8457
8458        """
8459        ads = self.android_devices
8460
8461        tasks = [(phone_setup_iwlan,
8462                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8463                   self.wifi_network_ssid, self.wifi_network_pass)),
8464                 (phone_setup_voice_3g, (self.log, ads[1])),
8465                 (phone_setup_voice_3g, (self.log, ads[2]))]
8466        if not multithread_func(self.log, tasks):
8467            self.log.error("Phone Failed to Set Up Properly.")
8468            return False
8469
8470        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8471                                        ads=ads,
8472                                        num_swaps=1,
8473                                        phone_setup_a=None,
8474                                        phone_setup_b=None,
8475                                        phone_setup_c=None,
8476                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8477                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8478                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8479        if call_ab_id is None or call_ac_id is None:
8480            return False
8481
8482        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8483            call_ab_id, call_ac_id)
8484
8485
8486    @TelephonyBaseTest.tel_test_wrap
8487    @test_tracker_info(uuid="a2cf3366-ae66-4e8f-a682-df506173f282")
8488    def test_epdg_mo_mo_add_wcdma_swap_twice_merge_drop_wfc_wifi_only(self):
8489        """Test swap and merge feature in epdg call.
8490
8491        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8492        PhoneA (epdg) call PhoneC (WCDMA), accept on PhoneC.
8493        Swap active call on PhoneA.
8494        Swap active call on PhoneA.
8495        Merge calls to conference on PhoneA.
8496        Hangup on PhoneC, check call continues between AB.
8497        Hangup on PhoneB, check A ends.
8498
8499        """
8500        ads = self.android_devices
8501
8502        tasks = [(phone_setup_iwlan,
8503                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8504                   self.wifi_network_ssid, self.wifi_network_pass)),
8505                 (phone_setup_voice_3g, (self.log, ads[1])),
8506                 (phone_setup_voice_3g, (self.log, ads[2]))]
8507        if not multithread_func(self.log, tasks):
8508            self.log.error("Phone Failed to Set Up Properly.")
8509            return False
8510
8511        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8512                                        ads=ads,
8513                                        num_swaps=2,
8514                                        phone_setup_a=None,
8515                                        phone_setup_b=None,
8516                                        phone_setup_c=None,
8517                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8518                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8519                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8520        if call_ab_id is None or call_ac_id is None:
8521            return False
8522
8523        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8524            call_ab_id, call_ac_id)
8525
8526
8527    @TelephonyBaseTest.tel_test_wrap
8528    @test_tracker_info(uuid="fc5f0f1c-9610-4d0f-adce-9c8db351e7da")
8529    def test_epdg_mo_mo_add_wcdma_swap_twice_merge_drop_wfc_wifi_preferred(
8530            self):
8531        """Test swap and merge feature in epdg call.
8532
8533        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8534        PhoneA (epdg) call PhoneC (WCDMA), accept on PhoneC.
8535        Swap active call on PhoneA.
8536        Swap active call on PhoneA.
8537        Merge calls to conference on PhoneA.
8538        Hangup on PhoneC, check call continues between AB.
8539        Hangup on PhoneB, check A ends.
8540
8541        """
8542        ads = self.android_devices
8543
8544        tasks = [(phone_setup_iwlan,
8545                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8546                   self.wifi_network_ssid, self.wifi_network_pass)),
8547                 (phone_setup_voice_3g, (self.log, ads[1])),
8548                 (phone_setup_voice_3g, (self.log, ads[2]))]
8549        if not multithread_func(self.log, tasks):
8550            self.log.error("Phone Failed to Set Up Properly.")
8551            return False
8552
8553        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8554                                        ads=ads,
8555                                        num_swaps=2,
8556                                        phone_setup_a=None,
8557                                        phone_setup_b=None,
8558                                        phone_setup_c=None,
8559                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8560                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8561                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8562        if call_ab_id is None or call_ac_id is None:
8563            return False
8564
8565        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8566            call_ab_id, call_ac_id)
8567
8568
8569    @TelephonyBaseTest.tel_test_wrap
8570    @test_tracker_info(uuid="05332b1e-c36b-4874-b13b-f8e49d0d9bca")
8571    def test_epdg_mo_mt_add_wcdma_swap_once_merge_drop_wfc_wifi_only(self):
8572        """Test swap and merge feature in epdg call.
8573
8574        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8575        PhoneC (WCDMA) call PhoneA (epdg), accept on PhoneA.
8576        Swap active call on PhoneA.
8577        Merge calls to conference on PhoneA.
8578        Hangup on PhoneC, check call continues between AB.
8579        Hangup on PhoneB, check A ends.
8580
8581        """
8582        ads = self.android_devices
8583
8584        tasks = [(phone_setup_iwlan,
8585                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8586                   self.wifi_network_ssid, self.wifi_network_pass)),
8587                 (phone_setup_voice_3g, (self.log, ads[1])),
8588                 (phone_setup_voice_3g, (self.log, ads[2]))]
8589        if not multithread_func(self.log, tasks):
8590            self.log.error("Phone Failed to Set Up Properly.")
8591            return False
8592
8593        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8594                                        ads=ads,
8595                                        num_swaps=1,
8596                                        phone_setup_a=None,
8597                                        phone_setup_b=None,
8598                                        phone_setup_c=None,
8599                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8600                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8601                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8602        if call_ab_id is None or call_ac_id is None:
8603            return False
8604
8605        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8606            call_ab_id, call_ac_id)
8607
8608
8609    @TelephonyBaseTest.tel_test_wrap
8610    @test_tracker_info(uuid="2421d340-f9cb-47e7-ac3e-8581e141a6d0")
8611    def test_epdg_mo_mt_add_wcdma_swap_once_merge_drop_wfc_wifi_preferred(
8612            self):
8613        """Test swap and merge feature in epdg call.
8614
8615        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8616        PhoneC (WCDMA) call PhoneA (epdg), accept on PhoneA.
8617        Swap active call on PhoneA.
8618        Merge calls to conference on PhoneA.
8619        Hangup on PhoneC, check call continues between AB.
8620        Hangup on PhoneB, check A ends.
8621
8622        """
8623        ads = self.android_devices
8624
8625        tasks = [(phone_setup_iwlan,
8626                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8627                   self.wifi_network_ssid, self.wifi_network_pass)),
8628                 (phone_setup_voice_3g, (self.log, ads[1])),
8629                 (phone_setup_voice_3g, (self.log, ads[2]))]
8630        if not multithread_func(self.log, tasks):
8631            self.log.error("Phone Failed to Set Up Properly.")
8632            return False
8633
8634        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8635                                        ads=ads,
8636                                        num_swaps=1,
8637                                        phone_setup_a=None,
8638                                        phone_setup_b=None,
8639                                        phone_setup_c=None,
8640                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8641                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8642                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8643        if call_ab_id is None or call_ac_id is None:
8644            return False
8645
8646        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8647            call_ab_id, call_ac_id)
8648
8649
8650    @TelephonyBaseTest.tel_test_wrap
8651    @test_tracker_info(uuid="7c1f6008-cf59-4e63-9285-3cf1c26bc0aa")
8652    def test_epdg_mo_mt_add_wcdma_swap_twice_merge_drop_wfc_wifi_only(self):
8653        """Test swap and merge feature in epdg call.
8654
8655        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8656        PhoneC (WCDMA) call PhoneA (epdg), accept on PhoneA.
8657        Swap active call on PhoneA.
8658        Swap active call on PhoneA.
8659        Merge calls to conference on PhoneA.
8660        Hangup on PhoneC, check call continues between AB.
8661        Hangup on PhoneB, check A ends.
8662
8663        """
8664        ads = self.android_devices
8665
8666        tasks = [(phone_setup_iwlan,
8667                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8668                   self.wifi_network_ssid, self.wifi_network_pass)),
8669                 (phone_setup_voice_3g, (self.log, ads[1])),
8670                 (phone_setup_voice_3g, (self.log, ads[2]))]
8671        if not multithread_func(self.log, tasks):
8672            self.log.error("Phone Failed to Set Up Properly.")
8673            return False
8674
8675        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8676                                        ads=ads,
8677                                        num_swaps=2,
8678                                        phone_setup_a=None,
8679                                        phone_setup_b=None,
8680                                        phone_setup_c=None,
8681                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8682                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8683                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8684        if call_ab_id is None or call_ac_id is None:
8685            return False
8686
8687        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8688            call_ab_id, call_ac_id)
8689
8690
8691    @TelephonyBaseTest.tel_test_wrap
8692    @test_tracker_info(uuid="be153f3d-0707-45d0-9ddd-4aa696e0e536")
8693    def test_epdg_mo_mt_add_wcdma_swap_twice_merge_drop_wfc_wifi_preferred(
8694            self):
8695        """Test swap and merge feature in epdg call.
8696
8697        PhoneA (epdg) call PhoneB (WCDMA), accept on PhoneB.
8698        PhoneC (WCDMA) call PhoneA (epdg), accept on PhoneA.
8699        Swap active call on PhoneA.
8700        Swap active call on PhoneA.
8701        Merge calls to conference on PhoneA.
8702        Hangup on PhoneC, check call continues between AB.
8703        Hangup on PhoneB, check A ends.
8704
8705        """
8706        ads = self.android_devices
8707
8708        tasks = [(phone_setup_iwlan,
8709                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8710                   self.wifi_network_ssid, self.wifi_network_pass)),
8711                 (phone_setup_voice_3g, (self.log, ads[1])),
8712                 (phone_setup_voice_3g, (self.log, ads[2]))]
8713        if not multithread_func(self.log, tasks):
8714            self.log.error("Phone Failed to Set Up Properly.")
8715            return False
8716
8717        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8718                                        ads=ads,
8719                                        num_swaps=2,
8720                                        phone_setup_a=None,
8721                                        phone_setup_b=None,
8722                                        phone_setup_c=None,
8723                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8724                                        verify_phone_b_network_subscription=is_phone_in_call_wcdma,
8725                                        verify_phone_c_network_subscription=is_phone_in_call_wcdma)
8726        if call_ab_id is None or call_ac_id is None:
8727            return False
8728
8729        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8730            call_ab_id, call_ac_id)
8731
8732
8733    @TelephonyBaseTest.tel_test_wrap
8734    @test_tracker_info(uuid="7235c917-a2d4-4561-bda5-630171053f8f")
8735    def test_epdg_mo_mo_add_1x_swap_once_merge_drop_wfc_wifi_only(self):
8736        """Test swap and merge feature in epdg call.
8737
8738        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8739        PhoneA (epdg) call PhoneC (1x), accept on PhoneC.
8740        Swap active call on PhoneA.
8741        Merge calls to conference on PhoneA.
8742        Hangup on PhoneC, check call continues between AB.
8743        Hangup on PhoneB, check A ends.
8744
8745        """
8746        ads = self.android_devices
8747
8748        tasks = [(phone_setup_iwlan,
8749                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8750                   self.wifi_network_ssid, self.wifi_network_pass)),
8751                 (phone_setup_voice_3g, (self.log, ads[1])),
8752                 (phone_setup_voice_3g, (self.log, ads[2]))]
8753        if not multithread_func(self.log, tasks):
8754            self.log.error("Phone Failed to Set Up Properly.")
8755            return False
8756
8757        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8758                                        ads=ads,
8759                                        num_swaps=1,
8760                                        phone_setup_a=None,
8761                                        phone_setup_b=None,
8762                                        phone_setup_c=None,
8763                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8764                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8765                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8766        if call_ab_id is None or call_ac_id is None:
8767            return False
8768
8769        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8770            call_ab_id, call_ac_id)
8771
8772
8773    @TelephonyBaseTest.tel_test_wrap
8774    @test_tracker_info(uuid="8e52b9a4-c0d1-4dcd-9359-746354124763")
8775    def test_epdg_mo_mo_add_1x_swap_once_merge_drop_wfc_wifi_preferred(self):
8776        """Test swap and merge feature in epdg call.
8777
8778        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8779        PhoneA (epdg) call PhoneC (1x), accept on PhoneC.
8780        Swap active call on PhoneA.
8781        Merge calls to conference on PhoneA.
8782        Hangup on PhoneC, check call continues between AB.
8783        Hangup on PhoneB, check A ends.
8784
8785        """
8786        ads = self.android_devices
8787
8788        tasks = [(phone_setup_iwlan,
8789                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8790                   self.wifi_network_ssid, self.wifi_network_pass)),
8791                 (phone_setup_voice_3g, (self.log, ads[1])),
8792                 (phone_setup_voice_3g, (self.log, ads[2]))]
8793        if not multithread_func(self.log, tasks):
8794            self.log.error("Phone Failed to Set Up Properly.")
8795            return False
8796
8797        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8798                                        ads=ads,
8799                                        num_swaps=1,
8800                                        phone_setup_a=None,
8801                                        phone_setup_b=None,
8802                                        phone_setup_c=None,
8803                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8804                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8805                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8806        if call_ab_id is None or call_ac_id is None:
8807            return False
8808
8809        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8810            call_ab_id, call_ac_id)
8811
8812
8813    @TelephonyBaseTest.tel_test_wrap
8814    @test_tracker_info(uuid="49a4440f-40a1-4518-810a-6ba9f1fbc243")
8815    def test_epdg_mo_mo_add_1x_swap_twice_merge_drop_wfc_wifi_only(self):
8816        """Test swap and merge feature in epdg call.
8817
8818        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8819        PhoneA (epdg) call PhoneC (1x), accept on PhoneC.
8820        Swap active call on PhoneA.
8821        Swap active call on PhoneA.
8822        Merge calls to conference on PhoneA.
8823        Hangup on PhoneC, check call continues between AB.
8824        Hangup on PhoneB, check A ends.
8825
8826        """
8827        ads = self.android_devices
8828
8829        tasks = [(phone_setup_iwlan,
8830                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8831                   self.wifi_network_ssid, self.wifi_network_pass)),
8832                 (phone_setup_voice_3g, (self.log, ads[1])),
8833                 (phone_setup_voice_3g, (self.log, ads[2]))]
8834        if not multithread_func(self.log, tasks):
8835            self.log.error("Phone Failed to Set Up Properly.")
8836            return False
8837
8838        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8839                                        ads=ads,
8840                                        num_swaps=2,
8841                                        phone_setup_a=None,
8842                                        phone_setup_b=None,
8843                                        phone_setup_c=None,
8844                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8845                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8846                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8847        if call_ab_id is None or call_ac_id is None:
8848            return False
8849
8850        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8851            call_ab_id, call_ac_id)
8852
8853
8854    @TelephonyBaseTest.tel_test_wrap
8855    @test_tracker_info(uuid="9d05bde3-50ac-4a49-a0db-2181c9b5a10f")
8856    def test_epdg_mo_mo_add_1x_swap_twice_merge_drop_wfc_wifi_preferred(self):
8857        """Test swap and merge feature in epdg call.
8858
8859        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8860        PhoneA (epdg) call PhoneC (1x), accept on PhoneC.
8861        Swap active call on PhoneA.
8862        Swap active call on PhoneA.
8863        Merge calls to conference on PhoneA.
8864        Hangup on PhoneC, check call continues between AB.
8865        Hangup on PhoneB, check A ends.
8866
8867        """
8868        ads = self.android_devices
8869
8870        tasks = [(phone_setup_iwlan,
8871                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8872                   self.wifi_network_ssid, self.wifi_network_pass)),
8873                 (phone_setup_voice_3g, (self.log, ads[1])),
8874                 (phone_setup_voice_3g, (self.log, ads[2]))]
8875        if not multithread_func(self.log, tasks):
8876            self.log.error("Phone Failed to Set Up Properly.")
8877            return False
8878
8879        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
8880                                        ads=ads,
8881                                        num_swaps=2,
8882                                        phone_setup_a=None,
8883                                        phone_setup_b=None,
8884                                        phone_setup_c=None,
8885                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8886                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8887                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8888        if call_ab_id is None or call_ac_id is None:
8889            return False
8890
8891        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8892            call_ab_id, call_ac_id)
8893
8894
8895    @TelephonyBaseTest.tel_test_wrap
8896    @test_tracker_info(uuid="5c44eb64-b184-417a-97c9-8c22c48fb731")
8897    def test_epdg_mo_mt_add_1x_swap_once_merge_drop_wfc_wifi_only(self):
8898        """Test swap and merge feature in epdg call.
8899
8900        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8901        PhoneC (1x) call PhoneA (epdg), accept on PhoneA.
8902        Swap active call on PhoneA.
8903        Merge calls to conference on PhoneA.
8904        Hangup on PhoneC, check call continues between AB.
8905        Hangup on PhoneB, check A ends.
8906
8907        """
8908        ads = self.android_devices
8909
8910        tasks = [(phone_setup_iwlan,
8911                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8912                   self.wifi_network_ssid, self.wifi_network_pass)),
8913                 (phone_setup_voice_3g, (self.log, ads[1])),
8914                 (phone_setup_voice_3g, (self.log, ads[2]))]
8915        if not multithread_func(self.log, tasks):
8916            self.log.error("Phone Failed to Set Up Properly.")
8917            return False
8918
8919        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8920                                        ads=ads,
8921                                        num_swaps=1,
8922                                        phone_setup_a=None,
8923                                        phone_setup_b=None,
8924                                        phone_setup_c=None,
8925                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8926                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8927                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8928        if call_ab_id is None or call_ac_id is None:
8929            return False
8930
8931        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8932            call_ab_id, call_ac_id)
8933
8934
8935    @TelephonyBaseTest.tel_test_wrap
8936    @test_tracker_info(uuid="e16e2e81-1b59-4b02-b601-bb27b62d6468")
8937    def test_epdg_mo_mt_add_1x_swap_once_merge_drop_wfc_wifi_preferred(self):
8938        """Test swap and merge feature in epdg call.
8939
8940        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8941        PhoneC (1x) call PhoneA (epdg), accept on PhoneA.
8942        Swap active call on PhoneA.
8943        Merge calls to conference on PhoneA.
8944        Hangup on PhoneC, check call continues between AB.
8945        Hangup on PhoneB, check A ends.
8946
8947        """
8948        ads = self.android_devices
8949
8950        tasks = [(phone_setup_iwlan,
8951                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
8952                   self.wifi_network_ssid, self.wifi_network_pass)),
8953                 (phone_setup_voice_3g, (self.log, ads[1])),
8954                 (phone_setup_voice_3g, (self.log, ads[2]))]
8955        if not multithread_func(self.log, tasks):
8956            self.log.error("Phone Failed to Set Up Properly.")
8957            return False
8958
8959        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
8960                                        ads=ads,
8961                                        num_swaps=1,
8962                                        phone_setup_a=None,
8963                                        phone_setup_b=None,
8964                                        phone_setup_c=None,
8965                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
8966                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
8967                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
8968        if call_ab_id is None or call_ac_id is None:
8969            return False
8970
8971        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
8972            call_ab_id, call_ac_id)
8973
8974
8975    @TelephonyBaseTest.tel_test_wrap
8976    @test_tracker_info(uuid="fd4c3b72-ea2d-4cd4-af79-b93635eda8b8")
8977    def test_epdg_mo_mt_add_1x_swap_twice_merge_drop_wfc_wifi_only(self):
8978        """Test swap and merge feature in epdg call.
8979
8980        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
8981        PhoneC (1x) call PhoneA (epdg), accept on PhoneA.
8982        Swap active call on PhoneA.
8983        Swap active call on PhoneA.
8984        Merge calls to conference on PhoneA.
8985        Hangup on PhoneC, check call continues between AB.
8986        Hangup on PhoneB, check A ends.
8987
8988        """
8989        ads = self.android_devices
8990
8991        tasks = [(phone_setup_iwlan,
8992                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
8993                   self.wifi_network_ssid, self.wifi_network_pass)),
8994                 (phone_setup_voice_3g, (self.log, ads[1])),
8995                 (phone_setup_voice_3g, (self.log, ads[2]))]
8996        if not multithread_func(self.log, tasks):
8997            self.log.error("Phone Failed to Set Up Properly.")
8998            return False
8999
9000        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9001                                        ads=ads,
9002                                        num_swaps=2,
9003                                        phone_setup_a=None,
9004                                        phone_setup_b=None,
9005                                        phone_setup_c=None,
9006                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9007                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
9008                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
9009        if call_ab_id is None or call_ac_id is None:
9010            return False
9011
9012        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
9013            call_ab_id, call_ac_id)
9014
9015
9016    @TelephonyBaseTest.tel_test_wrap
9017    @test_tracker_info(uuid="a33d7b2b-cc22-40c3-9689-a2a14642396d")
9018    def test_epdg_mo_mt_add_1x_swap_twice_merge_drop_wfc_wifi_preferred(self):
9019        """Test swap and merge feature in epdg call.
9020
9021        PhoneA (epdg) call PhoneB (1x), accept on PhoneB.
9022        PhoneC (1x) call PhoneA (epdg), accept on PhoneA.
9023        Swap active call on PhoneA.
9024        Swap active call on PhoneA.
9025        Merge calls to conference on PhoneA.
9026        Hangup on PhoneC, check call continues between AB.
9027        Hangup on PhoneB, check A ends.
9028
9029        """
9030        ads = self.android_devices
9031
9032        tasks = [(phone_setup_iwlan,
9033                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9034                   self.wifi_network_ssid, self.wifi_network_pass)),
9035                 (phone_setup_voice_3g, (self.log, ads[1])),
9036                 (phone_setup_voice_3g, (self.log, ads[2]))]
9037        if not multithread_func(self.log, tasks):
9038            self.log.error("Phone Failed to Set Up Properly.")
9039            return False
9040
9041        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9042                                        ads=ads,
9043                                        num_swaps=2,
9044                                        phone_setup_a=None,
9045                                        phone_setup_b=None,
9046                                        phone_setup_c=None,
9047                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9048                                        verify_phone_b_network_subscription=is_phone_in_call_1x,
9049                                        verify_phone_c_network_subscription=is_phone_in_call_1x)
9050        if call_ab_id is None or call_ac_id is None:
9051            return False
9052
9053        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
9054            call_ab_id, call_ac_id)
9055
9056
9057    @TelephonyBaseTest.tel_test_wrap
9058    @test_tracker_info(uuid="7839c6a3-6797-4cd0-a918-c7d317881e3d")
9059    def test_epdg_mo_mo_add_epdg_swap_twice_drop_held_wfc_wifi_only(self):
9060        """Test swap feature in epdg call.
9061
9062        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9063        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9064        Swap active call on PhoneA.
9065        Swap active call on PhoneA.
9066        Hangup call from PhoneB, check if call continues between AC.
9067
9068        """
9069        ads = self.android_devices
9070
9071        tasks = [(phone_setup_iwlan,
9072                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9073                   self.wifi_network_ssid, self.wifi_network_pass)),
9074                 (phone_setup_iwlan,
9075                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9076                   self.wifi_network_ssid, self.wifi_network_pass)),
9077                 (phone_setup_iwlan,
9078                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9079                   self.wifi_network_ssid, self.wifi_network_pass))]
9080        if not multithread_func(self.log, tasks):
9081            self.log.error("Phone Failed to Set Up Properly.")
9082            return False
9083
9084        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9085                                        ads=ads,
9086                                        num_swaps=2,
9087                                        phone_setup_a=None,
9088                                        phone_setup_b=None,
9089                                        phone_setup_c=None,
9090                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9091                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9092                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9093        if call_ab_id is None or call_ac_id is None:
9094            return False
9095
9096        return _three_phone_hangup_call_verify_call_state(log=self.log,
9097            ad_hangup=ads[1],
9098            ad_verify=ads[0],
9099            call_id=call_ac_id,
9100            call_state=CALL_STATE_ACTIVE,
9101            ads_active=[ads[0], ads[2]])
9102
9103
9104    @TelephonyBaseTest.tel_test_wrap
9105    @test_tracker_info(uuid="3f4e761e-8fa2-4b85-bc11-8150532b7686")
9106    def test_epdg_mo_mo_add_epdg_swap_twice_drop_held_wfc_wifi_preferred(self):
9107        """Test swap feature in epdg call.
9108
9109        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9110        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9111        Swap active call on PhoneA.
9112        Swap active call on PhoneA.
9113        Hangup call from PhoneB, check if call continues between AC.
9114
9115        """
9116        ads = self.android_devices
9117
9118        tasks = [(phone_setup_iwlan,
9119                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9120                   self.wifi_network_ssid, self.wifi_network_pass)),
9121                 (phone_setup_iwlan,
9122                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9123                   self.wifi_network_ssid, self.wifi_network_pass)),
9124                 (phone_setup_iwlan,
9125                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9126                   self.wifi_network_ssid, self.wifi_network_pass))]
9127        if not multithread_func(self.log, tasks):
9128            self.log.error("Phone Failed to Set Up Properly.")
9129            return False
9130
9131        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9132                                        ads=ads,
9133                                        num_swaps=2,
9134                                        phone_setup_a=None,
9135                                        phone_setup_b=None,
9136                                        phone_setup_c=None,
9137                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9138                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9139                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9140        if call_ab_id is None or call_ac_id is None:
9141            return False
9142
9143        return _three_phone_hangup_call_verify_call_state(log=self.log,
9144            ad_hangup=ads[1],
9145            ad_verify=ads[0],
9146            call_id=call_ac_id,
9147            call_state=CALL_STATE_ACTIVE,
9148            ads_active=[ads[0], ads[2]])
9149
9150
9151    @TelephonyBaseTest.tel_test_wrap
9152    @test_tracker_info(uuid="9fd4f171-9eea-4fc7-91f1-d3c7f08a5fad")
9153    def test_epdg_mo_mo_add_epdg_swap_twice_drop_active_wfc_wifi_only(self):
9154        """Test swap feature in epdg call.
9155
9156        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9157        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9158        Swap active call on PhoneA.
9159        Swap active call on PhoneA.
9160        Hangup call from PhoneC, check if call continues between AB.
9161
9162        """
9163        ads = self.android_devices
9164
9165        tasks = [(phone_setup_iwlan,
9166                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9167                   self.wifi_network_ssid, self.wifi_network_pass)),
9168                 (phone_setup_iwlan,
9169                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9170                   self.wifi_network_ssid, self.wifi_network_pass)),
9171                 (phone_setup_iwlan,
9172                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9173                   self.wifi_network_ssid, self.wifi_network_pass))]
9174        if not multithread_func(self.log, tasks):
9175            self.log.error("Phone Failed to Set Up Properly.")
9176            return False
9177
9178        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9179                                        ads=ads,
9180                                        num_swaps=2,
9181                                        phone_setup_a=None,
9182                                        phone_setup_b=None,
9183                                        phone_setup_c=None,
9184                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9185                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9186                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9187        if call_ab_id is None or call_ac_id is None:
9188            return False
9189
9190        return _three_phone_hangup_call_verify_call_state(log=self.log,
9191            ad_hangup=ads[2],
9192            ad_verify=ads[0],
9193            call_id=call_ab_id,
9194            call_state=_get_expected_call_state(ads[0]),
9195            ads_active=[ads[0], ads[1]])
9196
9197
9198    @TelephonyBaseTest.tel_test_wrap
9199    @test_tracker_info(uuid="8b97d6b9-253a-4ab7-8afb-126df71fee41")
9200    def test_epdg_mo_mo_add_epdg_swap_twice_drop_active_wfc_wifi_preferred(
9201            self):
9202        """Test swap feature in epdg call.
9203
9204        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9205        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9206        Swap active call on PhoneA.
9207        Swap active call on PhoneA.
9208        Hangup call from PhoneC, check if call continues between AB.
9209
9210        """
9211        ads = self.android_devices
9212
9213        tasks = [(phone_setup_iwlan,
9214                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9215                   self.wifi_network_ssid, self.wifi_network_pass)),
9216                 (phone_setup_iwlan,
9217                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9218                   self.wifi_network_ssid, self.wifi_network_pass)),
9219                 (phone_setup_iwlan,
9220                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9221                   self.wifi_network_ssid, self.wifi_network_pass))]
9222        if not multithread_func(self.log, tasks):
9223            self.log.error("Phone Failed to Set Up Properly.")
9224            return False
9225
9226        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9227                                        ads=ads,
9228                                        num_swaps=2,
9229                                        phone_setup_a=None,
9230                                        phone_setup_b=None,
9231                                        phone_setup_c=None,
9232                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9233                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9234                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9235        if call_ab_id is None or call_ac_id is None:
9236            return False
9237
9238        return _three_phone_hangup_call_verify_call_state(log=self.log,
9239            ad_hangup=ads[2],
9240            ad_verify=ads[0],
9241            call_id=call_ab_id,
9242            call_state=_get_expected_call_state(ads[0]),
9243            ads_active=[ads[0], ads[1]])
9244
9245
9246    @TelephonyBaseTest.tel_test_wrap
9247    @test_tracker_info(uuid="6617e779-c987-41dd-acda-ff132662ccf0")
9248    def test_epdg_mo_mo_add_epdg_swap_twice_drop_active_apm_wifi_preferred(
9249            self):
9250        """Test swap feature in epdg call.
9251
9252        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9253        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9254        Swap active call on PhoneA.
9255        Swap active call on PhoneA.
9256        Hangup call from PhoneC, check if call continues between AB.
9257
9258        """
9259        ads = self.android_devices
9260
9261        tasks = [(phone_setup_iwlan,
9262                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
9263                   self.wifi_network_ssid, self.wifi_network_pass)),
9264                 (phone_setup_iwlan,
9265                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
9266                   self.wifi_network_ssid, self.wifi_network_pass)),
9267                 (phone_setup_iwlan,
9268                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
9269                   self.wifi_network_ssid, self.wifi_network_pass))]
9270        if not multithread_func(self.log, tasks):
9271            self.log.error("Phone Failed to Set Up Properly.")
9272            return False
9273
9274        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9275                                        ads=ads,
9276                                        num_swaps=2,
9277                                        phone_setup_a=None,
9278                                        phone_setup_b=None,
9279                                        phone_setup_c=None,
9280                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9281                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9282                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9283        if call_ab_id is None or call_ac_id is None:
9284            return False
9285
9286        return _three_phone_hangup_call_verify_call_state(log=self.log,
9287            ad_hangup=ads[2],
9288            ad_verify=ads[0],
9289            call_id=call_ab_id,
9290            call_state=_get_expected_call_state(ads[0]),
9291            ads_active=[ads[0], ads[1]])
9292
9293
9294    @TelephonyBaseTest.tel_test_wrap
9295    @test_tracker_info(uuid="f8b61289-ccc5-4adf-b291-94c73925edb3")
9296    def test_epdg_mo_mt_add_epdg_swap_twice_drop_held_wfc_wifi_only(self):
9297        """Test swap feature in epdg call.
9298
9299        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9300        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9301        Swap active call on PhoneA.
9302        Swap active call on PhoneA.
9303        Hangup call from PhoneB, check if call continues between AC.
9304
9305        """
9306        ads = self.android_devices
9307
9308        tasks = [(phone_setup_iwlan,
9309                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9310                   self.wifi_network_ssid, self.wifi_network_pass)),
9311                 (phone_setup_iwlan,
9312                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9313                   self.wifi_network_ssid, self.wifi_network_pass)),
9314                 (phone_setup_iwlan,
9315                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9316                   self.wifi_network_ssid, self.wifi_network_pass))]
9317        if not multithread_func(self.log, tasks):
9318            self.log.error("Phone Failed to Set Up Properly.")
9319            return False
9320
9321        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9322                                        ads=ads,
9323                                        num_swaps=2,
9324                                        phone_setup_a=None,
9325                                        phone_setup_b=None,
9326                                        phone_setup_c=None,
9327                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9328                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9329                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9330        if call_ab_id is None or call_ac_id is None:
9331            return False
9332
9333        return _three_phone_hangup_call_verify_call_state(log=self.log,
9334            ad_hangup=ads[1],
9335            ad_verify=ads[0],
9336            call_id=call_ac_id,
9337            call_state=CALL_STATE_ACTIVE,
9338            ads_active=[ads[0], ads[2]])
9339
9340
9341    @TelephonyBaseTest.tel_test_wrap
9342    @test_tracker_info(uuid="bb975203-7cee-4fbc-ad4a-da473413e410")
9343    def test_epdg_mo_mt_add_epdg_swap_twice_drop_held_wfc_wifi_preferred(self):
9344        """Test swap feature in epdg call.
9345
9346        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9347        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9348        Swap active call on PhoneA.
9349        Swap active call on PhoneA.
9350        Hangup call from PhoneB, check if call continues between AC.
9351
9352        """
9353        ads = self.android_devices
9354
9355        tasks = [(phone_setup_iwlan,
9356                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9357                   self.wifi_network_ssid, self.wifi_network_pass)),
9358                 (phone_setup_iwlan,
9359                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9360                   self.wifi_network_ssid, self.wifi_network_pass)),
9361                 (phone_setup_iwlan,
9362                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9363                   self.wifi_network_ssid, self.wifi_network_pass))]
9364        if not multithread_func(self.log, tasks):
9365            self.log.error("Phone Failed to Set Up Properly.")
9366            return False
9367
9368        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9369                                        ads=ads,
9370                                        num_swaps=2,
9371                                        phone_setup_a=None,
9372                                        phone_setup_b=None,
9373                                        phone_setup_c=None,
9374                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9375                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9376                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9377        if call_ab_id is None or call_ac_id is None:
9378            return False
9379
9380        return _three_phone_hangup_call_verify_call_state(log=self.log,
9381            ad_hangup=ads[1],
9382            ad_verify=ads[0],
9383            call_id=call_ac_id,
9384            call_state=CALL_STATE_ACTIVE,
9385            ads_active=[ads[0], ads[2]])
9386
9387
9388    @TelephonyBaseTest.tel_test_wrap
9389    @test_tracker_info(uuid="593f6034-fd15-4b1d-a9fe-c4331e6a7f72")
9390    def test_epdg_mo_mt_add_epdg_swap_twice_drop_active_wfc_wifi_only(self):
9391        """Test swap feature in epdg call.
9392
9393        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9394        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9395        Swap active call on PhoneA.
9396        Swap active call on PhoneA.
9397        Hangup call from PhoneC, check if call continues between AB.
9398
9399        """
9400        ads = self.android_devices
9401
9402        tasks = [(phone_setup_iwlan,
9403                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9404                   self.wifi_network_ssid, self.wifi_network_pass)),
9405                 (phone_setup_iwlan,
9406                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9407                   self.wifi_network_ssid, self.wifi_network_pass)),
9408                 (phone_setup_iwlan,
9409                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9410                   self.wifi_network_ssid, self.wifi_network_pass))]
9411        if not multithread_func(self.log, tasks):
9412            self.log.error("Phone Failed to Set Up Properly.")
9413            return False
9414
9415        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9416                                        ads=ads,
9417                                        num_swaps=2,
9418                                        phone_setup_a=None,
9419                                        phone_setup_b=None,
9420                                        phone_setup_c=None,
9421                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9422                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9423                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9424        if call_ab_id is None or call_ac_id is None:
9425            return False
9426
9427        return _three_phone_hangup_call_verify_call_state(log=self.log,
9428            ad_hangup=ads[2],
9429            ad_verify=ads[0],
9430            call_id=call_ab_id,
9431            call_state=_get_expected_call_state(ads[0]),
9432            ads_active=[ads[0], ads[1]])
9433
9434
9435    @TelephonyBaseTest.tel_test_wrap
9436    @test_tracker_info(uuid="adc3fb00-543e-44ec-905b-0eea52790896")
9437    def test_epdg_mo_mt_add_epdg_swap_twice_drop_active_wfc_wifi_preferred(
9438            self):
9439        """Test swap feature in epdg call.
9440
9441        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9442        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9443        Swap active call on PhoneA.
9444        Swap active call on PhoneA.
9445        Hangup call from PhoneC, check if call continues between AB.
9446
9447        """
9448        ads = self.android_devices
9449
9450        tasks = [(phone_setup_iwlan,
9451                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9452                   self.wifi_network_ssid, self.wifi_network_pass)),
9453                 (phone_setup_iwlan,
9454                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9455                   self.wifi_network_ssid, self.wifi_network_pass)),
9456                 (phone_setup_iwlan,
9457                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9458                   self.wifi_network_ssid, self.wifi_network_pass))]
9459        if not multithread_func(self.log, tasks):
9460            self.log.error("Phone Failed to Set Up Properly.")
9461            return False
9462
9463        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9464                                        ads=ads,
9465                                        num_swaps=2,
9466                                        phone_setup_a=None,
9467                                        phone_setup_b=None,
9468                                        phone_setup_c=None,
9469                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9470                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9471                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9472        if call_ab_id is None or call_ac_id is None:
9473            return False
9474
9475        return _three_phone_hangup_call_verify_call_state(log=self.log,
9476            ad_hangup=ads[2],
9477            ad_verify=ads[0],
9478            call_id=call_ab_id,
9479            call_state=_get_expected_call_state(ads[0]),
9480            ads_active=[ads[0], ads[1]])
9481
9482
9483    @TelephonyBaseTest.tel_test_wrap
9484    @test_tracker_info(uuid="e96aac52-c536-4a08-9e6a-8bf598db9267")
9485    def test_epdg_mo_mo_add_epdg_swap_once_drop_held_wfc_wifi_only(self):
9486        """Test swap feature in epdg call.
9487
9488        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9489        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9490        Swap active call on PhoneA.
9491        Hangup call from PhoneC, check if call continues between AB.
9492
9493        """
9494        ads = self.android_devices
9495
9496        tasks = [(phone_setup_iwlan,
9497                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9498                   self.wifi_network_ssid, self.wifi_network_pass)),
9499                 (phone_setup_iwlan,
9500                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9501                   self.wifi_network_ssid, self.wifi_network_pass)),
9502                 (phone_setup_iwlan,
9503                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9504                   self.wifi_network_ssid, self.wifi_network_pass))]
9505        if not multithread_func(self.log, tasks):
9506            self.log.error("Phone Failed to Set Up Properly.")
9507            return False
9508
9509        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9510                                        ads=ads,
9511                                        num_swaps=1,
9512                                        phone_setup_a=None,
9513                                        phone_setup_b=None,
9514                                        phone_setup_c=None,
9515                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9516                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9517                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9518        if call_ab_id is None or call_ac_id is None:
9519            return False
9520
9521        return _three_phone_hangup_call_verify_call_state(log=self.log,
9522            ad_hangup=ads[2],
9523            ad_verify=ads[0],
9524            call_id=call_ab_id,
9525            call_state=CALL_STATE_ACTIVE,
9526            ads_active=[ads[0], ads[1]])
9527
9528
9529    @TelephonyBaseTest.tel_test_wrap
9530    @test_tracker_info(uuid="74efa176-1ff2-4b06-9739-06f67009cb5d")
9531    def test_epdg_mo_mo_add_epdg_swap_once_drop_held_wfc_wifi_preferred(self):
9532        """Test swap feature in epdg call.
9533
9534        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9535        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9536        Swap active call on PhoneA.
9537        Hangup call from PhoneC, check if call continues between AB.
9538
9539        """
9540        ads = self.android_devices
9541
9542        tasks = [(phone_setup_iwlan,
9543                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9544                   self.wifi_network_ssid, self.wifi_network_pass)),
9545                 (phone_setup_iwlan,
9546                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9547                   self.wifi_network_ssid, self.wifi_network_pass)),
9548                 (phone_setup_iwlan,
9549                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9550                   self.wifi_network_ssid, self.wifi_network_pass))]
9551        if not multithread_func(self.log, tasks):
9552            self.log.error("Phone Failed to Set Up Properly.")
9553            return False
9554
9555        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9556                                        ads=ads,
9557                                        num_swaps=1,
9558                                        phone_setup_a=None,
9559                                        phone_setup_b=None,
9560                                        phone_setup_c=None,
9561                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9562                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9563                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9564        if call_ab_id is None or call_ac_id is None:
9565            return False
9566
9567        return _three_phone_hangup_call_verify_call_state(log=self.log,
9568            ad_hangup=ads[2],
9569            ad_verify=ads[0],
9570            call_id=call_ab_id,
9571            call_state=CALL_STATE_ACTIVE,
9572            ads_active=[ads[0], ads[1]])
9573
9574
9575    @TelephonyBaseTest.tel_test_wrap
9576    @test_tracker_info(uuid="dfcdeebe-dada-4722-8880-5b3877d0809b")
9577    def test_epdg_mo_mo_add_epdg_swap_once_drop_active_wfc_wifi_only(self):
9578        """Test swap feature in epdg call.
9579
9580        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9581        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9582        Swap active call on PhoneA.
9583        Hangup call from PhoneB, check if call continues between AC.
9584
9585        """
9586        ads = self.android_devices
9587
9588        tasks = [(phone_setup_iwlan,
9589                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9590                   self.wifi_network_ssid, self.wifi_network_pass)),
9591                 (phone_setup_iwlan,
9592                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9593                   self.wifi_network_ssid, self.wifi_network_pass)),
9594                 (phone_setup_iwlan,
9595                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9596                   self.wifi_network_ssid, self.wifi_network_pass))]
9597        if not multithread_func(self.log, tasks):
9598            self.log.error("Phone Failed to Set Up Properly.")
9599            return False
9600
9601        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9602                                        ads=ads,
9603                                        num_swaps=1,
9604                                        phone_setup_a=None,
9605                                        phone_setup_b=None,
9606                                        phone_setup_c=None,
9607                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9608                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9609                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9610        if call_ab_id is None or call_ac_id is None:
9611            return False
9612
9613        return _three_phone_hangup_call_verify_call_state(log=self.log,
9614            ad_hangup=ads[1],
9615            ad_verify=ads[0],
9616            call_id=call_ac_id,
9617            call_state=_get_expected_call_state(ads[0]),
9618            ads_active=[ads[0], ads[2]])
9619
9620
9621    @TelephonyBaseTest.tel_test_wrap
9622    @test_tracker_info(uuid="b9658029-90da-4df8-bbb2-9c08eb3a3a8c")
9623    def test_epdg_mo_mo_add_epdg_swap_once_drop_active_wfc_wifi_preferred(
9624            self):
9625        """Test swap feature in epdg call.
9626
9627        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9628        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9629        Swap active call on PhoneA.
9630        Hangup call from PhoneB, check if call continues between AC.
9631
9632        """
9633        ads = self.android_devices
9634
9635        tasks = [(phone_setup_iwlan,
9636                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9637                   self.wifi_network_ssid, self.wifi_network_pass)),
9638                 (phone_setup_iwlan,
9639                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9640                   self.wifi_network_ssid, self.wifi_network_pass)),
9641                 (phone_setup_iwlan,
9642                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9643                   self.wifi_network_ssid, self.wifi_network_pass))]
9644        if not multithread_func(self.log, tasks):
9645            self.log.error("Phone Failed to Set Up Properly.")
9646            return False
9647
9648        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9649                                        ads=ads,
9650                                        num_swaps=1,
9651                                        phone_setup_a=None,
9652                                        phone_setup_b=None,
9653                                        phone_setup_c=None,
9654                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9655                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9656                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9657        if call_ab_id is None or call_ac_id is None:
9658            return False
9659
9660        return _three_phone_hangup_call_verify_call_state(log=self.log,
9661            ad_hangup=ads[1],
9662            ad_verify=ads[0],
9663            call_id=call_ac_id,
9664            call_state=_get_expected_call_state(ads[0]),
9665            ads_active=[ads[0], ads[2]])
9666
9667
9668    @TelephonyBaseTest.tel_test_wrap
9669    @test_tracker_info(uuid="3381c8e0-cdf1-47d1-8a17-58592f3cd6e6")
9670    def test_epdg_mo_mo_add_epdg_swap_once_drop_active_apm_wfc_wifi_preferred(
9671            self):
9672        """Test swap feature in epdg call.
9673
9674        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9675        PhoneA (epdg) call PhoneC (epdg), accept on PhoneC.
9676        Swap active call on PhoneA.
9677        Hangup call from PhoneB, check if call continues between AC.
9678
9679        """
9680        ads = self.android_devices
9681
9682        tasks = [(phone_setup_iwlan,
9683                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
9684                   self.wifi_network_ssid, self.wifi_network_pass)),
9685                 (phone_setup_iwlan,
9686                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
9687                   self.wifi_network_ssid, self.wifi_network_pass)),
9688                 (phone_setup_iwlan,
9689                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
9690                   self.wifi_network_ssid, self.wifi_network_pass))]
9691        if not multithread_func(self.log, tasks):
9692            self.log.error("Phone Failed to Set Up Properly.")
9693            return False
9694
9695        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
9696                                        ads=ads,
9697                                        num_swaps=1,
9698                                        phone_setup_a=None,
9699                                        phone_setup_b=None,
9700                                        phone_setup_c=None,
9701                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9702                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9703                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9704        if call_ab_id is None or call_ac_id is None:
9705            return False
9706
9707        return _three_phone_hangup_call_verify_call_state(log=self.log,
9708            ad_hangup=ads[1],
9709            ad_verify=ads[0],
9710            call_id=call_ac_id,
9711            call_state=_get_expected_call_state(ads[0]),
9712            ads_active=[ads[0], ads[2]])
9713
9714
9715    @TelephonyBaseTest.tel_test_wrap
9716    @test_tracker_info(uuid="fb655f12-aabe-45bf-8020-61c21ada9440")
9717    def test_epdg_mo_mt_add_epdg_swap_once_drop_held_wfc_wifi_only(self):
9718        """Test swap feature in epdg call.
9719
9720        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9721        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9722        Swap active call on PhoneA.
9723        Hangup call from PhoneC, check if call continues between AB.
9724
9725        """
9726        ads = self.android_devices
9727
9728        tasks = [(phone_setup_iwlan,
9729                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9730                   self.wifi_network_ssid, self.wifi_network_pass)),
9731                 (phone_setup_iwlan,
9732                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9733                   self.wifi_network_ssid, self.wifi_network_pass)),
9734                 (phone_setup_iwlan,
9735                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9736                   self.wifi_network_ssid, self.wifi_network_pass))]
9737        if not multithread_func(self.log, tasks):
9738            self.log.error("Phone Failed to Set Up Properly.")
9739            return False
9740
9741        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9742                                        ads=ads,
9743                                        num_swaps=1,
9744                                        phone_setup_a=None,
9745                                        phone_setup_b=None,
9746                                        phone_setup_c=None,
9747                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9748                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9749                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9750        if call_ab_id is None or call_ac_id is None:
9751            return False
9752        return _three_phone_hangup_call_verify_call_state(log=self.log,
9753            ad_hangup=ads[2],
9754            ad_verify=ads[0],
9755            call_id=call_ab_id,
9756            call_state=CALL_STATE_ACTIVE,
9757            ads_active=[ads[0], ads[1]])
9758
9759
9760    @TelephonyBaseTest.tel_test_wrap
9761    @test_tracker_info(uuid="35e7b36d-e2d5-42bd-99d9-dbc7986ef93a")
9762    def test_epdg_mo_mt_add_epdg_swap_once_drop_held_wfc_wifi_preferred(self):
9763        """Test swap feature in epdg call.
9764
9765        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9766        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9767        Swap active call on PhoneA.
9768        Hangup call from PhoneC, check if call continues between AB.
9769
9770        """
9771        ads = self.android_devices
9772
9773        tasks = [(phone_setup_iwlan,
9774                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9775                   self.wifi_network_ssid, self.wifi_network_pass)),
9776                 (phone_setup_iwlan,
9777                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9778                   self.wifi_network_ssid, self.wifi_network_pass)),
9779                 (phone_setup_iwlan,
9780                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9781                   self.wifi_network_ssid, self.wifi_network_pass))]
9782        if not multithread_func(self.log, tasks):
9783            self.log.error("Phone Failed to Set Up Properly.")
9784            return False
9785
9786        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9787                                        ads=ads,
9788                                        num_swaps=1,
9789                                        phone_setup_a=None,
9790                                        phone_setup_b=None,
9791                                        phone_setup_c=None,
9792                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9793                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9794                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9795        if call_ab_id is None or call_ac_id is None:
9796            return False
9797        return _three_phone_hangup_call_verify_call_state(log=self.log,
9798            ad_hangup=ads[2],
9799            ad_verify=ads[0],
9800            call_id=call_ab_id,
9801            call_state=CALL_STATE_ACTIVE,
9802            ads_active=[ads[0], ads[1]])
9803
9804
9805    @TelephonyBaseTest.tel_test_wrap
9806    @test_tracker_info(uuid="e959e668-8150-46c1-bf49-a1ab2a9f45a5")
9807    def test_epdg_mo_mt_add_epdg_swap_once_drop_held_apm_wifi_preferred(self):
9808        """Test swap feature in epdg call.
9809
9810        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9811        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9812        Swap active call on PhoneA.
9813        Hangup call from PhoneC, check if call continues between AB.
9814
9815        """
9816        ads = self.android_devices
9817
9818        tasks = [(phone_setup_iwlan,
9819                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
9820                   self.wifi_network_ssid, self.wifi_network_pass)),
9821                 (phone_setup_iwlan,
9822                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
9823                   self.wifi_network_ssid, self.wifi_network_pass)),
9824                 (phone_setup_iwlan,
9825                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
9826                   self.wifi_network_ssid, self.wifi_network_pass))]
9827        if not multithread_func(self.log, tasks):
9828            self.log.error("Phone Failed to Set Up Properly.")
9829            return False
9830
9831        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9832                                        ads=ads,
9833                                        num_swaps=1,
9834                                        phone_setup_a=None,
9835                                        phone_setup_b=None,
9836                                        phone_setup_c=None,
9837                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9838                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9839                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9840        if call_ab_id is None or call_ac_id is None:
9841            return False
9842        return _three_phone_hangup_call_verify_call_state(log=self.log,
9843            ad_hangup=ads[2],
9844            ad_verify=ads[0],
9845            call_id=call_ab_id,
9846            call_state=CALL_STATE_ACTIVE,
9847            ads_active=[ads[0], ads[1]])
9848
9849
9850    @TelephonyBaseTest.tel_test_wrap
9851    @test_tracker_info(uuid="b9c47ccd-cc84-42cc-83f4-0a98c22c1d7a")
9852    def test_epdg_mo_mt_add_epdg_swap_once_drop_active_wfc_wifi_only(self):
9853        """Test swap feature in epdg call.
9854
9855        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9856        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9857        Swap active call on PhoneA.
9858        Hangup call from PhoneB, check if call continues between AC.
9859
9860        """
9861        ads = self.android_devices
9862
9863        tasks = [(phone_setup_iwlan,
9864                  (self.log, ads[0], False, WFC_MODE_WIFI_ONLY,
9865                   self.wifi_network_ssid, self.wifi_network_pass)),
9866                 (phone_setup_iwlan,
9867                  (self.log, ads[1], False, WFC_MODE_WIFI_ONLY,
9868                   self.wifi_network_ssid, self.wifi_network_pass)),
9869                 (phone_setup_iwlan,
9870                  (self.log, ads[2], False, WFC_MODE_WIFI_ONLY,
9871                   self.wifi_network_ssid, self.wifi_network_pass))]
9872        if not multithread_func(self.log, tasks):
9873            self.log.error("Phone Failed to Set Up Properly.")
9874            return False
9875
9876        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9877                                        ads=ads,
9878                                        num_swaps=1,
9879                                        phone_setup_a=None,
9880                                        phone_setup_b=None,
9881                                        phone_setup_c=None,
9882                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9883                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9884                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9885        if call_ab_id is None or call_ac_id is None:
9886            return False
9887
9888        return _three_phone_hangup_call_verify_call_state(log=self.log,
9889            ad_hangup=ads[1],
9890            ad_verify=ads[0],
9891            call_id=call_ac_id,
9892            call_state=_get_expected_call_state(ads[0]),
9893            ads_active=[ads[0], ads[2]])
9894
9895
9896    @TelephonyBaseTest.tel_test_wrap
9897    @test_tracker_info(uuid="273d521f-d11c-4956-ae51-33f69de87663")
9898    def test_epdg_mo_mt_add_epdg_swap_once_drop_active_wfc_wifi_preferred(
9899            self):
9900        """Test swap feature in epdg call.
9901
9902        PhoneA (epdg) call PhoneB (epdg), accept on PhoneB.
9903        PhoneC (epdg) call PhoneA (epdg), accept on PhoneA.
9904        Swap active call on PhoneA.
9905        Hangup call from PhoneB, check if call continues between AC.
9906
9907        """
9908        ads = self.android_devices
9909
9910        tasks = [(phone_setup_iwlan,
9911                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
9912                   self.wifi_network_ssid, self.wifi_network_pass)),
9913                 (phone_setup_iwlan,
9914                  (self.log, ads[1], False, WFC_MODE_WIFI_PREFERRED,
9915                   self.wifi_network_ssid, self.wifi_network_pass)),
9916                 (phone_setup_iwlan,
9917                  (self.log, ads[2], False, WFC_MODE_WIFI_PREFERRED,
9918                   self.wifi_network_ssid, self.wifi_network_pass))]
9919        if not multithread_func(self.log, tasks):
9920            self.log.error("Phone Failed to Set Up Properly.")
9921            return False
9922
9923        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
9924                                        ads=ads,
9925                                        num_swaps=1,
9926                                        phone_setup_a=None,
9927                                        phone_setup_b=None,
9928                                        phone_setup_c=None,
9929                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
9930                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
9931                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
9932        if call_ab_id is None or call_ac_id is None:
9933            return False
9934
9935        return _three_phone_hangup_call_verify_call_state(log=self.log,
9936            ad_hangup=ads[1],
9937            ad_verify=ads[0],
9938            call_id=call_ac_id,
9939            call_state=_get_expected_call_state(ads[0]),
9940            ads_active=[ads[0], ads[2]])
9941
9942
9943    def _test_gsm_conference_merge_drop(self, call_ab_id, call_ac_id):
9944        """Test conference merge and drop in GSM call.
9945
9946        PhoneA in GSM call with PhoneB.
9947        PhoneA in GSM call with PhoneC.
9948        Merge calls to conference on PhoneA.
9949        Hangup on PhoneC, check call continues between AB.
9950        Hangup on PhoneB, check A ends.
9951
9952        Args:
9953            call_ab_id: call id for call_AB on PhoneA.
9954            call_ac_id: call id for call_AC on PhoneA.
9955
9956        Returns:
9957            True if succeed;
9958            False if failed.
9959        """
9960        ads = self.android_devices
9961
9962        self.log.info("Step4: Merge to Conf Call and verify Conf Call.")
9963        ads[0].droid.telecomCallJoinCallsInConf(call_ab_id, call_ac_id)
9964        time.sleep(WAIT_TIME_IN_CALL)
9965        calls = ads[0].droid.telecomCallGetCallIds()
9966        ads[0].log.info("Calls in PhoneA %s", calls)
9967        if num_active_calls(self.log, ads[0]) != 3:
9968            ads[0].log.error("Total number of call ids is not 3.")
9969            return False
9970        call_conf_id = None
9971        for call_id in calls:
9972            if call_id != call_ab_id and call_id != call_ac_id:
9973                call_conf_id = call_id
9974        if not call_conf_id:
9975            self.log.error("Merge call fail, no new conference call id.")
9976            return False
9977        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], True):
9978            return False
9979
9980        # Check if Conf Call is currently active
9981        if ads[0].droid.telecomCallGetCallState(
9982                call_conf_id) != CALL_STATE_ACTIVE:
9983            ads[0].log.error(
9984                "Call_id: %s, state: %s, expected: STATE_ACTIVE", call_conf_id,
9985                ads[0].droid.telecomCallGetCallState(call_conf_id))
9986            return False
9987
9988        self.log.info("Step5: End call on PhoneC and verify call continues.")
9989        if not _hangup_call(self.log, ads[2], "PhoneC"):
9990            return False
9991        time.sleep(WAIT_TIME_IN_CALL)
9992        calls = ads[0].droid.telecomCallGetCallIds()
9993        ads[0].log.info("Calls in PhoneA %s", calls)
9994        if num_active_calls(self.log, ads[0]) != 1:
9995            return False
9996        if not verify_incall_state(self.log, [ads[0], ads[1]], True):
9997            return False
9998        if not verify_incall_state(self.log, [ads[2]], False):
9999            return False
10000
10001        self.log.info("Step6: End call on PhoneB and verify PhoneA end.")
10002        if not _hangup_call(self.log, ads[1], "PhoneB"):
10003            return False
10004        time.sleep(WAIT_TIME_IN_CALL)
10005        if not verify_incall_state(self.log, [ads[0], ads[1], ads[2]], False):
10006            return False
10007        return True
10008
10009
10010    @TelephonyBaseTest.tel_test_wrap
10011    @test_tracker_info(uuid="03eb38b1-bd7f-457e-8b80-d58651d82741")
10012    def test_gsm_mo_mo_add_merge_drop(self):
10013        """ Test Conf Call among three phones.
10014
10015        Call from PhoneA to PhoneB, accept on PhoneB.
10016        Call from PhoneA to PhoneC, accept on PhoneC.
10017        On PhoneA, merge to conference call.
10018        End call on PhoneC, verify call continues.
10019        End call on PhoneB, verify call end on PhoneA.
10020
10021        Returns:
10022            True if pass; False if fail.
10023        """
10024        ads = self.android_devices
10025        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10026                                            ads=ads,
10027                                            num_swaps=0,
10028                                            phone_setup_a=phone_setup_voice_2g,
10029                                            phone_setup_b=phone_setup_voice_general,
10030                                            phone_setup_c=phone_setup_voice_general,
10031                                            verify_phone_a_network_subscription=is_phone_in_call_2g,
10032                                            verify_phone_b_network_subscription=None,
10033                                            verify_phone_c_network_subscription=None)
10034
10035        if call_ab_id is None or call_ac_id is None:
10036            return False
10037
10038        return self._test_gsm_conference_merge_drop(call_ab_id, call_ac_id)
10039
10040
10041    @TelephonyBaseTest.tel_test_wrap
10042    @test_tracker_info(uuid="3286306f-4d66-48c4-9303-f691c53bcfe0")
10043    def test_gsm_mo_mo_add_swap_once_drop_held(self):
10044        """ Test Conf Call among three phones.
10045
10046        Call from PhoneA to PhoneB, accept on PhoneB.
10047        Call from PhoneA to PhoneC, accept on PhoneC.
10048        On PhoneA, swap active call.
10049        End call on PhoneB, verify call continues.
10050        End call on PhoneC, verify call end on PhoneA.
10051
10052        Returns:
10053            True if pass; False if fail.
10054        """
10055        ads = self.android_devices
10056        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10057                                            ads=ads,
10058                                            num_swaps=1,
10059                                            phone_setup_a=phone_setup_voice_2g,
10060                                            phone_setup_b=phone_setup_voice_general,
10061                                            phone_setup_c=phone_setup_voice_general,
10062                                            verify_phone_a_network_subscription=is_phone_in_call_2g,
10063                                            verify_phone_b_network_subscription=None,
10064                                            verify_phone_c_network_subscription=None)
10065        if call_ab_id is None or call_ac_id is None:
10066            return False
10067
10068        return _three_phone_hangup_call_verify_call_state(log=self.log,
10069            ad_hangup=ads[2],
10070            ad_verify=ads[0],
10071            call_id=call_ab_id,
10072            call_state=CALL_STATE_ACTIVE,
10073            ads_active=[ads[0], ads[1]])
10074
10075
10076    @TelephonyBaseTest.tel_test_wrap
10077    @test_tracker_info(uuid="af4ff690-be2a-42d8-930a-8258fe81c77e")
10078    def test_gsm_mt_mt_add_merge_drop(self):
10079        """ Test Conf Call among three phones.
10080
10081        Call from PhoneB to PhoneA, accept on PhoneA.
10082        Call from PhoneC to PhoneA, accept on PhoneA.
10083        On PhoneA, merge to conference call.
10084        End call on PhoneC, verify call continues.
10085        End call on PhoneB, verify call end on PhoneA.
10086
10087        Returns:
10088            True if pass; False if fail.
10089        """
10090        ads = self.android_devices
10091        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10092                                            ads=ads,
10093                                            num_swaps=0,
10094                                            phone_setup_a=phone_setup_voice_2g,
10095                                            phone_setup_b=phone_setup_voice_general,
10096                                            phone_setup_c=phone_setup_voice_general,
10097                                            verify_phone_a_network_subscription=is_phone_in_call_2g,
10098                                            verify_phone_b_network_subscription=None,
10099                                            verify_phone_c_network_subscription=None)
10100
10101        if call_ab_id is None or call_ac_id is None:
10102            return False
10103
10104        return self._test_gsm_conference_merge_drop(call_ab_id, call_ac_id)
10105
10106
10107    @TelephonyBaseTest.tel_test_wrap
10108    @test_tracker_info(uuid="6b70902e-ca59-4d92-9bfe-2116dcc91213")
10109    def test_gsm_mo_mo_add_swap_twice_drop_active(self):
10110        """Test swap feature in GSM call.
10111
10112        PhoneA (GSM) call PhoneB, accept on PhoneB.
10113        PhoneA (GSM) call PhoneC, accept on PhoneC.
10114        Swap active call on PhoneA.
10115        Swap active call on PhoneA.
10116        Hangup call from PhoneC, check if call continues between AB.
10117
10118        """
10119        ads = self.android_devices
10120
10121        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10122                                            ads=ads,
10123                                            num_swaps=1,
10124                                            phone_setup_a=phone_setup_voice_2g,
10125                                            phone_setup_b=phone_setup_voice_general,
10126                                            phone_setup_c=phone_setup_voice_general,
10127                                            verify_phone_a_network_subscription=is_phone_in_call_2g,
10128                                            verify_phone_b_network_subscription=None,
10129                                            verify_phone_c_network_subscription=None)
10130        if call_ab_id is None or call_ac_id is None:
10131            return False
10132
10133        return _three_phone_hangup_call_verify_call_state(log=self.log,
10134            ad_hangup=ads[2],
10135            ad_verify=ads[0],
10136            call_id=call_ab_id,
10137            call_state=_get_expected_call_state(ads[0]),
10138            ads_active=[ads[0], ads[1]])
10139
10140
10141    @TelephonyBaseTest.tel_test_wrap
10142    @test_tracker_info(uuid="a9ddf5a7-8399-4a8c-abc9-b9235b0153b0")
10143    def test_epdg_mo_mo_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_no_cep(
10144            self):
10145        """ Test WFC Conference Call among three phones. No CEP.
10146
10147        Steps:
10148        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10149        2. PhoneA (WFC APM WiFi Preferred) call PhoneC (WFC APM WiFi Preferred), accept on PhoneC.
10150        3. On PhoneA, merge to conference call (No CEP).
10151        4. End call on PhoneC, verify call continues.
10152        5. End call on PhoneB, verify call end on PhoneA.
10153
10154        Expected Results:
10155        3. Conference merged successfully.
10156        4. Drop calls succeeded. Call between A-B continues.
10157        5. Drop calls succeeded, all call participants drop.
10158
10159        Returns:
10160            True if pass; False if fail.
10161
10162        TAGS: Telephony, WFC, Conference, No_CEP
10163        Priority: 1
10164        """
10165        ads = self.android_devices
10166
10167        tasks = [(phone_setup_iwlan,
10168                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10169                   self.wifi_network_ssid, self.wifi_network_pass)),
10170                 (phone_setup_iwlan,
10171                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10172                   self.wifi_network_ssid, self.wifi_network_pass)),
10173                 (phone_setup_iwlan,
10174                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10175                   self.wifi_network_ssid, self.wifi_network_pass))]
10176        if not multithread_func(self.log, tasks):
10177            self.log.error("Phone Failed to Set Up Properly.")
10178            return False
10179
10180        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10181                                     ads=ads,
10182                                     num_swaps=0,
10183                                     phone_setup_a=None,
10184                                     phone_setup_b=None,
10185                                     phone_setup_c=None,
10186                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10187                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10188                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10189        if call_ab_id is None or call_ac_id is None:
10190            return False
10191
10192        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10193            call_ab_id, call_ac_id)
10194
10195
10196    @TelephonyBaseTest.tel_test_wrap
10197    @test_tracker_info(uuid="5aaff055-3329-4077-91e8-5707a0f6a309")
10198    def test_epdg_mo_mo_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_cep(
10199            self):
10200        """ Test WFC Conference Call among three phones. CEP enabled.
10201
10202        Steps
10203        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10204        2. PhoneA (WFC APM WiFi Preferred) call PhoneC (WFC APM WiFi Preferred), accept on PhoneC.
10205        3. On PhoneA, merge to conference call (WFC CEP conference call).
10206        4. End call on PhoneC, verify call continues.
10207        5. End call on PhoneB, verify call end on PhoneA.
10208
10209        Expected Results:
10210        3. Conference merged successfully.
10211        4. Drop calls succeeded. Call between A-B continues.
10212        5. Drop calls succeeded, all call participants drop.
10213
10214        Returns:
10215            True if pass; False if fail.
10216
10217        TAGS: Telephony, WFC, Conference, CEP
10218        Priority: 1
10219        """
10220        ads = self.android_devices
10221
10222        tasks = [(phone_setup_iwlan,
10223                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10224                   self.wifi_network_ssid, self.wifi_network_pass)),
10225                 (phone_setup_iwlan,
10226                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10227                   self.wifi_network_ssid, self.wifi_network_pass)),
10228                 (phone_setup_iwlan,
10229                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10230                   self.wifi_network_ssid, self.wifi_network_pass))]
10231        if not multithread_func(self.log, tasks):
10232            self.log.error("Phone Failed to Set Up Properly.")
10233            return False
10234
10235        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10236                                     ads=ads,
10237                                     num_swaps=0,
10238                                     phone_setup_a=None,
10239                                     phone_setup_b=None,
10240                                     phone_setup_c=None,
10241                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10242                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10243                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10244        if call_ab_id is None or call_ac_id is None:
10245            return False
10246
10247        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10248            call_ab_id, call_ac_id)
10249
10250
10251    @TelephonyBaseTest.tel_test_wrap
10252    @test_tracker_info(uuid="d3624dd8-20bd-4f6b-8a81-0c8671987b84")
10253    def test_epdg_mo_mo_add_epdg_merge_drop_second_call_from_host_wfc_apm_wifi_preferred_cep(
10254            self):
10255        """ Test WFC Conference Call among three phones. CEP enabled.
10256
10257        Steps:
10258        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10259        2. PhoneA (WFC APM WiFi Preferred) call PhoneC (WFC APM WiFi Preferred), accept on PhoneC.
10260        3. On PhoneA, merge to conference call (WFC CEP conference call).
10261        4. On PhoneA disconnect call between A-C, verify call continues.
10262        5. On PhoneA disconnect call between A-B, verify call continues.
10263
10264        Expected Results:
10265        3. Conference merged successfully.
10266        4. Drop calls succeeded. Call between A-B continues.
10267        5. Drop calls succeeded, all call participants drop.
10268
10269        Returns:
10270            True if pass; False if fail.
10271
10272        TAGS: Telephony, WFC, Conference, CEP
10273        Priority: 1
10274        """
10275        ads = self.android_devices
10276
10277        tasks = [(phone_setup_iwlan,
10278                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10279                   self.wifi_network_ssid, self.wifi_network_pass)),
10280                 (phone_setup_iwlan,
10281                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10282                   self.wifi_network_ssid, self.wifi_network_pass)),
10283                 (phone_setup_iwlan,
10284                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10285                   self.wifi_network_ssid, self.wifi_network_pass))]
10286        if not multithread_func(self.log, tasks):
10287            self.log.error("Phone Failed to Set Up Properly.")
10288            return False
10289
10290        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10291                                     ads=ads,
10292                                     num_swaps=0,
10293                                     phone_setup_a=None,
10294                                     phone_setup_b=None,
10295                                     phone_setup_c=None,
10296                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10297                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10298                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10299        if call_ab_id is None or call_ac_id is None:
10300            return False
10301
10302        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
10303            call_ab_id, call_ac_id)
10304
10305
10306    @TelephonyBaseTest.tel_test_wrap
10307    @test_tracker_info(uuid="ba43d88c-1347-4570-92d0-ebfa6404788f")
10308    def test_epdg_mo_mo_add_epdg_merge_drop_first_call_from_participant_wfc_apm_wifi_preferred_cep(
10309            self):
10310        """ Test WFC Conference Call among three phones. CEP enabled.
10311
10312        Steps:
10313        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10314        2. PhoneA (WFC APM WiFi Preferred) call PhoneC (WFC APM WiFi Preferred), accept on PhoneC.
10315        3. On PhoneA, merge to conference call (WFC CEP conference call).
10316        4. End call on PhoneB, verify call continues.
10317        5. End call on PhoneC, verify call end on PhoneA.
10318
10319        Expected Results:
10320        3. Conference merged successfully.
10321        4. Drop calls succeeded. Call between A-C continues.
10322        5. Drop calls succeeded, all call participants drop.
10323
10324        Returns:
10325            True if pass; False if fail.
10326
10327        TAGS: Telephony, WFC, Conference, CEP
10328        Priority: 1
10329        """
10330        ads = self.android_devices
10331
10332        tasks = [(phone_setup_iwlan,
10333                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10334                   self.wifi_network_ssid, self.wifi_network_pass)),
10335                 (phone_setup_iwlan,
10336                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10337                   self.wifi_network_ssid, self.wifi_network_pass)),
10338                 (phone_setup_iwlan,
10339                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10340                   self.wifi_network_ssid, self.wifi_network_pass))]
10341        if not multithread_func(self.log, tasks):
10342            self.log.error("Phone Failed to Set Up Properly.")
10343            return False
10344
10345        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10346                                     ads=ads,
10347                                     num_swaps=0,
10348                                     phone_setup_a=None,
10349                                     phone_setup_b=None,
10350                                     phone_setup_c=None,
10351                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10352                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10353                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10354        if call_ab_id is None or call_ac_id is None:
10355            return False
10356
10357        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
10358            call_ab_id, call_ac_id)
10359
10360
10361    @TelephonyBaseTest.tel_test_wrap
10362    @test_tracker_info(uuid="fbcd20ec-ebac-45c2-b228-30fdec42752f")
10363    def test_epdg_mo_mo_add_epdg_merge_drop_first_call_from_host_wfc_apm_wifi_preferred_cep(
10364            self):
10365        """ Test WFC Conference Call among three phones. CEP enabled.
10366
10367        Steps:
10368        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10369        2. PhoneA (WFC APM WiFi Preferred) call PhoneC (WFC APM WiFi Preferred), accept on PhoneC.
10370        3. On PhoneA, merge to conference call (WFC CEP conference call).
10371        4. On PhoneA disconnect call between A-B, verify call continues.
10372        5. On PhoneA disconnect call between A-C, verify call continues.
10373
10374        Expected Results:
10375        3. Conference merged successfully.
10376        4. Drop calls succeeded. Call between A-C continues.
10377        5. Drop calls succeeded, all call participants drop.
10378
10379        Returns:
10380            True if pass; False if fail.
10381
10382        TAGS: Telephony, WFC, Conference, CEP
10383        Priority: 1
10384        """
10385        ads = self.android_devices
10386
10387        tasks = [(phone_setup_iwlan,
10388                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10389                   self.wifi_network_ssid, self.wifi_network_pass)),
10390                 (phone_setup_iwlan,
10391                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10392                   self.wifi_network_ssid, self.wifi_network_pass)),
10393                 (phone_setup_iwlan,
10394                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10395                   self.wifi_network_ssid, self.wifi_network_pass))]
10396        if not multithread_func(self.log, tasks):
10397            self.log.error("Phone Failed to Set Up Properly.")
10398            return False
10399
10400        call_ab_id, call_ac_id = _test_call_mo_mo_add_swap_x(log=self.log,
10401                                     ads=ads,
10402                                     num_swaps=0,
10403                                     phone_setup_a=None,
10404                                     phone_setup_b=None,
10405                                     phone_setup_c=None,
10406                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10407                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10408                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10409        if call_ab_id is None or call_ac_id is None:
10410            return False
10411
10412        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
10413            call_ab_id, call_ac_id)
10414
10415
10416    @TelephonyBaseTest.tel_test_wrap
10417    @test_tracker_info(uuid="fc54b329-4ec6-45b2-8f91-0a5789542596")
10418    def test_epdg_mo_mt_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_no_cep(
10419            self):
10420        """ Test WFC Conference Call among three phones. No CEP.
10421
10422        Steps:
10423        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10424        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10425        3. On PhoneA, merge to conference call (No CEP).
10426        4. End call on PhoneC, verify call continues.
10427        5. End call on PhoneB, verify call end on PhoneA.
10428
10429        Expected Results:
10430        3. Conference merged successfully.
10431        4. Drop calls succeeded. Call between A-B continues.
10432        5. Drop calls succeeded, all call participants drop.
10433
10434        Returns:
10435            True if pass; False if fail.
10436
10437        TAGS: Telephony, WFC, Conference, No_CEP
10438        Priority: 1
10439        """
10440        ads = self.android_devices
10441
10442        tasks = [(phone_setup_iwlan,
10443                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10444                   self.wifi_network_ssid, self.wifi_network_pass)),
10445                 (phone_setup_iwlan,
10446                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10447                   self.wifi_network_ssid, self.wifi_network_pass)),
10448                 (phone_setup_iwlan,
10449                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10450                   self.wifi_network_ssid, self.wifi_network_pass))]
10451        if not multithread_func(self.log, tasks):
10452            self.log.error("Phone Failed to Set Up Properly.")
10453            return False
10454
10455        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
10456                                     ads=ads,
10457                                     num_swaps=0,
10458                                     phone_setup_a=None,
10459                                     phone_setup_b=None,
10460                                     phone_setup_c=None,
10461                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10462                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10463                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10464        if call_ab_id is None or call_ac_id is None:
10465            return False
10466
10467        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10468            call_ab_id, call_ac_id)
10469
10470
10471    @TelephonyBaseTest.tel_test_wrap
10472    @test_tracker_info(uuid="64096e42-1fb2-4eb4-9f60-3e22c7ad5c83")
10473    def test_epdg_mo_mt_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_cep(
10474            self):
10475        """ Test WFC Conference Call among three phones. CEP enabled.
10476
10477        Steps
10478        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10479        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10480        3. On PhoneA, merge to conference call (WFC CEP conference call).
10481        4. End call on PhoneC, verify call continues.
10482        5. End call on PhoneB, verify call end on PhoneA.
10483
10484        Expected Results:
10485        3. Conference merged successfully.
10486        4. Drop calls succeeded. Call between A-B continues.
10487        5. Drop calls succeeded, all call participants drop.
10488
10489        Returns:
10490            True if pass; False if fail.
10491
10492        TAGS: Telephony, WFC, Conference, CEP
10493        Priority: 1
10494        """
10495        ads = self.android_devices
10496
10497        tasks = [(phone_setup_iwlan,
10498                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10499                   self.wifi_network_ssid, self.wifi_network_pass)),
10500                 (phone_setup_iwlan,
10501                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10502                   self.wifi_network_ssid, self.wifi_network_pass)),
10503                 (phone_setup_iwlan,
10504                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10505                   self.wifi_network_ssid, self.wifi_network_pass))]
10506        if not multithread_func(self.log, tasks):
10507            self.log.error("Phone Failed to Set Up Properly.")
10508            return False
10509
10510        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
10511                                     ads=ads,
10512                                     num_swaps=0,
10513                                     phone_setup_a=None,
10514                                     phone_setup_b=None,
10515                                     phone_setup_c=None,
10516                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10517                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10518                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10519        if call_ab_id is None or call_ac_id is None:
10520            return False
10521
10522        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10523            call_ab_id, call_ac_id)
10524
10525
10526    @TelephonyBaseTest.tel_test_wrap
10527    @test_tracker_info(uuid="24b6abb4-03c8-464c-a584-ca597bd67b46")
10528    def test_epdg_mo_mt_add_epdg_merge_drop_second_call_from_host_wfc_apm_wifi_preferred_cep(
10529            self):
10530        """ Test WFC Conference Call among three phones. CEP enabled.
10531
10532        Steps:
10533        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10534        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10535        3. On PhoneA, merge to conference call (WFC CEP conference call).
10536        4. On PhoneA disconnect call between A-C, verify call continues.
10537        5. On PhoneA disconnect call between A-B, verify call continues.
10538
10539        Expected Results:
10540        3. Conference merged successfully.
10541        4. Drop calls succeeded. Call between A-B continues.
10542        5. Drop calls succeeded, all call participants drop.
10543
10544        Returns:
10545            True if pass; False if fail.
10546
10547        TAGS: Telephony, WFC, Conference, CEP
10548        Priority: 1
10549        """
10550        ads = self.android_devices
10551
10552        tasks = [(phone_setup_iwlan,
10553                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10554                   self.wifi_network_ssid, self.wifi_network_pass)),
10555                 (phone_setup_iwlan,
10556                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10557                   self.wifi_network_ssid, self.wifi_network_pass)),
10558                 (phone_setup_iwlan,
10559                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10560                   self.wifi_network_ssid, self.wifi_network_pass))]
10561        if not multithread_func(self.log, tasks):
10562            self.log.error("Phone Failed to Set Up Properly.")
10563            return False
10564
10565        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
10566                                     ads=ads,
10567                                     num_swaps=0,
10568                                     phone_setup_a=None,
10569                                     phone_setup_b=None,
10570                                     phone_setup_c=None,
10571                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10572                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10573                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10574        if call_ab_id is None or call_ac_id is None:
10575            return False
10576
10577        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
10578            call_ab_id, call_ac_id)
10579
10580
10581    @TelephonyBaseTest.tel_test_wrap
10582    @test_tracker_info(uuid="f54776e4-84c0-43db-8724-f012ef551ebd")
10583    def test_epdg_mo_mt_add_epdg_merge_drop_first_call_from_participant_wfc_apm_wifi_preferred_cep(
10584            self):
10585        """ Test WFC Conference Call among three phones. CEP enabled.
10586
10587        Steps:
10588        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10589        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10590        3. On PhoneA, merge to conference call (WFC CEP conference call).
10591        4. End call on PhoneB, verify call continues.
10592        5. End call on PhoneC, verify call end on PhoneA.
10593
10594        Expected Results:
10595        3. Conference merged successfully.
10596        4. Drop calls succeeded. Call between A-C continues.
10597        5. Drop calls succeeded, all call participants drop.
10598
10599        Returns:
10600            True if pass; False if fail.
10601
10602        TAGS: Telephony, WFC, Conference, CEP
10603        Priority: 1
10604        """
10605        ads = self.android_devices
10606
10607        tasks = [(phone_setup_iwlan,
10608                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10609                   self.wifi_network_ssid, self.wifi_network_pass)),
10610                 (phone_setup_iwlan,
10611                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10612                   self.wifi_network_ssid, self.wifi_network_pass)),
10613                 (phone_setup_iwlan,
10614                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10615                   self.wifi_network_ssid, self.wifi_network_pass))]
10616        if not multithread_func(self.log, tasks):
10617            self.log.error("Phone Failed to Set Up Properly.")
10618            return False
10619
10620        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
10621                                     ads=ads,
10622                                     num_swaps=0,
10623                                     phone_setup_a=None,
10624                                     phone_setup_b=None,
10625                                     phone_setup_c=None,
10626                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10627                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10628                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10629        if call_ab_id is None or call_ac_id is None:
10630            return False
10631
10632        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
10633            call_ab_id, call_ac_id)
10634
10635
10636    @TelephonyBaseTest.tel_test_wrap
10637    @test_tracker_info(uuid="6635aeff-f10a-4fb0-b658-4f1e7f2d9a68")
10638    def test_epdg_mo_mt_add_epdg_merge_drop_first_call_from_host_wfc_apm_wifi_preferred_cep(
10639            self):
10640        """ Test WFC Conference Call among three phones. CEP enabled.
10641
10642        Steps:
10643        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10644        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10645        3. On PhoneA, merge to conference call (WFC CEP conference call).
10646        4. On PhoneA disconnect call between A-B, verify call continues.
10647        5. On PhoneA disconnect call between A-C, verify call continues.
10648
10649        Expected Results:
10650        3. Conference merged successfully.
10651        4. Drop calls succeeded. Call between A-C continues.
10652        5. Drop calls succeeded, all call participants drop.
10653
10654        Returns:
10655            True if pass; False if fail.
10656
10657        TAGS: Telephony, WFC, Conference, CEP
10658        Priority: 1
10659        """
10660        ads = self.android_devices
10661
10662        tasks = [(phone_setup_iwlan,
10663                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10664                   self.wifi_network_ssid, self.wifi_network_pass)),
10665                 (phone_setup_iwlan,
10666                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10667                   self.wifi_network_ssid, self.wifi_network_pass)),
10668                 (phone_setup_iwlan,
10669                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10670                   self.wifi_network_ssid, self.wifi_network_pass))]
10671        if not multithread_func(self.log, tasks):
10672            self.log.error("Phone Failed to Set Up Properly.")
10673            return False
10674
10675        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
10676                                     ads=ads,
10677                                     num_swaps=0,
10678                                     phone_setup_a=None,
10679                                     phone_setup_b=None,
10680                                     phone_setup_c=None,
10681                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10682                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10683                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10684        if call_ab_id is None or call_ac_id is None:
10685            return False
10686
10687        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
10688            call_ab_id, call_ac_id)
10689
10690
10691    @TelephonyBaseTest.tel_test_wrap
10692    @test_tracker_info(uuid="c2534477-74ff-43ca-920a-48238928f344")
10693    def test_epdg_mt_mt_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_no_cep(
10694            self):
10695        """ Test WFC Conference Call among three phones. No CEP.
10696
10697        Steps:
10698        1. PhoneB (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10699        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10700        3. On PhoneA, merge to conference call (No CEP).
10701        4. End call on PhoneC, verify call continues.
10702        5. End call on PhoneB, verify call end on PhoneA.
10703
10704        Expected Results:
10705        3. Conference merged successfully.
10706        4. Drop calls succeeded. Call between A-B continues.
10707        5. Drop calls succeeded, all call participants drop.
10708
10709        Returns:
10710            True if pass; False if fail.
10711
10712        TAGS: Telephony, WFC, Conference, No_CEP
10713        Priority: 1
10714        """
10715        ads = self.android_devices
10716
10717        tasks = [(phone_setup_iwlan,
10718                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10719                   self.wifi_network_ssid, self.wifi_network_pass)),
10720                 (phone_setup_iwlan,
10721                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10722                   self.wifi_network_ssid, self.wifi_network_pass)),
10723                 (phone_setup_iwlan,
10724                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10725                   self.wifi_network_ssid, self.wifi_network_pass))]
10726        if not multithread_func(self.log, tasks):
10727            self.log.error("Phone Failed to Set Up Properly.")
10728            return False
10729
10730        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10731                                     ads=ads,
10732                                     num_swaps=0,
10733                                     phone_setup_a=None,
10734                                     phone_setup_b=None,
10735                                     phone_setup_c=None,
10736                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10737                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10738                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10739        if call_ab_id is None or call_ac_id is None:
10740            return False
10741
10742        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10743            call_ab_id, call_ac_id)
10744
10745
10746    @TelephonyBaseTest.tel_test_wrap
10747    @test_tracker_info(uuid="ef5ea03d-1c1b-4c9a-a72d-14b2ba7e87cb")
10748    def test_epdg_mt_mt_add_epdg_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_cep(
10749            self):
10750        """ Test WFC Conference Call among three phones. CEP enabled.
10751
10752        Steps
10753        1. PhoneB (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10754        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10755        3. On PhoneA, merge to conference call (WFC CEP conference call).
10756        4. End call on PhoneC, verify call continues.
10757        5. End call on PhoneB, verify call end on PhoneA.
10758
10759        Expected Results:
10760        3. Conference merged successfully.
10761        4. Drop calls succeeded. Call between A-B continues.
10762        5. Drop calls succeeded, all call participants drop.
10763
10764        Returns:
10765            True if pass; False if fail.
10766
10767        TAGS: Telephony, WFC, Conference, CEP
10768        Priority: 1
10769        """
10770        ads = self.android_devices
10771
10772        tasks = [(phone_setup_iwlan,
10773                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10774                   self.wifi_network_ssid, self.wifi_network_pass)),
10775                 (phone_setup_iwlan,
10776                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10777                   self.wifi_network_ssid, self.wifi_network_pass)),
10778                 (phone_setup_iwlan,
10779                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10780                   self.wifi_network_ssid, self.wifi_network_pass))]
10781        if not multithread_func(self.log, tasks):
10782            self.log.error("Phone Failed to Set Up Properly.")
10783            return False
10784
10785        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10786                                     ads=ads,
10787                                     num_swaps=0,
10788                                     phone_setup_a=None,
10789                                     phone_setup_b=None,
10790                                     phone_setup_c=None,
10791                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10792                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10793                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10794        if call_ab_id is None or call_ac_id is None:
10795            return False
10796
10797        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
10798            call_ab_id, call_ac_id)
10799
10800
10801    @TelephonyBaseTest.tel_test_wrap
10802    @test_tracker_info(uuid="b0df507f-2adf-45fe-a174-44f62718296e")
10803    def test_epdg_mt_mt_add_epdg_merge_drop_second_call_from_host_wfc_apm_wifi_preferred_cep(
10804            self):
10805        """ Test WFC Conference Call among three phones. CEP enabled.
10806
10807        Steps:
10808        1. PhoneB (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10809        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10810        3. On PhoneA, merge to conference call (WFC CEP conference call).
10811        4. On PhoneA disconnect call between A-C, verify call continues.
10812        5. On PhoneA disconnect call between A-B, verify call continues.
10813
10814        Expected Results:
10815        3. Conference merged successfully.
10816        4. Drop calls succeeded. Call between A-B continues.
10817        5. Drop calls succeeded, all call participants drop.
10818
10819        Returns:
10820            True if pass; False if fail.
10821
10822        TAGS: Telephony, WFC, Conference, CEP
10823        Priority: 1
10824        """
10825        ads = self.android_devices
10826
10827        tasks = [(phone_setup_iwlan,
10828                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10829                   self.wifi_network_ssid, self.wifi_network_pass)),
10830                 (phone_setup_iwlan,
10831                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10832                   self.wifi_network_ssid, self.wifi_network_pass)),
10833                 (phone_setup_iwlan,
10834                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10835                   self.wifi_network_ssid, self.wifi_network_pass))]
10836        if not multithread_func(self.log, tasks):
10837            self.log.error("Phone Failed to Set Up Properly.")
10838            return False
10839
10840        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10841                                     ads=ads,
10842                                     num_swaps=0,
10843                                     phone_setup_a=None,
10844                                     phone_setup_b=None,
10845                                     phone_setup_c=None,
10846                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10847                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10848                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10849        if call_ab_id is None or call_ac_id is None:
10850            return False
10851
10852        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
10853            call_ab_id, call_ac_id)
10854
10855
10856    @TelephonyBaseTest.tel_test_wrap
10857    @test_tracker_info(uuid="278c6bec-7065-4f54-9834-33d8a6172f58")
10858    def test_epdg_mt_mt_add_epdg_merge_drop_first_call_from_participant_wfc_apm_wifi_preferred_cep(
10859            self):
10860        """ Test WFC Conference Call among three phones. CEP enabled.
10861
10862        Steps:
10863        1. PhoneB (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10864        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10865        3. On PhoneA, merge to conference call (WFC CEP conference call).
10866        4. End call on PhoneB, verify call continues.
10867        5. End call on PhoneC, verify call end on PhoneA.
10868
10869        Expected Results:
10870        3. Conference merged successfully.
10871        4. Drop calls succeeded. Call between A-C continues.
10872        5. Drop calls succeeded, all call participants drop.
10873
10874        Returns:
10875            True if pass; False if fail.
10876
10877        TAGS: Telephony, WFC, Conference, CEP
10878        Priority: 1
10879        """
10880        ads = self.android_devices
10881
10882        tasks = [(phone_setup_iwlan,
10883                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10884                   self.wifi_network_ssid, self.wifi_network_pass)),
10885                 (phone_setup_iwlan,
10886                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10887                   self.wifi_network_ssid, self.wifi_network_pass)),
10888                 (phone_setup_iwlan,
10889                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10890                   self.wifi_network_ssid, self.wifi_network_pass))]
10891        if not multithread_func(self.log, tasks):
10892            self.log.error("Phone Failed to Set Up Properly.")
10893            return False
10894
10895        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10896                                     ads=ads,
10897                                     num_swaps=0,
10898                                     phone_setup_a=None,
10899                                     phone_setup_b=None,
10900                                     phone_setup_c=None,
10901                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10902                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10903                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10904        if call_ab_id is None or call_ac_id is None:
10905            return False
10906
10907        return _test_ims_conference_merge_drop_first_call_from_participant(self.log, ads,
10908            call_ab_id, call_ac_id)
10909
10910
10911    @TelephonyBaseTest.tel_test_wrap
10912    @test_tracker_info(uuid="1ffceadc-8bd1-489d-bb66-4b3081df3a64")
10913    def test_epdg_mt_mt_add_epdg_merge_drop_first_call_from_host_wfc_apm_wifi_preferred_cep(
10914            self):
10915        """ Test WFC Conference Call among three phones. CEP enabled.
10916
10917        Steps:
10918        1. PhoneB (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10919        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10920        3. On PhoneA, merge to conference call (WFC CEP conference call).
10921        4. On PhoneA disconnect call between A-B, verify call continues.
10922        5. On PhoneA disconnect call between A-C, verify call continues.
10923
10924        Expected Results:
10925        3. Conference merged successfully.
10926        4. Drop calls succeeded. Call between A-C continues.
10927        5. Drop calls succeeded, all call participants drop.
10928
10929        Returns:
10930            True if pass; False if fail.
10931
10932        TAGS: Telephony, WFC, Conference, CEP
10933        Priority: 1
10934        """
10935        ads = self.android_devices
10936
10937        tasks = [(phone_setup_iwlan,
10938                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10939                   self.wifi_network_ssid, self.wifi_network_pass)),
10940                 (phone_setup_iwlan,
10941                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10942                   self.wifi_network_ssid, self.wifi_network_pass)),
10943                 (phone_setup_iwlan,
10944                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
10945                   self.wifi_network_ssid, self.wifi_network_pass))]
10946        if not multithread_func(self.log, tasks):
10947            self.log.error("Phone Failed to Set Up Properly.")
10948            return False
10949
10950        call_ab_id, call_ac_id = _test_call_mt_mt_add_swap_x(log=self.log,
10951                                     ads=ads,
10952                                     num_swaps=0,
10953                                     phone_setup_a=None,
10954                                     phone_setup_b=None,
10955                                     phone_setup_c=None,
10956                                     verify_phone_a_network_subscription=is_phone_in_call_iwlan,
10957                                     verify_phone_b_network_subscription=is_phone_in_call_iwlan,
10958                                     verify_phone_c_network_subscription=is_phone_in_call_iwlan)
10959        if call_ab_id is None or call_ac_id is None:
10960            return False
10961
10962        return _test_ims_conference_merge_drop_first_call_from_host(self.log, ads,
10963            call_ab_id, call_ac_id)
10964
10965
10966    @TelephonyBaseTest.tel_test_wrap
10967    @test_tracker_info(uuid="b3dfaa38-8e9b-45b7-8e4e-6e6ca10887bd")
10968    def test_epdg_mo_mt_add_epdg_swap_once_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_no_cep(
10969            self):
10970        """ Test swap and merge features in WFC call. No CEP.
10971
10972        Steps:
10973        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
10974        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
10975        3. Swap active call on PhoneA.
10976        4. On PhoneA, merge to conference call (No CEP).
10977        5. End call on PhoneC, verify call continues.
10978        6. End call on PhoneB, verify call end on PhoneA.
10979
10980        Expected Results:
10981        3. Swap operation succeeded.
10982        4. Conference merged successfully.
10983        5. Drop calls succeeded. Call between A-B continues.
10984        6. Drop calls succeeded, all call participants drop.
10985
10986        Returns:
10987            True if pass; False if fail.
10988
10989        TAGS: Telephony, WFC, Conference, No_CEP
10990        Priority: 1
10991        """
10992        ads = self.android_devices
10993
10994        tasks = [(phone_setup_iwlan,
10995                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
10996                   self.wifi_network_ssid, self.wifi_network_pass)),
10997                 (phone_setup_iwlan,
10998                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
10999                   self.wifi_network_ssid, self.wifi_network_pass)),
11000                 (phone_setup_iwlan,
11001                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
11002                   self.wifi_network_ssid, self.wifi_network_pass))]
11003        if not multithread_func(self.log, tasks):
11004            self.log.error("Phone Failed to Set Up Properly.")
11005            return False
11006
11007        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
11008                                        ads=ads,
11009                                        num_swaps=1,
11010                                        phone_setup_a=None,
11011                                        phone_setup_b=None,
11012                                        phone_setup_c=None,
11013                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
11014                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
11015                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
11016        if call_ab_id is None or call_ac_id is None:
11017            return False
11018
11019        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
11020            call_ab_id, call_ac_id)
11021
11022
11023    @TelephonyBaseTest.tel_test_wrap
11024    @test_tracker_info(uuid="eb82f1ac-e5a3-42bc-b9d9-806442263f79")
11025    def test_epdg_mo_mt_add_epdg_swap_once_merge_drop_second_call_from_host_wfc_apm_wifi_preferred_cep(
11026            self):
11027        """ Test swap and merge features in WFC call. CEP enabled.
11028
11029        Steps:
11030        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
11031        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
11032        3. Swap active call on PhoneA.
11033        4. On PhoneA, merge to conference call (WFC CEP conference call).
11034        5. On PhoneA disconnect call between A-C, verify call continues.
11035        6. On PhoneA disconnect call between A-B, verify call continues.
11036
11037        Expected Results:
11038        3. Swap operation succeeded.
11039        4. Conference merged successfully.
11040        5. Drop calls succeeded. Call between A-B continues.
11041        6. Drop calls succeeded, all call participants drop.
11042
11043        Returns:
11044            True if pass; False if fail.
11045
11046        TAGS: Telephony, WFC, Conference, CEP
11047        Priority: 1
11048        """
11049        ads = self.android_devices
11050
11051        tasks = [(phone_setup_iwlan,
11052                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
11053                   self.wifi_network_ssid, self.wifi_network_pass)),
11054                 (phone_setup_iwlan,
11055                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
11056                   self.wifi_network_ssid, self.wifi_network_pass)),
11057                 (phone_setup_iwlan,
11058                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
11059                   self.wifi_network_ssid, self.wifi_network_pass))]
11060        if not multithread_func(self.log, tasks):
11061            self.log.error("Phone Failed to Set Up Properly.")
11062            return False
11063
11064        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
11065                                        ads=ads,
11066                                        num_swaps=1,
11067                                        phone_setup_a=None,
11068                                        phone_setup_b=None,
11069                                        phone_setup_c=None,
11070                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
11071                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
11072                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
11073        if call_ab_id is None or call_ac_id is None:
11074            return False
11075
11076        return _test_ims_conference_merge_drop_second_call_from_host(self.log, ads,
11077            call_ab_id, call_ac_id)
11078
11079
11080    @TelephonyBaseTest.tel_test_wrap
11081    @test_tracker_info(uuid="53ba057d-5c5c-4236-9ff9-829177e6f51e")
11082    def test_epdg_mo_mt_add_epdg_swap_once_merge_drop_second_call_from_participant_wfc_apm_wifi_preferred_cep(
11083            self):
11084        """ Test swap and merge features in WFC call. CEP enabled.
11085
11086        Steps:
11087        1. PhoneA (WFC APM WiFi Preferred) call PhoneB (WFC APM WiFi Preferred), accept on PhoneB.
11088        2. PhoneC (WFC APM WiFi Preferred) call PhoneA (WFC APM WiFi Preferred), accept on PhoneA.
11089        3. Swap active call on PhoneA.
11090        4. On PhoneA, merge to conference call (WFC CEP conference call).
11091        5. End call on PhoneC, verify call continues.
11092        6. End call on PhoneB, verify call end on PhoneA.
11093
11094        Expected Results:
11095        3. Swap operation succeeded.
11096        4. Conference merged successfully.
11097        5. Drop calls succeeded. Call between A-B continues.
11098        6. Drop calls succeeded, all call participants drop.
11099
11100        Returns:
11101            True if pass; False if fail.
11102
11103        TAGS: Telephony, WFC, Conference, CEP
11104        Priority: 1
11105        """
11106        ads = self.android_devices
11107
11108        tasks = [(phone_setup_iwlan,
11109                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
11110                   self.wifi_network_ssid, self.wifi_network_pass)),
11111                 (phone_setup_iwlan,
11112                  (self.log, ads[1], True, WFC_MODE_WIFI_PREFERRED,
11113                   self.wifi_network_ssid, self.wifi_network_pass)),
11114                 (phone_setup_iwlan,
11115                  (self.log, ads[2], True, WFC_MODE_WIFI_PREFERRED,
11116                   self.wifi_network_ssid, self.wifi_network_pass))]
11117        if not multithread_func(self.log, tasks):
11118            self.log.error("Phone Failed to Set Up Properly.")
11119            return False
11120
11121        call_ab_id, call_ac_id = _test_call_mo_mt_add_swap_x(log=self.log,
11122                                        ads=ads,
11123                                        num_swaps=1,
11124                                        phone_setup_a=None,
11125                                        phone_setup_b=None,
11126                                        phone_setup_c=None,
11127                                        verify_phone_a_network_subscription=is_phone_in_call_iwlan,
11128                                        verify_phone_b_network_subscription=is_phone_in_call_iwlan,
11129                                        verify_phone_c_network_subscription=is_phone_in_call_iwlan)
11130        if call_ab_id is None or call_ac_id is None:
11131            return False
11132
11133        return _test_ims_conference_merge_drop_second_call_from_participant(self.log, ads,
11134            call_ab_id, call_ac_id)
11135
11136
11137    @TelephonyBaseTest.tel_test_wrap
11138    @test_tracker_info(uuid="a246cbd0-915d-4068-8d63-7e099d41fd43")
11139    def test_wcdma_add_mt_decline(self):
11140        ads = self.android_devices
11141
11142        tasks = [(phone_setup_3g, (self.log, ads[0])),
11143                 (phone_setup_voice_general, (self.log, ads[1])),
11144                 (phone_setup_voice_general, (self.log, ads[2]))]
11145        if not multithread_func(self.log, tasks):
11146            self.log.error("Phone Failed to Set Up Properly.")
11147            return False
11148
11149        if not self._three_phone_call_mo_add_mt_reject(
11150            [ads[0], ads[1], ads[2]], [is_phone_in_call_wcdma, None], True):
11151            return False
11152        return True
11153
11154
11155    @TelephonyBaseTest.tel_test_wrap
11156    @test_tracker_info(uuid="2789388a-c67c-4c37-a4ea-98c9083abcf9")
11157    def test_wcdma_add_mt_ignore(self):
11158        ads = self.android_devices
11159
11160        tasks = [(phone_setup_3g, (self.log, ads[0])),
11161                 (phone_setup_voice_general, (self.log, ads[1])),
11162                 (phone_setup_voice_general, (self.log, ads[2]))]
11163        if not multithread_func(self.log, tasks):
11164            self.log.error("Phone Failed to Set Up Properly.")
11165            return False
11166
11167        if not self._three_phone_call_mo_add_mt_reject(
11168            [ads[0], ads[1], ads[2]], [is_phone_in_call_wcdma, None], False):
11169            return False
11170        return True
11171
11172
11173    @TelephonyBaseTest.tel_test_wrap
11174    @test_tracker_info(uuid="8f5399b2-5075-45b2-b916-2d436d1c1c93")
11175    def test_1x_add_mt_decline(self):
11176        ads = self.android_devices
11177
11178        tasks = [(phone_setup_3g, (self.log, ads[0])),
11179                 (phone_setup_voice_general, (self.log, ads[1])),
11180                 (phone_setup_voice_general, (self.log, ads[2]))]
11181        if not multithread_func(self.log, tasks):
11182            self.log.error("Phone Failed to Set Up Properly.")
11183            return False
11184
11185        if not self._three_phone_call_mo_add_mt_reject(
11186            [ads[0], ads[1], ads[2]], [is_phone_in_call_1x, None], True):
11187            return False
11188        return True
11189
11190
11191    @TelephonyBaseTest.tel_test_wrap
11192    @test_tracker_info(uuid="a7e6ea10-d4d4-4089-a012-31565314cf65")
11193    def test_1x_add_mt_ignore(self):
11194        ads = self.android_devices
11195
11196        tasks = [(phone_setup_3g, (self.log, ads[0])),
11197                 (phone_setup_voice_general, (self.log, ads[1])),
11198                 (phone_setup_voice_general, (self.log, ads[2]))]
11199        if not multithread_func(self.log, tasks):
11200            self.log.error("Phone Failed to Set Up Properly.")
11201            return False
11202
11203        if not self._three_phone_call_mo_add_mt_reject(
11204            [ads[0], ads[1], ads[2]], [is_phone_in_call_1x, None], False):
11205            return False
11206        return True
11207
11208
11209    @TelephonyBaseTest.tel_test_wrap
11210    @test_tracker_info(uuid="c7d878f6-2f1c-4029-bcf9-2aecf2d202e7")
11211    def test_volte_add_mt_decline(self):
11212        ads = self.android_devices
11213
11214        tasks = [(phone_setup_volte, (self.log, ads[0])),
11215                 (phone_setup_voice_general, (self.log, ads[1])),
11216                 (phone_setup_voice_general, (self.log, ads[2]))]
11217        if not multithread_func(self.log, tasks):
11218            self.log.error("Phone Failed to Set Up Properly.")
11219            return False
11220
11221        if not self._three_phone_call_mo_add_mt_reject(
11222            [ads[0], ads[1], ads[2]], [is_phone_in_call_volte, None], True):
11223            return False
11224        return True
11225
11226
11227    @TelephonyBaseTest.tel_test_wrap
11228    @test_tracker_info(uuid="4f03240f-88a7-4d39-9d90-6327e835d5e2")
11229    def test_volte_add_mt_ignore(self):
11230        ads = self.android_devices
11231
11232        tasks = [(phone_setup_volte, (self.log, ads[0])),
11233                 (phone_setup_voice_general, (self.log, ads[1])),
11234                 (phone_setup_voice_general, (self.log, ads[2]))]
11235        if not multithread_func(self.log, tasks):
11236            self.log.error("Phone Failed to Set Up Properly.")
11237            return False
11238
11239        if not self._three_phone_call_mo_add_mt_reject(
11240            [ads[0], ads[1], ads[2]], [is_phone_in_call_volte, None], False):
11241            return False
11242        return True
11243
11244
11245    @TelephonyBaseTest.tel_test_wrap
11246    @test_tracker_info(uuid="ce51844a-4879-470e-9a22-4eafe25f8e2a")
11247    def test_wfc_lte_add_mt_decline(self):
11248        ads = self.android_devices
11249
11250        tasks = [(phone_setup_iwlan,
11251                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
11252                   self.wifi_network_ssid, self.wifi_network_pass)),
11253                 (phone_setup_voice_general, (self.log, ads[1])),
11254                 (phone_setup_voice_general, (self.log, ads[2]))]
11255        if not multithread_func(self.log, tasks):
11256            self.log.error("Phone Failed to Set Up Properly.")
11257            return False
11258
11259        if not self._three_phone_call_mo_add_mt_reject(
11260            [ads[0], ads[1], ads[2]], [is_phone_in_call_volte, None], True):
11261            return False
11262        return True
11263
11264
11265    @TelephonyBaseTest.tel_test_wrap
11266    @test_tracker_info(uuid="b5058cd0-4073-4018-9683-335fd27ab529")
11267    def test_wfc_lte_add_mt_ignore(self):
11268        ads = self.android_devices
11269
11270        tasks = [(phone_setup_iwlan,
11271                  (self.log, ads[0], False, WFC_MODE_WIFI_PREFERRED,
11272                   self.wifi_network_ssid, self.wifi_network_pass)),
11273                 (phone_setup_voice_general, (self.log, ads[1])),
11274                 (phone_setup_voice_general, (self.log, ads[2]))]
11275        if not multithread_func(self.log, tasks):
11276            self.log.error("Phone Failed to Set Up Properly.")
11277            return False
11278
11279        if not self._three_phone_call_mo_add_mt_reject(
11280            [ads[0], ads[1], ads[2]], [is_phone_in_call_iwlan, None], False):
11281            return False
11282        return True
11283
11284
11285    @TelephonyBaseTest.tel_test_wrap
11286    @test_tracker_info(uuid="456e0a04-7d82-4387-89bb-80613732412e")
11287    def test_wfc_apm_add_mt_decline(self):
11288        ads = self.android_devices
11289
11290        tasks = [(phone_setup_iwlan,
11291                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
11292                   self.wifi_network_ssid, self.wifi_network_pass)),
11293                 (phone_setup_voice_general, (self.log, ads[1])),
11294                 (phone_setup_voice_general, (self.log, ads[2]))]
11295        if not multithread_func(self.log, tasks):
11296            self.log.error("Phone Failed to Set Up Properly.")
11297            return False
11298
11299        if not self._three_phone_call_mo_add_mt_reject(
11300            [ads[0], ads[1], ads[2]], [is_phone_in_call_iwlan, None], True):
11301            return False
11302        return True
11303
11304
11305    @TelephonyBaseTest.tel_test_wrap
11306    @test_tracker_info(uuid="ee71fc98-9e52-406f-8d8a-6d9c62cbe6f4")
11307    def test_wfc_apm_add_mt_ignore(self):
11308        ads = self.android_devices
11309
11310        tasks = [(phone_setup_iwlan,
11311                  (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
11312                   self.wifi_network_ssid, self.wifi_network_pass)),
11313                 (phone_setup_voice_general, (self.log, ads[1])),
11314                 (phone_setup_voice_general, (self.log, ads[2]))]
11315        if not multithread_func(self.log, tasks):
11316            self.log.error("Phone Failed to Set Up Properly.")
11317            return False
11318
11319        if not self._three_phone_call_mo_add_mt_reject(
11320            [ads[0], ads[1], ads[2]], [is_phone_in_call_iwlan, None], False):
11321            return False
11322        return True
11323
11324
11325    @TelephonyBaseTest.tel_test_wrap
11326    @test_tracker_info(uuid="f4990e20-4a40-4238-9a2a-a75d9be3d354")
11327    def test_call_forwarding_unconditional(self):
11328
11329        ads = self.android_devices
11330
11331        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11332                 (phone_setup_voice_general, (self.log, ads[1])),
11333                 (phone_setup_voice_general, (self.log, ads[2]))]
11334        if not multithread_func(self.log, tasks):
11335            self.log.error("Phone Failed to Set Up Properly.")
11336            return False
11337
11338        return three_phone_call_forwarding_short_seq(
11339            self.log,
11340            ads[0],
11341            None,
11342            None,
11343            ads[1],
11344            ads[2],
11345            call_forwarding_type="unconditional")
11346
11347
11348    @TelephonyBaseTest.tel_test_wrap
11349    @test_tracker_info(uuid="f4990e20-4a40-4238-9a2a-a75d9be3d354")
11350    def test_volte_call_forwarding_unconditional(self):
11351
11352        ads = self.android_devices
11353
11354        tasks = [(phone_setup_volte, (self.log, ads[0])),
11355                 (phone_setup_voice_general, (self.log, ads[1])),
11356                 (phone_setup_voice_general, (self.log, ads[2]))]
11357        if not multithread_func(self.log, tasks):
11358            self.log.error("Phone Failed to Set Up Properly.")
11359            return False
11360
11361        return three_phone_call_forwarding_short_seq(
11362            self.log,
11363            ads[0],
11364            None,
11365            None,
11366            ads[1],
11367            ads[2],
11368            call_forwarding_type="unconditional")
11369
11370
11371    @TelephonyBaseTest.tel_test_wrap
11372    @test_tracker_info(uuid="26b85c3f-5a38-465a-a6e3-dfd03c6ea315")
11373    def test_call_forwarding_busy(self):
11374
11375        ads = self.android_devices
11376
11377        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11378                 (phone_setup_voice_general, (self.log, ads[1])),
11379                 (phone_setup_voice_general, (self.log, ads[2]))]
11380        if not multithread_func(self.log, tasks):
11381            self.log.error("Phone Failed to Set Up Properly.")
11382            return False
11383
11384        return three_phone_call_forwarding_short_seq(
11385            self.log,
11386            ads[0],
11387            None,
11388            None,
11389            ads[1],
11390            ads[2],
11391            call_forwarding_type="busy")
11392
11393
11394    @TelephonyBaseTest.tel_test_wrap
11395    @test_tracker_info(uuid="26b85c3f-5a38-465a-a6e3-dfd03c6ea315")
11396    def test_volte_call_forwarding_busy(self):
11397
11398        ads = self.android_devices
11399
11400        tasks = [(phone_setup_volte, (self.log, ads[0])),
11401                 (phone_setup_voice_general, (self.log, ads[1])),
11402                 (phone_setup_voice_general, (self.log, ads[2]))]
11403        if not multithread_func(self.log, tasks):
11404            self.log.error("Phone Failed to Set Up Properly.")
11405            return False
11406
11407        return three_phone_call_forwarding_short_seq(
11408            self.log,
11409            ads[0],
11410            None,
11411            None,
11412            ads[1],
11413            ads[2],
11414            call_forwarding_type="busy")
11415
11416
11417    @TelephonyBaseTest.tel_test_wrap
11418    @test_tracker_info(uuid="96638a39-efe2-40e2-afb6-6a97f87c4af5")
11419    def test_call_forwarding_not_answered(self):
11420
11421        ads = self.android_devices
11422
11423        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11424                 (phone_setup_voice_general, (self.log, ads[1])),
11425                 (phone_setup_voice_general, (self.log, ads[2]))]
11426        if not multithread_func(self.log, tasks):
11427            self.log.error("Phone Failed to Set Up Properly.")
11428            return False
11429
11430        return three_phone_call_forwarding_short_seq(
11431            self.log,
11432            ads[0],
11433            None,
11434            None,
11435            ads[1],
11436            ads[2],
11437            call_forwarding_type="not_answered")
11438
11439
11440    @TelephonyBaseTest.tel_test_wrap
11441    @test_tracker_info(uuid="96638a39-efe2-40e2-afb6-6a97f87c4af5")
11442    def test_volte_call_forwarding_not_answered(self):
11443
11444        ads = self.android_devices
11445
11446        tasks = [(phone_setup_volte, (self.log, ads[0])),
11447                 (phone_setup_voice_general, (self.log, ads[1])),
11448                 (phone_setup_voice_general, (self.log, ads[2]))]
11449        if not multithread_func(self.log, tasks):
11450            self.log.error("Phone Failed to Set Up Properly.")
11451            return False
11452
11453        return three_phone_call_forwarding_short_seq(
11454            self.log,
11455            ads[0],
11456            None,
11457            None,
11458            ads[1],
11459            ads[2],
11460            call_forwarding_type="not_answered")
11461
11462
11463    @TelephonyBaseTest.tel_test_wrap
11464    @test_tracker_info(uuid="a13e586a-3345-49d8-9e84-ca33bd3fbd7d")
11465    def test_call_forwarding_not_reachable(self):
11466
11467        ads = self.android_devices
11468
11469        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11470                 (phone_setup_voice_general, (self.log, ads[1])),
11471                 (phone_setup_voice_general, (self.log, ads[2]))]
11472        if not multithread_func(self.log, tasks):
11473            self.log.error("Phone Failed to Set Up Properly.")
11474            return False
11475
11476        return three_phone_call_forwarding_short_seq(
11477            self.log,
11478            ads[0],
11479            None,
11480            None,
11481            ads[1],
11482            ads[2],
11483            call_forwarding_type="not_reachable")
11484
11485
11486    @TelephonyBaseTest.tel_test_wrap
11487    @test_tracker_info(uuid="a13e586a-3345-49d8-9e84-ca33bd3fbd7d")
11488    def test_volte_call_forwarding_not_reachable(self):
11489
11490        ads = self.android_devices
11491
11492        tasks = [(phone_setup_volte, (self.log, ads[0])),
11493                 (phone_setup_voice_general, (self.log, ads[1])),
11494                 (phone_setup_voice_general, (self.log, ads[2]))]
11495        if not multithread_func(self.log, tasks):
11496            self.log.error("Phone Failed to Set Up Properly.")
11497            return False
11498
11499        return three_phone_call_forwarding_short_seq(
11500            self.log,
11501            ads[0],
11502            None,
11503            None,
11504            ads[1],
11505            ads[2],
11506            call_forwarding_type="not_reachable")
11507
11508
11509    @TelephonyBaseTest.tel_test_wrap
11510    @test_tracker_info(uuid="e9a6027b-7dd1-4dca-a700-e4d42c9c947d")
11511    def test_call_waiting_scenario_1(self):
11512        """ Call waiting scenario 1: 1st call ended first by caller1 during 2nd
11513        call incoming. 2nd call ended by caller2.
11514        """
11515        ads = self.android_devices
11516
11517        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11518                 (phone_setup_voice_general, (self.log, ads[1])),
11519                 (phone_setup_voice_general, (self.log, ads[2]))]
11520        if not multithread_func(self.log, tasks):
11521            self.log.error("Phone Failed to Set Up Properly.")
11522            return False
11523
11524        return three_phone_call_waiting_short_seq(
11525            self.log,
11526            ads[0],
11527            None,
11528            None,
11529            ads[1],
11530            ads[2],
11531            call_waiting=True,
11532            scenario=1)
11533
11534
11535    @TelephonyBaseTest.tel_test_wrap
11536    @test_tracker_info(uuid="e9a6027b-7dd1-4dca-a700-e4d42c9c947d")
11537    def test_volte_call_waiting_scenario_1(self):
11538        """Tests that the call waiting function is workable by scenario 1.
11539
11540        Initial Condition:
11541            (1) Network Type:
11542                - DUT: LTE, VoLTE ON.
11543                - Caller1: LTE/3G.
11544
11545        Execution Criteria:
11546            (1) Enable call waiting on DUT.
11547            (2) Let caller1 make the first MO call to DUT and let DUT answer the
11548            call.
11549            (3) Let caller2 make the second MO call to DUT. Do NOT answer the
11550            call and keep the call alerting.
11551            (4) End the first call by caller1.
11552            (5) Let DUT answer the second call.
11553            (6) End the second call by caller2.
11554
11555        Pass Criteria:
11556            (2)(5) All the call can be made/answered correctly.
11557            (4)(6) All the call can be released correctly.
11558        """
11559        ads = self.android_devices
11560
11561        tasks = [(phone_setup_volte, (self.log, ads[0])),
11562                 (phone_setup_voice_general, (self.log, ads[1])),
11563                 (phone_setup_voice_general, (self.log, ads[2]))]
11564        if not multithread_func(self.log, tasks):
11565            self.log.error("Phone Failed to Set Up Properly.")
11566            return False
11567
11568        return three_phone_call_waiting_short_seq(
11569            self.log,
11570            ads[0],
11571            None,
11572            None,
11573            ads[1],
11574            ads[2],
11575            call_waiting=True,
11576            scenario=1)
11577
11578
11579    @TelephonyBaseTest.tel_test_wrap
11580    @test_tracker_info(uuid="3fe02cb7-68d7-4762-882a-02bff8ce32f9")
11581    def test_call_waiting_scenario_2(self):
11582        """ Call waiting scenario 2: 1st call ended first by caller1 during 2nd
11583        call incoming. 2nd call ended by callee.
11584        """
11585        ads = self.android_devices
11586
11587        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11588                 (phone_setup_voice_general, (self.log, ads[1])),
11589                 (phone_setup_voice_general, (self.log, ads[2]))]
11590        if not multithread_func(self.log, tasks):
11591            self.log.error("Phone Failed to Set Up Properly.")
11592            return False
11593
11594        return three_phone_call_waiting_short_seq(
11595            self.log,
11596            ads[0],
11597            None,
11598            None,
11599            ads[1],
11600            ads[2],
11601            call_waiting=True,
11602            scenario=2)
11603
11604
11605    @TelephonyBaseTest.tel_test_wrap
11606    @test_tracker_info(uuid="bf5eb9ad-1fa2-468d-99dc-3cbcee8c89f8")
11607    def test_call_waiting_scenario_3(self):
11608        """ Call waiting scenario 3: 1st call ended first by callee during 2nd
11609        call incoming. 2nd call ended by caller2.
11610        """
11611        ads = self.android_devices
11612
11613        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11614                 (phone_setup_voice_general, (self.log, ads[1])),
11615                 (phone_setup_voice_general, (self.log, ads[2]))]
11616        if not multithread_func(self.log, tasks):
11617            self.log.error("Phone Failed to Set Up Properly.")
11618            return False
11619
11620        return three_phone_call_waiting_short_seq(
11621            self.log,
11622            ads[0],
11623            None,
11624            None,
11625            ads[1],
11626            ads[2],
11627            call_waiting=True,
11628            scenario=3)
11629
11630
11631    @TelephonyBaseTest.tel_test_wrap
11632    @test_tracker_info(uuid="f2e4b6a9-6a6f-466c-884c-c0ef79d6ff01")
11633    def test_call_waiting_scenario_4(self):
11634        """Call waiting scenario 4: 1st call ended first by callee during 2nd
11635        call incoming. 2nd call ended by callee.
11636        """
11637        ads = self.android_devices
11638
11639        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11640                 (phone_setup_voice_general, (self.log, ads[1])),
11641                 (phone_setup_voice_general, (self.log, ads[2]))]
11642        if not multithread_func(self.log, tasks):
11643            self.log.error("Phone Failed to Set Up Properly.")
11644            return False
11645
11646        return three_phone_call_waiting_short_seq(
11647            self.log,
11648            ads[0],
11649            None,
11650            None,
11651            ads[1],
11652            ads[2],
11653            call_waiting=True,
11654            scenario=4)
11655
11656
11657    @TelephonyBaseTest.tel_test_wrap
11658    @test_tracker_info(uuid="f2d36f45-63f6-4e01-9844-6fa53c26def7")
11659    def test_call_waiting_scenario_5(self):
11660        """ Call waiting scenario 5: 1st call ended by caller1. 2nd call ended
11661        by caller2.
11662        """
11663        ads = self.android_devices
11664
11665        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11666                 (phone_setup_voice_general, (self.log, ads[1])),
11667                 (phone_setup_voice_general, (self.log, ads[2]))]
11668        if not multithread_func(self.log, tasks):
11669            self.log.error("Phone Failed to Set Up Properly.")
11670            return False
11671
11672        return three_phone_call_waiting_short_seq(
11673            self.log,
11674            ads[0],
11675            None,
11676            None,
11677            ads[1],
11678            ads[2],
11679            call_waiting=True,
11680            scenario=5)
11681
11682
11683    @TelephonyBaseTest.tel_test_wrap
11684    @test_tracker_info(uuid="7eb2a89d-30ad-4a34-8e63-87d0181b91aa")
11685    def test_call_waiting_scenario_6(self):
11686        """Call waiting scenario 6: 1st call ended by caller1. 2nd call ended by
11687        callee.
11688        """
11689        ads = self.android_devices
11690
11691        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11692                 (phone_setup_voice_general, (self.log, ads[1])),
11693                 (phone_setup_voice_general, (self.log, ads[2]))]
11694        if not multithread_func(self.log, tasks):
11695            self.log.error("Phone Failed to Set Up Properly.")
11696            return False
11697
11698        return three_phone_call_waiting_short_seq(
11699            self.log,
11700            ads[0],
11701            None,
11702            None,
11703            ads[1],
11704            ads[2],
11705            call_waiting=True,
11706            scenario=6)
11707
11708
11709    @TelephonyBaseTest.tel_test_wrap
11710    @test_tracker_info(uuid="c63882e5-5b72-4ca6-8e36-260c50f42028")
11711    def test_call_waiting_scenario_7(self):
11712        """ Call waiting scenario 7: 1st call ended by callee. 2nd call ended by
11713        caller2.
11714        """
11715        ads = self.android_devices
11716
11717        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11718                 (phone_setup_voice_general, (self.log, ads[1])),
11719                 (phone_setup_voice_general, (self.log, ads[2]))]
11720        if not multithread_func(self.log, tasks):
11721            self.log.error("Phone Failed to Set Up Properly.")
11722            return False
11723
11724        return three_phone_call_waiting_short_seq(
11725            self.log,
11726            ads[0],
11727            None,
11728            None,
11729            ads[1],
11730            ads[2],
11731            call_waiting=True,
11732            scenario=7)
11733
11734
11735    @TelephonyBaseTest.tel_test_wrap
11736    @test_tracker_info(uuid="f9be652f-a307-4fa5-9b30-ea78404110bd")
11737    def test_call_waiting_scenario_8(self):
11738        """Call waiting scenario 8: 1st call ended by callee. 2nd call ended by
11739        callee.
11740        """
11741        ads = self.android_devices
11742
11743        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11744                 (phone_setup_voice_general, (self.log, ads[1])),
11745                 (phone_setup_voice_general, (self.log, ads[2]))]
11746        if not multithread_func(self.log, tasks):
11747            self.log.error("Phone Failed to Set Up Properly.")
11748            return False
11749
11750        return three_phone_call_waiting_short_seq(
11751            self.log,
11752            ads[0],
11753            None,
11754            None,
11755            ads[1],
11756            ads[2],
11757            call_waiting=True,
11758            scenario=8)
11759
11760
11761    @TelephonyBaseTest.tel_test_wrap
11762    @test_tracker_info(uuid="b2e816b5-8e8f-4863-981c-47847d9527e0")
11763    def test_call_waiting_deactivated(self):
11764
11765        ads = self.android_devices
11766
11767        tasks = [(phone_setup_voice_general, (self.log, ads[0])),
11768                 (phone_setup_voice_general, (self.log, ads[1])),
11769                 (phone_setup_voice_general, (self.log, ads[2]))]
11770        if not multithread_func(self.log, tasks):
11771            self.log.error("Phone Failed to Set Up Properly.")
11772            return False
11773
11774        return three_phone_call_waiting_short_seq(
11775            self.log,
11776            ads[0],
11777            None,
11778            None,
11779            ads[1],
11780            ads[2],
11781            call_waiting=False)
11782
11783    """ Tests End """
11784