Merge "Use wait-for-device instead of hard coded sleep in AndroidDevice.reboot."
diff --git a/acts/framework/acts/test_utils/tel/TelephonyBaseTest.py b/acts/framework/acts/test_utils/tel/TelephonyBaseTest.py
index f383f8d..adca11a 100644
--- a/acts/framework/acts/test_utils/tel/TelephonyBaseTest.py
+++ b/acts/framework/acts/test_utils/tel/TelephonyBaseTest.py
@@ -22,18 +22,20 @@
 from acts.base_test import BaseTestClass
 from acts.signals import TestSignal
 
-from acts.test_utils.tel.tel_subscription_setup_utils import \
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_subid_from_slot_index
+from acts.test_utils.tel.tel_subscription_utils import \
     initial_set_up_for_subid_infomation
+from acts.test_utils.tel.tel_subscription_utils import set_subid_for_data
+from acts.test_utils.tel.tel_subscription_utils import \
+    set_subid_for_message
+from acts.test_utils.tel.tel_subscription_utils import \
+    set_subid_for_outgoing_call
 from acts.test_utils.tel.tel_test_utils import ensure_phones_default_state
-from acts.test_utils.tel.tel_test_utils import get_sub_ids_for_sim_slots
-from acts.test_utils.tel.tel_test_utils import get_subid_from_slot_index
 from acts.test_utils.tel.tel_test_utils import \
     reset_preferred_network_type_to_allowable_range
 from acts.test_utils.tel.tel_test_utils import set_phone_screen_on
 from acts.test_utils.tel.tel_test_utils import set_phone_silent_mode
-from acts.test_utils.tel.tel_test_utils import set_subid_for_data
-from acts.test_utils.tel.tel_test_utils import set_subid_for_message
-from acts.test_utils.tel.tel_test_utils import set_subid_for_outgoing_call
 from acts.test_utils.tel.tel_test_utils import setup_droid_properties
 from acts.test_utils.tel.tel_test_utils import refresh_droid_config
 from acts.test_utils.tel.tel_defines import PRECISE_CALL_STATE_LISTEN_LEVEL_FOREGROUND
@@ -117,9 +119,6 @@
             # Reset preferred network type.
             reset_preferred_network_type_to_allowable_range(self.log, ad)
 
-        setattr(self, 'sim_sub_ids',
-                get_sub_ids_for_sim_slots(self.log, self.android_devices))
-
         # Sub ID setup
         for ad in self.android_devices:
             initial_set_up_for_subid_infomation(self.log, ad)
diff --git a/acts/framework/acts/test_utils/tel/tel_data_utils.py b/acts/framework/acts/test_utils/tel/tel_data_utils.py
index 43fbee2..3f4ee0a 100644
--- a/acts/framework/acts/test_utils/tel/tel_data_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_data_utils.py
@@ -17,19 +17,20 @@
 import time
 
 from acts.utils import rand_ascii_str
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_subid_from_slot_index
+from acts.test_utils.tel.tel_subscription_utils import set_subid_for_data
 from acts.test_utils.tel.tel_defines import MAX_WAIT_TIME_NW_SELECTION
 from acts.test_utils.tel.tel_defines import NETWORK_SERVICE_DATA
 from acts.test_utils.tel.tel_defines import WAIT_TIME_ANDROID_STATE_SETTLING
-from acts.test_utils.tel.tel_subscription_setup_utils import get_default_data_sub_id
+from acts.test_utils.tel.tel_subscription_utils import get_default_data_sub_id
 from acts.test_utils.tel.tel_test_utils import WifiUtils
 from acts.test_utils.tel.tel_test_utils import ensure_network_generation_for_subscription
 from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
 from acts.test_utils.tel.tel_test_utils import ensure_wifi_connected
 from acts.test_utils.tel.tel_test_utils import get_network_rat_for_subscription
-from acts.test_utils.tel.tel_test_utils import get_subid_from_slot_index
 from acts.test_utils.tel.tel_test_utils import is_droid_in_network_generation_for_subscription
 from acts.test_utils.tel.tel_test_utils import rat_generation_from_rat
-from acts.test_utils.tel.tel_test_utils import set_subid_for_data
 from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode
 from acts.test_utils.tel.tel_test_utils import verify_http_connection
 from acts.test_utils.tel.tel_test_utils import wait_for_cell_data_connection
diff --git a/acts/framework/acts/test_utils/tel/tel_subscription_setup_utils.py b/acts/framework/acts/test_utils/tel/tel_subscription_utils.py
similarity index 79%
rename from acts/framework/acts/test_utils/tel/tel_subscription_setup_utils.py
rename to acts/framework/acts/test_utils/tel/tel_subscription_utils.py
index fe78758..93a8216 100644
--- a/acts/framework/acts/test_utils/tel/tel_subscription_setup_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_subscription_utils.py
@@ -18,10 +18,9 @@
 # It will be deleted once we have better solution for subscription ids.
 from future import standard_library
 standard_library.install_aliases()
-from acts.test_utils.tel.tel_test_utils import get_subid_from_slot_index
-from acts.test_utils.tel.tel_test_utils import set_subid_for_data
-from acts.test_utils.tel.tel_test_utils import set_subid_for_message
-from acts.test_utils.tel.tel_test_utils import set_subid_for_outgoing_call
+from acts.test_utils.tel.tel_defines import INVALID_SUB_ID
+from acts.test_utils.tel.tel_defines import WAIT_TIME_CHANGE_DATA_SUB_ID
+import time
 
 def initial_set_up_for_subid_infomation(log, ad):
     """Initial subid setup for voice, message and data according to ad's
@@ -147,3 +146,57 @@
         return ad.incoming_message_sub_id
     else:
         return ad.droid.subscriptionGetDefaultSmsSubId()
+
+def get_subid_from_slot_index(log, ad, sim_slot_index):
+    """ Get the subscription ID for a SIM at a particular slot
+
+    Args:
+        ad: android_device object.
+
+    Returns:
+        result: Subscription ID
+    """
+    subInfo = ad.droid.subscriptionGetAllSubInfoList()
+    for info in subInfo:
+        if info['simSlotIndex'] == sim_slot_index:
+            return info['subscriptionId']
+    return INVALID_SUB_ID
+
+def set_subid_for_data(ad, sub_id, time_to_sleep=WAIT_TIME_CHANGE_DATA_SUB_ID):
+    """Set subId for data
+
+    Args:
+        ad: android device object.
+        sub_id: subscription id (integer)
+
+    Returns:
+        None
+    """
+    # TODO: Need to check onSubscriptionChanged event. b/27843365
+    if ad.droid.subscriptionGetDefaultDataSubId() != sub_id:
+        ad.droid.subscriptionSetDefaultDataSubId(sub_id)
+        time.sleep(time_to_sleep)
+
+def set_subid_for_message(ad, sub_id):
+    """Set subId for outgoing message
+
+    Args:
+        ad: android device object.
+        sub_id: subscription id (integer)
+
+    Returns:
+        None
+    """
+    ad.droid.subscriptionSetDefaultSmsSubId(sub_id)
+
+def set_subid_for_outgoing_call(ad, sub_id):
+    """Set subId for outgoing voice call
+
+    Args:
+        ad: android device object.
+        sub_id: subscription id (integer)
+
+    Returns:
+        None
+    """
+    ad.droid.telecomSetUserSelectedOutgoingPhoneAccountBySubId(sub_id)
diff --git a/acts/framework/acts/test_utils/tel/tel_test_utils.py b/acts/framework/acts/test_utils/tel/tel_test_utils.py
index 796f774..1d91be1 100644
--- a/acts/framework/acts/test_utils/tel/tel_test_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_test_utils.py
@@ -112,11 +112,16 @@
 from acts.test_utils.tel.tel_lookup_tables import rat_family_for_generation
 from acts.test_utils.tel.tel_lookup_tables import rat_family_from_rat
 from acts.test_utils.tel.tel_lookup_tables import rat_generation_from_rat
-from acts.test_utils.tel.tel_subscription_setup_utils import get_default_data_sub_id
-from acts.test_utils.tel.tel_subscription_setup_utils import get_outgoing_message_sub_id
-from acts.test_utils.tel.tel_subscription_setup_utils import get_outgoing_voice_sub_id
-from acts.test_utils.tel.tel_subscription_setup_utils import get_incoming_voice_sub_id
-from acts.test_utils.tel.tel_subscription_setup_utils import get_incoming_message_sub_id
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_default_data_sub_id
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_outgoing_message_sub_id
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_outgoing_voice_sub_id
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_incoming_voice_sub_id
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_incoming_message_sub_id
 from acts.utils import load_config
 from acts.logger import LoggerProxy
 log = LoggerProxy()
@@ -202,21 +207,6 @@
         ad.cfg['subscription'][sub_id]['operator'] = get_operator_name(
             log, ad, sub_id)
 
-def get_subid_from_slot_index(log, ad, sim_slot_index):
-    """ Get the subscription ID for a SIM at a particular slot
-
-    Args:
-        ad: android_device object.
-
-    Returns:
-        result: Subscription ID
-    """
-    subInfo = ad.droid.subscriptionGetAllSubInfoList()
-    for info in subInfo:
-        if info['simSlotIndex'] == sim_slot_index:
-            return info['subscriptionId']
-    return INVALID_SUB_ID
-
 def get_slot_index_from_subid(log, ad, sub_id):
     try:
         info = ad.droid.subscriptionGetSubInfoForSubscriber(sub_id)
@@ -3101,30 +3091,6 @@
                 return False
     return True
 
-
-def get_sub_ids_for_sim_slots(log, ads):
-    """get subscription id for each sim slots avaialble in all devices
-       in  ads
-
-    Args:
-        log: Log object.
-        ads: Android device object list.
-
-    Returns:
-        list of sub ids for all devices.
-        it is a matrix.
-        eg: sim_sub_ids[0][0] is sub id for sim1 in device 1
-    """
-    sim_sub_ids = []
-    for index in range(len(ads)):
-        sim_sub_ids.append([])
-        sim_count = ads[index].droid.telephonyGetSimCount()
-        for count in range(sim_count):
-            subid = get_subid_from_slot_index(log, ads[index], count)
-            sim_sub_ids[index].append(subid)
-    return sim_sub_ids
-
-
 def is_event_match(event, field, value):
     """Return if <field> in "event" match <value> or not.
 
@@ -3257,45 +3223,6 @@
     except:
         return None
 
-def set_subid_for_outgoing_call(ad, sub_id):
-    """Set subId for outgoing voice call
-
-    Args:
-        ad: android device object.
-        sub_id: subscription id (integer)
-
-    Returns:
-        None
-    """
-    ad.droid.telecomSetUserSelectedOutgoingPhoneAccountBySubId(sub_id)
-
-def set_subid_for_data(ad, sub_id, time_to_sleep=WAIT_TIME_CHANGE_DATA_SUB_ID):
-    """Set subId for data
-
-    Args:
-        ad: android device object.
-        sub_id: subscription id (integer)
-
-    Returns:
-        None
-    """
-    # TODO: Need to check onSubscriptionChanged event. b/27843365
-    if ad.droid.subscriptionGetDefaultDataSubId() != sub_id:
-        ad.droid.subscriptionSetDefaultDataSubId(sub_id)
-        time.sleep(time_to_sleep)
-
-def set_subid_for_message(ad, sub_id):
-    """Set subId for outgoing message
-
-    Args:
-        ad: android device object.
-        sub_id: subscription id (integer)
-
-    Returns:
-        None
-    """
-    ad.droid.subscriptionSetDefaultSmsSubId(sub_id)
-
 # TODO: b/26294018 Remove wrapper class once wifi_utils methods updated
 class WifiUtils():
 
diff --git a/acts/framework/acts/test_utils/tel/tel_video_utils.py b/acts/framework/acts/test_utils/tel/tel_video_utils.py
index 0882d8c..e9aa811 100644
--- a/acts/framework/acts/test_utils/tel/tel_video_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_video_utils.py
@@ -51,8 +51,8 @@
 from acts.test_utils.tel.tel_defines import EVENT_VIDEO_SESSION_MODIFY_RESPONSE_RECEIVED
 from acts.test_utils.tel.tel_defines import EVENT_VIDEO_SESSION_MODIFY_REQUEST_RECEIVED
 from acts.test_utils.tel.tel_defines import CallStateContainer
-from acts.test_utils.tel.tel_subscription_setup_utils import get_outgoing_voice_sub_id
-from acts.test_utils.tel.tel_subscription_setup_utils import get_incoming_voice_sub_id
+from acts.test_utils.tel.tel_subscription_utils import get_outgoing_voice_sub_id
+from acts.test_utils.tel.tel_subscription_utils import get_incoming_voice_sub_id
 from acts.test_utils.tel.tel_test_utils import check_phone_number_match
 from acts.test_utils.tel.tel_test_utils import ensure_network_generation
 from acts.test_utils.tel.tel_test_utils import is_event_match
diff --git a/acts/framework/acts/test_utils/tel/tel_voice_utils.py b/acts/framework/acts/test_utils/tel/tel_voice_utils.py
index 8851721..a9f09eb 100644
--- a/acts/framework/acts/test_utils/tel/tel_voice_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_voice_utils.py
@@ -45,7 +45,7 @@
 from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_UMTS
 from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_CDMA_EVDO
 from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA
-from acts.test_utils.tel.tel_subscription_setup_utils import get_outgoing_voice_sub_id
+from acts.test_utils.tel.tel_subscription_utils import get_outgoing_voice_sub_id
 from acts.test_utils.tel.tel_test_utils import call_reject_leave_message
 from acts.test_utils.tel.tel_test_utils import call_setup_teardown
 from acts.test_utils.tel.tel_test_utils import ensure_network_generation
diff --git a/acts/tests/google/tel/live/TelLiveDataTest.py b/acts/tests/google/tel/live/TelLiveDataTest.py
index ce70a16..77983b7 100644
--- a/acts/tests/google/tel/live/TelLiveDataTest.py
+++ b/acts/tests/google/tel/live/TelLiveDataTest.py
@@ -20,6 +20,9 @@
 import time
 from acts.base_test import BaseTestClass
 from queue import Empty
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_subid_from_slot_index
+from acts.test_utils.tel.tel_subscription_utils import set_subid_for_data
 from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
 from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_ORIGINATED
 from acts.test_utils.tel.tel_defines import DIRECTION_MOBILE_TERMINATED
@@ -61,13 +64,11 @@
 from acts.test_utils.tel.tel_test_utils import \
     ensure_network_generation_for_subscription
 from acts.test_utils.tel.tel_test_utils import get_slot_index_from_subid
-from acts.test_utils.tel.tel_test_utils import get_subid_from_slot_index
 from acts.test_utils.tel.tel_test_utils import get_network_rat_for_subscription
 from acts.test_utils.tel.tel_test_utils import hangup_call
 from acts.test_utils.tel.tel_test_utils import multithread_func
 from acts.test_utils.tel.tel_test_utils import set_call_state_listen_level
 from acts.test_utils.tel.tel_test_utils import setup_sim
-from acts.test_utils.tel.tel_test_utils import set_subid_for_data
 from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode
 from acts.test_utils.tel.tel_test_utils import toggle_volte
 from acts.test_utils.tel.tel_test_utils import verify_http_connection
@@ -1285,15 +1286,6 @@
         else:
             return False
 
-    #SIM2 tests
-    def _reset_subscriptions_to_sim1(self, ads):
-        set_call_state_listen_level(self.log, ads[0], False,
-                                    self.sim_sub_ids[0][1])
-        time.sleep(WAIT_TIME_ANDROID_STATE_SETTLING)
-        setup_sim(self.log, ads[0], self.sim_sub_ids[0][0], True, False, True)
-        ensure_network_generation_for_subscription(
-            self.log, ads[0], self.sim_sub_ids[0][0], GEN_3G)
-
     @TelephonyBaseTest.tel_test_wrap
     def test_tethering_wifi_ssid_quotes(self):
         """WiFi Tethering test: SSID name have quotes.
diff --git a/acts/tests/google/tel/live/TelLivePreflightTest.py b/acts/tests/google/tel/live/TelLivePreflightTest.py
index 513730f..d40efa3 100644
--- a/acts/tests/google/tel/live/TelLivePreflightTest.py
+++ b/acts/tests/google/tel/live/TelLivePreflightTest.py
@@ -36,7 +36,6 @@
 from acts.test_utils.tel.tel_lookup_tables import operator_capabilities
 from acts.test_utils.tel.tel_test_utils import ensure_phones_default_state
 from acts.test_utils.tel.tel_test_utils import get_operator_name
-from acts.test_utils.tel.tel_test_utils import get_sub_ids_for_sim_slots
 from acts.test_utils.tel.tel_test_utils import setup_droid_properties
 from acts.test_utils.tel.tel_test_utils import set_phone_screen_on
 from acts.test_utils.tel.tel_test_utils import set_phone_silent_mode
diff --git a/acts/tests/google/tel/live/TelLiveVoiceTest.py b/acts/tests/google/tel/live/TelLiveVoiceTest.py
index 042f008..dec3db3 100644
--- a/acts/tests/google/tel/live/TelLiveVoiceTest.py
+++ b/acts/tests/google/tel/live/TelLiveVoiceTest.py
@@ -19,6 +19,13 @@
 
 import time
 from acts.utils import load_config
+from acts.test_utils.tel.tel_subscription_utils import \
+    get_subid_from_slot_index
+from acts.test_utils.tel.tel_subscription_utils import set_subid_for_data
+from acts.test_utils.tel.tel_subscription_utils import \
+    set_subid_for_message
+from acts.test_utils.tel.tel_subscription_utils import \
+    set_subid_for_outgoing_call
 from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
 from acts.test_utils.tel.tel_defines import CALL_STATE_ACTIVE
 from acts.test_utils.tel.tel_defines import CALL_STATE_HOLDING