Merge "Fix TypeError on provision_device_for_5g_nsa()."
diff --git a/acts_tests/acts_contrib/test_utils/tel/tel_dsds_utils.py b/acts_tests/acts_contrib/test_utils/tel/tel_dsds_utils.py
index 0a93e8f..6b15886 100644
--- a/acts_tests/acts_contrib/test_utils/tel/tel_dsds_utils.py
+++ b/acts_tests/acts_contrib/test_utils/tel/tel_dsds_utils.py
@@ -14,14 +14,18 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+from datetime import datetime, timedelta
import re
import time
-from datetime import datetime, timedelta
+from typing import Optional, Sequence
from acts import signals
+from acts import tracelogger
+from acts.controllers.android_device import AndroidDevice
from acts.utils import rand_ascii_str
from acts.libs.utils.multithread import multithread_func
from acts_contrib.test_utils.tel.loggers.protos.telephony_metric_pb2 import TelephonyVoiceTestResult
+from acts_contrib.test_utils.tel.loggers.telephony_metric_logger import TelephonyMetricLogger
from acts_contrib.test_utils.tel.tel_defines import INVALID_SUB_ID
from acts_contrib.test_utils.tel.tel_defines import MAX_WAIT_TIME_SMS_RECEIVE
from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
@@ -76,6 +80,237 @@
CallResult = TelephonyVoiceTestResult.CallResult.Value
+def dsds_long_call_streaming_test(
+ log: tracelogger.TraceLogger,
+ tel_logger: TelephonyMetricLogger.for_test_case,
+ ads: Sequence[AndroidDevice],
+ test_rat: list,
+ test_slot: int,
+ dds_slot: int,
+ direction: str = "mo",
+ duration: int = 360,
+ streaming: bool = True,
+ is_airplane_mode = False,
+ wfc_mode: list[str, str] = [
+ WFC_MODE_CELLULAR_PREFERRED,
+ WFC_MODE_CELLULAR_PREFERRED],
+ wifi_network_ssid: Optional[str] = None,
+ wifi_network_pass: Optional[str] = None,
+ turn_off_wifi_in_the_end: bool = False,
+ turn_off_airplane_mode_in_the_end: bool = False) -> bool:
+ """Make MO/MT call at specific slot in specific RAT with DDS at specific
+ slot for the given time.
+
+ Args:
+ log: Logger object.
+ tel_logger: Logger object for telephony proto.
+ ads: A list of Android device objects.
+ test_rat: RAT for both slots of primary device.
+ test_slot: The slot which make/receive MO/MT call of primary device.
+ dds_slot: Preferred data slot of primary device.
+ direction: The direction of call("mo" or "mt").
+ streaming: True for playing Youtube and False on the contrary.
+ is_airplane_mode: True or False for WFC setup
+ wfc_mode: Cellular preferred or Wi-Fi preferred.
+ wifi_network_ssid: SSID of Wi-Fi AP.
+ wifi_network_pass: Password of Wi-Fi AP SSID.
+ turn_off_wifi_in_the_end: True to turn off Wi-Fi and False not to turn
+ off Wi-Fi in the end of the function.
+ turn_off_airplane_mode_in_the_end: True to turn off airplane mode and
+ False not to turn off airplane mode in the end of the function.
+
+ Returns:
+ TestFailure if failed.
+ """
+ log.info("Step 1: Switch DDS.")
+ if not set_dds_on_slot(ads[0], dds_slot):
+ ads[0].log.error(
+ "Failed to set DDS at slot %s on %s",(dds_slot, ads[0].serial))
+ return False
+
+ log.info("Step 2: Check HTTP connection after DDS switch.")
+ if not verify_http_connection(log, ads[0]):
+ ads[0].log.error("Failed to verify http connection.")
+ return False
+ else:
+ ads[0].log.info("Verify http connection successfully.")
+
+ log.info("Step 3: Set up phones in desired RAT.")
+ if direction == "mo":
+ # setup voice subid on primary device.
+ ad_mo = ads[0]
+ mo_sub_id = get_subid_from_slot_index(log, ad_mo, test_slot)
+ if mo_sub_id == INVALID_SUB_ID:
+ ad_mo.log.warning("Failed to get sub ID at slot %s.", test_slot)
+ return False
+ mo_other_sub_id = get_subid_from_slot_index(
+ log, ad_mo, 1-test_slot)
+ sub_id_list = [mo_sub_id, mo_other_sub_id]
+ set_voice_sub_id(ad_mo, mo_sub_id)
+ ad_mo.log.info("Sub ID for outgoing call at slot %s: %s", test_slot,
+ get_outgoing_voice_sub_id(ad_mo))
+
+ # setup voice subid on secondary device.
+ ad_mt = ads[1]
+ _, mt_sub_id, _ = get_subid_on_same_network_of_host_ad(ads)
+ if mt_sub_id == INVALID_SUB_ID:
+ ad_mt.log.warning("Failed to get sub ID at default voice slot.")
+ return False
+ mt_slot = get_slot_index_from_subid(ad_mt, mt_sub_id)
+ set_voice_sub_id(ad_mt, mt_sub_id)
+ ad_mt.log.info("Sub ID for incoming call at slot %s: %s", mt_slot,
+ get_outgoing_voice_sub_id(ad_mt))
+
+ # setup the rat on non-test slot(primary device).
+ phone_setup_on_rat(
+ log,
+ ad_mo,
+ test_rat[1-test_slot],
+ mo_other_sub_id,
+ is_airplane_mode,
+ wfc_mode[1-test_slot],
+ wifi_network_ssid,
+ wifi_network_pass)
+ # assign phone setup argv for test slot.
+ mo_phone_setup_func_argv = (
+ log,
+ ad_mo,
+ test_rat[test_slot],
+ mo_sub_id,
+ is_airplane_mode,
+ wfc_mode[test_slot],
+ wifi_network_ssid,
+ wifi_network_pass)
+ verify_caller_func = is_phone_in_call_on_rat(
+ log, ad_mo, test_rat[test_slot], only_return_fn=True)
+ mt_phone_setup_func_argv = (log, ad_mt, 'general')
+ verify_callee_func = is_phone_in_call_on_rat(
+ log, ad_mt, 'general', only_return_fn=True)
+ else:
+ # setup voice subid on primary device.
+ ad_mt = ads[0]
+ mt_sub_id = get_subid_from_slot_index(log, ad_mt, test_slot)
+ if mt_sub_id == INVALID_SUB_ID:
+ ad_mt.log.warning("Failed to get sub ID at slot %s.", test_slot)
+ return False
+ mt_other_sub_id = get_subid_from_slot_index(
+ log, ad_mt, 1-test_slot)
+ sub_id_list = [mt_sub_id, mt_other_sub_id]
+ set_voice_sub_id(ad_mt, mt_sub_id)
+ ad_mt.log.info("Sub ID for incoming call at slot %s: %s", test_slot,
+ get_outgoing_voice_sub_id(ad_mt))
+
+ # setup voice subid on secondary device.
+ ad_mo = ads[1]
+ _, mo_sub_id, _ = get_subid_on_same_network_of_host_ad(ads)
+ if mo_sub_id == INVALID_SUB_ID:
+ ad_mo.log.warning("Failed to get sub ID at default voice slot.")
+ return False
+ mo_slot = get_slot_index_from_subid(ad_mo, mo_sub_id)
+ set_voice_sub_id(ad_mo, mo_sub_id)
+ ad_mo.log.info("Sub ID for outgoing call at slot %s: %s", mo_slot,
+ get_outgoing_voice_sub_id(ad_mo))
+
+ # setup the rat on non-test slot(primary device).
+ phone_setup_on_rat(
+ log,
+ ad_mt,
+ test_rat[1-test_slot],
+ mt_other_sub_id,
+ is_airplane_mode,
+ wfc_mode[1-test_slot],
+ wifi_network_ssid,
+ wifi_network_pass)
+ # assign phone setup argv for test slot.
+ mt_phone_setup_func_argv = (
+ log,
+ ad_mt,
+ test_rat[test_slot],
+ mt_sub_id,
+ is_airplane_mode,
+ wfc_mode[test_slot],
+ wifi_network_ssid,
+ wifi_network_pass)
+ verify_callee_func = is_phone_in_call_on_rat(
+ log, ad_mt, test_rat[test_slot], only_return_fn=True)
+ mo_phone_setup_func_argv = (log, ad_mo, 'general')
+ verify_caller_func = is_phone_in_call_on_rat(
+ log, ad_mo, 'general', only_return_fn=True)
+
+ tasks = [(phone_setup_on_rat, mo_phone_setup_func_argv),
+ (phone_setup_on_rat, mt_phone_setup_func_argv)]
+ if not multithread_func(log, tasks):
+ log.error("Phone Failed to Set Up Properly.")
+ tel_logger.set_result(CallResult("CALL_SETUP_FAILURE"))
+ raise signals.TestFailure("Failed",
+ extras={"fail_reason": "Phone Failed to Set Up Properly."})
+ if streaming:
+ log.info("Step 4-0: Start Youtube streaming.")
+ if not start_youtube_video(ads[0]):
+ raise signals.TestFailure("Failed",
+ extras={"fail_reason": "Fail to bring up youtube video."})
+ time.sleep(10)
+
+ log.info("Step 4: Make voice call.")
+ result = call_setup_teardown(log,
+ ad_mo,
+ ad_mt,
+ ad_hangup=ad_mo,
+ verify_caller_func=verify_caller_func,
+ verify_callee_func=verify_callee_func,
+ wait_time_in_call=duration)
+ tel_logger.set_result(result.result_value)
+
+ if not result:
+ log.error(
+ "Failed to make %s call from %s slot %s to %s slot %s",
+ direction, ad_mo.serial, mo_slot, ad_mt.serial, mt_slot)
+ raise signals.TestFailure("Failed",
+ extras={"fail_reason": str(result.result_value)})
+
+ log.info("Step 5: Verify RAT and HTTP connection.")
+ # For the tese cases related to WFC in which airplane mode will be turned
+ # off in the end.
+ if turn_off_airplane_mode_in_the_end:
+ log.info("Step 5-1: Turning off airplane mode......")
+ if not toggle_airplane_mode(log, ads[0], False):
+ ads[0].log.error('Failed to toggle off airplane mode.')
+
+ # For the tese cases related to WFC in which Wi-Fi will be turned off in the
+ # end.
+
+ rat_list = [test_rat[test_slot], test_rat[1-test_slot]]
+
+ if turn_off_wifi_in_the_end:
+ log.info("Step 5-2: Turning off Wi-Fi......")
+ if not wifi_toggle_state(log, ads[0], False):
+ ads[0].log.error('Failed to toggle off Wi-Fi.')
+ return False
+
+ for index, value in enumerate(rat_list):
+ if value == '5g_wfc':
+ rat_list[index] = '5g'
+ elif value == 'wfc':
+ rat_list[index] = '4g'
+
+ for rat, sub_id in zip(rat_list, sub_id_list):
+ if not wait_for_network_idle(log, ads[0], rat, sub_id):
+ raise signals.TestFailure(
+ "Failed",
+ extras={
+ "fail_reason": "Idle state of sub ID %s does not match the "
+ "given RAT %s." % (sub_id, rat)})
+
+ if not verify_http_connection(log, ads[0]):
+ ads[0].log.error("Failed to verify http connection.")
+ return False
+ else:
+ ads[0].log.info("Verify http connection successfully.")
+
+ if streaming:
+ ads[0].force_stop_apk(YOUTUBE_PACKAGE_NAME)
+
+
def dsds_voice_call_test(
log,
tel_logger,
diff --git a/acts_tests/acts_contrib/test_utils/tel/tel_voice_utils.py b/acts_tests/acts_contrib/test_utils/tel/tel_voice_utils.py
index ac6f1f9..62e3d1e 100644
--- a/acts_tests/acts_contrib/test_utils/tel/tel_voice_utils.py
+++ b/acts_tests/acts_contrib/test_utils/tel/tel_voice_utils.py
@@ -857,131 +857,91 @@
setattr(ad, "call_ids", call_ids)
if call_ids:
ad.log.info("Pre-exist CallId %s before making call", call_ids)
- try:
- if not initiate_call(
- log,
- ad_caller,
- callee_number,
- incall_ui_display=incall_ui_display,
- video=video):
- ad_caller.log.error("Initiate call failed.")
- tel_result_wrapper.result_value = CallResult('INITIATE_FAILED')
- return tel_result_wrapper
- else:
- ad_caller.log.info("Caller initate call successfully")
- if not wait_and_answer_call_for_subscription(
- log,
- ad_callee,
- subid_callee,
- incoming_number=caller_number,
- caller=ad_caller,
- incall_ui_display=incall_ui_display,
- video_state=video_state):
- ad_callee.log.error("Answer call fail.")
- tel_result_wrapper.result_value = CallResult(
- 'NO_RING_EVENT_OR_ANSWER_FAILED')
- return tel_result_wrapper
- else:
- ad_callee.log.info("Callee answered the call successfully")
- for ad, call_func in zip([ad_caller, ad_callee],
- [verify_caller_func, verify_callee_func]):
- call_ids = ad.droid.telecomCallGetCallIds()
- new_call_ids = set(call_ids) - set(ad.call_ids)
- if not new_call_ids:
- ad.log.error(
- "No new call ids are found after call establishment")
- ad.log.error("telecomCallGetCallIds returns %s",
- ad.droid.telecomCallGetCallIds())
- tel_result_wrapper.result_value = CallResult('NO_CALL_ID_FOUND')
- for new_call_id in new_call_ids:
- if not wait_for_in_call_active(ad, call_id=new_call_id):
- tel_result_wrapper.result_value = CallResult(
- 'CALL_STATE_NOT_ACTIVE_DURING_ESTABLISHMENT')
- else:
- ad.log.info("callProperties = %s",
- ad.droid.telecomCallGetProperties(new_call_id))
+ if not initiate_call(
+ log,
+ ad_caller,
+ callee_number,
+ incall_ui_display=incall_ui_display,
+ video=video):
+ ad_caller.log.error("Initiate call failed.")
+ tel_result_wrapper.result_value = CallResult('INITIATE_FAILED')
+ return tel_result_wrapper
+ else:
+ ad_caller.log.info("Caller initate call successfully")
+ if not wait_and_answer_call_for_subscription(
+ log,
+ ad_callee,
+ subid_callee,
+ incoming_number=caller_number,
+ caller=ad_caller,
+ incall_ui_display=incall_ui_display,
+ video_state=video_state):
+ ad_callee.log.error("Answer call fail.")
+ tel_result_wrapper.result_value = CallResult(
+ 'NO_RING_EVENT_OR_ANSWER_FAILED')
+ return tel_result_wrapper
+ else:
+ ad_callee.log.info("Callee answered the call successfully")
- if not ad.droid.telecomCallGetAudioState():
- ad.log.error("Audio is not in call state")
+ for ad, call_func in zip([ad_caller, ad_callee],
+ [verify_caller_func, verify_callee_func]):
+ call_ids = ad.droid.telecomCallGetCallIds()
+ new_call_ids = set(call_ids) - set(ad.call_ids)
+ if not new_call_ids:
+ ad.log.error(
+ "No new call ids are found after call establishment")
+ ad.log.error("telecomCallGetCallIds returns %s",
+ ad.droid.telecomCallGetCallIds())
+ tel_result_wrapper.result_value = CallResult('NO_CALL_ID_FOUND')
+ for new_call_id in new_call_ids:
+ if not wait_for_in_call_active(ad, call_id=new_call_id):
tel_result_wrapper.result_value = CallResult(
- 'AUDIO_STATE_NOT_INCALL_DURING_ESTABLISHMENT')
-
- if call_func(log, ad):
- ad.log.info("Call is in %s state", call_func.__name__)
+ 'CALL_STATE_NOT_ACTIVE_DURING_ESTABLISHMENT')
else:
- ad.log.error("Call is not in %s state, voice in RAT %s",
- call_func.__name__,
- ad.droid.telephonyGetCurrentVoiceNetworkType())
- tel_result_wrapper.result_value = CallResult(
- 'CALL_DROP_OR_WRONG_STATE_DURING_ESTABLISHMENT')
- if not tel_result_wrapper:
- return tel_result_wrapper
+ ad.log.info("callProperties = %s",
+ ad.droid.telecomCallGetProperties(new_call_id))
- if call_stats_check:
- voice_type_in_call = check_voice_network_type([ad_caller, ad_callee], voice_init=False)
- phone_a_call_type = check_call_status(ad_caller,
- voice_type_init[0],
- voice_type_in_call[0])
- result_info["Call Stats"] = phone_a_call_type
- ad_caller.log.debug("Voice Call Type: %s", phone_a_call_type)
- phone_b_call_type = check_call_status(ad_callee,
- voice_type_init[1],
- voice_type_in_call[1])
- result_info["Call Stats"] = phone_b_call_type
- ad_callee.log.debug("Voice Call Type: %s", phone_b_call_type)
+ if not ad.droid.telecomCallGetAudioState():
+ ad.log.error("Audio is not in call state")
+ tel_result_wrapper.result_value = CallResult(
+ 'AUDIO_STATE_NOT_INCALL_DURING_ESTABLISHMENT')
- elapsed_time = 0
- while (elapsed_time < wait_time_in_call):
- CHECK_INTERVAL = min(CHECK_INTERVAL,
- wait_time_in_call - elapsed_time)
- time.sleep(CHECK_INTERVAL)
- elapsed_time += CHECK_INTERVAL
- time_message = "at <%s>/<%s> second." % (elapsed_time,
- wait_time_in_call)
- for ad, call_func in [(ad_caller, verify_caller_func),
- (ad_callee, verify_callee_func)]:
- if not call_func(log, ad):
- ad.log.error(
- "NOT in correct %s state at %s, voice in RAT %s",
- call_func.__name__, time_message,
- ad.droid.telephonyGetCurrentVoiceNetworkType())
- tel_result_wrapper.result_value = CallResult(
- 'CALL_DROP_OR_WRONG_STATE_AFTER_CONNECTED')
- else:
- ad.log.info("In correct %s state at %s",
- call_func.__name__, time_message)
- if not ad.droid.telecomCallGetAudioState():
- ad.log.error("Audio is not in call state at %s",
- time_message)
- tel_result_wrapper.result_value = CallResult(
- 'AUDIO_STATE_NOT_INCALL_AFTER_CONNECTED')
- if not tel_result_wrapper:
- return tel_result_wrapper
+ if call_func(log, ad):
+ ad.log.info("Call is in %s state", call_func.__name__)
+ else:
+ ad.log.error("Call is not in %s state, voice in RAT %s",
+ call_func.__name__,
+ ad.droid.telephonyGetCurrentVoiceNetworkType())
+ tel_result_wrapper.result_value = CallResult(
+ 'CALL_DROP_OR_WRONG_STATE_DURING_ESTABLISHMENT')
+ if not tel_result_wrapper:
+ return tel_result_wrapper
- if ad_hangup:
- if not hangup_call(log, ad_hangup):
- ad_hangup.log.info("Failed to hang up the call")
- tel_result_wrapper.result_value = CallResult('CALL_HANGUP_FAIL')
- return tel_result_wrapper
- finally:
- if not tel_result_wrapper:
- for ad in (ad_caller, ad_callee):
- last_call_drop_reason(ad, begin_time)
- try:
- if ad.droid.telecomIsInCall():
- ad.log.info("In call. End now.")
- ad.droid.telecomEndCall()
- except Exception as e:
- log.error(str(e))
+ if call_stats_check:
+ voice_type_in_call = check_voice_network_type([ad_caller, ad_callee], voice_init=False)
+ phone_a_call_type = check_call_status(ad_caller,
+ voice_type_init[0],
+ voice_type_in_call[0])
+ result_info["Call Stats"] = phone_a_call_type
+ ad_caller.log.debug("Voice Call Type: %s", phone_a_call_type)
+ phone_b_call_type = check_call_status(ad_callee,
+ voice_type_init[1],
+ voice_type_in_call[1])
+ result_info["Call Stats"] = phone_b_call_type
+ ad_callee.log.debug("Voice Call Type: %s", phone_b_call_type)
- if ad_hangup or not tel_result_wrapper:
- for ad in (ad_caller, ad_callee):
- if not wait_for_call_id_clearing(
- ad, getattr(ad, "caller_ids", [])):
- tel_result_wrapper.result_value = CallResult(
- 'CALL_ID_CLEANUP_FAIL')
- return tel_result_wrapper
+ return wait_for_call_end(
+ log,
+ ad_caller,
+ ad_callee,
+ ad_hangup,
+ verify_caller_func,
+ verify_callee_func,
+ begin_time,
+ check_interval=CHECK_INTERVAL,
+ tel_result_wrapper=TelResultWrapper(CallResult('SUCCESS')),
+ wait_time_in_call=WAIT_TIME_IN_CALL)
def two_phone_call_leave_voice_mail(
@@ -2439,13 +2399,9 @@
ad.log.error("Audio is not in call state at %s", time_message)
tel_result_wrapper.result_value = CallResult(
'AUDIO_STATE_NOT_INCALL_AFTER_CONNECTED')
- if not tel_result_wrapper:
- return tel_result_wrapper
- if ad_hangup:
- if not hangup_call(log, ad_hangup):
- ad_hangup.log.info("Failed to hang up the call")
- tel_result_wrapper.result_value = CallResult('CALL_HANGUP_FAIL')
+ if not tel_result_wrapper:
+ break
if not tel_result_wrapper:
for ad in (ad_caller, ad_callee):
@@ -2456,6 +2412,12 @@
ad.droid.telecomEndCall()
except Exception as e:
log.error(str(e))
+ else:
+ if ad_hangup:
+ if not hangup_call(log, ad_hangup):
+ ad_hangup.log.info("Failed to hang up the call")
+ tel_result_wrapper.result_value = CallResult('CALL_HANGUP_FAIL')
+
if ad_hangup or not tel_result_wrapper:
for ad in (ad_caller, ad_callee):
if not wait_for_call_id_clearing(ad, getattr(ad, "caller_ids", [])):
diff --git a/acts_tests/tests/google/nr/nsa5g/Nsa5gDSDSVoiceTest.py b/acts_tests/tests/google/nr/nsa5g/Nsa5gDSDSVoiceTest.py
index 2e42a12..3544b8d 100644
--- a/acts_tests/tests/google/nr/nsa5g/Nsa5gDSDSVoiceTest.py
+++ b/acts_tests/tests/google/nr/nsa5g/Nsa5gDSDSVoiceTest.py
@@ -19,6 +19,7 @@
from acts_contrib.test_utils.tel.loggers.telephony_metric_logger import TelephonyMetricLogger
from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED
from acts_contrib.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
+from acts_contrib.test_utils.tel.tel_dsds_utils import dsds_long_call_streaming_test
from acts_contrib.test_utils.tel.tel_dsds_utils import dsds_voice_call_test
from acts_contrib.test_utils.tel.tel_dsds_utils import enable_slot_after_voice_call_test
from acts_contrib.test_utils.tel.tel_dsds_utils import enable_slot_after_data_call_test
@@ -2149,4 +2150,708 @@
wifi_network_ssid=self.wifi_network_ssid,
wifi_network_pass=self.wifi_network_pass,
turn_off_wifi_in_the_end=True,
- turn_off_airplane_mode_in_the_end=True)
\ No newline at end of file
+ turn_off_airplane_mode_in_the_end=True)
+
+ @test_tracker_info(uuid="f07a4924-0752-41fd-8e52-e75c3c78c538")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mo_5g_nsa_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="cac09fa6-5db1-4523-910a-7fe9918a04ac")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mt_5g_nsa_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="a0039ac0-9d3d-4acf-801b-4b0d01971153")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mo_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="9cf03491-df27-4eda-9e3d-7782a44c0674")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mt_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="6c8c7e67-3bec-49b4-8164-963e488df14f")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mo_5g_nsa_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="9a2bc9a2-18a2-471f-9b21-fd0aea1b126b")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mt_5g_nsa_volte_psim_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="c88a0ed6-f8b6-4033-93db-b160c29d4b9e")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mo_5g_nsa_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="b4aa294d-679d-4a0e-8cc9-9261bfe8b392")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mt_5g_nsa_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="2e20f05f-9434-410f-a40a-a01c0303d1a0")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mo_5g_nsa_volte_esim_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="3f89b354-0cdc-4522-8a67-76773219e5af")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mt_5g_nsa_volte_esim_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="f18c61c5-3c3b-4645-90eb-e7bdef9b7c74")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mo_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="8324ffe2-1332-47fc-af92-a3ed7be9b629")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mt_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="e6760078-2a5e-4182-8ba1-57788fc607f1")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mo_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="c736e4f0-8dbc-480a-8da6-68453cc13d07")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_esim_mt_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="19dc55b5-b989-481d-a980-fcd0ff56abc2")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mo_volte_esim_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="494e9c90-6c56-4fa1-9fac-ac8f2b1c0dba")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_psim_mt_volte_esim_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=False)
+
+ @test_tracker_info(uuid="d253553d-7dc9-4e38-8e20-0839326c20aa")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mo_5g_nsa_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="80a201c5-0bfe-4d7f-b08b-52b7c53b6468")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mt_5g_nsa_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="8938575b-2544-4075-9cf9-3d938ad4d9cb")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mo_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="200c7cce-aba2-40f8-a274-9b05177d00e0")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mt_volte_psim_5g_nsa_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="26bb9415-44f4-43df-b2e6-abbdfacf33c2")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mo_5g_nsa_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="8a8dc1ca-6a85-4dc8-9e34-e17abe61f7b8")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mt_5g_nsa_volte_psim_volte_dds_0(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 0)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="903a2813-6b27-4020-aaf2-b5ab8b29fa13")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mo_5g_nsa_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="33d8ba2c-fa45-4ec0-aef5-b191b6ddd9a6")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mt_5g_nsa_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="6db23c84-13d9-47fa-b8f1-45c56e2d6428")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mo_5g_nsa_volte_esim_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="3a77b38f-c327-4c43-addf-48832bca7148")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mt_5g_nsa_volte_esim_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 5G NSA VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["5g_volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="2898eb67-3dfe-4322-8c69-817e0a95dfda")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mo_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="780e8187-2068-4eca-a9de-e5f2f3491403")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mt_volte_esim_5g_nsa_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 5G NSA VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "5g_volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="9b84bd00-fae3-45c0-9e44-dd57d1719bb9")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mo_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="813c6059-bcef-42d3-b70b-9b0ba67ffc20")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_esim_mt_volte_psim_volte_dds_0(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=1,
+ dds_slot=0,
+ direction="mt",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="970b1d31-195b-4599-80bc-bc46ede43a90")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mo_volte_esim_volte_dds_1(self):
+ """ A MO VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mo",
+ duration=360,
+ streaming=True)
+
+ @test_tracker_info(uuid="62843f60-5d1c-44ed-9936-e10d2691e787")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_msim_long_voice_streaming_psim_mt_volte_esim_volte_dds_1(self):
+ """ A MT VoLTE long call at eSIM during streaming, where
+ - pSIM 4G VoLTE
+ - eSIM 4G VoLTE
+ - DDS at pSIM (slot 1)
+
+ After call end will check the eSIM if is attach to the network
+ with assigned RAT successfully and data works fine.
+ """
+ return dsds_long_call_streaming_test(
+ self.log,
+ self.tel_logger,
+ self.android_devices,
+ test_rat=["volte", "volte"],
+ test_slot=0,
+ dds_slot=1,
+ direction="mt",
+ duration=360,
+ streaming=True)
\ No newline at end of file