blob: b3a566c4e47d8186073d906266d3e0aa2314789a [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
Xianyuan Jia24299b72020-10-21 13:52:47 -070025from acts_contrib.test_utils.tel.anritsu_utils import ETWS_WARNING_EARTHQUAKETSUNAMI
26from acts_contrib.test_utils.tel.anritsu_utils import ETWS_WARNING_OTHER_EMERGENCY
27from acts_contrib.test_utils.tel.anritsu_utils import cb_serial_number
28from acts_contrib.test_utils.tel.anritsu_utils import etws_receive_verify_message_lte_wcdma
29from acts_contrib.test_utils.tel.anritsu_utils import set_system_model_gsm
30from acts_contrib.test_utils.tel.anritsu_utils import set_system_model_lte
31from acts_contrib.test_utils.tel.anritsu_utils import set_system_model_wcdma
32from acts_contrib.test_utils.tel.anritsu_utils import set_usim_parameters
33from acts_contrib.test_utils.tel.anritsu_utils import set_post_sim_params
34from acts_contrib.test_utils.tel.tel_defines import NETWORK_MODE_CDMA
35from acts_contrib.test_utils.tel.tel_defines import NETWORK_MODE_GSM_ONLY
36from acts_contrib.test_utils.tel.tel_defines import NETWORK_MODE_GSM_UMTS
37from acts_contrib.test_utils.tel.tel_defines import NETWORK_MODE_LTE_GSM_WCDMA
38from acts_contrib.test_utils.tel.tel_defines import RAT_1XRTT
39from acts_contrib.test_utils.tel.tel_defines import RAT_GSM
40from acts_contrib.test_utils.tel.tel_defines import RAT_LTE
41from acts_contrib.test_utils.tel.tel_defines import RAT_WCDMA
42from acts_contrib.test_utils.tel.tel_defines import RAT_FAMILY_CDMA2000
43from acts_contrib.test_utils.tel.tel_defines import RAT_FAMILY_GSM
44from acts_contrib.test_utils.tel.tel_defines import RAT_FAMILY_LTE
45from acts_contrib.test_utils.tel.tel_defines import RAT_FAMILY_UMTS
Markus Liue26ef8a2021-10-19 15:20:35 +080046from acts_contrib.test_utils.tel.tel_logging_utils import start_qxdm_loggers
Markus Liu44b04be2021-11-05 13:59:32 +080047from acts_contrib.test_utils.tel.tel_phone_setup_utils import ensure_network_rat
48from acts_contrib.test_utils.tel.tel_phone_setup_utils import ensure_phones_idle
Xianyuan Jia24299b72020-10-21 13:52:47 -070049from acts_contrib.test_utils.tel.tel_test_utils import toggle_airplane_mode
Xianyuan Jia24299b72020-10-21 13:52:47 -070050from acts_contrib.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
Xianyuan Jia2a8522e2019-09-05 17:21:40 -070059 def setup_class(self):
60 super().setup_class()
Betty Zhouecac2632016-12-08 20:31:05 -080061 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
Betty Zhouecac2632016-12-08 20:31:05 -080072 try:
Xianyuan Jiad3e763a2019-04-03 15:55:37 -070073 self.anritsu = MD8475A(self.md8475a_ip_address, self.wlan_option,
74 self.md8475_version)
Betty Zhouecac2632016-12-08 20:31:05 -080075 except AnritsuError:
76 self.log.error("Error in connecting to Anritsu Simulator")
77 return False
78 return True
79
80 def setup_test(self):
Jaineele47ea0c2017-11-01 12:11:56 -070081 if getattr(self, "qxdm_log", True):
82 start_qxdm_loggers(self.log, self.android_devices)
Betty Zhouecac2632016-12-08 20:31:05 -080083 ensure_phones_idle(self.log, self.android_devices)
84 toggle_airplane_mode(self.log, self.ad, True)
85 return True
86
87 def teardown_test(self):
88 self.log.info("Stopping Simulation")
89 self.anritsu.stop_simulation()
90 toggle_airplane_mode(self.log, self.ad, True)
91
92 def teardown_class(self):
93 self.anritsu.disconnect()
94 return True
95
96 def _send_receive_etws_message(self, set_simulation_func, rat, message_id,
97 warning_message):
98 try:
Patrick Chiang8324da72017-04-07 17:02:17 -070099 [self.bts1] = set_simulation_func(self.anritsu, self.user_params,
100 self.ad.sim_card)
101 set_usim_parameters(self.anritsu, self.ad.sim_card)
Jaineel2eeef432017-10-23 16:58:30 -0700102 if rat == RAT_LTE:
103 set_post_sim_params(self.anritsu, self.user_params,
104 self.ad.sim_card)
Betty Zhouecac2632016-12-08 20:31:05 -0800105 self.anritsu.start_simulation()
106
107 if rat == RAT_LTE:
108 preferred_network_setting = NETWORK_MODE_LTE_GSM_WCDMA
109 rat_family = RAT_FAMILY_LTE
110 elif rat == RAT_WCDMA:
111 self.bts1.wcdma_ctch = CTCHSetup.CTCH_ENABLE
112 self.ad.droid.telephonyToggleDataConnection(False)
113 preferred_network_setting = NETWORK_MODE_GSM_UMTS
114 rat_family = RAT_FAMILY_UMTS
115 elif rat == RAT_GSM:
116 self.bts1.gsm_cbch = CBCHSetup.CBCH_ENABLE
117 self.ad.droid.telephonyToggleDataConnection(False)
118 preferred_network_setting = NETWORK_MODE_GSM_ONLY
119 rat_family = RAT_FAMILY_GSM
120 elif rat == RAT_1XRTT:
121 preferred_network_setting = NETWORK_MODE_CDMA
122 rat_family = RAT_FAMILY_CDMA2000
123 else:
124 self.log.error("No valid RAT provided for ETWS test.")
125 return False
126
Betty Zhoub499fe12017-03-01 19:38:42 -0800127 if not ensure_network_rat(
128 self.log,
129 self.ad,
130 preferred_network_setting,
131 rat_family,
132 toggle_apm_after_setting=True):
Betty Zhouecac2632016-12-08 20:31:05 -0800133 self.log.error(
134 "Failed to set rat family {}, preferred network:{}".format(
135 rat_family, preferred_network_setting))
136 return False
137
138 self.anritsu.wait_for_registration_state()
Betty Zhouecac2632016-12-08 20:31:05 -0800139 if not etws_receive_verify_message_lte_wcdma(
140 self.log, self.ad, self.anritsu,
141 next(TelLabEtwsTest.SERIAL_NO), message_id,
142 warning_message):
143 self.log.error("Phone {} Failed to receive ETWS message"
144 .format(self.ad.serial))
145 return False
146 except AnritsuError as e:
147 self.log.error("Error in connection with Anritsu Simulator: " +
148 str(e))
149 return False
150 except Exception as e:
151 self.log.error("Exception during ETWS send/receive: " + str(e))
152 return False
153 return True
154
Preetesh Barretto0b64c8e2019-03-07 08:43:29 -0800155 def test_carrier_tmobile(self):
156 """ Sets the Carrier to TMO.
157 Returns: None
158 """
159 setattr(self.ad, "sim_card", "FiTMO")
160
161 def test_carrier_sprint(self):
162 """ Sets the Carrier to SPR.
163 Returns: None
164 """
165 setattr(self.ad, "sim_card", "FiSPR")
166
167 def test_carrier_uscc(self):
168 """ Sets the Carrier to USCC.
169 Returns: None
170 """
171 setattr(self.ad, "sim_card", "FiUSCC")
172
Betty Zhouecac2632016-12-08 20:31:05 -0800173 """ Tests Begin """
174
Jaineele299ac12017-04-19 12:23:52 -0700175 @test_tracker_info(uuid="af4a00d0-9a91-45d5-9f65-9541e64a57f2")
Betty Zhouecac2632016-12-08 20:31:05 -0800176 @TelephonyBaseTest.tel_test_wrap
177 def test_etws_earthquake_tsunami_lte(self):
178 """ETWS Earthquake and Tsunami warning message reception on LTE
179
180 Tests the capability of device to receive and inform the user
181 about the ETWS Earthquake and Tsunami warning message when camped on
182 LTE newtork
183
184 Steps:
185 1. Make Sure Phone is camped on LTE network
186 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
187
188 Expected Result:
189 Phone receives ETWS Earthquake and Tsunami warning message
190
191 Returns:
192 True if pass; False if fail
193 """
194 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
195 ETWS_WARNING_EARTHQUAKETSUNAMI,
196 "LTE Earthquake and Tsunami")
197
Jaineele299ac12017-04-19 12:23:52 -0700198 @test_tracker_info(uuid="03785878-0319-413c-9190-d4e08f0edc33")
Betty Zhouecac2632016-12-08 20:31:05 -0800199 @TelephonyBaseTest.tel_test_wrap
200 def test_etws_other_emergency_lte(self):
201 """ETWS Other emergency warning message reception on LTE
202
203 Tests the capability of device to receive and inform the user
204 about the ETWS Other emergency warning message when camped on
205 LTE newtork
206
207 Steps:
208 1. Make Sure Phone is camped on LTE network
209 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
210
211 Expected Result:
212 Phone receives ETWS Earthquake and Tsunami warning message
213
214 Returns:
215 True if pass; False if fail
216 """
217 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
218 ETWS_WARNING_OTHER_EMERGENCY,
219 "LTE ETWS Other Emergency")
220
Jaineele299ac12017-04-19 12:23:52 -0700221 @test_tracker_info(uuid="1ef4a5d7-9ceb-49eb-8ec7-5538625c8bd4")
Betty Zhouecac2632016-12-08 20:31:05 -0800222 @TelephonyBaseTest.tel_test_wrap
223 def test_etws_earthquake_tsunami_wcdma(self):
224 """ETWS Earthquake and Tsunami warning message reception on WCDMA
225
226 Tests the capability of device to receive and inform the user
227 about the ETWS Earthquake and Tsunami warning message when camped on
228 WCDMA newtork
229
230 Steps:
231 1. Make Sure Phone is camped on WCDMA network
232 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
233
234 Expected Result:
235 Phone receives ETWS Earthquake and Tsunami warning message
236
237 Returns:
238 True if pass; False if fail
239 """
240 return self._send_receive_etws_message(
241 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_EARTHQUAKETSUNAMI,
242 "WCDMA Earthquake and Tsunami")
243
Jaineele299ac12017-04-19 12:23:52 -0700244 @test_tracker_info(uuid="71dc9650-d00a-4533-99f5-5cc301c21334")
Betty Zhouecac2632016-12-08 20:31:05 -0800245 @TelephonyBaseTest.tel_test_wrap
246 def test_etws_other_emergency_wcdma(self):
247 """ETWS Other emergency warning message reception on WCDMA
248
249 Tests the capability of device to receive and inform the user
250 about the ETWS Other emergency warning message when camped on
251 WCDMA newtork
252
253 Steps:
254 1. Make Sure Phone is camped on WCDMA network
255 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
256
257 Expected Result:
258 Phone receives ETWS Earthquake and Tsunami warning message
259
260 Returns:
261 True if pass; False if fail
262 """
263 return self._send_receive_etws_message(
264 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_OTHER_EMERGENCY,
265 "WCDMA ETWS Other Emergency")
266
Jaineele299ac12017-04-19 12:23:52 -0700267 @test_tracker_info(uuid="a9fd9c0e-21bf-41d1-81d2-c34679052fe0")
Betty Zhouecac2632016-12-08 20:31:05 -0800268 @TelephonyBaseTest.tel_test_wrap
269 def test_etws_earthquake_tsunami_gsm(self):
270 """ETWS Earthquake and Tsunami warning message reception on GSM
271
272 Tests the capability of device to receive and inform the user
273 about the ETWS Earthquake and Tsunami warning message when camped on
274 GSM newtork
275
276 Steps:
277 1. Make Sure Phone is camped on GSM network
278 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
279
280 Expected Result:
281 Phone receives ETWS Earthquake and Tsunami warning message
282
283 Returns:
284 True if pass; False if fail
285 """
286 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
287 ETWS_WARNING_EARTHQUAKETSUNAMI,
288 "GSM Earthquake and Tsunami")
289
Jaineele299ac12017-04-19 12:23:52 -0700290 @test_tracker_info(uuid="0ae42f8d-1720-449c-9200-e88f7f1d2cbe")
Betty Zhouecac2632016-12-08 20:31:05 -0800291 @TelephonyBaseTest.tel_test_wrap
292 def test_etws_other_emergency_gsm(self):
293 """ETWS Other emergency warning message reception on GSM
294
295 Tests the capability of device to receive and inform the user
296 about the ETWS Other emergency warning message when camped on
297 GSM newtork
298
299 Steps:
300 1. Make Sure Phone is camped on GSM network
301 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
302
303 Expected Result:
304 Phone receives ETWS Earthquake and Tsunami warning message
305
306 Returns:
307 True if pass; False if fail
308 """
309 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
310 ETWS_WARNING_OTHER_EMERGENCY,
311 "GSM ETWS Other Emergency")
312
313 """ Tests End """