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)))