blob: 891e6b17a58fd97efb07be77905954d0cbf8ebc8 [file] [log] [blame]
#!/usr/bin/env python3
#
# Copyright 2021 - Google
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import time
from acts.utils import rand_ascii_str
from acts_contrib.test_utils.tel.tel_message_utils import sms_send_receive_verify
from acts_contrib.test_utils.tel.tel_subscription_utils import get_outgoing_message_sub_id
from acts_contrib.test_utils.tel.tel_voice_utils import call_setup_teardown
from acts_contrib.test_utils.tel.tel_voice_utils import hangup_call
message_lengths = (50, 160, 180)
def _sms_test(log, ads):
"""Test SMS between two phones.
Returns:
True if success.
False if failed.
"""
for length in message_lengths:
message_array = [rand_ascii_str(length)]
if not sms_send_receive_verify(log, ads[0], ads[1],
message_array):
ads[0].log.error("SMS of length %s test failed", length)
return False
else:
ads[0].log.info("SMS of length %s test succeeded", length)
log.info("SMS test of length %s characters succeeded.",
message_lengths)
return True
def _long_sms_test(log, ads):
"""Test SMS between two phones.
Returns:
True if success.
False if failed.
"""
long_message_lengths = (800, 1600)
long_message_lengths_of_jp_carriers = (800, 1530)
sender_message_sub_id = get_outgoing_message_sub_id(ads[0])
sender_mcc = ads[0].telephony["subscription"][sender_message_sub_id]["mcc"]
if str(sender_mcc) in ["440", "441"]:
long_message_lengths = long_message_lengths_of_jp_carriers
for length in long_message_lengths:
message_array = [rand_ascii_str(length)]
if not sms_send_receive_verify(log, ads[0], ads[1],
message_array):
ads[0].log.warning("SMS of length %s test failed", length)
return False
else:
ads[0].log.info("SMS of length %s test succeeded", length)
time.sleep(30)
log.info("SMS test of length %s characters succeeded.",
message_lengths)
return True
def _sms_test_mo(log, ads):
return _sms_test(log, [ads[0], ads[1]])
def _sms_test_mt(log, ads):
return _sms_test(log, [ads[1], ads[0]])
def _long_sms_test_mo(log, ads):
return _long_sms_test(log, [ads[0], ads[1]])
def _long_sms_test_mt(log, ads):
return _long_sms_test(log, [ads[1], ads[0]])
def test_sms_mo_in_call(log, ads, caller_func=None, callee_func=None):
"""Test MO SMS in call.
log: log object
ads: list of android objects, this list should have two ad.
caller_func: function to verify caller is in correct state while in-call.
callee_func: function to verify callee is in correct state while in-call.
Returns:
True if pass; False if fail.
"""
log.info("Begin In Call SMS Test.")
if not call_setup_teardown(
log,
ads[0],
ads[1],
ad_hangup=None,
verify_caller_func=caller_func,
verify_callee_func=callee_func):
return False
sms_result = True
if not _sms_test_mo(log, ads):
log.error("SMS test fail.")
sms_result = False
if not hangup_call(log, ads[0]):
ads[0].log.info("Failed to hang up call!")
sms_result = False
return sms_result