From 16e09071294df88a0e5812acb97c66fc3e88d6f3 Mon Sep 17 00:00:00 2001 From: Justin Newberry Date: Mon, 29 Jan 2024 20:33:47 -0500 Subject: [PATCH] LogReader: add ```.filter``` (#31222) add filter old-commit-hash: c782fbc34e05922765959ee3c3b6bba38c0150fb --- tools/lib/logreader.py | 6 ++++-- tools/lib/tests/test_logreader.py | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/lib/logreader.py b/tools/lib/logreader.py index 192ee8e6f2..c53b9c4c79 100755 --- a/tools/lib/logreader.py +++ b/tools/lib/logreader.py @@ -275,9 +275,11 @@ are uploaded or auto fallback to qlogs with '/a' selector at the end of the rout def from_bytes(dat): return _LogFileReader("", dat=dat) + def filter(self, msg_type: str): + return (getattr(m, m.which()) for m in filter(lambda m: m.which() == msg_type, self)) + def first(self, msg_type: str): - m = next(filter(lambda m: m.which() == msg_type, self), None) - return None if m is None else getattr(m, msg_type) + return next(self.filter(msg_type), None) if __name__ == "__main__": diff --git a/tools/lib/tests/test_logreader.py b/tools/lib/tests/test_logreader.py index d8a9c14088..676d2bbadf 100644 --- a/tools/lib/tests/test_logreader.py +++ b/tools/lib/tests/test_logreader.py @@ -118,6 +118,12 @@ class TestLogReader(unittest.TestCase): self.assertEqual(qlog_len1, qlog_len2) + @pytest.mark.slow + def test_helpers(self): + lr = LogReader(f"{TEST_ROUTE}/0/q") + self.assertEqual(lr.first("carParams").carFingerprint, "SUBARU OUTBACK 6TH GEN") + self.assertTrue(0 < len(list(lr.filter("carParams"))) < len(list(lr))) + if __name__ == "__main__": unittest.main()