Separate call setup/maintenance/teardown failure counting.
Test: run ACTS test
Bug: 70240959
Change-Id: Ib0ed9a35dc4d87c9bed2b7d585402497b9f475d0
diff --git a/acts/tests/google/tel/live/TelLiveStressTest.py b/acts/tests/google/tel/live/TelLiveStressTest.py
index 4f90ad8..5b8796f 100644
--- a/acts/tests/google/tel/live/TelLiveStressTest.py
+++ b/acts/tests/google/tel/live/TelLiveStressTest.py
@@ -34,6 +34,7 @@
from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA
from acts.test_utils.tel.tel_defines import WAIT_TIME_AFTER_MODE_CHANGE
from acts.test_utils.tel.tel_test_utils import active_file_download_test
+from acts.test_utils.tel.tel_test_utils import is_phone_in_call
from acts.test_utils.tel.tel_test_utils import call_setup_teardown
from acts.test_utils.tel.tel_test_utils import ensure_phone_default_state
from acts.test_utils.tel.tel_test_utils import ensure_phone_subscription
@@ -215,21 +216,36 @@
begin_time = get_current_epoch_time()
start_qxdm_loggers(self.log, self.android_devices)
if not call_setup_teardown(
- self.log,
- ads[0],
- ads[1],
- ad_hangup=ads[random.randrange(0, 2)],
- verify_caller_func=call_verification_func,
- verify_callee_func=call_verification_func,
- wait_time_in_call=random.randrange(
- self.min_phone_call_duration,
- self.max_phone_call_duration),
- extra_sleep=5):
- self.log.error("Call setup and teardown failed.")
- self.result_info["Call Failure"] += 1
- self._take_bug_report("%s_call_failure" % self.test_name,
+ self.log, ads[0], ads[1], ad_hangup=None, wait_time_in_call=0):
+ self.log.error("Setup Call failed.")
+ self.result_info["Call Setup Failure"] += 1
+ self._take_bug_report("%s_call_setup_failure" % self.test_name,
begin_time)
return False
+ duration = random.randrange(self.min_phone_call_duration,
+ self.max_phone_call_duration)
+ elapsed_time = 0
+ check_interval = 5
+ while (elapsed_time < duration):
+ check_interval = min(check_interval, duration - elapsed_time)
+ time.sleep(check_interval)
+ elapsed_time += check_interval
+ time_message = "at <%s>/<%s> second." % (elapsed_time, duration)
+ for ad in ads:
+ if not call_verification_func(self.log, ad):
+ ad.log.error("Call is NOT in correct %s state at %s",
+ call_verification_func.__name__, time_message)
+ self.result_info["Call Maintenance Failure"] += 1
+ self._take_bug_report(
+ "%s_call_maintenance_failure" % self.test_name,
+ begin_time)
+ return False
+ if not hangup_call(self.log, ads[0]) or time.sleep(
+ 1) or ads[1].droid.telecomIsInCall():
+ ads[0].log.error("Fail to hung up call")
+ self.result_info["Call Teardown Failure"] += 1
+ self._take_bug_report("%s_call_teardown_failure" % self.test_name,
+ begin_time)
self.log.info("Call setup and teardown succeed.")
return True
@@ -290,6 +306,8 @@
return True
def call_test(self, call_verification_func=None):
+ if not call_verification_func:
+ call_verification_func = is_phone_in_call
while time.time() < self.finishing_time:
try:
ads = [self.dut, self.helper]
@@ -309,7 +327,11 @@
self.finishing_time = time.time()
raise
self.log.info("%s", dict(self.result_info))
- if self.result_info["Call Failure"]:
+ if any([
+ self.result_info["Call Setup Failure"],
+ self.result_info["Call Maintenance Failure"],
+ self.result_info["Call Teardown Failure"]
+ ]):
return False
else:
return True
@@ -425,8 +447,9 @@
[call_verification_func]), (self.message_test, []),
(self.data_test, []), (self.crash_check_test, [])])
result_message = "Total Calls: %s" % self.result_info["Total Calls"]
- for count in ("Call Failure", "Total SMS", "SMS failure", "Total MMS",
- "MMS failure", "Total file download",
+ for count in ("Call Setup Failure", "Call Maintenance Failure",
+ "Call Teardown Failure", "Total SMS", "SMS failure",
+ "Total MMS", "MMS failure", "Total file download",
"File download failure"):
result_message = "%s, %s: %s" % (result_message, count,
self.result_info[count])
@@ -446,7 +469,8 @@
[(self.volte_modechange_volte_test, []),
(self.crash_check_test, [])])
result_message = "Total Calls: %s" % self.result_info["Total Calls"]
- for count in ("Call Failure", "RAT change failure"):
+ for count in ("Call Setup Failure", "Call Maintenance Failure",
+ "Call Teardown Failure", "RAT change failure"):
result_message = "%s, %s: %s" % (result_message, count,
self.result_info[count])
if all(results):