blob: ed3ea6a37befcb28dba451b5869bc4edf4ca0fa0 [file] [log] [blame]
#!/usr/bin/env python3.4
#
# Copyright 2022 - Google
#
# 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.
"""
Test Script for CellBroadcast initialization Test
"""
import time
import os
from acts.logger import epoch_to_log_line_timestamp
from acts.keys import Config
from acts.base_test import BaseTestClass
from acts.test_decorators import test_tracker_info
from acts.utils import load_config
from acts_contrib.test_utils.tel.TelephonyBaseTest import TelephonyBaseTest
from acts_contrib.test_utils.tel.tel_test_utils import reboot_device
from acts_contrib.test_utils.tel.tel_test_utils import get_device_epoch_time
class CellBroadcastInitializationTest(BaseTestClass):
def setup_test(self):
super().setup_class()
self.number_of_devices = 1
self.cbr_init_iteration = self.user_params.get("cbr_init_iteration", 50)
def teardown_class(self):
super().teardown_class(self)
def _get_current_time_in_secs(self, ad):
try:
c_time = get_device_epoch_time(ad)
c_time = epoch_to_log_line_timestamp(c_time).split()[1].split('.')[0]
return self._convert_formatted_time_to_secs(c_time)
except Exception as e:
ad.log.error(e)
def _convert_formatted_time_to_secs(self, formatted_time):
try:
time_list = formatted_time.split(":")
return int(time_list[0]) * 3600 + int(time_list[1]) * 60 + int(time_list[2])
except Exception as e:
self.log.error(e)
def _verify_channel_config_4400(self, ad):
#TODO add all channel checks as constants in tel_defines
channel_4400__log = 'SmsBroadcastConfigInfo: Id \\[4400'
return ad.search_logcat(channel_4400__log)
@test_tracker_info(uuid="30f30fa4-f57a-40bd-a37a-141a8efb5a04")
@TelephonyBaseTest.tel_test_wrap
def test_reboot_stress(self):
""" Verifies channel 4400 is set correctly after device boot up
only applicable to US carriers
after every boot up, search logcat to verify channel 4400 is set
default iterations is 50
config param : cbr_init_iteration
"""
ad = self.android_devices[0]
current_cbr_version = ad.get_apk_version('com.google.android.cellbroadcast')
ad.log.info("Current cbr apk version is %s.", current_cbr_version)
failure_count = 0
begin_time = self._get_current_time_in_secs(ad)
for iteration in range(1, self.cbr_init_iteration + 1):
msg = "Stress CBR reboot initialization test Iteration: <%s>/<%s>" % (iteration, self.cbr_init_iteration)
self.log.info(msg)
ad.reboot()
ad.wait_for_boot_completion()
self.log.info("Rebooted")
#TODO make sleep time a constant in tel_defines WAIT_TIME_CBR_INIT_AFTER_REBOOT
time.sleep(40)
if not self._verify_channel_config_4400(ad):
failure_count += 1
self.log.error('Iteration failed at %d ' % iteration)
end_time = self._get_current_time_in_secs(ad)
self.log.debug('Test completed from %s to %s' % (begin_time, end_time))
result = True
if failure_count > 0:
result = False
self.log.error('CBR reboot init stress test: <%s> failures in %s iterations',
failure_count, self.cbr_init_iteration)
return result