blob: 5c3336a7c0944c31d79a2ef3890fb2ab6334dbb2 [file] [log] [blame]
Betty Zhouecac2632016-12-08 20:31:05 -08001#/usr/bin/env python3.4
2#
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
49from acts.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
Jaineele299ac12017-04-19 12:23:52 -070050from acts.test_decorators import test_tracker_info
Betty Zhouecac2632016-12-08 20:31:05 -080051
Jaineel5eba0e92017-03-10 15:56:17 -080052WAIT_TIME_BETWEEN_REG_AND_MSG = 15 # default 15 sec
53
Betty Zhouecac2632016-12-08 20:31:05 -080054
55class TelLabEtwsTest(TelephonyBaseTest):
56 SERIAL_NO = cb_serial_number()
Betty Zhouecac2632016-12-08 20:31:05 -080057
58 def __init__(self, controllers):
59 TelephonyBaseTest.__init__(self, controllers)
60 self.ad = self.android_devices[0]
Patrick Chiang8324da72017-04-07 17:02:17 -070061 self.ad.sim_card = getattr(self.ad, "sim_card", None)
Betty Zhouecac2632016-12-08 20:31:05 -080062 self.md8475a_ip_address = self.user_params[
63 "anritsu_md8475a_ip_address"]
Patrick Chiang2f7d8f92017-03-17 15:42:28 -070064 self.wlan_option = self.user_params.get("anritsu_wlan_option", False)
Betty Zhoub499fe12017-03-01 19:38:42 -080065 self.ad.adb.shell("settings put secure cmas_additional_broadcast_pkg "
66 "com.googlecode.android_scripting")
Jaineel5eba0e92017-03-10 15:56:17 -080067 self.wait_time_between_reg_and_msg = self.user_params.get(
68 "wait_time_between_reg_and_msg", WAIT_TIME_BETWEEN_REG_AND_MSG)
Betty Zhouecac2632016-12-08 20:31:05 -080069
70 def setup_class(self):
71 try:
Patrick Chiang2f7d8f92017-03-17 15:42:28 -070072 self.anritsu = MD8475A(self.md8475a_ip_address, self.log,
73 self.wlan_option)
Betty Zhouecac2632016-12-08 20:31:05 -080074 except AnritsuError:
75 self.log.error("Error in connecting to Anritsu Simulator")
76 return False
77 return True
78
79 def setup_test(self):
80 ensure_phones_idle(self.log, self.android_devices)
81 toggle_airplane_mode(self.log, self.ad, True)
Jaineel1b6e84c2017-10-03 13:58:04 -070082 self.ad.adb.shell(
83 "setprop net.lte.ims.volte.provisioned 1", ignore_status=True)
Betty Zhouecac2632016-12-08 20:31:05 -080084 return True
85
86 def teardown_test(self):
87 self.log.info("Stopping Simulation")
88 self.anritsu.stop_simulation()
89 toggle_airplane_mode(self.log, self.ad, True)
90
91 def teardown_class(self):
92 self.anritsu.disconnect()
93 return True
94
95 def _send_receive_etws_message(self, set_simulation_func, rat, message_id,
96 warning_message):
97 try:
Patrick Chiang8324da72017-04-07 17:02:17 -070098 [self.bts1] = set_simulation_func(self.anritsu, self.user_params,
99 self.ad.sim_card)
100 set_usim_parameters(self.anritsu, self.ad.sim_card)
Jaineel2eeef432017-10-23 16:58:30 -0700101 if rat == RAT_LTE:
102 set_post_sim_params(self.anritsu, self.user_params,
103 self.ad.sim_card)
Betty Zhouecac2632016-12-08 20:31:05 -0800104 self.anritsu.start_simulation()
105
106 if rat == RAT_LTE:
107 preferred_network_setting = NETWORK_MODE_LTE_GSM_WCDMA
108 rat_family = RAT_FAMILY_LTE
109 elif rat == RAT_WCDMA:
110 self.bts1.wcdma_ctch = CTCHSetup.CTCH_ENABLE
111 self.ad.droid.telephonyToggleDataConnection(False)
112 preferred_network_setting = NETWORK_MODE_GSM_UMTS
113 rat_family = RAT_FAMILY_UMTS
114 elif rat == RAT_GSM:
115 self.bts1.gsm_cbch = CBCHSetup.CBCH_ENABLE
116 self.ad.droid.telephonyToggleDataConnection(False)
117 preferred_network_setting = NETWORK_MODE_GSM_ONLY
118 rat_family = RAT_FAMILY_GSM
119 elif rat == RAT_1XRTT:
120 preferred_network_setting = NETWORK_MODE_CDMA
121 rat_family = RAT_FAMILY_CDMA2000
122 else:
123 self.log.error("No valid RAT provided for ETWS test.")
124 return False
125
Betty Zhoub499fe12017-03-01 19:38:42 -0800126 if not ensure_network_rat(
127 self.log,
128 self.ad,
129 preferred_network_setting,
130 rat_family,
131 toggle_apm_after_setting=True):
Betty Zhouecac2632016-12-08 20:31:05 -0800132 self.log.error(
133 "Failed to set rat family {}, preferred network:{}".format(
134 rat_family, preferred_network_setting))
135 return False
136
137 self.anritsu.wait_for_registration_state()
Betty Zhouecac2632016-12-08 20:31:05 -0800138 if not etws_receive_verify_message_lte_wcdma(
139 self.log, self.ad, self.anritsu,
140 next(TelLabEtwsTest.SERIAL_NO), message_id,
141 warning_message):
142 self.log.error("Phone {} Failed to receive ETWS message"
143 .format(self.ad.serial))
144 return False
145 except AnritsuError as e:
146 self.log.error("Error in connection with Anritsu Simulator: " +
147 str(e))
148 return False
149 except Exception as e:
150 self.log.error("Exception during ETWS send/receive: " + str(e))
151 return False
152 return True
153
154 """ Tests Begin """
155
Jaineele299ac12017-04-19 12:23:52 -0700156 @test_tracker_info(uuid="af4a00d0-9a91-45d5-9f65-9541e64a57f2")
Betty Zhouecac2632016-12-08 20:31:05 -0800157 @TelephonyBaseTest.tel_test_wrap
158 def test_etws_earthquake_tsunami_lte(self):
159 """ETWS Earthquake and Tsunami warning message reception on LTE
160
161 Tests the capability of device to receive and inform the user
162 about the ETWS Earthquake and Tsunami warning message when camped on
163 LTE newtork
164
165 Steps:
166 1. Make Sure Phone is camped on LTE network
167 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
168
169 Expected Result:
170 Phone receives ETWS Earthquake and Tsunami warning message
171
172 Returns:
173 True if pass; False if fail
174 """
175 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
176 ETWS_WARNING_EARTHQUAKETSUNAMI,
177 "LTE Earthquake and Tsunami")
178
Jaineele299ac12017-04-19 12:23:52 -0700179 @test_tracker_info(uuid="03785878-0319-413c-9190-d4e08f0edc33")
Betty Zhouecac2632016-12-08 20:31:05 -0800180 @TelephonyBaseTest.tel_test_wrap
181 def test_etws_other_emergency_lte(self):
182 """ETWS Other emergency warning message reception on LTE
183
184 Tests the capability of device to receive and inform the user
185 about the ETWS Other emergency warning message when camped on
186 LTE newtork
187
188 Steps:
189 1. Make Sure Phone is camped on LTE network
190 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
191
192 Expected Result:
193 Phone receives ETWS Earthquake and Tsunami warning message
194
195 Returns:
196 True if pass; False if fail
197 """
198 return self._send_receive_etws_message(set_system_model_lte, RAT_LTE,
199 ETWS_WARNING_OTHER_EMERGENCY,
200 "LTE ETWS Other Emergency")
201
Jaineele299ac12017-04-19 12:23:52 -0700202 @test_tracker_info(uuid="1ef4a5d7-9ceb-49eb-8ec7-5538625c8bd4")
Betty Zhouecac2632016-12-08 20:31:05 -0800203 @TelephonyBaseTest.tel_test_wrap
204 def test_etws_earthquake_tsunami_wcdma(self):
205 """ETWS Earthquake and Tsunami warning message reception on WCDMA
206
207 Tests the capability of device to receive and inform the user
208 about the ETWS Earthquake and Tsunami warning message when camped on
209 WCDMA newtork
210
211 Steps:
212 1. Make Sure Phone is camped on WCDMA network
213 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
214
215 Expected Result:
216 Phone receives ETWS Earthquake and Tsunami warning message
217
218 Returns:
219 True if pass; False if fail
220 """
221 return self._send_receive_etws_message(
222 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_EARTHQUAKETSUNAMI,
223 "WCDMA Earthquake and Tsunami")
224
Jaineele299ac12017-04-19 12:23:52 -0700225 @test_tracker_info(uuid="71dc9650-d00a-4533-99f5-5cc301c21334")
Betty Zhouecac2632016-12-08 20:31:05 -0800226 @TelephonyBaseTest.tel_test_wrap
227 def test_etws_other_emergency_wcdma(self):
228 """ETWS Other emergency warning message reception on WCDMA
229
230 Tests the capability of device to receive and inform the user
231 about the ETWS Other emergency warning message when camped on
232 WCDMA newtork
233
234 Steps:
235 1. Make Sure Phone is camped on WCDMA network
236 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
237
238 Expected Result:
239 Phone receives ETWS Earthquake and Tsunami warning message
240
241 Returns:
242 True if pass; False if fail
243 """
244 return self._send_receive_etws_message(
245 set_system_model_wcdma, RAT_WCDMA, ETWS_WARNING_OTHER_EMERGENCY,
246 "WCDMA ETWS Other Emergency")
247
Jaineele299ac12017-04-19 12:23:52 -0700248 @test_tracker_info(uuid="a9fd9c0e-21bf-41d1-81d2-c34679052fe0")
Betty Zhouecac2632016-12-08 20:31:05 -0800249 @TelephonyBaseTest.tel_test_wrap
250 def test_etws_earthquake_tsunami_gsm(self):
251 """ETWS Earthquake and Tsunami warning message reception on GSM
252
253 Tests the capability of device to receive and inform the user
254 about the ETWS Earthquake and Tsunami warning message when camped on
255 GSM newtork
256
257 Steps:
258 1. Make Sure Phone is camped on GSM network
259 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
260
261 Expected Result:
262 Phone receives ETWS Earthquake and Tsunami warning message
263
264 Returns:
265 True if pass; False if fail
266 """
267 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
268 ETWS_WARNING_EARTHQUAKETSUNAMI,
269 "GSM Earthquake and Tsunami")
270
Jaineele299ac12017-04-19 12:23:52 -0700271 @test_tracker_info(uuid="0ae42f8d-1720-449c-9200-e88f7f1d2cbe")
Betty Zhouecac2632016-12-08 20:31:05 -0800272 @TelephonyBaseTest.tel_test_wrap
273 def test_etws_other_emergency_gsm(self):
274 """ETWS Other emergency warning message reception on GSM
275
276 Tests the capability of device to receive and inform the user
277 about the ETWS Other emergency warning message when camped on
278 GSM newtork
279
280 Steps:
281 1. Make Sure Phone is camped on GSM network
282 2. Send ETWS Earthquake and Tsunami warning message from Anritsu
283
284 Expected Result:
285 Phone receives ETWS Earthquake and Tsunami warning message
286
287 Returns:
288 True if pass; False if fail
289 """
290 return self._send_receive_etws_message(set_system_model_gsm, RAT_GSM,
291 ETWS_WARNING_OTHER_EMERGENCY,
292 "GSM ETWS Other Emergency")
293
294 """ Tests End """