Remove duplicate code in Nsa5gVoiceTest.
1. Move _test_call_setup_in_active_data_transfer,
_test_call_setup_in_active_youtube_video,
_call_epdg_to_epdg_wfc from TelLiveVoiceTest to tel_data_utils
2. Remove _test_call_setup_in_active_data_transfer_5g_nsa,
_test_call_setup_in_active_youtube_video_5g_nsa,
_test_call_epdg_to_epdg_wfc_5g_nsa from Nsa5gVoiceTest
3. Update Nsa5gVoiceTest, TelLiveVoiceTest accordingly.
Test: yes, Chunghwa telecom
Bug: 179409496
Change-Id: I3e08f212bcd964403abf7c28b5eed0275b777d85
diff --git a/acts_tests/tests/google/nr/nsa5g/Nsa5gVoiceTest.py b/acts_tests/tests/google/nr/nsa5g/Nsa5gVoiceTest.py
index bbe950e..a1e7a64 100755
--- a/acts_tests/tests/google/nr/nsa5g/Nsa5gVoiceTest.py
+++ b/acts_tests/tests/google/nr/nsa5g/Nsa5gVoiceTest.py
@@ -23,9 +23,6 @@
from acts.utils import adb_shell_ping
from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL_FOR_IMS
-from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_IN_CALL
-from acts_contrib.test_utils.tel.tel_defines import CALL_STATE_ACTIVE
-from acts_contrib.test_utils.tel.tel_defines import CALL_STATE_HOLDING
from acts_contrib.test_utils.tel.tel_defines import DIRECTION_MOBILE_ORIGINATED
from acts_contrib.test_utils.tel.tel_defines import DIRECTION_MOBILE_TERMINATED
from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
@@ -35,24 +32,13 @@
from acts_contrib.test_utils.tel.tel_test_utils import call_setup_teardown
from acts_contrib.test_utils.tel.tel_test_utils import hangup_call
from acts_contrib.test_utils.tel.tel_test_utils import multithread_func
-from acts_contrib.test_utils.tel.tel_test_utils import num_active_calls
-from acts_contrib.test_utils.tel.tel_test_utils import verify_incall_state
-from acts_contrib.test_utils.tel.tel_test_utils import verify_internet_connection
-from acts_contrib.test_utils.tel.tel_test_utils import start_youtube_video
-from acts_contrib.test_utils.tel.tel_test_utils import wait_for_cell_data_connection
-from acts_contrib.test_utils.tel.tel_test_utils import active_file_download_task
-from acts_contrib.test_utils.tel.tel_test_utils import run_multithread_func
-from acts_contrib.test_utils.tel.tel_test_utils import wait_for_state
from acts_contrib.test_utils.tel.tel_test_utils import is_phone_in_call_active
-from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode
from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_volte
-from acts_contrib.test_utils.tel.tel_voice_utils import hold_unhold_test
from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_call_hold_unhold_test
from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_volte
from acts_contrib.test_utils.tel.tel_voice_utils import two_phone_call_short_seq
from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_voice_3g
from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_3g
-from acts_contrib.test_utils.tel.tel_voice_utils import phone_idle_iwlan
from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan
from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_iwlan
from acts_contrib.test_utils.tel.tel_5g_utils import set_preferred_mode_for_5g
@@ -61,6 +47,9 @@
from acts_contrib.test_utils.tel.tel_5g_utils import verify_5g_attach_for_both_devices
from acts_contrib.test_utils.tel.tel_5g_utils import is_current_network_5g_nsa
from acts_contrib.test_utils.tel.tel_data_utils import wifi_cell_switching
+from acts_contrib.test_utils.tel.tel_data_utils import test_call_setup_in_active_data_transfer
+from acts_contrib.test_utils.tel.tel_data_utils import test_call_setup_in_active_youtube_video
+from acts_contrib.test_utils.tel.tel_data_utils import call_epdg_to_epdg_wfc
class Nsa5gVoiceTest(TelephonyBaseTest):
@@ -75,244 +64,6 @@
def teardown_test(self):
ensure_phones_idle(self.log, self.android_devices)
-
- def _test_call_setup_in_active_data_transfer_5g_nsa(
- self,
- new_gen=None,
- call_direction=DIRECTION_MOBILE_ORIGINATED,
- allow_data_transfer_interruption=False):
- """Test call can be established during active data connection in 5G NSA.
-
- Turn off airplane mode, disable WiFi, enable Cellular Data.
- Make sure phone in 5G NSA.
- Starting downloading file from Internet.
- Initiate a voice call. Verify call can be established.
- Hangup Voice Call, verify file is downloaded successfully.
- Note: file download will be suspended when call is initiated if voice
- is using voice channel and voice channel and data channel are
- on different RATs.
-
- Returns:
- True if success.
- False if failed.
- """
- ads = self.android_devices
-
- def _call_setup_teardown(log, ad_caller, ad_callee, ad_hangup,
- caller_verifier, callee_verifier,
- wait_time_in_call):
- #wait time for active data transfer
- time.sleep(5)
- return call_setup_teardown(log, ad_caller, ad_callee, ad_hangup,
- caller_verifier, callee_verifier,
- wait_time_in_call)
-
- # Mode Pref
- set_preferred_mode_for_5g(ads[0])
-
- # Attach nsa5g
- if not is_current_network_5g_nsa(ads[0]):
- ads[0].log.error("Phone not attached on 5G NSA before call.")
- return False
-
- if new_gen:
- ads[0].droid.telephonyToggleDataConnection(True)
- if not wait_for_cell_data_connection(self.log, ads[0], True):
- ads[0].log.error("Data connection is not on cell")
- return False
-
- if not verify_internet_connection(self.log, ads[0]):
- ads[0].log.error("Internet connection is not available")
- return False
-
- if call_direction == DIRECTION_MOBILE_ORIGINATED:
- ad_caller = ads[0]
- ad_callee = ads[1]
- else:
- ad_caller = ads[1]
- ad_callee = ads[0]
- ad_download = ads[0]
-
- start_youtube_video(ad_download)
- call_task = (_call_setup_teardown, (self.log, ad_caller, ad_callee,
- ad_caller, None, None, 30))
- download_task = active_file_download_task(self.log, ad_download, file_name="10MB")
- results = run_multithread_func(self.log, [download_task, call_task])
- if wait_for_state(ad_download.droid.audioIsMusicActive, True, 15, 1):
- ad_download.log.info("After call hangup, audio is back to music")
- else:
- ad_download.log.warning(
- "After call hang up, audio is not back to music")
- ad_download.force_stop_apk("com.google.android.youtube")
- if not results[1]:
- self.log.error("Call setup failed in active data transfer.")
- return False
- if results[0]:
- ad_download.log.info("Data transfer succeeded.")
- elif not allow_data_transfer_interruption:
- ad_download.log.error(
- "Data transfer failed with parallel phone call.")
- return False
- else:
- ad_download.log.info("Retry data connection after call hung up")
- if not verify_internet_connection(self.log, ad_download):
- ad_download.log.error("Internet connection is not available")
- return False
- if not is_current_network_5g_nsa(ads[0]):
- ads[0].log.error("Phone not attached on 5G NSA after call.")
- return False
- return True
-
- def _test_call_setup_in_active_youtube_video_5g_nsa(
- self,
- new_gen=None,
- call_direction=DIRECTION_MOBILE_ORIGINATED,
- allow_data_transfer_interruption=False):
- """Test call can be established during active data connection on 5G NSA.
-
- Setup phoneA on 5G NSA.
- Make sure phoneA on 5G NSA
- Starting playing youtube video.
- Initiate a voice call. Verify call can be established.
- Make sure phoneA on 5G NSA
-
- Returns:
- True if success.
- False if failed.
- """
- ads = self.android_devices
- # Mode Pref
- set_preferred_mode_for_5g(ads[0])
-
- # Attach 5g
- if not is_current_network_5g_nsa(ads[0]):
- ads[0].log.error("Phone not attached on 5G NSA before call.")
- return False
-
- if new_gen:
- ads[0].droid.telephonyToggleDataConnection(True)
- if not wait_for_cell_data_connection(self.log, ads[0], True):
- ads[0].log.error("Data connection is not on cell")
- return False
-
- if not verify_internet_connection(self.log, ads[0]):
- ads[0].log.error("Internet connection is not available")
- return False
-
- if call_direction == DIRECTION_MOBILE_ORIGINATED:
- ad_caller = ads[0]
- ad_callee = ads[1]
- else:
- ad_caller = ads[1]
- ad_callee = ads[0]
- ad_download = ads[0]
-
- if not start_youtube_video(ad_download):
- ad_download.log.warning("Fail to bring up youtube video")
-
- if not call_setup_teardown(self.log, ad_caller, ad_callee, ad_caller,
- None, None, 30):
- ad_download.log.error("Call setup failed in active youtube video")
- result = False
- else:
- ad_download.log.info("Call setup succeed in active youtube video")
- result = True
-
- if wait_for_state(ad_download.droid.audioIsMusicActive, True, 15, 1):
- ad_download.log.info("After call hangup, audio is back to music")
- else:
- ad_download.log.warning(
- "After call hang up, audio is not back to music")
- ad_download.force_stop_apk("com.google.android.youtube")
- if not is_current_network_5g_nsa(ads[0]):
- ads[0].log.error("Phone not attached on 5G NSA after call.")
- result = False
- return result
-
- def _test_call_epdg_to_epdg_wfc_5g_nsa(self,
- ads,
- apm_mode,
- wfc_mode,
- wifi_ssid,
- wifi_pwd):
- """ Test epdg<->epdg call functionality on 5G NSA.
-
- Set PhoneA/PhoneB on 5G NSA
- Make sure PhoneA/PhoneB on 5G NSA before testing
- Make Sure PhoneA is set to make epdg call.
- Make Sure PhoneB is set to make epdg call.
- Call from PhoneA to PhoneB, accept on PhoneB, hang up on PhoneA.
- Call from PhoneA to PhoneB, accept on PhoneB, hang up on PhoneB.
- Make sure PhoneA/PhoneB on 5G NSA after testing
-
- Args:
- ads: list of android objects, this list should have two ad.
- apm_mode: phones' airplane mode.
- if True, phones are in airplane mode during test.
- if False, phones are not in airplane mode during test.
- wfc_mode: phones' wfc mode.
- Valid mode includes: WFC_MODE_WIFI_ONLY, WFC_MODE_CELLULAR_PREFERRED,
- WFC_MODE_WIFI_PREFERRED, WFC_MODE_DISABLED.
- wifi_ssid: WiFi ssid to connect during test.
- wifi_pwd: WiFi password.
-
- Returns:
- True if pass; False if fail.
- """
- DEFAULT_PING_DURATION = 120 # in seconds
-
- # if apm_mode is true, turn off apm first before setting network
- # preferred mode to 5G NSA.
- if apm_mode:
- # Turn off airplane mode
- self.log.info("Turn off APM mode before starting testing.")
- tasks = [(toggle_airplane_mode, (self.log, ads[0], False)),
- (toggle_airplane_mode, (self.log, ads[1], False))]
- if not multithread_func(self.log, tasks):
- self.log.error("Failed to turn off airplane mode")
- return False
-
- if not provision_both_devices_for_5g(self.log, ads):
- return False
-
- if not verify_5g_attach_for_both_devices(self.log, ads):
- self.log.error("Phone not attached on 5G NSA before epdg call.")
- return False
-
- tasks = [(phone_setup_iwlan, (self.log, ads[0], apm_mode, wfc_mode,
- wifi_ssid, wifi_pwd)),
- (phone_setup_iwlan, (self.log, ads[1], apm_mode, wfc_mode,
- wifi_ssid, wifi_pwd))]
- if not multithread_func(self.log, tasks):
- self.log.error("Phone Failed to Set Up Properly.")
- return False
-
- time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
-
- ad_ping = ads[0]
-
- call_task = (two_phone_call_short_seq,
- (self.log, ads[0], phone_idle_iwlan,
- is_phone_in_call_iwlan, ads[1], phone_idle_iwlan,
- is_phone_in_call_iwlan, None, WAIT_TIME_IN_CALL_FOR_IMS))
- ping_task = (adb_shell_ping, (ad_ping, DEFAULT_PING_DURATION))
-
- results = run_multithread_func(self.log, [ping_task, call_task])
-
- time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
-
- if not verify_5g_attach_for_both_devices(self.log, ads):
- self.log.error("Phone not attached on 5G NSA after epdg call.")
- return False
-
- if not results[1]:
- self.log.error("Call setup failed in active ICMP transfer.")
- if results[0]:
- self.log.info("ICMP transfer succeeded with parallel phone call.")
- else:
- self.log.error("ICMP transfer failed with parallel phone call.")
- return all(results)
-
""" Tests Begin """
@test_tracker_info(uuid="1bef3da1-4608-4b0e-8b78-f3f7be0115d5")
@@ -487,9 +238,10 @@
if not phone_setup_volte(self.log, ads[0]):
ads[0].log.error("failed to setup volte")
return False
- return self._test_call_setup_in_active_data_transfer_5g_nsa(
- GEN_5G,
- DIRECTION_MOBILE_ORIGINATED)
+ return test_call_setup_in_active_data_transfer(self.log,
+ ads,
+ GEN_5G,
+ DIRECTION_MOBILE_ORIGINATED)
@test_tracker_info(uuid="aaa98e51-0bde-472a-abc3-5dc180f56a08")
@@ -514,9 +266,10 @@
if not phone_setup_volte(self.log, ads[0]):
ads[0].log.error("failed to setup volte")
return False
- return self._test_call_setup_in_active_data_transfer_5g_nsa(
- GEN_5G,
- DIRECTION_MOBILE_TERMINATED)
+ return test_call_setup_in_active_data_transfer(self.log,
+ ads,
+ GEN_5G,
+ DIRECTION_MOBILE_TERMINATED)
@test_tracker_info(uuid="3a607dee-7e92-4567-8ca0-05099590b773")
@@ -596,9 +349,13 @@
Returns:
True if pass; False if fail.
"""
- return self._test_call_epdg_to_epdg_wfc_5g_nsa(
- self.android_devices, False, WFC_MODE_WIFI_PREFERRED,
- self.wifi_network_ssid, self.wifi_network_pass)
+ return call_epdg_to_epdg_wfc(self.log,
+ self.android_devices,
+ False,
+ WFC_MODE_WIFI_PREFERRED,
+ self.wifi_network_ssid,
+ self.wifi_network_pass,
+ GEN_5G)
@test_tracker_info(uuid="29fa7f44-8d6a-4948-8178-33c9a9aab334")
@@ -620,9 +377,10 @@
if not phone_setup_volte(self.log, self.android_devices[0]):
self.android_devices[0].log.error("Failed to setup VoLTE")
return False
- return self._test_call_setup_in_active_youtube_video_5g_nsa(
- GEN_5G,
- DIRECTION_MOBILE_ORIGINATED)
+ return test_call_setup_in_active_youtube_video(self.log,
+ self.android_devices,
+ GEN_5G,
+ DIRECTION_MOBILE_ORIGINATED)
@test_tracker_info(uuid="4e138477-3536-48bd-ab8a-7fb7c228b3e6")
@TelephonyBaseTest.tel_test_wrap
@@ -643,9 +401,10 @@
if not phone_setup_volte(self.log, self.android_devices[0]):
self.android_devices[0].log.error("Failed to setup VoLTE")
return False
- return self._test_call_setup_in_active_youtube_video_5g_nsa(
- GEN_5G,
- DIRECTION_MOBILE_TERMINATED)
+ return test_call_setup_in_active_youtube_video(self.log,
+ self.android_devices,
+ GEN_5G,
+ DIRECTION_MOBILE_TERMINATED)
@test_tracker_info(uuid="0d477f6f-3464-4b32-a5e5-0fd134f2753d")