added sms mms utils file and updated TelLiveSmsTest Nsa5gSmsTest Nsa5gMmsTest accordingly

Bug: 178730933
Test: automation

Change-Id: Ifadb3d330e7003f24d29593d0e8f09190cb104a9
diff --git a/acts_tests/tests/google/nr/nsa5g/Nsa5gMmsTest.py b/acts_tests/tests/google/nr/nsa5g/Nsa5gMmsTest.py
index f49775b..921e917 100755
--- a/acts_tests/tests/google/nr/nsa5g/Nsa5gMmsTest.py
+++ b/acts_tests/tests/google/nr/nsa5g/Nsa5gMmsTest.py
@@ -22,28 +22,26 @@
 from acts.test_decorators import test_tracker_info
 from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
 from acts_contrib.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
-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_test_utils import call_setup_teardown
 from acts_contrib.test_utils.tel.tel_test_utils import ensure_phones_idle
 from acts_contrib.test_utils.tel.tel_test_utils import ensure_wifi_connected
-from acts_contrib.test_utils.tel.tel_test_utils import call_setup_teardown
-from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode
-from acts_contrib.test_utils.tel.tel_test_utils import mms_send_receive_verify
 from acts_contrib.test_utils.tel.tel_test_utils import multithread_func
-from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_volte
-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 phone_setup_iwlan
 from acts_contrib.test_utils.tel.tel_voice_utils import is_phone_in_call_iwlan
-from acts_contrib.test_utils.tel.tel_5g_utils import is_current_network_5g_nsa
+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 phone_setup_voice_general
+from acts_contrib.test_utils.tel.tel_voice_utils import phone_setup_volte
 from acts_contrib.test_utils.tel.tel_5g_utils import connect_both_devices_to_wifi
+from acts_contrib.test_utils.tel.tel_5g_utils import disable_apm_mode_both_devices
 from acts_contrib.test_utils.tel.tel_5g_utils import provision_both_devices_for_5g
 from acts_contrib.test_utils.tel.tel_5g_utils import provision_both_devices_for_volte
 from acts_contrib.test_utils.tel.tel_5g_utils import provision_both_devices_for_wfc_cell_pref
 from acts_contrib.test_utils.tel.tel_5g_utils import provision_both_devices_for_wfc_wifi_pref
+from acts_contrib.test_utils.tel.tel_5g_utils import provision_device_for_5g
 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 disable_apm_mode_both_devices
-
-from acts.utils import rand_ascii_str
+from acts_contrib.test_utils.tel.tel_mms_utils import _mms_test_mo
+from acts_contrib.test_utils.tel.tel_mms_utils import _mms_test_mt
+from acts_contrib.test_utils.tel.tel_mms_utils import _long_mms_test_mo
+from acts_contrib.test_utils.tel.tel_mms_utils import _long_mms_test_mt
 
 class Nsa5gMmsTest(TelephonyBaseTest):
     def setup_class(self):
@@ -58,38 +56,6 @@
         ensure_phones_idle(self.log, self.android_devices)
 
 
-    def _mms_test_mo(self, ads, expected_result=True):
-        return self._mms_test(
-            [ads[0], ads[1]], expected_result=expected_result)
-
-    def _mms_test_mt(self, ads, expected_result=True):
-        return self._mms_test(
-            [ads[1], ads[0]], expected_result=expected_result)
-
-    def _mms_test(self, ads, expected_result=True):
-        """Test MMS between two phones.
-
-        Returns:
-            True if success.
-            False if failed.
-        """
-        for length in self.message_lengths:
-            message_array = [("Test Message", rand_ascii_str(length), None)]
-            if not mms_send_receive_verify(
-                    self.log,
-                    ads[0],
-                    ads[1],
-                    message_array,
-                    expected_result=expected_result):
-                self.log.warning("MMS of body length %s test failed", length)
-                return False
-            else:
-                self.log.info("MMS of body length %s test succeeded", length)
-        self.log.info("MMS test of body lengths %s succeeded",
-                      self.message_lengths)
-        return True
-
-
     """ Tests Begin """
 
     @test_tracker_info(uuid="bc484c2c-8086-42db-94cd-a1e4a35f35cf")
@@ -109,7 +75,7 @@
         if not provision_both_devices_for_5g(self.log, ads):
             return False
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             return False
 
         if not verify_5g_attach_for_both_devices(self.log, ads):
@@ -140,7 +106,7 @@
         if not provision_both_devices_for_5g(self.log, ads):
             return False
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             return False
 
         if not verify_5g_attach_for_both_devices(self.log, ads):
@@ -180,7 +146,7 @@
                 verify_callee_func=None):
             return False
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             return False
 
         if not verify_5g_attach_for_both_devices(self.log, ads):
@@ -219,7 +185,7 @@
             return False
         time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             return False
 
         self.log.info("PASS - iwlan mms test over 5g nsa validated")
@@ -256,7 +222,7 @@
             return False
         time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             self.log.error("Failed to send receive sms over 5g nsa")
             return False
         self.log.info("PASS - iwlan mms test over 5g nsa validated")
@@ -307,7 +273,7 @@
                 verify_callee_func=None):
             return False
 
-        return self._mms_test_mo(ads)
+        return _mms_test_mo(self.log, ads)
 
     @test_tracker_info(uuid="68c8e0ca-bea4-45e4-92cf-19424ee47ca4")
     @TelephonyBaseTest.tel_test_wrap
@@ -346,11 +312,177 @@
                 verify_callee_func=None):
             return False
 
-        if not self._mms_test_mo(ads):
+        if not _mms_test_mo(self.log, ads):
             return False
 
         if not verify_5g_attach_for_both_devices(self.log, ads):
             return False
         return True
 
-    """ Tests End """
\ No newline at end of file
+    @test_tracker_info(uuid="")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_5g_nsa_mms_long_message_mo_mt(self):
+        """Test MMS basic function between two phone. Phones in nsa 5G network.
+
+        Airplane mode is off. Phone in nsa 5G.
+        Send MMS from PhoneA to PhoneB.
+        Verify received message on PhoneB is correct.
+
+        Returns:
+            True if success.
+            False if failed.
+        """
+
+        ads = self.android_devices
+
+        if not disable_apm_mode_both_devices(self.log, ads):
+            return False
+
+        if not provision_both_devices_for_5g(self.log, ads):
+            return False
+
+        return _long_mms_test_mo(self.log, ads)
+
+    @test_tracker_info(uuid="")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_5g_nsa_mms_mo_wifi(self):
+        """Test MMS basic function between two phone. Phones in nsa 5g network.
+
+        Airplane mode is off. Phone in nsa 5G.
+        Connect to Wifi.
+        Send MMS from PhoneA to PhoneB.
+        Verify received message on PhoneB is correct.
+
+        Returns:
+            True if success.
+            False if failed.
+        """
+
+        ads = self.android_devices
+
+        if not disable_apm_mode_both_devices(self.log, ads):
+            return False
+
+        if not provision_both_devices_for_5g(self.log, ads):
+            return False
+
+        ensure_wifi_connected(self.log, ads[0], self.wifi_network_ssid,
+                              self.wifi_network_pass)
+
+        return _mms_test_mo(self.log, ads)
+
+    @test_tracker_info(uuid="")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_5g_nsa_mms_mt_wifi(self):
+        """Test MMS basic function between two phone. Phones in nsa 5g network.
+
+        Airplane mode is off. Phone in nsa 5G.
+        Connect to Wifi.
+        Send MMS from PhoneB to PhoneA.
+        Verify received message on PhoneA is correct.
+
+        Returns:
+            True if success.
+            False if failed.
+        """
+
+        ads = self.android_devices
+
+        if not disable_apm_mode_both_devices(self.log, ads):
+            return False
+
+        if not provision_both_devices_for_5g(self.log, ads):
+            return False
+
+        ensure_wifi_connected(self.log, ads[0], self.wifi_network_ssid,
+                              self.wifi_network_pass)
+
+        return _mms_test_mt(self.log, ads)
+
+    @test_tracker_info(uuid="")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_5g_nsa_mms_mo_in_call_volte_wifi(self):
+        """ Test MO MMS during a MO VoLTE call.
+
+        Make sure PhoneA is in nsa 5G mode (with VoLTE).
+        Make sure PhoneB is able to make/receive call.
+        Connect PhoneA to Wifi.
+        Call from PhoneA to PhoneB, accept on PhoneB, send MMS on PhoneA.
+
+        Returns:
+            True if pass; False if fail.
+        """
+        ads = self.android_devices
+
+        tasks = [(phone_setup_volte, (self.log, ads[0])),
+                 (phone_setup_voice_general, (self.log, ads[1]))]
+        if not multithread_func(self.log, tasks):
+            self.log.error("Phone Failed to Set Up Properly.")
+            return False
+
+        if not provision_device_for_5g(self.log, ads[0]):
+            return False
+
+        ensure_wifi_connected(self.log, ads[0], self.wifi_network_ssid,
+                              self.wifi_network_pass)
+
+        self.log.info("Begin In Call SMS Test.")
+        if not call_setup_teardown(
+                self.log,
+                ads[0],
+                ads[1],
+                ad_hangup=None,
+                verify_caller_func=is_phone_in_call_volte,
+                verify_callee_func=None):
+            return False
+
+        if not _mms_test_mo(self.log, ads):
+            self.log.error("MMS test fail.")
+            return False
+
+        return True
+
+    @test_tracker_info(uuid="")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_5g_nsa_mms_mt_in_call_volte_wifi(self):
+        """ Test MT MMS during a MO VoLTE call.
+
+        Make sure PhoneA is in nsa 5G mode (with VoLTE).
+        Make sure PhoneB is able to make/receive call.
+        Connect PhoneA to Wifi.
+        Call from PhoneA to PhoneB, accept on PhoneB, receive MMS on PhoneA.
+
+        Returns:
+            True if pass; False if fail.
+        """
+        ads = self.android_devices
+
+        tasks = [(phone_setup_volte, (self.log, ads[0])),
+                 (phone_setup_voice_general, (self.log, ads[1]))]
+        if not multithread_func(self.log, tasks):
+            self.log.error("Phone Failed to Set Up Properly.")
+            return False
+
+        if not provision_device_for_5g(self.log, ads[0]):
+            return False
+
+        ensure_wifi_connected(self.log, ads[0], self.wifi_network_ssid,
+                              self.wifi_network_pass)
+
+        self.log.info("Begin In Call MMS Test.")
+        if not call_setup_teardown(
+                self.log,
+                ads[0],
+                ads[1],
+                ad_hangup=None,
+                verify_caller_func=is_phone_in_call_volte,
+                verify_callee_func=None):
+            return False
+
+        if not _mms_test_mt(self.log, ads):
+            self.log.error("MMS test fail.")
+            return False
+
+        return True
+
+    """ Tests End """