Use regex to get log from brcm nmea log
Bug: 268359579
Change-Id: I9ed0cadf07f8ac412f0efbe3c7b192b599e6b2b6
diff --git a/acts_tests/acts_contrib/test_utils/gnss/gnss_test_utils.py b/acts_tests/acts_contrib/test_utils/gnss/gnss_test_utils.py
index 1b7df1f..507e073 100644
--- a/acts_tests/acts_contrib/test_utils/gnss/gnss_test_utils.py
+++ b/acts_tests/acts_contrib/test_utils/gnss/gnss_test_utils.py
@@ -114,6 +114,7 @@
XTRA_SERVER_2="http://"
XTRA_SERVER_3="http://"
"""
+_BRCM_DUTY_CYCLE_PATTERN = re.compile(r".*PGLOR,\d+,STA.*")
class GnssTestUtilsError(Exception):
@@ -2364,6 +2365,8 @@
brcm_error_log_list = []
pixellogger_path = (
"/sdcard/Android/data/com.android.pixellogger/files/logs/gps/.")
+ if not isinstance(nmea_pattern, re.Pattern):
+ nmea_pattern = re.compile(nmea_pattern)
with tempfile.TemporaryDirectory() as tmp_dir:
try:
@@ -2386,21 +2389,21 @@
for nmea_log_path in gl_logs:
ad.log.info("Parsing log pattern of \"%s\" in %s" % (nmea_pattern,
nmea_log_path))
- brcm_log = open(nmea_log_path, "r", encoding="UTF-8", errors="ignore")
- lines = brcm_log.readlines()
- for line in lines:
- if nmea_pattern in line:
- brcm_log_list.append(line)
- for attr in brcm_log_error_pattern:
- if attr in line:
- benign_log = False
- for regex_pattern in brcm_error_log_allowlist:
- if re.search(regex_pattern, line):
- benign_log = True
- ad.log.info("\"%s\" is in allow-list and removed "
- "from error." % line)
- if not benign_log:
- brcm_error_log_list.append(line)
+ with open(nmea_log_path, "r", encoding="UTF-8", errors="ignore") as lines:
+ for line in lines:
+ line = line.strip()
+ if nmea_pattern.fullmatch(line):
+ brcm_log_list.append(line)
+ for attr in brcm_log_error_pattern:
+ if attr in line:
+ benign_log = False
+ for regex_pattern in brcm_error_log_allowlist:
+ if re.search(regex_pattern, line):
+ benign_log = True
+ ad.log.debug("\"%s\" is in allow-list and removed "
+ "from error." % line)
+ if not benign_log:
+ brcm_error_log_list.append(line)
brcm_error_log = "".join(brcm_error_log_list)
return brcm_log_list, brcm_error_log
@@ -2415,9 +2418,10 @@
stop_pixel_logger: To disable pixel logger when getting the log.
"""
pglor_list, brcm_error_log = parse_brcm_nmea_log(
- ad, "$PGLOR,11,STA", brcm_error_log_allowlist, stop_pixel_logger)
+ ad, _BRCM_DUTY_CYCLE_PATTERN, brcm_error_log_allowlist, stop_pixel_logger)
if not pglor_list:
raise signals.TestFailure("Fail to get DPO logs from pixel logger")
+
return pglor_list, brcm_error_log
diff --git a/acts_tests/tests/google/gnss/GnssBroadcomConfigurationTest.py b/acts_tests/tests/google/gnss/GnssBroadcomConfigurationTest.py
index b74cb16..64fe9c8 100644
--- a/acts_tests/tests/google/gnss/GnssBroadcomConfigurationTest.py
+++ b/acts_tests/tests/google/gnss/GnssBroadcomConfigurationTest.py
@@ -8,6 +8,7 @@
For more details, please refer to : go/p22_user_build_verification
"""
import os
+import re
import shutil
import tempfile
import time
@@ -359,7 +360,8 @@
6. should not find slog in pixel logger log files
"""
self.run_gps_and_capture_log()
- result, _ = gutils.parse_brcm_nmea_log(self.ad, "slog :", [])
+ pattern = re.compile(f".*slog\s+:.*")
+ result, _ = gutils.parse_brcm_nmea_log(self.ad, pattern, [])
asserts.assert_true(bool(result), "LogEnabled is set to true, but no gps log was found")
self.set_gps_logenabled(enable=False)
@@ -369,7 +371,7 @@
self.run_gps_and_capture_log()
try:
- result, _ = gutils.parse_brcm_nmea_log(self.ad, "slog :", [])
+ result, _ = gutils.parse_brcm_nmea_log(self.ad, pattern, [])
asserts.assert_false(
bool(result),
("LogEnabled is set to False but still found %d slog" % len(result)))