blob: d9d85a74b2270f37dc0e301e0e86575f02eb3d1a [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 mms_send_receive_verify
from acts_contrib.test_utils.tel.tel_message_utils import mms_receive_verify_after_call_hangup
from acts_contrib.test_utils.tel.tel_voice_utils import call_setup_teardown
from acts_contrib.test_utils.tel.tel_test_utils import get_operator_name
message_lengths = (50, 160, 180)
long_message_lengths = (800, 1600)
def _mms_test_mo(log, ads, expected_result=True):
return _mms_test(log,
[ads[0], ads[1]], expected_result=expected_result)
def _mms_test_mt(log, ads, expected_result=True):
return _mms_test(log,
[ads[1], ads[0]], expected_result=expected_result)
def _mms_test(log, ads, expected_result=True):
"""Test MMS between two phones.
Returns:
True if success.
False if failed.
"""
for length in message_lengths:
message_array = [("Test Message", rand_ascii_str(length), None)]
if not mms_send_receive_verify(
log,
ads[0],
ads[1],
message_array,
expected_result=expected_result):
log.warning("MMS of body length %s test failed", length)
return False
else:
log.info("MMS of body length %s test succeeded", length)
log.info("MMS test of body lengths %s succeeded",
message_lengths)
return True
def _long_mms_test_mo(log, ads):
return _long_mms_test(log, [ads[0], ads[1]])
def _long_mms_test_mt(log, ads):
return _long_mms_test(log, [ads[1], ads[0]])
def _long_mms_test(log, ads):
"""Test MMS between two phones.
Returns:
True if success.
False if failed.
"""
for length in long_message_lengths:
message_array = [("Test Message", rand_ascii_str(length), None)]
if not mms_send_receive_verify(log, ads[0], ads[1],
message_array):
log.warning("MMS of body length %s test failed", length)
return False
else:
log.info("MMS of body length %s test succeeded", length)
time.sleep(30)
log.info("MMS test of body lengths %s succeeded",
message_lengths)
return True
def _mms_test_after_call_hangup(log, ads):
"""Test MMS send out after call hang up.
Returns:
True if success.
False if failed.
"""
args = [
log, ads[0], ads[1], [("Test Message", "Basic Message Body",
None)]
]
if get_operator_name(log, ads[0]) in ["spt", "Sprint"]:
args.append(30)
if not mms_send_receive_verify(*args):
log.info("MMS send in call is suspended.")
if not mms_receive_verify_after_call_hangup(*args):
log.error(
"MMS is not send and received after call release.")
return False
else:
log.info("MMS is send and received after call release.")
return True
else:
log.info("MMS is send and received successfully in call.")
return True
def _mms_test_mo_after_call_hangup(log, ads):
return _mms_test_after_call_hangup(log, [ads[0], ads[1]])
def _mms_test_mt_after_call_hangup(log, ads):
return _mms_test_after_call_hangup(log, [ads[1], ads[0]])
def test_mms_mo_in_call(log, ads, wifi=False, caller_func=None, callee_func=None):
"""Test MO MMS in call.
log: log object
ads: list of android objects, this list should have two ad.
wifi: If true, sending sms over wifi.
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 MMS 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
if ads[0].sms_over_wifi and wifi:
return _mms_test_mo(log, ads)
else:
return _mms_test_mo_after_call_hangup(log, ads)