Home | History | Annotate | Download | only in live
      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 Telephony Pre Check In Sanity
     18 """
     19 
     20 import time
     21 from queue import Empty
     22 from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
     23 from acts.test_utils.tel.tel_defines import GEN_3G
     24 from acts.test_utils.tel.tel_defines import GEN_4G
     25 from acts.test_utils.tel.tel_defines import PHONE_TYPE_CDMA
     26 from acts.test_utils.tel.tel_defines import PHONE_TYPE_GSM
     27 from acts.test_utils.tel.tel_defines import RAT_3G
     28 from acts.test_utils.tel.tel_defines import VT_STATE_BIDIRECTIONAL
     29 from acts.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
     30 from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
     31 from acts.test_utils.tel.tel_test_utils import call_setup_teardown
     32 from acts.test_utils.tel.tel_test_utils import \
     33     ensure_network_generation_for_subscription
     34 from acts.test_utils.tel.tel_test_utils import ensure_network_generation
     35 from acts.test_utils.tel.tel_test_utils import mms_send_receive_verify
     36 from acts.test_utils.tel.tel_test_utils import multithread_func
     37 from acts.test_utils.tel.tel_test_utils import set_call_state_listen_level
     38 from acts.test_utils.tel.tel_test_utils import setup_sim
     39 from acts.test_utils.tel.tel_test_utils import sms_send_receive_verify
     40 from acts.test_utils.tel.tel_video_utils import phone_setup_video
     41 from acts.test_utils.tel.tel_video_utils import is_phone_in_call_video_bidirectional
     42 from acts.test_utils.tel.tel_video_utils import video_call_setup_teardown
     43 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_1x
     44 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_2g
     45 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_3g
     46 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_csfb
     47 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan
     48 from acts.test_utils.tel.tel_voice_utils import is_phone_in_call_volte
     49 from acts.test_utils.tel.tel_voice_utils import phone_setup_3g
     50 from acts.test_utils.tel.tel_voice_utils import phone_setup_csfb
     51 from acts.test_utils.tel.tel_voice_utils import phone_setup_data_general
     52 from acts.test_utils.tel.tel_voice_utils import phone_setup_iwlan
     53 from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_2g
     54 from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_3g
     55 from acts.test_utils.tel.tel_voice_utils import phone_setup_volte
     56 from acts.test_utils.tel.tel_voice_utils import phone_setup_voice_general
     57 from acts.utils import rand_ascii_str
     58 
     59 
     60 class TelLiveSmsTest(TelephonyBaseTest):
     61     def __init__(self, controllers):
     62         TelephonyBaseTest.__init__(self, controllers)
     63         self.tests = (
     64             "test_sms_mo_4g", "test_sms_mt_4g", "test_sms_mo_in_call_volte",
     65             "test_sms_mt_in_call_volte", "test_sms_mo_in_call_csfb",
     66             "test_sms_mt_in_call_csfb", "test_sms_mo_in_call_csfb_1x",
     67             "test_sms_mt_in_call_csfb_1x", "test_sms_mo_3g", "test_sms_mt_3g",
     68             "test_sms_mo_in_call_wcdma", "test_sms_mt_in_call_wcdma",
     69             "test_sms_mo_in_call_1x", "test_sms_mt_in_call_1x",
     70             "test_sms_mo_2g", "test_sms_mt_2g", "test_sms_mo_in_call_gsm",
     71             "test_sms_mt_in_call_gsm", "test_sms_mo_iwlan",
     72             "test_sms_mt_iwlan", "test_sms_mo_in_call_iwlan",
     73             "test_sms_mt_in_call_iwlan", "test_sms_mo_in_call_vt",
     74             "test_sms_mt_in_call_vt")
     75         # The path for "sim config file" should be set
     76         # in "testbed.config" entry "sim_conf_file".
     77         self.wifi_network_ssid = self.user_params["wifi_network_ssid"]
     78 
     79         try:
     80             self.wifi_network_pass = self.user_params["wifi_network_pass"]
     81         except KeyError:
     82             self.wifi_network_pass = None
     83 
     84     def _sms_test(self, ads):
     85         """Test SMS between two phones.
     86 
     87         Returns:
     88             True if success.
     89             False if failed.
     90         """
     91 
     92         sms_params = [(ads[0], ads[1])]
     93         message_arrays = [[rand_ascii_str(50)], [rand_ascii_str(160)],
     94                           [rand_ascii_str(180)]]
     95 
     96         for outer_param in sms_params:
     97             outer_param = (self.log, ) + outer_param
     98             for message_array in message_arrays:
     99                 inner_param = outer_param + (message_array, )
    100                 if not sms_send_receive_verify(*inner_param):
    101                     return False
    102 
    103         return True
    104 
    105     def _sms_test_mo(self, ads):
    106         return self._sms_test([ads[0], ads[1]])
    107 
    108     def _sms_test_mt(self, ads):
    109         return self._sms_test([ads[1], ads[0]])
    110 
    111     def _mo_sms_in_3g_call(self, ads):
    112         self.log.info("Begin In Call SMS Test.")
    113         if not call_setup_teardown(self.log,
    114                                    ads[0],
    115                                    ads[1],
    116                                    ad_hangup=None,
    117                                    verify_caller_func=is_phone_in_call_3g,
    118                                    verify_callee_func=None):
    119             return False
    120 
    121         if not self._sms_test_mo(ads):
    122             self.log.error("SMS test fail.")
    123             return False
    124 
    125         return True
    126 
    127     def _mt_sms_in_3g_call(self, ads):
    128         self.log.info("Begin In Call SMS Test.")
    129         if not call_setup_teardown(self.log,
    130                                    ads[0],
    131                                    ads[1],
    132                                    ad_hangup=None,
    133                                    verify_caller_func=is_phone_in_call_3g,
    134                                    verify_callee_func=None):
    135             return False
    136 
    137         if not self._sms_test_mt(ads):
    138             self.log.error("SMS test fail.")
    139             return False
    140 
    141         return True
    142 
    143     def _mo_sms_in_2g_call(self, ads):
    144         self.log.info("Begin In Call SMS Test.")
    145         if not call_setup_teardown(self.log,
    146                                    ads[0],
    147                                    ads[1],
    148                                    ad_hangup=None,
    149                                    verify_caller_func=is_phone_in_call_2g,
    150                                    verify_callee_func=None):
    151             return False
    152 
    153         if not self._sms_test_mo(ads):
    154             self.log.error("SMS test fail.")
    155             return False
    156 
    157         return True
    158 
    159     def _mt_sms_in_2g_call(self, ads):
    160         self.log.info("Begin In Call SMS Test.")
    161         if not call_setup_teardown(self.log,
    162                                    ads[0],
    163                                    ads[1],
    164                                    ad_hangup=None,
    165                                    verify_caller_func=is_phone_in_call_2g,
    166                                    verify_callee_func=None):
    167             return False
    168 
    169         if not self._sms_test_mt(ads):
    170             self.log.error("SMS test fail.")
    171             return False
    172 
    173         return True
    174 
    175     @TelephonyBaseTest.tel_test_wrap
    176     def test_sms_mo_general(self):
    177         """Test SMS basic function between two phone. Phones in any network.
    178 
    179         Airplane mode is off.
    180         Send SMS from PhoneA to PhoneB.
    181         Verify received message on PhoneB is correct.
    182 
    183         Returns:
    184             True if success.
    185             False if failed.
    186         """
    187         ads = self.android_devices
    188 
    189         tasks = [(phone_setup_voice_general, (self.log, ads[0])),
    190                  (phone_setup_voice_general, (self.log, ads[1]))]
    191         if not multithread_func(self.log, tasks):
    192             self.log.error("Phone Failed to Set Up Properly.")
    193             return False
    194 
    195         return self._sms_test_mo(ads)
    196 
    197     @TelephonyBaseTest.tel_test_wrap
    198     def test_sms_mt_general(self):
    199         """Test SMS basic function between two phone. Phones in any network.
    200 
    201         Airplane mode is off.
    202         Send SMS from PhoneB to PhoneA.
    203         Verify received message on PhoneA is correct.
    204 
    205         Returns:
    206             True if success.
    207             False if failed.
    208         """
    209         ads = self.android_devices
    210 
    211         tasks = [(phone_setup_voice_general, (self.log, ads[0])),
    212                  (phone_setup_voice_general, (self.log, ads[1]))]
    213         if not multithread_func(self.log, tasks):
    214             self.log.error("Phone Failed to Set Up Properly.")
    215             return False
    216 
    217         return self._sms_test_mt(ads)
    218 
    219     @TelephonyBaseTest.tel_test_wrap
    220     def test_sms_mo_2g(self):
    221         """Test SMS basic function between two phone. Phones in 3g network.
    222 
    223         Airplane mode is off.
    224         Send SMS from PhoneA to PhoneB.
    225         Verify received message on PhoneB is correct.
    226 
    227         Returns:
    228             True if success.
    229             False if failed.
    230         """
    231         ads = self.android_devices
    232 
    233         tasks = [(phone_setup_voice_2g, (self.log, ads[0])),
    234                  (phone_setup_voice_general, (self.log, ads[1]))]
    235         if not multithread_func(self.log, tasks):
    236             self.log.error("Phone Failed to Set Up Properly.")
    237             return False
    238 
    239         return self._sms_test_mo(ads)
    240 
    241     @TelephonyBaseTest.tel_test_wrap
    242     def test_sms_mt_2g(self):
    243         """Test SMS basic function between two phone. Phones in 3g network.
    244 
    245         Airplane mode is off.
    246         Send SMS from PhoneB to PhoneA.
    247         Verify received message on PhoneA is correct.
    248 
    249         Returns:
    250             True if success.
    251             False if failed.
    252         """
    253         ads = self.android_devices
    254 
    255         tasks = [(phone_setup_voice_2g, (self.log, ads[0])),
    256                  (phone_setup_voice_general, (self.log, ads[1]))]
    257         if not multithread_func(self.log, tasks):
    258             self.log.error("Phone Failed to Set Up Properly.")
    259             return False
    260 
    261         return self._sms_test_mt(ads)
    262 
    263     @TelephonyBaseTest.tel_test_wrap
    264     def test_sms_mo_3g(self):
    265         """Test SMS basic function between two phone. Phones in 3g network.
    266 
    267         Airplane mode is off.
    268         Send SMS from PhoneA to PhoneB.
    269         Verify received message on PhoneB is correct.
    270 
    271         Returns:
    272             True if success.
    273             False if failed.
    274         """
    275 
    276         ads = self.android_devices
    277 
    278         tasks = [(phone_setup_3g, (self.log, ads[0])),
    279                  (phone_setup_voice_general, (self.log, ads[1]))]
    280         if not multithread_func(self.log, tasks):
    281             self.log.error("Phone Failed to Set Up Properly.")
    282             return False
    283 
    284         return self._sms_test_mo(ads)
    285 
    286     @TelephonyBaseTest.tel_test_wrap
    287     def test_sms_mt_3g(self):
    288         """Test SMS basic function between two phone. Phones in 3g network.
    289 
    290         Airplane mode is off.
    291         Send SMS from PhoneB to PhoneA.
    292         Verify received message on PhoneA is correct.
    293 
    294         Returns:
    295             True if success.
    296             False if failed.
    297         """
    298 
    299         ads = self.android_devices
    300 
    301         tasks = [(phone_setup_3g, (self.log, ads[0])),
    302                  (phone_setup_voice_general, (self.log, ads[1]))]
    303         if not multithread_func(self.log, tasks):
    304             self.log.error("Phone Failed to Set Up Properly.")
    305             return False
    306 
    307         return self._sms_test_mt(ads)
    308 
    309     @TelephonyBaseTest.tel_test_wrap
    310     def test_sms_mo_4g(self):
    311         """Test SMS basic function between two phone. Phones in LTE network.
    312 
    313         Airplane mode is off.
    314         Send SMS from PhoneA to PhoneB.
    315         Verify received message on PhoneB is correct.
    316 
    317         Returns:
    318             True if success.
    319             False if failed.
    320         """
    321 
    322         ads = self.android_devices
    323         if (not phone_setup_data_general(self.log, ads[1]) and
    324                 not phone_setup_voice_general(self.log, ads[1])):
    325             self.log.error("Failed to setup PhoneB.")
    326             return False
    327         if not ensure_network_generation(self.log, ads[0], GEN_4G):
    328             self.log.error("DUT Failed to Set Up Properly.")
    329             return False
    330 
    331         return self._sms_test_mo(ads)
    332 
    333     @TelephonyBaseTest.tel_test_wrap
    334     def test_sms_mt_4g(self):
    335         """Test SMS basic function between two phone. Phones in LTE network.
    336 
    337         Airplane mode is off.
    338         Send SMS from PhoneB to PhoneA.
    339         Verify received message on PhoneA is correct.
    340 
    341         Returns:
    342             True if success.
    343             False if failed.
    344         """
    345 
    346         ads = self.android_devices
    347 
    348         if (not phone_setup_data_general(self.log, ads[1]) and
    349                 not phone_setup_voice_general(self.log, ads[1])):
    350             self.log.error("Failed to setup PhoneB.")
    351             return False
    352         if not ensure_network_generation(self.log, ads[0], GEN_4G):
    353             self.log.error("DUT Failed to Set Up Properly.")
    354             return False
    355 
    356         return self._sms_test_mt(ads)
    357 
    358     @TelephonyBaseTest.tel_test_wrap
    359     def test_sms_mo_in_call_volte(self):
    360         """ Test MO SMS during a MO VoLTE call.
    361 
    362         Make Sure PhoneA is in LTE mode (with VoLTE).
    363         Make Sure PhoneB is able to make/receive call.
    364         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    365 
    366         Returns:
    367             True if pass; False if fail.
    368         """
    369         ads = self.android_devices
    370 
    371         tasks = [(phone_setup_volte, (self.log, ads[0])), (phone_setup_volte,
    372                                                            (self.log, ads[1]))]
    373         if not multithread_func(self.log, tasks):
    374             self.log.error("Phone Failed to Set Up Properly.")
    375             return False
    376 
    377         self.log.info("Begin In Call SMS Test.")
    378         if not call_setup_teardown(self.log,
    379                                    ads[0],
    380                                    ads[1],
    381                                    ad_hangup=None,
    382                                    verify_caller_func=is_phone_in_call_volte,
    383                                    verify_callee_func=None):
    384             return False
    385 
    386         if not self._sms_test_mo(ads):
    387             self.log.error("SMS test fail.")
    388             return False
    389 
    390         return True
    391 
    392     @TelephonyBaseTest.tel_test_wrap
    393     def test_sms_mt_in_call_volte(self):
    394         """ Test MT SMS during a MO VoLTE call.
    395 
    396         Make Sure PhoneA is in LTE mode (with VoLTE).
    397         Make Sure PhoneB is able to make/receive call.
    398         Call from PhoneA to PhoneB, accept on PhoneB, receive SMS on PhoneA.
    399 
    400         Returns:
    401             True if pass; False if fail.
    402         """
    403         ads = self.android_devices
    404 
    405         tasks = [(phone_setup_volte, (self.log, ads[0])), (phone_setup_volte,
    406                                                            (self.log, ads[1]))]
    407         if not multithread_func(self.log, tasks):
    408             self.log.error("Phone Failed to Set Up Properly.")
    409             return False
    410 
    411         self.log.info("Begin In Call SMS Test.")
    412         if not call_setup_teardown(self.log,
    413                                    ads[0],
    414                                    ads[1],
    415                                    ad_hangup=None,
    416                                    verify_caller_func=is_phone_in_call_volte,
    417                                    verify_callee_func=None):
    418             return False
    419 
    420         if not self._sms_test_mt(ads):
    421             self.log.error("SMS test fail.")
    422             return False
    423 
    424         return True
    425 
    426     @TelephonyBaseTest.tel_test_wrap
    427     def test_sms_mo_in_call_wcdma(self):
    428         """ Test MO SMS during a MO wcdma call.
    429 
    430         Make Sure PhoneA is in wcdma mode.
    431         Make Sure PhoneB is able to make/receive call.
    432         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    433 
    434         Returns:
    435             True if pass; False if fail.
    436         """
    437         ads = self.android_devices
    438         # make sure PhoneA is GSM phone before proceed.
    439         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    440             self.log.error("Not GSM phone, abort this wcdma SMS test.")
    441             return False
    442 
    443         tasks = [(phone_setup_3g, (self.log, ads[0])),
    444                  (phone_setup_voice_general, (self.log, ads[1]))]
    445         if not multithread_func(self.log, tasks):
    446             self.log.error("Phone Failed to Set Up Properly.")
    447             return False
    448 
    449         return self._mo_sms_in_3g_call(ads)
    450 
    451     @TelephonyBaseTest.tel_test_wrap
    452     def test_sms_mt_in_call_wcdma(self):
    453         """ Test MT SMS during a MO wcdma call.
    454 
    455         Make Sure PhoneA is in wcdma mode.
    456         Make Sure PhoneB is able to make/receive call.
    457         Call from PhoneA to PhoneB, accept on PhoneB, receive SMS on PhoneA.
    458 
    459         Returns:
    460             True if pass; False if fail.
    461         """
    462         ads = self.android_devices
    463         # make sure PhoneA is GSM phone before proceed.
    464         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    465             self.log.error("Not GSM phone, abort this wcdma SMS test.")
    466             return False
    467 
    468         tasks = [(phone_setup_3g, (self.log, ads[0])),
    469                  (phone_setup_voice_general, (self.log, ads[1]))]
    470         if not multithread_func(self.log, tasks):
    471             self.log.error("Phone Failed to Set Up Properly.")
    472             return False
    473 
    474         return self._mt_sms_in_3g_call(ads)
    475 
    476     @TelephonyBaseTest.tel_test_wrap
    477     def test_sms_mo_in_call_csfb(self):
    478         """ Test MO SMS during a MO csfb wcdma/gsm call.
    479 
    480         Make Sure PhoneA is in LTE mode (no VoLTE).
    481         Make Sure PhoneB is able to make/receive call.
    482         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    483 
    484         Returns:
    485             True if pass; False if fail.
    486         """
    487         ads = self.android_devices
    488         # make sure PhoneA is GSM phone before proceed.
    489         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    490             self.log.error("Not GSM phone, abort this csfb wcdma SMS test.")
    491             return False
    492 
    493         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    494                  (phone_setup_voice_general, (self.log, ads[1]))]
    495         if not multithread_func(self.log, tasks):
    496             self.log.error("Phone Failed to Set Up Properly.")
    497             return False
    498 
    499         self.log.info("Begin In Call SMS Test.")
    500         if not call_setup_teardown(self.log,
    501                                    ads[0],
    502                                    ads[1],
    503                                    ad_hangup=None,
    504                                    verify_caller_func=is_phone_in_call_csfb,
    505                                    verify_callee_func=None):
    506             return False
    507 
    508         if not self._sms_test_mo(ads):
    509             self.log.error("SMS test fail.")
    510             return False
    511 
    512         return True
    513 
    514     @TelephonyBaseTest.tel_test_wrap
    515     def test_sms_mt_in_call_csfb(self):
    516         """ Test MT SMS during a MO csfb wcdma/gsm call.
    517 
    518         Make Sure PhoneA is in LTE mode (no VoLTE).
    519         Make Sure PhoneB is able to make/receive call.
    520         Call from PhoneA to PhoneB, accept on PhoneB, receive receive on PhoneA.
    521 
    522         Returns:
    523             True if pass; False if fail.
    524         """
    525         ads = self.android_devices
    526         # make sure PhoneA is GSM phone before proceed.
    527         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    528             self.log.error("Not GSM phone, abort this csfb wcdma SMS test.")
    529             return False
    530 
    531         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    532                  (phone_setup_voice_general, (self.log, ads[1]))]
    533         if not multithread_func(self.log, tasks):
    534             self.log.error("Phone Failed to Set Up Properly.")
    535             return False
    536 
    537         self.log.info("Begin In Call SMS Test.")
    538         if not call_setup_teardown(self.log,
    539                                    ads[0],
    540                                    ads[1],
    541                                    ad_hangup=None,
    542                                    verify_caller_func=is_phone_in_call_csfb,
    543                                    verify_callee_func=None):
    544             return False
    545 
    546         if not self._sms_test_mt(ads):
    547             self.log.error("SMS test fail.")
    548             return False
    549 
    550         return True
    551 
    552     @TelephonyBaseTest.tel_test_wrap
    553     def test_sms_mo_in_call_1x(self):
    554         """ Test MO SMS during a MO 1x call.
    555 
    556         Make Sure PhoneA is in 1x mode.
    557         Make Sure PhoneB is able to make/receive call.
    558         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    559 
    560         Returns:
    561             True if pass; False if fail.
    562         """
    563         ads = self.android_devices
    564         # make sure PhoneA is CDMA phone before proceed.
    565         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
    566             self.log.error("Not CDMA phone, abort this 1x SMS test.")
    567             return False
    568 
    569         tasks = [(phone_setup_3g, (self.log, ads[0])),
    570                  (phone_setup_voice_general, (self.log, ads[1]))]
    571         if not multithread_func(self.log, tasks):
    572             self.log.error("Phone Failed to Set Up Properly.")
    573             return False
    574 
    575         self.log.info("Begin In Call SMS Test.")
    576         if not call_setup_teardown(self.log,
    577                                    ads[0],
    578                                    ads[1],
    579                                    ad_hangup=None,
    580                                    verify_caller_func=is_phone_in_call_1x,
    581                                    verify_callee_func=None):
    582             return False
    583 
    584         if not self._sms_test_mo(ads):
    585             self.log.error("SMS test fail.")
    586             return False
    587 
    588         return True
    589 
    590     @TelephonyBaseTest.tel_test_wrap
    591     def test_sms_mt_in_call_1x(self):
    592         """ Test MT SMS during a MO 1x call.
    593 
    594         Make Sure PhoneA is in 1x mode.
    595         Make Sure PhoneB is able to make/receive call.
    596         Call from PhoneA to PhoneB, accept on PhoneB, receive SMS on PhoneA.
    597 
    598         Returns:
    599             True if pass; False if fail.
    600         """
    601         ads = self.android_devices
    602         # make sure PhoneA is CDMA phone before proceed.
    603         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
    604             self.log.error("Not CDMA phone, abort this 1x SMS test.")
    605             return False
    606 
    607         tasks = [(phone_setup_3g, (self.log, ads[0])),
    608                  (phone_setup_voice_general, (self.log, ads[1]))]
    609         if not multithread_func(self.log, tasks):
    610             self.log.error("Phone Failed to Set Up Properly.")
    611             return False
    612 
    613         self.log.info("Begin In Call SMS Test.")
    614         if not call_setup_teardown(self.log,
    615                                    ads[0],
    616                                    ads[1],
    617                                    ad_hangup=None,
    618                                    verify_caller_func=is_phone_in_call_1x,
    619                                    verify_callee_func=None):
    620             return False
    621 
    622         if not self._sms_test_mt(ads):
    623             self.log.error("SMS test fail.")
    624             return False
    625 
    626         return True
    627 
    628     @TelephonyBaseTest.tel_test_wrap
    629     def test_sms_mo_in_call_csfb_1x(self):
    630         """ Test MO SMS during a MO csfb 1x call.
    631 
    632         Make Sure PhoneA is in LTE mode (no VoLTE).
    633         Make Sure PhoneB is able to make/receive call.
    634         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    635 
    636         Returns:
    637             True if pass; False if fail.
    638         """
    639         ads = self.android_devices
    640         # make sure PhoneA is CDMA phone before proceed.
    641         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
    642             self.log.error("Not CDMA phone, abort this csfb 1x SMS test.")
    643             return False
    644 
    645         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    646                  (phone_setup_voice_general, (self.log, ads[1]))]
    647         if not multithread_func(self.log, tasks):
    648             self.log.error("Phone Failed to Set Up Properly.")
    649             return False
    650 
    651         self.log.info("Begin In Call SMS Test.")
    652         if not call_setup_teardown(self.log,
    653                                    ads[0],
    654                                    ads[1],
    655                                    ad_hangup=None,
    656                                    verify_caller_func=is_phone_in_call_1x,
    657                                    verify_callee_func=None):
    658             return False
    659 
    660         if not self._sms_test_mo(ads):
    661             self.log.error("SMS test fail.")
    662             return False
    663 
    664         return True
    665 
    666     @TelephonyBaseTest.tel_test_wrap
    667     def test_sms_mt_in_call_csfb_1x(self):
    668         """ Test MT SMS during a MO csfb 1x call.
    669 
    670         Make Sure PhoneA is in LTE mode (no VoLTE).
    671         Make Sure PhoneB is able to make/receive call.
    672         Call from PhoneA to PhoneB, accept on PhoneB, receive SMS on PhoneA.
    673 
    674         Returns:
    675             True if pass; False if fail.
    676         """
    677         ads = self.android_devices
    678         # make sure PhoneA is CDMA phone before proceed.
    679         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_CDMA):
    680             self.log.error("Not CDMA phone, abort this csfb 1x SMS test.")
    681             return False
    682 
    683         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    684                  (phone_setup_voice_general, (self.log, ads[1]))]
    685         if not multithread_func(self.log, tasks):
    686             self.log.error("Phone Failed to Set Up Properly.")
    687             return False
    688 
    689         self.log.info("Begin In Call SMS Test.")
    690         if not call_setup_teardown(self.log,
    691                                    ads[0],
    692                                    ads[1],
    693                                    ad_hangup=None,
    694                                    verify_caller_func=is_phone_in_call_1x,
    695                                    verify_callee_func=None):
    696             return False
    697 
    698         if not self._sms_test_mt(ads):
    699             self.log.error("SMS test fail.")
    700             return False
    701 
    702         return True
    703 
    704     @TelephonyBaseTest.tel_test_wrap
    705     def test_sms_mo_iwlan(self):
    706         """ Test MO SMS, Phone in APM, WiFi connected, WFC WiFi Preferred mode.
    707 
    708         Make Sure PhoneA APM, WiFi connected, WFC WiFi preferred mode.
    709         Make sure PhoneA report iwlan as data rat.
    710         Make Sure PhoneB is able to make/receive call/sms.
    711         Send SMS on PhoneA.
    712 
    713         Returns:
    714             True if pass; False if fail.
    715         """
    716 
    717         ads = self.android_devices
    718 
    719         tasks = [(phone_setup_iwlan,
    720                   (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
    721                    self.wifi_network_ssid, self.wifi_network_pass)),
    722                  (phone_setup_voice_general, (self.log, ads[1]))]
    723         if not multithread_func(self.log, tasks):
    724             self.log.error("Phone Failed to Set Up Properly.")
    725             return False
    726 
    727         return self._sms_test_mo(ads)
    728 
    729     @TelephonyBaseTest.tel_test_wrap
    730     def test_sms_mt_iwlan(self):
    731         """ Test MT SMS, Phone in APM, WiFi connected, WFC WiFi Preferred mode.
    732 
    733         Make Sure PhoneA APM, WiFi connected, WFC WiFi preferred mode.
    734         Make sure PhoneA report iwlan as data rat.
    735         Make Sure PhoneB is able to make/receive call/sms.
    736         Receive SMS on PhoneA.
    737 
    738         Returns:
    739             True if pass; False if fail.
    740         """
    741 
    742         ads = self.android_devices
    743 
    744         tasks = [(phone_setup_iwlan,
    745                   (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
    746                    self.wifi_network_ssid, self.wifi_network_pass)),
    747                  (phone_setup_voice_general, (self.log, ads[1]))]
    748         if not multithread_func(self.log, tasks):
    749             self.log.error("Phone Failed to Set Up Properly.")
    750             return False
    751 
    752         return self._sms_test_mt(ads)
    753 
    754     @TelephonyBaseTest.tel_test_wrap
    755     def test_sms_mo_in_call_iwlan(self):
    756         """ Test MO SMS, Phone in APM, WiFi connected, WFC WiFi Preferred mode.
    757 
    758         Make Sure PhoneA APM, WiFi connected, WFC WiFi preferred mode.
    759         Make sure PhoneA report iwlan as data rat.
    760         Make Sure PhoneB is able to make/receive call/sms.
    761         Call from PhoneA to PhoneB, accept on PhoneB.
    762         Send SMS on PhoneA.
    763 
    764         Returns:
    765             True if pass; False if fail.
    766         """
    767 
    768         ads = self.android_devices
    769 
    770         tasks = [(phone_setup_iwlan,
    771                   (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
    772                    self.wifi_network_ssid, self.wifi_network_pass)),
    773                  (phone_setup_voice_general, (self.log, ads[1]))]
    774         if not multithread_func(self.log, tasks):
    775             self.log.error("Phone Failed to Set Up Properly.")
    776             return False
    777 
    778         self.log.info("Begin In Call SMS Test.")
    779         if not call_setup_teardown(self.log,
    780                                    ads[0],
    781                                    ads[1],
    782                                    ad_hangup=None,
    783                                    verify_caller_func=is_phone_in_call_iwlan,
    784                                    verify_callee_func=None):
    785             return False
    786 
    787         return self._sms_test_mo(ads)
    788 
    789     @TelephonyBaseTest.tel_test_wrap
    790     def test_sms_mt_in_call_iwlan(self):
    791         """ Test MT SMS, Phone in APM, WiFi connected, WFC WiFi Preferred mode.
    792 
    793         Make Sure PhoneA APM, WiFi connected, WFC WiFi preferred mode.
    794         Make sure PhoneA report iwlan as data rat.
    795         Make Sure PhoneB is able to make/receive call/sms.
    796         Call from PhoneA to PhoneB, accept on PhoneB.
    797         Receive SMS on PhoneA.
    798 
    799         Returns:
    800             True if pass; False if fail.
    801         """
    802 
    803         ads = self.android_devices
    804 
    805         tasks = [(phone_setup_iwlan,
    806                   (self.log, ads[0], True, WFC_MODE_WIFI_PREFERRED,
    807                    self.wifi_network_ssid, self.wifi_network_pass)),
    808                  (phone_setup_voice_general, (self.log, ads[1]))]
    809         if not multithread_func(self.log, tasks):
    810             self.log.error("Phone Failed to Set Up Properly.")
    811             return False
    812 
    813         self.log.info("Begin In Call SMS Test.")
    814         if not call_setup_teardown(self.log,
    815                                    ads[0],
    816                                    ads[1],
    817                                    ad_hangup=None,
    818                                    verify_caller_func=is_phone_in_call_iwlan,
    819                                    verify_callee_func=None):
    820             return False
    821 
    822         return self._sms_test_mt(ads)
    823 
    824     @TelephonyBaseTest.tel_test_wrap
    825     def test_sms_mo_in_call_vt(self):
    826         """ Test MO SMS, Phone in ongoing VT call.
    827 
    828         Make Sure PhoneA and PhoneB in LTE and can make VT call.
    829         Make Video Call from PhoneA to PhoneB, accept on PhoneB as Video Call.
    830         Send SMS on PhoneA.
    831 
    832         Returns:
    833             True if pass; False if fail.
    834         """
    835         ads = self.android_devices
    836 
    837         tasks = [(phone_setup_video, (self.log, ads[0])), (phone_setup_video,
    838                                                            (self.log, ads[1]))]
    839         if not multithread_func(self.log, tasks):
    840             self.log.error("Phone Failed to Set Up Properly.")
    841             return False
    842 
    843         if not video_call_setup_teardown(
    844                 self.log,
    845                 ads[0],
    846                 ads[1],
    847                 None,
    848                 video_state=VT_STATE_BIDIRECTIONAL,
    849                 verify_caller_func=is_phone_in_call_video_bidirectional,
    850                 verify_callee_func=is_phone_in_call_video_bidirectional):
    851             self.log.error("Failed to setup a call")
    852             return False
    853 
    854         return self._sms_test_mo(ads)
    855 
    856     @TelephonyBaseTest.tel_test_wrap
    857     def test_sms_mt_in_call_vt(self):
    858         """ Test MT SMS, Phone in ongoing VT call.
    859 
    860         Make Sure PhoneA and PhoneB in LTE and can make VT call.
    861         Make Video Call from PhoneA to PhoneB, accept on PhoneB as Video Call.
    862         Receive SMS on PhoneA.
    863 
    864         Returns:
    865             True if pass; False if fail.
    866         """
    867         ads = self.android_devices
    868 
    869         tasks = [(phone_setup_video, (self.log, ads[0])), (phone_setup_video,
    870                                                            (self.log, ads[1]))]
    871         if not multithread_func(self.log, tasks):
    872             self.log.error("Phone Failed to Set Up Properly.")
    873             return False
    874 
    875         if not video_call_setup_teardown(
    876                 self.log,
    877                 ads[0],
    878                 ads[1],
    879                 None,
    880                 video_state=VT_STATE_BIDIRECTIONAL,
    881                 verify_caller_func=is_phone_in_call_video_bidirectional,
    882                 verify_callee_func=is_phone_in_call_video_bidirectional):
    883             self.log.error("Failed to setup a call")
    884             return False
    885 
    886         return self._sms_test_mt(ads)
    887 
    888     @TelephonyBaseTest.tel_test_wrap
    889     def test_mms_mo_4g(self):
    890         """Test MMS text function between two phone. Phones in LTE network.
    891 
    892         Airplane mode is off.
    893         Send SMS from PhoneA to PhoneB.
    894         Verify received message on PhoneB is correct.
    895 
    896         Returns:
    897             True if success.
    898             False if failed.
    899         """
    900 
    901         self.log.error("Test Case is non-functional: b/21569494")
    902         return False
    903 
    904         ads = self.android_devices
    905 
    906         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    907                  (phone_setup_voice_general, (self.log, ads[1]))]
    908         if not multithread_func(self.log, tasks):
    909             self.log.error("Phone Failed to Set Up Properly.")
    910             return False
    911 
    912         return mms_send_receive_verify(
    913             self.log, ads[0], ads[1],
    914             [("Test Message", "Basic Message Body", None)])
    915 
    916     @TelephonyBaseTest.tel_test_wrap
    917     def test_mms_mt_4g(self):
    918         """Test MMS text function between two phone. Phones in LTE network.
    919 
    920         Airplane mode is off.
    921         Send SMS from PhoneB to PhoneA.
    922         Verify received message on PhoneA is correct.
    923 
    924         Returns:
    925             True if success.
    926             False if failed.
    927         """
    928 
    929         self.log.error("Test Case is non-functional: b/21569494")
    930         return False
    931 
    932         ads = self.android_devices
    933 
    934         tasks = [(phone_setup_csfb, (self.log, ads[0])),
    935                  (phone_setup_voice_general, (self.log, ads[1]))]
    936         if not multithread_func(self.log, tasks):
    937             self.log.error("Phone Failed to Set Up Properly.")
    938             return False
    939 
    940         return mms_send_receive_verify(
    941             self.log, ads[1], ads[0],
    942             [("Test Message", "Basic Message Body", None)])
    943 
    944     @TelephonyBaseTest.tel_test_wrap
    945     def test_sms_mo_in_call_gsm(self):
    946         """ Test MO SMS during a MO gsm call.
    947 
    948         Make Sure PhoneA is in gsm mode.
    949         Make Sure PhoneB is able to make/receive call.
    950         Call from PhoneA to PhoneB, accept on PhoneB, send SMS on PhoneA.
    951 
    952         Returns:
    953             True if pass; False if fail.
    954         """
    955         ads = self.android_devices
    956         # make sure PhoneA is GSM phone before proceed.
    957         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    958             self.log.error("Not GSM phone, abort this gsm SMS test.")
    959             return False
    960 
    961         tasks = [(phone_setup_voice_2g, (self.log, ads[0])),
    962                  (phone_setup_voice_general, (self.log, ads[1]))]
    963         if not multithread_func(self.log, tasks):
    964             self.log.error("Phone Failed to Set Up Properly.")
    965             return False
    966 
    967         self.log.info("Begin In Call SMS Test.")
    968         if not call_setup_teardown(self.log,
    969                                    ads[0],
    970                                    ads[1],
    971                                    ad_hangup=None,
    972                                    verify_caller_func=is_phone_in_call_2g,
    973                                    verify_callee_func=None):
    974             return False
    975 
    976         if not self._sms_test_mo(ads):
    977             self.log.error("SMS test fail.")
    978             return False
    979 
    980         return True
    981 
    982     @TelephonyBaseTest.tel_test_wrap
    983     def test_sms_mt_in_call_gsm(self):
    984         """ Test MT SMS during a MO gsm call.
    985 
    986         Make Sure PhoneA is in gsm mode.
    987         Make Sure PhoneB is able to make/receive call.
    988         Call from PhoneA to PhoneB, accept on PhoneB, receive SMS on PhoneA.
    989 
    990         Returns:
    991             True if pass; False if fail.
    992         """
    993         ads = self.android_devices
    994         # make sure PhoneA is GSM phone before proceed.
    995         if (ads[0].droid.telephonyGetPhoneType() != PHONE_TYPE_GSM):
    996             self.log.error("Not GSM phone, abort this gsm SMS test.")
    997             return False
    998 
    999         tasks = [(phone_setup_voice_2g, (self.log, ads[0])),
   1000                  (phone_setup_voice_general, (self.log, ads[1]))]
   1001         if not multithread_func(self.log, tasks):
   1002             self.log.error("Phone Failed to Set Up Properly.")
   1003             return False
   1004 
   1005         self.log.info("Begin In Call SMS Test.")
   1006         if not call_setup_teardown(self.log,
   1007                                    ads[0],
   1008                                    ads[1],
   1009                                    ad_hangup=None,
   1010                                    verify_caller_func=is_phone_in_call_2g,
   1011                                    verify_callee_func=None):
   1012             return False
   1013 
   1014         if not self._sms_test_mt(ads):
   1015             self.log.error("SMS test fail.")
   1016             return False
   1017 
   1018         return True
   1019 
   1020     """ Tests End """
   1021