fix: normalize live verify peer filters
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was canceled
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was canceled
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user