Add mobility stress test for 4G and 3G switching. am: 9fe6ed2e1b am: 22b8d1b581
am: 4aa9d6dafa

Change-Id: I3d27b3e360459ef5af64522f7ef16e6e92620c78
(cherry picked from commit 26551c3319dc614ce699a866faf267b7610415cc)
diff --git a/acts/tests/google/tel/live/TelLiveMobilityStressTest.py b/acts/tests/google/tel/live/TelLiveMobilityStressTest.py
index a48d458..8348dc8 100644
--- a/acts/tests/google/tel/live/TelLiveMobilityStressTest.py
+++ b/acts/tests/google/tel/live/TelLiveMobilityStressTest.py
@@ -28,6 +28,8 @@
 from acts.test_utils.tel.tel_defines import CELL_STRONG_RSSI_VALUE
 from acts.test_utils.tel.tel_defines import MAX_RSSI_RESERVED_VALUE
 from acts.test_utils.tel.tel_defines import MIN_RSSI_RESERVED_VALUE
+from acts.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED
+from acts.test_utils.tel.tel_defines import WFC_MODE_DISABLED
 from acts.test_utils.tel.tel_defines import WFC_MODE_WIFI_PREFERRED
 from acts.test_utils.tel.tel_defines import WFC_MODE_CELLULAR_PREFERRED
 from acts.test_utils.tel.tel_defines import WIFI_WEAK_RSSI_VALUE
@@ -99,6 +101,13 @@
         return self._wfc_phone_setup(
             False, WFC_MODE_CELLULAR_PREFERRED, volte_mode=False)
 
+    def _setup_volte_wfc_disabled(self):
+        return self._wfc_phone_setup(False, WFC_MODE_DISABLED, volte_mode=True)
+
+    def _setup_csfb_wfc_disabled(self):
+        return self._wfc_phone_setup(
+            False, WFC_MODE_DISABLED, volte_mode=False)
+
     def _send_message(self, ads):
         selection = random.randrange(0, 2)
         message_type_map = {0: "SMS", 1: "MMS"}
@@ -156,11 +165,18 @@
             time.sleep(self.crash_check_interval)
         return failure
 
-    def change_environment(self):
+    def environment_change_4g_wifi(self):
+        #block cell 3G, WIFI 2G
+        set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0,
+                 MIN_RSSI_RESERVED_VALUE)
+        set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0,
+                 MIN_RSSI_RESERVED_VALUE)
         while time.time() < self.finishing_time:
-            self._wfc_set_wifi_strong_cell_strong()
-            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0,
-                     MIN_RSSI_RESERVED_VALUE)
+            #set strong wifi 5G and LTE
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0,
+                     MAX_RSSI_RESERVED_VALUE)
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0,
+                     MAX_RSSI_RESERVED_VALUE)
             #gratually decrease wifi 5g
             set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G],
                      self.wifi_rssi_with_no_atten, MIN_RSSI_RESERVED_VALUE,
@@ -170,11 +186,36 @@
                      MIN_RSSI_RESERVED_VALUE, MAX_RSSI_RESERVED_VALUE,
                      self.signal_change_step, self.signal_change_interval)
 
-            self._wfc_set_wifi_strong_cell_strong()
             #gratually decrease cell 4G
             set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G],
                      self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE,
                      self.signal_change_step, self.signal_change_interval)
+            #gradtually increase cell 4G
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G],
+                     MIN_RSSI_RESERVED_VALUE, MAX_RSSI_RESERVED_VALUE,
+                     self.signal_change_step, self.signal_change_interval)
+        return 0
+
+    def environment_change_4g_3g(self):
+        #block wifi 2G and 5G
+        set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_2G], 0,
+                 MIN_RSSI_RESERVED_VALUE)
+        set_rssi(self.log, self.attens[ATTEN_NAME_FOR_WIFI_5G], 0,
+                 MIN_RSSI_RESERVED_VALUE)
+        while time.time() < self.finishing_time:
+            #set strong cell 4G and 3G
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G], 0,
+                     MAX_RSSI_RESERVED_VALUE)
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G], 0,
+                     MAX_RSSI_RESERVED_VALUE)
+            #gratually decrease cell 4G
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G],
+                     self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE,
+                     self.signal_change_step, self.signal_change_interval)
+            #gradtually increase cell 4G
+            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G],
+                     MIN_RSSI_RESERVED_VALUE, MAX_RSSI_RESERVED_VALUE,
+                     self.signal_change_step, self.signal_change_interval)
             #gratually decrease cell 3G
             set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G],
                      self.cell_rssi_with_no_atten, CELL_WEAK_RSSI_VALUE,
@@ -183,10 +224,7 @@
             set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_3G],
                      MIN_RSSI_RESERVED_VALUE, MAX_RSSI_RESERVED_VALUE,
                      self.signal_change_step, self.signal_change_interval)
-            #gradtually increase cell 4G
-            set_rssi(self.log, self.attens[ATTEN_NAME_FOR_CELL_4G],
-                     MIN_RSSI_RESERVED_VALUE, MAX_RSSI_RESERVED_VALUE,
-                     self.signal_change_step, self.signal_change_interval)
+
         return 0
 
     def call_test(self):
@@ -243,7 +281,7 @@
                 time.sleep(random.randrange(0, self.max_sleep_time))
         return failure
 
-    def parallel_tests(self, setup_func=None):
+    def parallel_tests(self, change_env_func, setup_func=None):
         if setup_func and not setup_func():
             self.log.error("Test setup %s failed", setup_func.__name__)
             return False
@@ -251,7 +289,7 @@
         self.finishing_time = time.time() + self.max_run_time
         results = run_multithread_func(self.log, [(self.call_test, []), (
             self.message_test, []), (self.data_test, []), (
-                self.change_environment, []), (self.crash_check_test, [])])
+                change_env_func, []), (self.crash_check_test, [])])
         self.log.info(dict(self.result_info))
         if sum(results):
             fail(str(dict(self.result_info)))
@@ -262,24 +300,42 @@
     @TelephonyBaseTest.tel_test_wrap
     def test_volte_wfc_wifi_preferred_parallel_stress(self):
         return self.parallel_tests(
+            self.environment_change_4g_wifi,
             setup_func=self._setup_volte_wfc_wifi_preferred)
 
     @test_tracker_info(uuid="df78a9a8-2a14-40bf-a7aa-719502f975be")
     @TelephonyBaseTest.tel_test_wrap
     def test_volte_wfc_cell_preferred_parallel_stress(self):
         return self.parallel_tests(
+            self.environment_change_4g_wifi,
             setup_func=self._setup_volte_wfc_cell_preferred)
 
     @test_tracker_info(uuid="4cb47315-c420-44c2-ac47-a8bdca6d0e25")
     @TelephonyBaseTest.tel_test_wrap
     def test_csfb_wfc_wifi_preferred_parallel_stress(self):
         return self.parallel_tests(
+            self.environment_change_4g_wifi,
             setup_func=self._setup_csfb_wfc_wifi_preferred)
 
     @test_tracker_info(uuid="92821ef7-542a-4139-b3b0-22278e2b06c4")
     @TelephonyBaseTest.tel_test_wrap
     def test_csfb_wfc_cell_preferred_parallel_stress(self):
         return self.parallel_tests(
+            self.self.environment_change_4g_wifi,
             setup_func=self._setup_csfb_wfc_cell_preferred)
 
+    @test_tracker_info(uuid="dd23923e-ebbc-461e-950a-0657e845eacf")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_4g_volte_3g_parallel_stress(self):
+        return self.parallel_tests(
+            self.environment_change_4g_3g,
+            setup_func=self._setup_volte_wfc_disabled)
+
+    @test_tracker_info(uuid="faef9384-a5b0-4640-8cfa-f9f34ce6d977")
+    @TelephonyBaseTest.tel_test_wrap
+    def test_4g_csfb_3g_parallel_stress(self):
+        return self.parallel_tests(
+            self.environment_change_4g_3g,
+            setup_func=self._setup_csfb_wfc_disabled)
+
     """ Tests End """