blob: 5eff2885f48eee88819d1fae24452d60a1007357 [file] [log] [blame]
Mark De Ruyterd9c540a2018-05-04 11:21:55 -07001#!/usr/bin/env python3
Betty Zhouecac2632016-12-08 20:31:05 -08002#
3# Copyright 2016 - The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9# http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16"""
17Sanity tests for voice tests in telephony
18"""
Jaineel5eba0e92017-03-10 15:56:17 -080019import time
20
Betty Zhouecac2632016-12-08 20:31:05 -080021from acts.controllers.anritsu_lib._anritsu_utils import AnritsuError
22from acts.controllers.anritsu_lib.md8475a import MD8475A
23from acts.controllers.anritsu_lib.md8475a import CBCHSetup
24from acts.controllers.anritsu_lib.md8475a import CTCHSetup
25from acts.test_utils.tel.anritsu_utils import ETWS_WARNING_EARTHQUAKETSUNAMI
26from acts.test_utils.tel.anritsu_utils import ETWS_WARNING_OTHER_EMERGENCY
27from acts.test_utils.tel.anritsu_utils import cb_serial_number
28from acts.test_utils.tel.anritsu_utils import etws_receive_verify_message_lte_wcdma
29from acts.test_utils.tel.anritsu_utils import set_system_model_gsm
30from acts.test_utils.tel.anritsu_utils import set_system_model_lte
31from acts.test_utils.tel.anritsu_utils import set_system_model_wcdma
Patrick Chiang8324da72017-04-07 17:02:17 -070032from acts.test_utils.tel.anritsu_utils import set_usim_parameters
Jaineel1b6e84c2017-10-03 13:58:04 -070033from acts.test_utils.tel.anritsu_utils import set_post_sim_params
Betty Zhouecac2632016-12-08 20:31:05 -080034from acts.test_utils.tel.tel_defines import NETWORK_MODE_CDMA
35from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_ONLY
36from acts.test_utils.tel.tel_defines import NETWORK_MODE_GSM_UMTS
37from acts.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA
38from acts.test_utils.tel.tel_defines import RAT_1XRTT
39from acts.test_utils.tel.tel_defines import RAT_GSM
40from acts.test_utils.tel.tel_defines import RAT_LTE
41from acts.test_utils.tel.tel_defines import RAT_WCDMA
42from acts.test_utils.tel.tel_defines import RAT_FAMILY_CDMA2000
43from acts.test_utils.tel.tel_defines import RAT_FAMILY_GSM
44from acts.test_utils.tel.tel_defines import RAT_FAMILY_LTE
45from acts.test_utils.tel.tel_defines import RAT_FAMILY_UMTS
46from acts.test_utils.tel.tel_test_utils import ensure_network_rat
47from acts.test_utils.tel.tel_test_utils import ensure_phones_idle
48from acts.test_utils.tel.tel_test_utils import toggle_airplane_mode
Jaineele47ea0c2017-11-01 12:11:56 -070049from acts.test_utils.tel.tel_test_utils import start_qxdm_loggers
Betty Zhouecac2632016-12-08 20:31:05 -080050from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
Jaineele299ac12017-04-19 12:23:52 -070051from acts.test_decorators import test_tracker_info
Betty Zhouecac2632016-12-08 20:31:05 -080052
Jaineel5eba0e92017-03-10 15:56:17 -080053WAIT_TIME_BETWEEN_REG_AND_MSG = 15 # default 15 sec
54
Betty Zhouecac2632016-12-08 20:31:05 -080055
56class TelLabEtwsTest(TelephonyBaseTest):
57 SERIAL_NO = cb_serial_number()
Betty Zhouecac2632016-12-08 20:31:05 -080058
59 def __init__(self, controllers):
60 TelephonyBaseTest.__init__(self, controllers)
61 self.ad = self.android_devices[0]
Patrick Chiang8324da72017-04-07 17:02:17 -070062 self.ad.sim_card = getattr(self.ad, "sim_card", None)
Betty Zhouecac2632016-12-08 20:31:05 -080063 self.md8475a_ip_address = self.user_params[
64 "anritsu_md8475a_ip_address"]
Patrick Chiang2f7d8f92017-03-17 15:42:28 -070065 self.wlan_option = self.user_params.get("anritsu_wlan_option", False)
Jaineel02efb252018-04-03 18:57:20 -070066 self.md8475_version = self.user_params.get("md8475", "A")
Betty Zhoub499fe12017-03-01 19:38:42 -080067 self.ad.adb.shell("settings put secure cmas_additional_broadcast_pkg "
68 "com.googlecode.android_scripting")
Jaineel5eba0e92017-03-10 15:56:17 -080069 self.wait_time_between_reg_and_msg = self.user_params.get(
70 "wait_time_between_reg_and_msg", WAIT_TIME_BETWEEN_REG_AND_MSG)
Betty Zhouecac2632016-12-08 20:31:05 -080071
72 def setup_class(self):
73 try:
Patrick Chiang2f7d8f92017-03-17 15:42:28 -070074 self.anritsu = MD8475A(self.md8475a_ip_address, self.log,
Jaineel02efb252018-04-03 18:57:20 -070075 self.wlan_option, self.md8475_version)
Betty Zhouecac2632016-12-08 20:31:05 -080076 except AnritsuError:
77 self.log.error("Error in connecting to Anritsu Simulator")
78 return False
79 return True
80
81 def setup_test(self):
Jaineele47ea0c2017-11-01 12:11:56 -070082 if getattr(self, "qxdm_log", True):
83 start_qxdm_loggers(self.log, self.android_devices)
Betty Zhouecac2632016-12-08 20:31:05 -080084 ensure_phones_idle(self.log, self.android_devices)
85 toggle_airplane_mode(self.log, self.ad, True)
86 return True
87
88 def teardown_test(self):
89 self.log.info("Stopping Simulation")
90 self.anritsu.stop_simulation()
91 toggle_airplane_mode(self.log, self.ad, True)
92
93 def teardown_class(self):
94 self.anritsu.disconnect()
95 return True
96
97 def _send_receive_etws_message(self, set_simulation_func, rat, message_id,
98 warning_message):
99 try:
Patrick Chiang8324da72017-04-07 17:02:17 -0700100 [self.bts1] = set_simulation_func(self.anritsu, self.user_params,
101 self.ad.sim_card)
102 set_usim_parameters(self.anritsu, self.ad.sim_card)
Jaineel2eeef432017-10-23 16:58:30 -0700103 if rat == RAT_LTE:
104 set_post_sim_params(self.anritsu, self.user_params,
105 self.ad.sim_card)
Betty Zhouecac2632016-12-08 20:31:05 -0800106 self.anritsu.start_simulation()
107
108 if rat == RAT_LTE:
109 preferred_network_setting = NETWORK_MODE_LTE_GSM_WCDMA
110 rat_family = RAT_FAMILY_LTE
111 elif rat == RAT_WCDMA:
112 self.bts1.wcdma_ctch = CTCHSetup.CTCH_ENABLE
113 self.ad.droid.telephonyToggleDataConnection(False)
114 preferred_network_setting = NETWORK_MODE_GSM_UMTS
115 rat_family = RAT_FAMILY_UMTS
116 elif rat == RAT_GSM:
117 self.bts1.gsm_cbch = CBCHSetup.CBCH_ENABLE
118 self.ad.droid.telephonyToggleDataConnection(False)
119 preferred_network_setting = NETWORK_MODE_GSM_ONLY
120 rat_family = RAT_FAMILY_GSM
121 elif rat == RAT_1XRTT:
122 preferred_network_setting = NETWORK_MODE_CDMA
123 rat_family = RAT_FAMILY_CDMA2000
124 else:
125 self.log.error("No valid RAT provided for ETWS test.")
126 return False
127
Betty Zhoub499fe12017-03-01 19:38:42 -0800128 if not ensure_network_rat(
129 self.log,
130 self.ad,
131 preferred_network_setting,
132 rat_family,
133 toggle_apm_after_setting=True):
Betty Zhouecac2632016-12-08 20:31:05 -0800134 self.log.error(
135 "Failed to set rat family {}, preferred network:{}".format(
136 rat_family, preferred_network_setting))
137 return False
138
139 self.anritsu.wait_for_registration_state()
Betty Zhouecac2632016-12-08 20:31:05 -0800140 if not etws_receive_verify_message_lte_wcdma(
141 self.log, self.ad, self.anritsu,
142 next(TelLabEtwsTest.SERIAL_NO), message_id,
143 warning_message):
144 self.log.error("Phone {} Failed to receive ETWS message"
145 .format(self.ad.serial))
146 return False
147 except AnritsuError as e:
148 self.log.error("Error in connection with Anritsu Simulator: " +
149 str(e))
150 return False
151 except Exception as e:
152 self.log.error("Exception during ETWS send/receive: " + str(e))
153 return False
154 return True
155
Preetesh Barretto0b64c8e2019-03-07 08:43:29 -0800156 def test_carrier_tmobile(self):
157 """ Sets the Carrier to TMO.
158 Returns: None
159 """
160 setattr(self.ad, "sim_card", "FiTMO")
161
162 def test_carrier_sprint(self):
163 """ Sets the Carrier to SPR.
164 Returns: None
165 """
166 setattr(self.ad, "sim_card", "FiSPR")
167
168 def test_carrier_uscc(self):
169 """ Sets the Carrier to USCC.
170 Returns: None
171 """
172 setattr(self.ad, "sim_card", "FiUSCC")
173
Betty Zhouecac2632016-12-08 20:31:05 -0800174 """ Tests Begin """
175
Jaineele299ac12017-04-19 12:23:52 -0700176 @test_tracker_info(uuid="af4a00d0-9a91-45d5-9f65-9541e64a57f2")
Betty Zhouecac2632016-12-08 20:31:05 -0800177 @TelephonyBaseTest.tel_test_wrap
178 def test_etws_earthquake_tsunami_lte(self):
179 """ETWS Earthquake and Tsunami warning message reception on LTE
180
181 Tests the capability of device to receive and inform the user
182 about the ETWS Earthquake and Tsunami warning message when camped on
183 LTE newtork
184
185 Steps:
186 1. Make Sure Phone is camped on LTE network
187 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
188
189 Expected Result:
190 Phone receives ETWS Earthquake and Tsunami warning message
191
192 Returns:
193 True if pass; False if fail
194 """
195 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
196 ETWS_WARNING_EARTHQUAKETSUNAMI,
197 "LTE Earthquake and Tsunami")
198
Jaineele299ac12017-04-19 12:23:52 -0700199 @test_tracker_info(uuid="03785878-0319-413c-9190-d4e08f0edc33")
Betty Zhouecac2632016-12-08 20:31:05 -0800200 @TelephonyBaseTest.tel_test_wrap
201 def test_etws_other_emergency_lte(self):
202 """ETWS Other emergency warning message reception on LTE
203
204 Tests the capability of device to receive and inform the user
205 about the ETWS Other emergency warning message when camped on
206 LTE newtork
207
208 Steps:
209 1. Make Sure Phone is camped on LTE network
210 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
211
212 Expected Result:
213 Phone receives ETWS Earthquake and Tsunami warning message
214
215 Returns:
216 True if pass; False if fail
217 """
218 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
219 ETWS_WARNING_OTHER_EMERGENCY,
220 "LTE ETWS Other Emergency")
221
Jaineele299ac12017-04-19 12:23:52 -0700222 @test_tracker_info(uuid="1ef4a5d7-9ceb-49eb-8ec7-5538625c8bd4")
Betty Zhouecac2632016-12-08 20:31:05 -0800223 @TelephonyBaseTest.tel_test_wrap
224 def test_etws_earthquake_tsunami_wcdma(self):
225 """ETWS Earthquake and Tsunami warning message reception on WCDMA
226
227 Tests the capability of device to receive and inform the user
228 about the ETWS Earthquake and Tsunami warning message when camped on
229 WCDMA newtork
230
231 Steps:
232 1. Make Sure Phone is camped on WCDMA network
233 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
234
235 Expected Result:
236 Phone receives ETWS Earthquake and Tsunami warning message
237
238 Returns:
239 True if pass; False if fail
240 """
241 return self._send_receive_etws_message(
242 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_EARTHQUAKETSUNAMI,
243 "WCDMA Earthquake and Tsunami")
244
Jaineele299ac12017-04-19 12:23:52 -0700245 @test_tracker_info(uuid="71dc9650-d00a-4533-99f5-5cc301c21334")
Betty Zhouecac2632016-12-08 20:31:05 -0800246 @TelephonyBaseTest.tel_test_wrap
247 def test_etws_other_emergency_wcdma(self):
248 """ETWS Other emergency warning message reception on WCDMA
249
250 Tests the capability of device to receive and inform the user
251 about the ETWS Other emergency warning message when camped on
252 WCDMA newtork
253
254 Steps:
255 1. Make Sure Phone is camped on WCDMA network
256 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
257
258 Expected Result:
259 Phone receives ETWS Earthquake and Tsunami warning message
260
261 Returns:
262 True if pass; False if fail
263 """
264 return self._send_receive_etws_message(
265 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_OTHER_EMERGENCY,
266 "WCDMA ETWS Other Emergency")
267
Jaineele299ac12017-04-19 12:23:52 -0700268 @test_tracker_info(uuid="a9fd9c0e-21bf-41d1-81d2-c34679052fe0")
Betty Zhouecac2632016-12-08 20:31:05 -0800269 @TelephonyBaseTest.tel_test_wrap
270 def test_etws_earthquake_tsunami_gsm(self):
271 """ETWS Earthquake and Tsunami warning message reception on GSM
272
273 Tests the capability of device to receive and inform the user
274 about the ETWS Earthquake and Tsunami warning message when camped on
275 GSM newtork
276
277 Steps:
278 1. Make Sure Phone is camped on GSM network
279 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
280
281 Expected Result:
282 Phone receives ETWS Earthquake and Tsunami warning message
283
284 Returns:
285 True if pass; False if fail
286 """
287 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
288 ETWS_WARNING_EARTHQUAKETSUNAMI,
289 "GSM Earthquake and Tsunami")
290
Jaineele299ac12017-04-19 12:23:52 -0700291 @test_tracker_info(uuid="0ae42f8d-1720-449c-9200-e88f7f1d2cbe")
Betty Zhouecac2632016-12-08 20:31:05 -0800292 @TelephonyBaseTest.tel_test_wrap
293 def test_etws_other_emergency_gsm(self):
294 """ETWS Other emergency warning message reception on GSM
295
296 Tests the capability of device to receive and inform the user
297 about the ETWS Other emergency warning message when camped on
298 GSM newtork
299
300 Steps:
301 1. Make Sure Phone is camped on GSM network
302 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
303
304 Expected Result:
305 Phone receives ETWS Earthquake and Tsunami warning message
306
307 Returns:
308 True if pass; False if fail
309 """
310 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
311 ETWS_WARNING_OTHER_EMERGENCY,
312 "GSM ETWS Other Emergency")
313
314 """ Tests End """