From 33ae76fc1cd5c8cd022b546da280e7ebbe49f88a Mon Sep 17 00:00:00 2001 From: lingniu Date: Mon, 29 Jun 2026 21:04:24 +0800 Subject: [PATCH] fix: normalize live verify peer filters --- tools/test_vehicle_ingest_live_verify.py | 18 ++++++++++++++++++ tools/vehicle_ingest_live_verify.py | 13 ++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/tools/test_vehicle_ingest_live_verify.py b/tools/test_vehicle_ingest_live_verify.py index ff205411..e9184551 100644 --- a/tools/test_vehicle_ingest_live_verify.py +++ b/tools/test_vehicle_ingest_live_verify.py @@ -55,6 +55,24 @@ class VehicleIngestLiveVerifyTest(unittest.TestCase): self.assertIn("ts >= '2026-06-29 00:00:00'", sql) self.assertIn("ts <= '2026-06-29 23:59:59'", sql) + def test_gb32960_peer_filter_treats_plain_ip_as_contains_pattern(self): + sql = live_verify.gb32960_platform_login_count_sql( + date_from="2026-06-29 00:00:00", + date_to="2026-06-29 23:59:59", + peer_like="115.29.187.205", + ) + + self.assertIn("peer LIKE '%115.29.187.205%'", sql) + + def test_gb32960_peer_filter_preserves_explicit_like_pattern(self): + sql = live_verify.gb32960_platform_login_count_sql( + date_from="2026-06-29 00:00:00", + date_to="2026-06-29 23:59:59", + peer_like="115.29.187.%", + ) + + self.assertIn("peer LIKE '115.29.187.%'", sql) + def test_jt808_location_sql_uses_dedicated_location_stable_without_protocol_filter(self): sql = live_verify.jt808_location_count_sql( date_from="2026-06-29 00:00:00", diff --git a/tools/vehicle_ingest_live_verify.py b/tools/vehicle_ingest_live_verify.py index f83b4a38..e2e469a4 100755 --- a/tools/vehicle_ingest_live_verify.py +++ b/tools/vehicle_ingest_live_verify.py @@ -59,7 +59,7 @@ def jt808_location_count_sql(date_from: str, date_to: str) -> str: def gb32960_platform_login_count_sql(date_from: str, date_to: str, peer_like: str = "") -> str: filters = ["protocol = 'GB32960'", "message_id = 5"] if peer_like: - filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like)) + filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like_pattern(peer_like))) return count_sql("raw_frames", filters, date_from, date_to) @@ -71,14 +71,14 @@ def gb32960_vehicle_realtime_count_sql(date_from: str, date_to: str, peer_like: "vin NOT LIKE 'LTEST%'", ] if peer_like: - filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like)) + filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like_pattern(peer_like))) return count_sql("raw_frames", filters, date_from, date_to) def latest_gb32960_platform_raw_uri_sql(date_from: str, date_to: str, peer_like: str = "") -> str: filters = ["protocol = 'GB32960'", "message_id = 5", "raw_uri <> ''"] if peer_like: - filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like)) + filters.append("peer LIKE " + tdengine_smoke.sql_literal(peer_like_pattern(peer_like))) where = list(filters) if date_from: where.append("ts >= " + tdengine_smoke.sql_literal(date_from)) @@ -87,6 +87,13 @@ def latest_gb32960_platform_raw_uri_sql(date_from: str, date_to: str, peer_like: return "SELECT raw_uri FROM raw_frames WHERE " + " AND ".join(where) + " ORDER BY ts DESC LIMIT 1" +def peer_like_pattern(value: str) -> str: + value = value.strip() + if "%" in value or "_" in value: + return value + return "%" + value + "%" + + def evaluate_counts(counts: dict[str, int], thresholds: Thresholds) -> list[Check]: checks = [ threshold_check(