Script changes to support Google Fi lab tests
TelLabProjectFiTest.py -- Modified the TelLiveProjectFiTest.py
from Tel/Live and created a new script in the Tel/Lab to support
the Lab callbox testing.
md8475a.py / anrtisu_utils.py - Has changes to support Google Fi
SIM profiles for TMO / SPR & USCC.
TelLabCmasTest.py / TelLabEtwsTest.py -- Added methods to
change the SIM profiles between TMO / SPR & USCC.
Bug: 127582302
Test: Locally tested the scripts with the callbox. Ran the scripts to
switch the profile to TMO > ran CMAS / ETWS tests > switched to
SPR / USCC > ran the CMAS / ETWS tests again.
Change-Id: If4b21e204c4203833d519e456180352e0d89a9fd
diff --git a/acts/framework/acts/controllers/anritsu_lib/md8475a.py b/acts/framework/acts/controllers/anritsu_lib/md8475a.py
index 52d4a65..8aeb153 100644
--- a/acts/framework/acts/controllers/anritsu_lib/md8475a.py
+++ b/acts/framework/acts/controllers/anritsu_lib/md8475a.py
@@ -862,7 +862,7 @@
sleep_interval = 1
sim_model = (self.get_simulation_model()).split(",")
- #wait 1 more round for GSM because of PS attach
+ # wait 1 more round for GSM because of PS attach
registration_check_iterations = 2 if sim_model[bts - 1] == "GSM" else 1
for _ in range(registration_check_iterations):
waiting_time = 0
@@ -964,6 +964,7 @@
"""
return self.send_query("TESTSTAT?")
+ # Common Default Gateway:
@property
def gateway_ipv4addr(self):
""" Gets the IPv4 address of the default gateway
@@ -989,6 +990,30 @@
self.send_command(cmd)
@property
+ def gateway_ipv6addr(self):
+ """ Gets the IPv6 address of the default gateway
+
+ Args:
+ None
+
+ Returns:
+ current UE status
+ """
+ return self.send_query("DGIPV6?")
+
+ @gateway_ipv6addr.setter
+ def gateway_ipv6addr(self, ipv6_addr):
+ """ sets the IPv6 address of the default gateway
+ Args:
+ ipv6_addr: IPv6 address of the default gateway
+
+ Returns:
+ None
+ """
+ cmd = "DGIPV6 " + ipv6_addr
+ self.send_command(cmd)
+
+ @property
def usim_key(self):
""" Gets the USIM Security Key
@@ -3512,6 +3537,86 @@
self._anritsu = anritsu
self.log = anritsu.log
+ # Default Gateway Selection
+ @property
+ def pdn_DG_selection(self):
+ """ Gets the default gateway for the PDN
+
+ Args:
+ None
+
+ Returns:
+ Current UE status
+ """
+ cmd = "PDNDEFAULTGATEWAY? " + self._pdn_number
+ return self._anritsu.send_query(cmd)
+
+ @pdn_DG_selection.setter
+ def pdn_DG_selection(self, selection):
+ """ Sets the default gateway selection for the PDN
+
+ Args:
+ Selection: COMMON or USER
+
+ Returns:
+ None
+ """
+ cmd = "PDNDEFAULTGATEWAY {},{}".format(self._pdn_number, selection)
+ self._anritsu.send_command(cmd)
+
+ # PDN specific Default Gateway:
+ @property
+ def pdn_gateway_ipv4addr(self):
+ """ Gets the IPv4 address of the default gateway
+
+ Args:
+ None
+
+ Returns:
+ current UE status
+ """
+ cmd = "PDNDGIPV4? " + self._pdn_number
+ return self._anritsu.send_query(cmd)
+
+ @pdn_gateway_ipv4addr.setter
+ def pdn_gateway_ipv4addr(self, ipv4_addr):
+ """ sets the IPv4 address of the default gateway
+
+ Args:
+ ipv4_addr: IPv4 address of the default gateway
+
+ Returns:
+ None
+ """
+ cmd = "PDNDGIPV4 {},{}".format(self._pdn_number, ipv4_addr)
+ self._anritsu.send_command(cmd)
+
+ @property
+ def pdn_gateway_ipv6addr(self):
+ """ Gets the IPv6 address of the default gateway
+
+ Args:
+ None
+
+ Returns:
+ current UE status
+ """
+ cmd = "PDNDGIPV6? " + self._pdn_number
+ return self._anritsu.send_query(cmd)
+
+ @pdn_gateway_ipv6addr.setter
+ def pdn_gateway_ipv6addr(self, ipv6_addr):
+ """ sets the IPv6 address of the default gateway
+
+ Args:
+ ipv6_addr: IPv6 address of the default gateway
+
+ Returns:
+ None
+ """
+ cmd = "PDNDGIPV6 {},{}".format(self._pdn_number, ipv6_addr)
+ self._anritsu.send_command(cmd)
+
@property
def ue_address_iptype(self):
""" Gets IP type of UE for particular PDN
@@ -4152,6 +4257,37 @@
self._anritsu.send_command(cmd)
@property
+ def fi_cscf_userslist_add(self):
+ """ Get CSCF USERLIST
+
+ Args:
+ None
+
+ Returns:
+ CSCF USERLIST
+ """
+ cmd = "IMSCSCFUSERSLIST? " + self._vnid
+ return self._anritsu.send_query(cmd)
+
+ @fi_cscf_userslist_add.setter
+ def fi_cscf_userslist_add(self, username):
+ """ Set CSCF USER to USERLIST
+ This is needed if IMS AUTH is enabled
+
+ Args:
+ username: CSCF Username
+
+ Returns:
+ None
+ """
+ cmd = "IMSCSCFUSERSLISTADD {},{},00112233445566778899AABBCCDDEEFF,TS34108,AKAV1_MD5,\
+ OPC,00000000000000000000000000000000,8000,TRUE,FALSE,0123456789ABCDEF0123456789ABCDEF,\
+ 54CDFEAB9889000001326754CDFEAB98,6754CDFEAB9889BAEFDC457623100132,\
+ 326754CDFEAB9889BAEFDC4576231001,TRUE,TRUE,TRUE".format(
+ self._vnid, username)
+ self._anritsu.send_command(cmd)
+
+ @property
def vzw_cscf_userslist_add(self):
""" Get CSCF USERLIST
diff --git a/acts/framework/acts/test_utils/tel/anritsu_utils.py b/acts/framework/acts/test_utils/tel/anritsu_utils.py
index ca58f3c..61178b5 100644
--- a/acts/framework/acts/test_utils/tel/anritsu_utils.py
+++ b/acts/framework/acts/test_utils/tel/anritsu_utils.py
@@ -15,9 +15,9 @@
# limitations under the License.
import time
+
from queue import Empty
from datetime import datetime
-
from acts.controllers.anritsu_lib._anritsu_utils import AnritsuUtils
from acts.controllers.anritsu_lib.md8475a import BtsNumber
from acts.controllers.anritsu_lib.md8475a import BtsNwNameEnable
@@ -70,6 +70,9 @@
P0250Ax = "P0250Ax"
VzW12349 = "VzW12349"
P0135Ax = "P0135Ax"
+FiTMO = "FiTMO"
+FiSPR = "FiSPR"
+FiUSCC = "FiUSCC"
# Test PLMN information
TEST_PLMN_LTE_NAME = "MD8475A_LTE"
@@ -86,6 +89,12 @@
VzW_MNC = "480"
TMO_MCC = "310"
TMO_MNC = "260"
+Fi_TMO_MCC = "310"
+Fi_TMO_MNC = "260"
+Fi_SPR_MCC = "310"
+Fi_SPR_MNC = "120"
+Fi_USCC_MCC = "311"
+Fi_USCC_MNC = "580"
# IP address information for internet sharing
#GATEWAY_IPV4_ADDR = "192.168.137.1"
@@ -111,6 +120,31 @@
CSCF_IPV6_ADDR_2 = "2001:0:0:2::2"
CSCF_IPV6_ADDR_3 = "2001:0:0:3::2"
+# Google Fi IP Config:
+
+Fi_GATEWAY_IPV4_ADDR_Data = "100.107.235.94"
+Fi_GATEWAY_IPV6_ADDR_Data = "fe80::aef2:c5ff:fe71:4b9"
+Fi_GATEWAY_IPV4_ADDR_IMS_911 = "192.168.1.2"
+Fi_GATEWAY_IPV6_ADDR_IMS_911 = "2001:0:0:1::2"
+
+Fi_UE_IPV4_ADDR_Data = "100.107.235.81"
+Fi_UE_IPV4_ADDR_IMS = "192.168.1.1"
+Fi_UE_IPV4_ADDR_911 = "192.168.1.11"
+Fi_UE_IPV6_ADDR_Data = "2620::1000:1551:1140:c0f9:d6a8:44eb"
+Fi_UE_IPV6_ADDR_IMS = "2001:0:0:1::1"
+Fi_UE_IPV6_ADDR_911 = "2001:0:0:2::1"
+
+Fi_DNS_IPV4_ADDR_Pri = "8.8.8.8"
+Fi_DNS_IPV4_ADDR_Sec = "8.8.8.4"
+Fi_DNS_IPV6_ADDR = "2001:4860:4860::8888"
+
+Fi_CSCF_IPV4_ADDR_Data = "192.168.1.2"
+Fi_CSCF_IPV6_ADDR_Data = "2001:0:0:1::2"
+Fi_CSCF_IPV4_ADDR_IMS = "192.168.1.2"
+Fi_CSCF_IPV6_ADDR_IMS = "2001:0:0:1::3"
+Fi_CSCF_IPV4_ADDR_911 = "192.168.1.12"
+Fi_CSCF_IPV6_ADDR_911 = "2001:0:0:2::2"
+
# GSM BAND constants
GSM_BAND_GSM450 = "GSM450"
GSM_BAND_GSM480 = "GSM480"
@@ -132,9 +166,32 @@
DEFAULT_1X_OUTPUT_LEVEL = -35
DEFAULT_INPUT_LEVEL = 0
DEFAULT_LTE_BAND = [2, 4]
+Fi_LTE_TMO_BAND = [4]
+Fi_LTE_SPR_BAND = [25]
+Fi_LTE_USCC_BAND = [12]
+Fi_GSM_TMO_BAND = GSM_BAND_PGSM900
DEFAULT_WCDMA_BAND = 1
DEFAULT_WCDMA_PACKET_RATE = BtsPacketRate.WCDMA_DLHSAUTO_REL7_ULHSAUTO
DEFAULT_GSM_BAND = GSM_BAND_GSM850
+
+#Google Fi CDMA Bands
+
+Fi_USCC1X_MCC = 209
+Fi_USCC1X_BAND = 1
+Fi_USCC1X_CH = 600
+Fi_USCC1X_SID = 5
+Fi_USCC1X_NID = 21
+
+Fi_SPR1X_MCC = 320
+Fi_SPR1X_BAND = 1
+Fi_SPR1X_CH = 600
+Fi_SPR1X_SID = 4183
+Fi_SPR1X_NID = 233
+
+Fi_EVDO_BAND = 1
+Fi_EVDO_CH = 625
+Fi_EVDO_SECTOR_ID = "00000000,00000000,00000000,00000000"
+
DEFAULT_CDMA1X_BAND = 0
DEFAULT_CDMA1X_CH = 356
DEFAULT_CDMA1X_SID = 0
@@ -207,6 +264,8 @@
PDN_NO_1 = 1
PDN_NO_2 = 2
PDN_NO_3 = 3
+PDN_NO_4 = 4
+PDN_NO_5 = 5
# IMS Services parameters
DEFAULT_VNID = 1
@@ -219,6 +278,12 @@
TMO_USERLIST_NAME = "310260123456789@msg.lab.t-mobile.com"
VZW_USERLIST_NAME = "001010123456789@test.3gpp.com"
+# Google Fi IMS Services parameters
+Fi_CSCF_Monitoring_UA_URI = '"sip:310260971239432@ims.mnc260.mcc310.3gppnetwork.org"'
+Fi_CSCF_Virtual_UA_URI = '"sip:0123456789@msg.pc.t-mobile.com"'
+Fi_CSCF_HOSTNAME = '"ims.mnc260.mcc310.3gppnetwork.org"'
+Fi_USERLIST_NAME = "310260971239432@msg.pc.t-mobile.com"
+
#Cell Numbers
CELL_1 = 1
CELL_2 = 2
@@ -226,7 +291,6 @@
# default ims virtual network id for Anritsu ims call test.
DEFAULT_IMS_VIRTUAL_NETWORK_ID = 1
-
def cb_serial_number():
""" CMAS/ETWS serial number generator """
i = 0x3000
@@ -255,6 +319,8 @@
anritsu_handle.send_command("SECURITY3G MILENAGE")
anritsu_handle.send_command(
"MILENAGEOP 5F1D289C5D354D0A140C2548F5F3E3BA")
+ elif sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ anritsu_handle.usim_key = "000102030405060708090A0B0C0D0E0F"
def save_anritsu_log_files(anritsu_handle, test_name, user_params):
@@ -312,7 +378,7 @@
bts.nw_fullname = TEST_PLMN_LTE_NAME
bts.mcc = get_lte_mcc(user_params, cell_no, sim_card)
bts.mnc = get_lte_mnc(user_params, cell_no, sim_card)
- bts.band = get_lte_band(user_params, cell_no)
+ bts.band = get_lte_band(user_params, cell_no, sim_card)
bts.transmode = get_transmission_mode(user_params, cell_no)
bts.dl_antenna = get_dl_antenna(user_params, cell_no)
bts.output_level = DEFAULT_OUTPUT_LEVEL
@@ -361,7 +427,7 @@
bts.nw_fullname = TEST_PLMN_GSM_NAME
bts.mcc = get_gsm_mcc(user_params, cell_no, sim_card)
bts.mnc = get_gsm_mnc(user_params, cell_no, sim_card)
- bts.band = get_gsm_band(user_params, cell_no)
+ bts.band = get_gsm_band(user_params, cell_no, sim_card)
bts.rac = get_gsm_rac(user_params, cell_no)
bts.lac = get_gsm_lac(user_params, cell_no)
bts.output_level = DEFAULT_OUTPUT_LEVEL
@@ -409,6 +475,7 @@
def _init_PDN(anritsu_handle,
+ sim_card,
pdn,
ipv4,
ipv6,
@@ -427,21 +494,43 @@
None
"""
# Setting IP address for internet connection sharing
- anritsu_handle.gateway_ipv4addr = GATEWAY_IPV4_ADDR
- pdn.ue_address_ipv4 = ipv4
- pdn.ue_address_ipv6 = ipv6
- if ims_binding:
- pdn.pdn_ims = Switch.ENABLE
- pdn.pdn_vnid = vnid_number
- else:
- pdn.primary_dns_address_ipv4 = DNS_IPV4_ADDR
- pdn.secondary_dns_address_ipv4 = DNS_IPV4_ADDR
- pdn.cscf_address_ipv4 = CSCF_IPV4_ADDR
+ # Google Fi _init_PDN
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn.ue_address_ipv4 = ipv4
+ pdn.ue_address_ipv6 = ipv6
+ if ims_binding:
+ pdn.pdn_ims = Switch.ENABLE
+ pdn.pdn_vnid = vnid_number
+ pdn.pdn_DG_selection = 'USER'
+ pdn.pdn_gateway_ipv4addr = Fi_GATEWAY_IPV4_ADDR_IMS_911
+ pdn.pdn_gateway_ipv6addr = Fi_GATEWAY_IPV6_ADDR_IMS_911
+
+ else:
+ anritsu_handle.gateway_ipv4addr = Fi_GATEWAY_IPV4_ADDR_Data
+ anritsu_handle.gateway_ipv6addr = Fi_GATEWAY_IPV6_ADDR_Data
+ pdn.primary_dns_address_ipv4 = Fi_DNS_IPV4_ADDR_Pri
+ pdn.secondary_dns_address_ipv4 = Fi_DNS_IPV4_ADDR_Sec
+ pdn.dns_address_ipv6 = Fi_DNS_IPV6_ADDR
+ pdn.cscf_address_ipv4 = Fi_CSCF_IPV4_ADDR_Data
+ pdn.cscf_address_ipv6 = Fi_CSCF_IPV6_ADDR_Data
+ # Pixel Lab _init_PDN_
+ else:
+ anritsu_handle.gateway_ipv4addr = GATEWAY_IPV4_ADDR
+ pdn.ue_address_ipv4 = ipv4
+ pdn.ue_address_ipv6 = ipv6
+ if ims_binding:
+ pdn.pdn_ims = Switch.ENABLE
+ pdn.pdn_vnid = vnid_number
+ else:
+ pdn.primary_dns_address_ipv4 = DNS_IPV4_ADDR
+ pdn.secondary_dns_address_ipv4 = DNS_IPV4_ADDR
+ pdn.cscf_address_ipv4 = CSCF_IPV4_ADDR
def _init_IMS(anritsu_handle,
vnid,
sim_card=None,
+ ipv4_address=CSCF_IPV4_ADDR,
ipv6_address=CSCF_IPV6_ADDR,
ip_type="IPV4V6",
auth=False):
@@ -456,32 +545,52 @@
None
"""
# vnid.sync = Switch.ENABLE # supported in 6.40a release
- vnid.cscf_address_ipv4 = CSCF_IPV4_ADDR
- vnid.cscf_address_ipv6 = ipv6_address
- vnid.imscscf_iptype = ip_type
- vnid.dns = Switch.DISABLE
- vnid.ndp_nic = NDP_NIC_NAME
- vnid.ndp_prefix = ipv6_address
- if sim_card == P0135Ax:
- vnid.cscf_monitoring_ua = TMO_CSCF_Monitoring_UA_URI
- vnid.cscf_virtual_ua = TMO_CSCF_Virtual_UA_URI
- vnid.cscf_host_name = CSCF_HOSTNAME
- vnid.cscf_precondition = "ENABLE"
- vnid.cscf_ims_authentication = "DISABLE"
- if auth:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ vnid.cscf_address_ipv4 = ipv4_address
+ vnid.cscf_address_ipv6 = ipv6_address
+ vnid.imscscf_iptype = ip_type
+ vnid.dns = Switch.DISABLE
+ vnid.ndp_nic = NDP_NIC_NAME
+ vnid.ndp_prefix = ipv6_address
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ vnid.cscf_monitoring_ua = Fi_CSCF_Monitoring_UA_URI
+ vnid.cscf_virtual_ua = Fi_CSCF_Virtual_UA_URI
+ vnid.cscf_host_name = Fi_CSCF_HOSTNAME
vnid.cscf_ims_authentication = "ENABLE"
- vnid.tmo_cscf_userslist_add = TMO_USERLIST_NAME
- elif sim_card == VzW12349:
- vnid.cscf_monitoring_ua = CSCF_Monitoring_UA_URI
- vnid.cscf_virtual_ua = CSCF_Virtual_UA_URI
- vnid.cscf_ims_authentication = "DISABLE"
- if auth:
- vnid.cscf_ims_authentication = "ENABLE"
- vnid.vzw_cscf_userslist_add = VZW_USERLIST_NAME
- else:
- vnid.cscf_monitoring_ua = CSCF_Monitoring_UA_URI
- vnid.psap = Switch.ENABLE
- vnid.psap_auto_answer = Switch.ENABLE
+ if auth:
+ vnid.cscf_ims_authentication = "ENABLE"
+ vnid.fi_cscf_userslist_add = Fi_USERLIST_NAME
+ else:
+ vnid.cscf_monitoring_ua = CSCF_Monitoring_UA_URI
+ vnid.psap = Switch.ENABLE
+ vnid.psap_auto_answer = Switch.ENABLE
+ else:
+ vnid.cscf_address_ipv4 = CSCF_IPV4_ADDR
+ vnid.cscf_address_ipv6 = ipv6_address
+ vnid.imscscf_iptype = ip_type
+ vnid.dns = Switch.DISABLE
+ vnid.ndp_nic = NDP_NIC_NAME
+ vnid.ndp_prefix = ipv6_address
+ if sim_card == P0135Ax:
+ vnid.cscf_monitoring_ua = TMO_CSCF_Monitoring_UA_URI
+ vnid.cscf_virtual_ua = TMO_CSCF_Virtual_UA_URI
+ vnid.cscf_host_name = CSCF_HOSTNAME
+ vnid.cscf_precondition = "ENABLE"
+ vnid.cscf_ims_authentication = "DISABLE"
+ if auth:
+ vnid.cscf_ims_authentication = "ENABLE"
+ vnid.tmo_cscf_userslist_add = TMO_USERLIST_NAME
+ elif sim_card == VzW12349:
+ vnid.cscf_monitoring_ua = CSCF_Monitoring_UA_URI
+ vnid.cscf_virtual_ua = CSCF_Virtual_UA_URI
+ vnid.cscf_ims_authentication = "DISABLE"
+ if auth:
+ vnid.cscf_ims_authentication = "ENABLE"
+ vnid.vzw_cscf_userslist_add = VZW_USERLIST_NAME
+ else:
+ vnid.cscf_monitoring_ua = CSCF_Monitoring_UA_URI
+ vnid.psap = Switch.ENABLE
+ vnid.psap_auto_answer = Switch.ENABLE
def set_system_model_lte_lte(anritsu_handle, user_params, sim_card):
@@ -494,46 +603,93 @@
Returns:
Lte and Wcdma BTS objects
"""
- anritsu_handle.set_simulation_model(BtsTechnology.LTE, BtsTechnology.LTE)
+ anritsu_handle.set_simulation_model(BtsTechnology.LTE,
+ BtsTechnology.LTE)
# setting BTS parameters
lte1_bts = anritsu_handle.get_BTS(BtsNumber.BTS1)
lte2_bts = anritsu_handle.get_BTS(BtsNumber.BTS2)
_init_lte_bts(lte1_bts, user_params, CELL_1, sim_card)
_init_lte_bts(lte2_bts, user_params, CELL_2, sim_card)
- pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
- pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
- pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
- # Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
+ # _init_IMS(
+ # anritsu_handle,
+ # vnid1,
+ # sim_card,
+ # ipv4_address=CSCF_IPV4_ADDR,
+ # ipv6_address=CSCF_IPV6_ADDR,
+ # auth=False)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
- return [lte1_bts, lte2_bts]
+ _init_lte_bts(lte1_bts, user_params, CELL_1, sim_card)
+ _init_lte_bts(lte2_bts, user_params, CELL_2, sim_card)
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle, sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
+ return [lte1_bts, lte2_bts]
def set_system_model_wcdma_wcdma(anritsu_handle, user_params, sim_card):
@@ -555,7 +711,11 @@
_init_wcdma_bts(wcdma2_bts, user_params, CELL_2, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data, Fi_UE_IPV6_ADDR_Data,
+ False)
+ else:
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [wcdma1_bts, wcdma2_bts]
@@ -579,35 +739,72 @@
pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+ # Initialize PDN IP address.
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
+ return [lte_bts, wcdma_bts]
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle, sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
return [lte_bts, wcdma_bts]
@@ -627,39 +824,76 @@
gsm_bts = anritsu_handle.get_BTS(BtsNumber.BTS2)
_init_lte_bts(lte_bts, user_params, CELL_1, sim_card)
_init_gsm_bts(gsm_bts, user_params, CELL_2, sim_card)
- pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
- pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
- pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
- # Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+ # Initialize PDN IP address.
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
+ return [lte_bts, gsm_bts]
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle, sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
return [lte_bts, gsm_bts]
@@ -680,39 +914,76 @@
cdma1x_bts = anritsu_handle.get_BTS(BtsNumber.BTS2)
_init_lte_bts(lte_bts, user_params, CELL_1, sim_card)
_init_1x_bts(cdma1x_bts, user_params, CELL_2, sim_card)
- pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
- pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
- pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
- # Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+ # Initialize PDN IP address.
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
+ return [lte_bts, cdma1x_bts]
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle, sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
return [lte_bts, cdma1x_bts]
@@ -732,39 +1003,76 @@
evdo_bts = anritsu_handle.get_BTS(BtsNumber.BTS2)
_init_lte_bts(lte_bts, user_params, CELL_1, sim_card)
_init_evdo_bts(evdo_bts, user_params, CELL_2, sim_card)
- pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
- pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
- pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
- # Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+ # Initialize PDN IP address.
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
+ return [lte_bts, evdo_bts]
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle, sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle, sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
return [lte_bts, evdo_bts]
@@ -786,7 +1094,11 @@
_init_gsm_bts(gsm_bts, user_params, CELL_2, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle, sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle, sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [wcdma_bts, gsm_bts]
@@ -808,7 +1120,11 @@
_init_gsm_bts(gsm2_bts, user_params, CELL_2, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [gsm1_bts, gsm2_bts]
@@ -823,43 +1139,82 @@
Lte BTS object
"""
anritsu_handle.set_simulation_model(BtsTechnology.LTE)
- # setting BTS parameters
+ # setting Fi BTS parameters
lte_bts = anritsu_handle.get_BTS(BtsNumber.BTS1)
_init_lte_bts(lte_bts, user_params, CELL_1, sim_card)
- pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
- pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
- pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
- # Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
- _init_PDN(anritsu_handle, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
- _init_PDN(anritsu_handle, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
- vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
- if sim_card == P0135Ax:
+
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ pdn4 = anritsu_handle.get_PDN(PDN_NO_4)
+ pdn5 = anritsu_handle.get_PDN(PDN_NO_5)
+ # Initialize PDN IP address.
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle,sim_card, pdn2, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle,sim_card, pdn3, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ _init_PDN(anritsu_handle, sim_card, pdn4, Fi_UE_IPV4_ADDR_IMS,
+ Fi_UE_IPV6_ADDR_IMS,
+ True)
+ _init_PDN(anritsu_handle, sim_card, pdn5, Fi_UE_IPV4_ADDR_911,
+ Fi_UE_IPV6_ADDR_911,
+ True)
+ vnid1 = anritsu_handle.get_IMS(1)
vnid2 = anritsu_handle.get_IMS(2)
- vnid3 = anritsu_handle.get_IMS(3)
_init_IMS(
anritsu_handle,
vnid1,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR,
+ ipv4_address=Fi_CSCF_IPV4_ADDR_IMS,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_IMS,
auth=True)
_init_IMS(
anritsu_handle,
vnid2,
sim_card,
- ipv6_address=CSCF_IPV6_ADDR_2,
- ip_type="IPV6")
- _init_IMS(
- anritsu_handle,
- vnid3,
- sim_card,
- ipv6_address=CSCF_IPV6_ADDR_3,
- ip_type="IPV6")
- elif sim_card == VzW12349:
- _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ ipv4_address=Fi_CSCF_IPV4_ADDR_911,
+ ipv6_address=Fi_CSCF_IPV6_ADDR_911,
+ auth=False)
+ return [lte_bts]
else:
- _init_IMS(anritsu_handle, vnid1, sim_card)
- return [lte_bts]
+ # setting BTS parameters
+ pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
+ pdn2 = anritsu_handle.get_PDN(PDN_NO_2)
+ pdn3 = anritsu_handle.get_PDN(PDN_NO_3)
+ # Initialize PDN IP address for internet connection sharing
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, True)
+ _init_PDN(anritsu_handle,sim_card, pdn2, UE_IPV4_ADDR_2, UE_IPV6_ADDR_2, False)
+ _init_PDN(anritsu_handle,sim_card, pdn3, UE_IPV4_ADDR_3, UE_IPV6_ADDR_3, True)
+ vnid1 = anritsu_handle.get_IMS(DEFAULT_VNID)
+ if sim_card == P0135Ax:
+ vnid2 = anritsu_handle.get_IMS(2)
+ vnid3 = anritsu_handle.get_IMS(3)
+ _init_IMS(
+ anritsu_handle,
+ vnid1,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR,
+ auth=True)
+ _init_IMS(
+ anritsu_handle,
+ vnid2,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_2,
+ ip_type="IPV6")
+ _init_IMS(
+ anritsu_handle,
+ vnid3,
+ sim_card,
+ ipv6_address=CSCF_IPV6_ADDR_3,
+ ip_type="IPV6")
+ elif sim_card == VzW12349:
+ _init_IMS(anritsu_handle, vnid1, sim_card, auth=True)
+ else:
+ _init_IMS(anritsu_handle, vnid1, sim_card)
+ return [lte_bts]
def set_system_model_wcdma(anritsu_handle, user_params, sim_card):
@@ -878,7 +1233,11 @@
_init_wcdma_bts(wcdma_bts, user_params, CELL_1, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [wcdma_bts]
@@ -898,7 +1257,11 @@
_init_gsm_bts(gsm_bts, user_params, CELL_1, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_NO_1)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [gsm_bts]
@@ -919,7 +1282,11 @@
_init_1x_bts(cdma1x_bts, user_params, CELL_1, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_ONE)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [cdma1x_bts]
@@ -943,7 +1310,11 @@
_init_evdo_bts(evdo_bts, user_params, CELL_2, sim_card)
pdn1 = anritsu_handle.get_PDN(PDN_ONE)
# Initialize PDN IP address for internet connection sharing
- _init_PDN(anritsu_handle, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ _init_PDN(anritsu_handle,sim_card, pdn1, Fi_UE_IPV4_ADDR_Data,
+ Fi_UE_IPV6_ADDR_Data, False)
+ else:
+ _init_PDN(anritsu_handle,sim_card, pdn1, UE_IPV4_ADDR_1, UE_IPV6_ADDR_1, False)
return [cdma1x_bts]
@@ -1792,7 +2163,7 @@
status = False
if event['data']['cmasSeverity'].lower() != severity.lower():
- Log.info("Wrong cmasSeverity received")
+ log.info("Wrong cmasSeverity received")
status = False
except Empty:
log.info("Timeout: Expected event is not received.")
@@ -1914,7 +2285,7 @@
return dl_antenna
-def get_lte_band(user_params, cell_no):
+def get_lte_band(user_params, cell_no, sim_card):
""" Returns the LTE BAND to be used from the user specified parameters
or default value
@@ -1927,7 +2298,14 @@
LTE BAND to be used
"""
key = "cell{}_lte_band".format(cell_no)
- band = DEFAULT_LTE_BAND[cell_no - 1]
+ if sim_card == FiTMO:
+ band = Fi_LTE_TMO_BAND[cell_no - 1]
+ elif sim_card == FiSPR:
+ band = Fi_LTE_SPR_BAND[cell_no - 1]
+ elif sim_card == FiUSCC:
+ band = Fi_LTE_USCC_BAND[cell_no - 1]
+ else:
+ band = DEFAULT_LTE_BAND[cell_no - 1]
return user_params.get(key, band)
@@ -1948,7 +2326,7 @@
return wcdma_band
-def get_gsm_band(user_params, cell_no):
+def get_gsm_band(user_params, cell_no, sim_card):
""" Returns the GSM BAND to be used from the user specified parameters
or default value
@@ -1961,7 +2339,10 @@
GSM BAND to be used
"""
key = "cell{}_gsm_band".format(cell_no)
- gsm_band = user_params.get(key, DEFAULT_GSM_BAND)
+ if sim_card == FiTMO:
+ gsm_band = Fi_GSM_TMO_BAND
+ else:
+ gsm_band = user_params.get(key, DEFAULT_GSM_BAND)
return gsm_band
@@ -1978,7 +2359,14 @@
1X BAND to be used
"""
key = "cell{}_1x_band".format(cell_no)
- band = VzW_CDMA1x_BAND if sim_card == VzW12349 else DEFAULT_CDMA1X_BAND
+ if sim_card == FiSPR:
+ band = Fi_SPR1X_BAND
+ elif sim_card == FiUSCC:
+ band = Fi_USCC1X_BAND
+ elif sim_card == VzW12349:
+ band = VzW_CDMA1x_BAND
+ else:
+ band = DEFAULT_CDMA1X_BAND
return user_params.get(key, band)
@@ -1995,7 +2383,12 @@
EVDO BAND to be used
"""
key = "cell{}_evdo_band".format(cell_no)
- band = VzW_EVDO_BAND if sim_card == VzW12349 else DEFAULT_EVDO_BAND
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ band = Fi_EVDO_BAND
+ elif sim_card == VzW12349:
+ band = VzW_EVDO_BAND
+ else:
+ band = DEFAULT_EVDO_BAND
return user_params.get(key, band)
@@ -2093,7 +2486,16 @@
"""
key = "cell{}_lte_mcc".format(cell_no)
- mcc = VzW_MCC if sim_card == VzW12349 else DEFAULT_MCC
+ if sim_card == FiTMO:
+ mcc = Fi_TMO_MCC
+ elif sim_card == FiSPR:
+ mcc = Fi_SPR_MCC
+ elif sim_card == FiUSCC:
+ mcc = Fi_USCC_MCC
+ elif sim_card == VzW12349:
+ mcc = VzW_MCC
+ else:
+ mcc = DEFAULT_MCC
return user_params.get(key, mcc)
@@ -2110,7 +2512,16 @@
LTE MNC to be used
"""
key = "cell{}_lte_mnc".format(cell_no)
- mnc = VzW_MNC if sim_card == VzW12349 else DEFAULT_MNC
+ if sim_card == FiTMO:
+ mnc = Fi_TMO_MNC
+ elif sim_card == FiSPR:
+ mnc = Fi_SPR_MNC
+ elif sim_card == FiUSCC:
+ mnc = Fi_USCC_MNC
+ elif sim_card == VzW12349:
+ mnc = VzW_MNC
+ else:
+ mnc = DEFAULT_MNC
return user_params.get(key, mnc)
@@ -2195,7 +2606,14 @@
1X MCC to be used
"""
key = "cell{}_1x_mcc".format(cell_no)
- mcc = VzW_MCC if sim_card == VzW12349 else DEFAULT_MCC
+ if sim_card == FiSPR:
+ mcc = Fi_SPR1X_MCC
+ elif sim_card == FiUSCC:
+ mcc = Fi_USCC1X_MCC
+ elif sim_card == VzW12349:
+ mcc = VzW_MCC
+ else:
+ mcc = DEFAULT_MCC
return user_params.get(key, mcc)
@@ -2212,7 +2630,14 @@
1X Channel to be used
"""
key = "cell{}_1x_channel".format(cell_no)
- ch = VzW_CDMA1x_CH if sim_card == VzW12349 else DEFAULT_CDMA1X_CH
+ if sim_card == FiSPR:
+ ch = Fi_SPR1X_CH
+ elif sim_card == FiUSCC:
+ ch = Fi_USCC1X_CH
+ elif sim_card == VzW12349:
+ ch = VzW_CDMA1x_CH
+ else:
+ ch = DEFAULT_CDMA1X_CH
return user_params.get(key, ch)
@@ -2229,7 +2654,14 @@
1X SID to be used
"""
key = "cell{}_1x_sid".format(cell_no)
- sid = VzW_CDMA1X_SID if sim_card == VzW12349 else DEFAULT_CDMA1X_SID
+ if sim_card == FiSPR:
+ sid = Fi_SPR1X_SID
+ elif sim_card == FiUSCC:
+ sid = Fi_USCC1X_SID
+ elif sim_card == VzW12349:
+ sid = VzW_CDMA1X_SID
+ else:
+ sid = DEFAULT_CDMA1X_SID
return user_params.get(key, sid)
@@ -2246,7 +2678,14 @@
1X NID to be used
"""
key = "cell{}_1x_nid".format(cell_no)
- nid = VzW_CDMA1X_NID if sim_card == VzW12349 else DEFAULT_CDMA1X_NID
+ if sim_card == FiSPR:
+ nid = Fi_SPR1X_NID
+ elif sim_card == FiUSCC:
+ nid = Fi_USCC1X_NID
+ elif sim_card == VzW12349:
+ nid = VzW_CDMA1X_NID
+ else:
+ nid = DEFAULT_CDMA1X_NID
return user_params.get(key, nid)
@@ -2263,7 +2702,12 @@
EVDO Channel to be used
"""
key = "cell{}_evdo_channel".format(cell_no)
- ch = VzW_EVDO_CH if sim_card == VzW12349 else DEFAULT_EVDO_CH
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ ch = Fi_EVDO_CH
+ elif sim_card == VzW12349:
+ ch = VzW_EVDO_CH
+ else:
+ ch = DEFAULT_EVDO_CH
return user_params.get(key, ch)
@@ -2280,8 +2724,12 @@
EVDO SID to be used
"""
key = "cell{}_evdo_sid".format(cell_no)
- return user_params.get(key, DEFAULT_EVDO_SECTOR_ID)
- sid = VzW_EVDO_SECTOR_ID if sim_card == VzW12349 else DEFAULT_EVDO_SECTOR_ID
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ sid = Fi_EVDO_SECTOR_ID
+ elif sim_card == VzW12349:
+ sid = VzW_EVDO_SECTOR_ID
+ else:
+ sid = DEFAULT_EVDO_SECTOR_ID
return user_params.get(key, sid)
@@ -2305,6 +2753,19 @@
def set_post_sim_params(anritsu_handle, user_params, sim_card):
+ if sim_card == FiTMO or sim_card == FiSPR or sim_card == FiUSCC:
+ anritsu_handle.send_command("PDNCHECKAPN 1,h2g2")
+ anritsu_handle.send_command("PDNCHECKAPN 2,n.nv.ispsn")
+ anritsu_handle.send_command("PDNCHECKAPN 3,fast.t-mobile.com")
+ anritsu_handle.send_command("PDNCHECKAPN 4,ims")
+ anritsu_handle.send_command("PDNCHECKAPN 5,*")
+ anritsu_handle.send_command("PDNIMS 1,DISABLE")
+ anritsu_handle.send_command("PDNIMS 2,DISABLE")
+ anritsu_handle.send_command("PDNIMS 3,DISABLE")
+ anritsu_handle.send_command("PDNIMS 4,ENABLE")
+ anritsu_handle.send_command("PDNVNID 4,1")
+ anritsu_handle.send_command("PDNIMS 5,ENABLE")
+ anritsu_handle.send_command("PDNVNID 5,2")
if sim_card == P0135Ax:
anritsu_handle.send_command("PDNCHECKAPN 1,ims")
anritsu_handle.send_command("PDNCHECKAPN 2,fast.t-mobile.com")
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 0c0b5a7..038ed00 100644
--- a/acts/framework/acts/test_utils/tel/tel_test_utils.py
+++ b/acts/framework/acts/test_utils/tel/tel_test_utils.py
@@ -4747,6 +4747,18 @@
return True
+def ensure_preferred_network_type_for_subscription(
+ ad,
+ network_preference
+ ):
+ sub_id = ad.droid.subscriptionGetDefaultSubId()
+ if not ad.droid.telephonySetPreferredNetworkTypesForSubscription(
+ network_preference, sub_id):
+ ad.log.error("Set sub_id %s Preferred Networks Type %s failed.",
+ sub_id, network_preference)
+ return True
+
+
def ensure_network_rat(log,
ad,
network_preference,
diff --git a/acts/tests/google/tel/lab/TelLabCmasTest.py b/acts/tests/google/tel/lab/TelLabCmasTest.py
index dc1d666..8a48c64 100644
--- a/acts/tests/google/tel/lab/TelLabCmasTest.py
+++ b/acts/tests/google/tel/lab/TelLabCmasTest.py
@@ -197,6 +197,24 @@
return False
return True
+ def test_carrier_tmobile(self):
+ """ Sets the Carrier to TMO.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiTMO")
+
+ def test_carrier_sprint(self):
+ """ Sets the Carrier to SPR.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiSPR")
+
+ def test_carrier_uscc(self):
+ """ Sets the Carrier to USCC.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiUSCC")
+
""" Tests Begin """
@test_tracker_info(uuid="e5ddf562-e94b-4b58-bc7d-6635c01f290e")
diff --git a/acts/tests/google/tel/lab/TelLabEtwsTest.py b/acts/tests/google/tel/lab/TelLabEtwsTest.py
index 59e12a0..5eff288 100644
--- a/acts/tests/google/tel/lab/TelLabEtwsTest.py
+++ b/acts/tests/google/tel/lab/TelLabEtwsTest.py
@@ -153,6 +153,24 @@
return False
return True
+ def test_carrier_tmobile(self):
+ """ Sets the Carrier to TMO.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiTMO")
+
+ def test_carrier_sprint(self):
+ """ Sets the Carrier to SPR.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiSPR")
+
+ def test_carrier_uscc(self):
+ """ Sets the Carrier to USCC.
+ Returns: None
+ """
+ setattr(self.ad, "sim_card", "FiUSCC")
+
""" Tests Begin """
@test_tracker_info(uuid="af4a00d0-9a91-45d5-9f65-9541e64a57f2")
diff --git a/acts/tests/google/tel/lab/TelLabProjectFiTest.py b/acts/tests/google/tel/lab/TelLabProjectFiTest.py
new file mode 100644
index 0000000..6a3a979
--- /dev/null
+++ b/acts/tests/google/tel/lab/TelLabProjectFiTest.py
@@ -0,0 +1,704 @@
+#!/usr/bin/env python3
+#
+# Copyright 2016 - The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""
+Fi Switching Methods
+"""
+import time
+from acts.controllers.anritsu_lib._anritsu_utils import AnritsuError
+from acts.controllers.anritsu_lib.md8475a import CBCHSetup
+from acts.controllers.anritsu_lib.md8475a import CTCHSetup
+from acts.controllers.anritsu_lib.md8475a import MD8475A
+from acts.test_utils.tel.anritsu_utils import cb_serial_number
+from acts.test_utils.tel.anritsu_utils import set_system_model_lte
+from acts.test_utils.tel.anritsu_utils import set_usim_parameters
+from acts.test_utils.tel.anritsu_utils import set_post_sim_params
+from acts.test_utils.tel.tel_test_utils import \
+ ensure_preferred_network_type_for_subscription
+from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
+from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode
+from acts.test_utils.tel.tel_test_utils import start_qxdm_loggers
+from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
+from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA
+from acts.test_utils.tel.tel_defines import RAT_FAMILY_LTE
+from acts.test_decorators import test_tracker_info
+from acts.test_utils.tel.tel_defines import RAT_LTE
+from acts.test_utils.tel.tel_defines import CARRIER_SPT
+from acts.test_utils.tel.tel_defines import CARRIER_TMO
+from acts.test_utils.tel.tel_defines import CARRIER_USCC
+from acts.test_utils.tel.tel_lookup_tables import operator_name_from_plmn_id
+from acts.test_utils.tel.tel_test_utils import abort_all_tests
+from acts.test_utils.tel.tel_test_utils import ensure_phone_subscription
+from acts.test_utils.tel.tel_test_utils import ensure_wifi_connected
+from acts.test_utils.tel.tel_test_utils import is_sim_ready
+from acts.test_utils.tel.tel_test_utils import log_screen_shot
+from acts.test_utils.tel.tel_test_utils import multithread_func
+from acts.test_utils.tel.tel_test_utils import reboot_device
+from acts.test_utils.tel.tel_test_utils import refresh_droid_config
+from acts.test_utils.tel.tel_test_utils import send_dialer_secret_code
+from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode_by_adb
+from acts.test_utils.tel.tel_test_utils import wait_for_state
+from acts.test_utils.tel.tel_test_utils import add_google_account
+from acts.test_utils.tel.tel_test_utils import remove_google_account
+
+WAIT_TIME_BETWEEN_REG_AND_MSG = 15 # default 15 sec
+CARRIER = None
+CARRIER_AUTO = "auto"
+
+_CARRIER_DIALER_CODE_LOOKUP = {
+ CARRIER_AUTO: '342886',
+ CARRIER_SPT: '34777',
+ CARRIER_TMO: '34866',
+ CARRIER_USCC: '34872'
+}
+
+_SWITCHING_PREF_FILE = (
+ '/data/data/com.google.android.apps.tycho/shared_prefs/switching.xml')
+
+_INTENT_FLAGS = int(0x00008000 | 0x10000000 | 0x00080000 | 0x00020000)
+_TYCHO_PKG = 'com.google.android.apps.tycho'
+_MAX_WAIT_TIME = 120
+_TYCHO_VERBOSE_LOGGING_CMDS = [
+ "setprop log.tag.Tycho VERBOSE",
+ "CLASSPATH=/system/framework/am.jar su root app_process "
+ "/system/bin com.android.commands.am.Am broadcast -a "
+ "com.google.gservices.intent.action.GSERVICES_OVERRIDE "
+ "-e tycho.enable_request_logging true",
+ "CLASSPATH=/system/framework/am.jar su root app_process "
+ "/system/bin com.android.commands.am.Am broadcast -a "
+ "com.google.gservices.intent.action.GSERVICES_OVERRIDE "
+ "-e tycho.enable_sensitive_logging true",
+ "CLASSPATH=/system/framework/am.jar su root app_process "
+ "/system/bin com.android.commands.am.Am broadcast -a "
+ "com.google.gservices.intent.action.GSERVICES_OVERRIDE "
+ "-e tycho.enable_ample_logging true"
+]
+
+_TYCHO_SERVER_LAB_OVERRIDE_CMD = (
+ "am broadcast -a com.google.gservices.intent.action.GSERVICES_OVERRIDE -e "
+ "url:tycho_server_endpoint https://android.googleapis.com/nova/nfe/ rewrite"
+ " https://android.googleapis.com/lab/nova/nfe/")
+
+
+class TychoClassId(object):
+ """Tycho Activity/Service Classnames."""
+ # Activities
+ CARRIER_SETUP = 'CarrierSetupEntryPointTrampoline'
+ INIT_ACTIVITY = 'InitActivity'
+ # Services
+ SYNC_SERVICE = 'services.SyncService'
+ ACTIVATE_SUPER_NETWORK_SERVICE = 'services.SuperNetworkConfigurationService'
+
+
+class ActionTypeId(object):
+ """Andorid Action Type to trigger events."""
+ MAIN = 'android.intent.action.MAIN'
+ MASTER_CLEAR_NOTIFICATION = 'android.intent.action.MASTER_CLEAR_NOTIFICATION'
+ TYCHO_ACTIVATE_SUPER_NETWORK = (
+ 'com.google.android.apps.tycho.ActionType.ACTIVATE_SUPER_NETWORK')
+
+
+class TelLabProjectFiTest(TelephonyBaseTest):
+ SERIAL_NO = cb_serial_number()
+
+ def __init__(self, controllers):
+ TelephonyBaseTest.__init__(self, controllers)
+ self.ad = self.android_devices[0]
+ self.ad.sim_card = getattr(self.ad, "sim_card", None)
+ self.md8475a_ip_address = self.user_params[
+ "anritsu_md8475a_ip_address"]
+ self.wlan_option = self.user_params.get("anritsu_wlan_option", False)
+ self.md8475_version = self.user_params.get("md8475", "A")
+ self.ad.adb.shell("settings put secure cmas_additional_broadcast_pkg "
+ "com.googlecode.android_scripting")
+ self.wait_time_between_reg_and_msg = self.user_params.get(
+ "wait_time_between_reg_and_msg", WAIT_TIME_BETWEEN_REG_AND_MSG)
+
+ def setup_class(self):
+ try:
+ self.anritsu = MD8475A(self.md8475a_ip_address, self.log,
+ self.wlan_option, self.md8475_version)
+ except AnritsuError:
+ self.log.error("Error in connecting to Anritsu Simulator")
+ return False
+ self.activation_attemps = self.user_params.get("activation_attemps", 3)
+ return True
+
+ def setup_test(self):
+ if getattr(self, "qxdm_log", True):
+ start_qxdm_loggers(self.log, self.android_devices)
+ ensure_phones_idle(self.log, self.android_devices)
+ toggle_airplane_mode(self.log, self.ad, True)
+ return True
+
+ def teardown_test(self):
+ self.log.info("Stopping Simulation")
+ self.anritsu.stop_simulation()
+ toggle_airplane_mode(self.log, self.ad, True)
+
+ def teardown_class(self):
+ self.anritsu.disconnect()
+ return True
+
+ def _bring_up_callbox(
+ self,
+ set_simulation_func,
+ rat):
+ try:
+ [self.bts1] = set_simulation_func(self.anritsu, self.user_params,
+ self.ad.sim_card)
+ set_usim_parameters(self.anritsu, self.ad.sim_card)
+ if rat == RAT_LTE:
+ set_post_sim_params(self.anritsu, self.user_params,
+ self.ad.sim_card)
+ self.anritsu.start_simulation()
+
+ if rat == RAT_LTE:
+ preferred_network_setting = NETWORK_MODE_LTE_GSM_WCDMA
+ rat_family = RAT_FAMILY_LTE
+ else:
+ self.log.error("No valid RAT provided to bring up callbox.")
+ return False
+
+ if not ensure_preferred_network_type_for_subscription(
+ self.ad,
+ preferred_network_setting):
+ self.log.error(
+ "Failed to set rat family {}, preferred network:{}".format(
+ rat_family, preferred_network_setting))
+ return False
+
+ if self.ad.droid.connectivityCheckAirplaneMode():
+ toggle_airplane_mode(self.log, self.ad, False)
+ except AnritsuError as e:
+ self.log.error("Error in connection with Anritsu Simulator: " +
+ str(e))
+ return False
+ return True
+
+ def pre_switching_callbox_setup(self):
+ """ Setup environment to enable carrier switching
+ Returns:
+ True if pass; False if fail
+ """
+ return self._bring_up_callbox(set_system_model_lte, RAT_LTE)
+
+ def _install_account_util(self, ad):
+ account_util = self.user_params["account_util"]
+ if isinstance(account_util, list):
+ account_util = account_util[0]
+ ad.log.info("Install account_util %s", account_util)
+ ad.ensure_screen_on()
+ ad.adb.install("-r %s" % account_util, timeout=300, ignore_status=True)
+ time.sleep(3)
+ if not ad.is_apk_installed("com.google.android.tradefed.account"):
+ ad.log.info("com.google.android.tradefed.account is not installed")
+ return False
+ return True
+
+ def _account_registration(self, ad):
+ toggle_airplane_mode_by_adb(self.log, ad, new_state=False)
+ for cmd in _TYCHO_VERBOSE_LOGGING_CMDS:
+ ad.adb.shell(cmd)
+ if hasattr(ad, "user_account"):
+ ad.exit_setup_wizard()
+ if not ad.is_apk_installed("com.google.android.tradefed.account"
+ ) and \
+ self.user_params.get("account_util"):
+ for _ in range(2):
+ if self._install_account_util(ad):
+ break
+ else:
+ ad.log.error(
+ "Fail to install com.google.android.tradefed.account")
+ return False
+ ad.force_stop_apk(_TYCHO_PKG)
+ if not ensure_wifi_connected(self.log, ad, self.wifi_network_ssid,
+ self.wifi_network_pass):
+ ad.log.error("Failed to connect to wifi")
+ return False
+ ad.log.info("Add google account")
+ if not add_google_account(ad):
+ ad.log.error("Failed to add google account")
+ return False
+ ad.adb.shell(
+ 'am instrument -w -e account "%s@gmail.com" -e password '
+ '"%s" -e sync true -e wait-for-checkin false '
+ 'com.google.android.tradefed.account/.AddAccount' %
+ (ad.user_account, ad.user_password))
+ ad.log.info("Enable and activate tycho apk")
+ if not ad.is_apk_installed(_TYCHO_PKG):
+ ad.log.info("%s is not installed", _TYCHO_PKG)
+ return False
+ ad.adb.shell('pm enable %s' % _TYCHO_PKG)
+ # ad.adb.shell(_TYCHO_SERVER_LAB_OVERRIDE_CMD)
+ for i in range(1, self.activation_attemps + 1):
+ if i == self.activation_attemps:
+ ad.log.info("Reboot and try Fi activation again")
+ reboot_device(ad)
+ self.activate_fi_account(ad)
+ if not self.check_project_fi_activated(ad):
+ ad.log.error("Fail to activate Fi account on attempt-%s",
+ i)
+ if i == self.activation_attemps:
+ return False
+ else:
+ ad.log.info("Fi account is activated successfully")
+ break
+ elif "Fi Network" in ad.adb.getprop("gsm.sim.operator.alpha"):
+ ad.log.error("Google account is not provided for Fi Network")
+ return False
+ if not ensure_phone_subscription(self.log, ad):
+ ad.log.error("Unable to find a valid subscription!")
+ return False
+ refresh_droid_config(self.log, ad)
+ return True
+
+ def start_service(self, ad, package, service_id, extras, action_type):
+ """Starts the specified service.
+
+ Args:
+ ad: (android_device.AndroidDevice) device to start activity on
+ package: (str) the package to start the service from
+ service_id: (str) service to start
+ extras: (dict) extras needed to specify with the activity id
+ action_type: The action type id to create the intent
+ """
+ ad.log.info('Starting service %s/.%s.', package, service_id)
+ intent = ad.droid.makeIntent(action_type, None, None, extras,
+ ['android.intent.category.DEFAULT'],
+ package, package + '.' + service_id,
+ _INTENT_FLAGS)
+ ad.droid.startServiceIntent(intent)
+
+ def start_activity(self, ad, package, activity_id, extras=None):
+ """Starts the specified activity.
+
+ Args:
+ ad: (android_device.AndroidDevice) device to start activity on
+ package: (str) the package to start
+ activity_id: (str) activity to start
+ extras: (dict) extras needed to specify with the activity id
+ """
+ ad.log.info('Starting activity %s/.%s.', package, activity_id)
+ intent = ad.droid.makeIntent(ActionTypeId.MAIN, None, None, extras,
+ ['android.intent.category.LAUNCHER'],
+ package, package + '.' + activity_id,
+ _INTENT_FLAGS)
+ ad.droid.startActivityIntent(intent, False)
+
+ def activate_fi_account(self, ad):
+ """Start Tycho InitActivity.
+
+ For in-app Tycho activition (post-SUW tests), Tycho does not
+ automatically trigger OMADM process. This method is used to start
+ Tycho InitActivity before launching super network activation.
+
+ The device will finally stay on Sprint network if everything goes well.
+
+ Args:
+ ad: Android device need to start Tycho InitActivity.
+ """
+ ad.force_stop_apk(_TYCHO_PKG)
+ ad.send_keycode("HOME")
+ extra = {'in_setup_wizard': False, 'force_show_account_chooser': False}
+ self.start_activity(ad, _TYCHO_PKG, TychoClassId.INIT_ACTIVITY, extra)
+ for _ in range(30):
+ ad.send_keycode("WAKEUP")
+ time.sleep(1)
+ current_window = ad.get_my_current_focus_window()
+ log_screen_shot(ad, self.test_name)
+ if ad.adb.shell(
+ "settings get global device_provisioning_mobile_data"
+ ) != "1":
+ ad.adb.shell(
+ "settings put global device_provisioning_mobile_data 1")
+ if 'SwitchConfirmDialogActivity' in current_window:
+ ad.log.info("In Switch Confirmation Dialog")
+ if ad.adb.getprop("ro.build.version.release")[0] not in ("8",
+ "O"):
+ ad.send_keycode("TAB")
+ ad.send_keycode("TAB")
+ ad.send_keycode("ENTER")
+ time.sleep(10)
+ elif 'tycho.InitActivity' in current_window:
+ ad.log.info("In Tycho InitActivity")
+ ad.send_keycode("TAB")
+ ad.send_keycode("TAB")
+ ad.send_keycode("ENTER")
+ time.sleep(10)
+
+ elif 'tycho.AccountChooserActivity' in current_window:
+ ad.send_keycode("ENTER")
+ else:
+ ad.log.info("Finished activation process")
+ return
+
+ def check_project_fi_activated(self, ad, retries=20):
+ for _ in range(retries):
+ if is_sim_ready(self.log, ad) and (
+ ad.droid.telephonyGetSimOperatorName() == "Fi Network"):
+ ad.log.info("SIM state is READY, SIM operator is Fi")
+ return True
+ time.sleep(5)
+
+ def start_tycho_activation(self, ad):
+ """Start the Tycho client and register to cellular network.
+
+ Starts Tycho within SUW:
+ - Tycho is expected to follow the in-SUW work flow:
+ - Tycho will perform TychoInit, handshake to server,
+ account configuration, etc
+ - If successful, Tycho will trigger a switch to Sprint Network
+ - If successful, Tycho will start OMA-DM activation sessions
+
+ The device will finally stay on Sprint network if everything goes well.
+
+ Args:
+ ad: Android device need to start Tycho activation.
+ """
+ extra = {'device_setup': True, 'has_account': True}
+ self.start_activity(ad, _TYCHO_PKG, TychoClassId.CARRIER_SETUP, extra)
+
+ def start_super_network_activation(self, ad):
+ """Start the Super-Network activation.
+
+ For in-app Tycho activition (post-SUW tests), this method starts
+ super-network activation after Tycho is initialized.
+
+ The device will finally stay on Sprint network if everything goes well.
+
+ Args:
+ ad: Android device need to start Tycho super network activation.
+ """
+ extra = {'in_setup_wizard': False, 'is_interactive': True}
+ self.start_service(ad, _TYCHO_PKG,
+ TychoClassId.ACTIVATE_SUPER_NETWORK_SERVICE, extra,
+ ActionTypeId.TYCHO_ACTIVATE_SUPER_NETWORK)
+
+ def get_active_carrier(self, ad):
+ """Gets the active carrier profile value from the device.
+
+ Args:
+ ad: An AndroidDevice Object.
+
+ Returns:
+ (string) A key from the CARRIER_TO_MCC_MNC map representing the
+ active carrier.
+
+ Raises:
+ KeyError: when an mcc_mnc code reported by the device is not a
+ recognized Fi partner carrier.
+ """
+ mcc_mnc = ad.droid.telephonyGetSimOperator()
+ if not mcc_mnc:
+ return "UNKNOWN"
+ try:
+ return operator_name_from_plmn_id(mcc_mnc)
+ except KeyError:
+ ad.log.error('Unknown Mobile Country Code/Mobile Network Code %s',
+ mcc_mnc)
+ raise
+
+ def switch_sim(self, ad):
+ """Requests switch between physical sim and esim.
+
+ Args:
+ ad: An AndroidDevice Object.
+ timeout: (optional -- integer) the number of seconds in which a
+ switch should be completed.
+
+ Raises:
+ Error: whenever a device is not set to the desired carrier within
+ the timeout window.
+ """
+ old_sim_operator = ad.droid.telephonyGetSimOperatorName()
+ ad.log.info("Before SIM switch, SIM operator = %s", old_sim_operator)
+ send_dialer_secret_code(ad, "794824746")
+ time.sleep(10)
+ new_sim_operator = ad.droid.telephonyGetSimOperatorName()
+ ad.log.info("After SIM switch, SIM operator = %s", new_sim_operator)
+ refresh_droid_config(self.log, ad)
+ return old_sim_operator != new_sim_operator
+
+ def set_active_carrier(self,
+ ad,
+ carrier,
+ timeout=_MAX_WAIT_TIME,
+ check_interval=10):
+ """Requests an active carrier to be set on the device sim.
+
+ If switching to a different carrier, after the switch is completed
+ auto-switching will be disabled. To re-enable, call
+ enable_auto_switching.
+
+ Args:
+ ad: An AndroidDevice Object.
+ carrier: (carrier_constants.Carrier) Which carrier to switch to.
+ timeout: (optional -- integer) the number of seconds in which a
+ switch should be completed.
+
+ Raises:
+ Error: whenever a device is not set to the desired carrier within
+ the timeout window.
+ """
+ # If there's no need to switch, then don't.
+
+ if self.pre_switching_callbox_setup():
+ self.log.info("Turned ON Anritsu for Switching")
+ pass
+ else:
+ self.log.error("Failed to Camp to Anritsu")
+ return False
+
+ max_time = timeout
+ while max_time >= 0:
+ if self.is_ready_to_make_carrier_switch(ad):
+ break
+ time.sleep(check_interval)
+ max_time -= check_interval
+ else:
+ ad.log.error("Device stays in carrier switch lock state")
+ return False
+ if carrier == CARRIER_AUTO:
+ send_dialer_secret_code(ad, _CARRIER_DIALER_CODE_LOOKUP[carrier])
+ return True
+ old_carrier = self.get_active_carrier(ad)
+ if carrier == old_carrier:
+ ad.log.info('Already on %s, so no need to switch', carrier)
+ return True
+
+ # Start switch on device, using events to verify that the switch starts.
+ ad.log.info('Initiating unsolicited switch from %s to %s.',
+ old_carrier, carrier)
+ send_dialer_secret_code(ad, _CARRIER_DIALER_CODE_LOOKUP[carrier])
+ return self.wait_for_carrier_switch_completed(
+ ad, carrier, timeout=timeout, check_interval=check_interval)
+
+ def is_switching_silent(self, ad):
+ """Checks if Tycho switching controller is in silent mode.
+
+ Note that silent mode is a sign of airplane mode, not of a switching \
+ lock.
+
+ Args: ad: An AndroidDevice Object.
+
+ Returns:
+ A Boolean True if the preferences file reports True, False
+ otherwise.
+ """
+ return "isInSilentMode\" value=\"true" in ad.adb.shell(
+ "cat %s | grep isInSilentMode" % _SWITCHING_PREF_FILE,
+ ignore_status=True)
+
+ def is_switching_locked(self, ad):
+ """Checks if Tycho switching controller is locked.
+
+ Args: ad: An AndroidDevice Object.
+
+ Returns:
+ A Boolean True if the switching controller is locked for any reason,
+ False otherwise.
+ """
+ return "switchingInProgress\" value=\"true" in ad.adb.shell(
+ "cat %s | grep switchingInProgress" % _SWITCHING_PREF_FILE)
+
+ def is_ready_to_make_carrier_switch(self, ad):
+ """Checks if device is ready to make carrier switch.
+
+ Args:
+ ad: An AndroidDevice Object.
+
+ Returns:
+ A Boolean True if it is ready to make switch, False otherwise.
+ """
+ # Check Tycho switching controller states.
+ if self.is_switching_silent(ad):
+ ad.log.info(
+ "Cannot make carrier switch: SwitchingController is in silent "
+ "mode!")
+ return False
+ if self.is_switching_locked(ad):
+ ad.log.info(
+ "Cannot make carrier switch: SwitchingController is locked!")
+ return False
+ if self.is_carrier_switch_in_progress(ad):
+ ad.log.info("Cannot make carrier switch: Switch in progress!")
+ return False
+ return True
+
+ def is_carrier_switch_in_progress(self, ad):
+ """Checks if Tycho says that a switch is currently in progress.
+
+ Args:
+ ad: An AndroidDevice Object.
+
+ Returns:
+ A Boolean True if the preferences file reports True, False
+ otherwise.
+ """
+ switching_preferences = ad.adb.shell("cat %s" % _SWITCHING_PREF_FILE)
+ return 'InProgress\" value=\"true' in switching_preferences
+
+ def check_network_carrier(self, ad, carrier):
+ current_carrier = self.get_active_carrier(ad)
+ ad.log.info("Current network carrier is %s", current_carrier)
+ is_in_switch = self.is_carrier_switch_in_progress(ad)
+ ad.log.info("Device in carrier switch progress mode")
+ return current_carrier == carrier and is_in_switch
+
+ def wait_for_carrier_switch_completed(self,
+ ad,
+ carrier,
+ timeout=_MAX_WAIT_TIME,
+ check_interval=10):
+ """Wait for carrier switch to complete.
+
+ This function waits for a carrier switch to complete by monitoring the
+ Tycho switching controller preference file.
+
+ Args:
+ ad: An Android device object.
+ carrier: The target carrier network to switch to.
+ timeout: (integer) Time wait for switch to complete.
+
+ Return:
+ True or False for successful/unsuccessful switch.
+ """
+ check_args = [ad, carrier]
+ if wait_for_state(self.check_network_carrier, True, check_interval,
+ timeout, *check_args):
+ ad.log.info("Switched to %s successfully", carrier)
+ ad.send_keycode("ENTER")
+ return True
+ else:
+ active_carrier = self.get_active_carrier(ad)
+ if active_carrier == carrier:
+ ad.log.info("Switched to %s successfully", carrier)
+ return True
+ ad.log.error("Carrier is %s. Fail to switch to %s", active_carrier,
+ carrier)
+ return False
+
+ def operator_network_switch(self, ad, carrier):
+ if ad.droid.telephonyGetSimOperatorName() == "Google Fi":
+ for i in range(3):
+ if self.set_active_carrier(ad, carrier):
+ break
+ elif i == 2:
+ ad.log.error("Failed to switch to %s", carrier)
+ return False
+ if not ensure_phone_subscription(self.log, ad):
+ ad.log.error("Unable to find a valid subscription!")
+ return False
+ refresh_droid_config(self.log, ad)
+ return True
+
+ def network_switch_test(self, carrier):
+ tasks = [(self.operator_network_switch, [ad, carrier])
+ for ad in self.android_devices]
+ if not multithread_func(self.log, tasks):
+ abort_all_tests(self.log,
+ "Unable to switch to network %s" % carrier)
+ return True
+
+ """ Tests Begin """
+
+ @test_tracker_info(uuid="4d92318e-4980-471a-882b-3136c5dda384")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_project_fi_account_activation(self):
+ """Test activate Fi account.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ tasks = [(self._account_registration, [ad])
+ for ad in self.android_devices]
+ try:
+ if not multithread_func(self.log, tasks):
+ abort_all_tests(self.log, "Unable to activate Fi account!")
+ except Exception as e:
+ self.log.error(e)
+ abort_all_tests(self.log, "Unable to activate Fi account!")
+ return True
+
+ @test_tracker_info(uuid="6bfbcc1d-e318-4964-bf36-5b82f086860d")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_switch_to_tmobile_network(self):
+ """Test switch to tmobile network.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ setattr(self.ad, "sim_card", "FiTMO")
+ return self.network_switch_test(CARRIER_TMO)
+
+ @test_tracker_info(uuid="4f27944d-f3c5-423d-b0c5-5c66dbb98376")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_switch_to_sprint_network(self):
+ """Test switch to sprint network.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ setattr(self.ad, "sim_card", "FiSPR")
+ return self.network_switch_test(CARRIER_SPT)
+
+ @test_tracker_info(uuid="5f30c9bd-b79e-4805-aa46-7855ed9023f0")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_switch_to_uscc_network(self):
+ """Test switch to uscc network.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ setattr(self.ad, "sim_card", "FiUSCC")
+ return self.network_switch_test(CARRIER_USCC)
+
+ @test_tracker_info(uuid="0b062751-d59d-420e-941e-3ffa02aea0d5")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_switch_to_auto_network(self):
+ """Test switch to auto network selection.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ return self.network_switch_test(CARRIER_AUTO)
+
+ @test_tracker_info(uuid="13c5f080-69bf-42fd-86ed-c67b1984c347")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_switch_between_sim(self):
+ """Test switch between physical sim and esim.
+
+ Returns:
+ True if success.
+ False if failed.
+ """
+ for ad in self.android_devices:
+ self.switch_sim(ad)
+
+ @test_tracker_info(uuid="")
+ @TelephonyBaseTest.tel_test_wrap
+ def test_remove_google_account(self):
+ for ad in self.android_devices:
+ remove_google_account(ad)
+
+
+""" Tests End """
diff --git a/acts/tests/google/tel/live/TelLiveProjectFiTest.py b/acts/tests/google/tel/live/TelLiveProjectFiTest.py
index b5a60f4..a86939c 100644
--- a/acts/tests/google/tel/live/TelLiveProjectFiTest.py
+++ b/acts/tests/google/tel/live/TelLiveProjectFiTest.py
@@ -36,6 +36,8 @@
from acts.test_utils.tel.tel_test_utils import send_dialer_secret_code
from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode_by_adb
from acts.test_utils.tel.tel_test_utils import wait_for_state
+from acts.test_utils.tel.tel_test_utils import add_google_account
+from acts.test_utils.tel.tel_test_utils import remove_google_account
CARRIER_AUTO = "auto"
@@ -96,44 +98,6 @@
def setup_class(self):
self.activation_attemps = self.user_params.get("activation_attemps", 3)
- def _add_google_account(self, ad, retries=3):
- for _ in range(3):
- ad.ensure_screen_on()
- output = ad.adb.shell(
- 'am instrument -w -e account "%s@gmail.com" -e password '
- '"%s" -e sync true -e wait-for-checkin false '
- 'com.google.android.tradefed.account/.AddAccount' %
- (ad.user_account, ad.user_password))
- if "result=SUCCESS" in output:
- ad.log.info("google account is added successfully")
- return True
- ad.log.error("Fail to add google account due to %s", output)
- return False
-
- def _remove_google_account(self, ad, retries=3):
- if not ad.is_apk_installed("com.google.android.tradefed.account"
- ) and self.user_params.get("account_util"):
- account_util = self.user_params["account_util"]
- if isinstance(account_util, list):
- account_util = account_util[0]
- ad.log.info("Install account_util %s", account_util)
- ad.ensure_screen_on()
- ad.adb.install("-r %s" % account_util, timeout=180)
- if not ad.is_apk_installed("com.google.android.tradefed.account"):
- ad.log.error(
- "com.google.android.tradefed.account is not installed")
- return False
- for _ in range(retries):
- ad.ensure_screen_on()
- output = ad.adb.shell(
- 'am instrument -w '
- 'com.google.android.tradefed.account/.RemoveAccounts')
- if "result=SUCCESS" in output:
- ad.log.info("google account is removed successfully")
- return True
- ad.log.error("Fail to remove google account due to %s", output)
- return False
-
def _install_account_util(self, ad):
account_util = self.user_params["account_util"]
if isinstance(account_util, list):
@@ -169,7 +133,7 @@
ad.log.error("Failed to connect to wifi")
return False
ad.log.info("Add google account")
- if not self._add_google_account(ad):
+ if not add_google_account(ad):
ad.log.error("Failed to add google account")
return False
ad.adb.shell(
@@ -182,7 +146,7 @@
ad.log.info("%s is not installed", _TYCHO_PKG)
return False
ad.adb.shell('pm enable %s' % _TYCHO_PKG)
- #ad.adb.shell(_TYCHO_SERVER_LAB_OVERRIDE_CMD)
+ # ad.adb.shell(_TYCHO_SERVER_LAB_OVERRIDE_CMD)
for i in range(1, self.activation_attemps + 1):
if i == self.activation_attemps:
ad.log.info("Reboot and try Fi activation again")
@@ -622,7 +586,7 @@
@TelephonyBaseTest.tel_test_wrap
def test_remove_google_account(self):
for ad in self.android_devices:
- self._remove_google_account(ad)
+ remove_google_account(ad)
""" Tests End """