fix: verify raw freshness by received time

This commit is contained in:
lingniu
2026-07-02 09:16:45 +08:00
parent 0a024f9a76
commit 318486b1e9
4 changed files with 130 additions and 20 deletions

View File

@@ -32,6 +32,26 @@ class GoNativeProdSmokeTest(unittest.TestCase):
"&dateTo=2026-07-03T00%3A00%3A00%2B08%3A00&limit=1",
)
def test_explicit_today_date_still_enforces_raw_freshness(self):
now = dt.datetime(2026, 7, 2, 9, 30, tzinfo=smoke.SHANGHAI)
window = smoke.resolve_check_window("2026-07-02", 15.0, now)
self.assertEqual(window.date_from, "2026-07-02T00:00:00+08:00")
self.assertEqual(window.date_to, "2026-07-03T00:00:00+08:00")
self.assertEqual(window.stat_date, "2026-07-02")
self.assertEqual(window.max_raw_age_minutes, 15.0)
def test_explicit_historical_date_disables_raw_freshness(self):
now = dt.datetime(2026, 7, 2, 9, 30, tzinfo=smoke.SHANGHAI)
window = smoke.resolve_check_window("2026-07-01", 15.0, now)
self.assertEqual(window.date_from, "2026-07-01T00:00:00+08:00")
self.assertEqual(window.date_to, "2026-07-02T00:00:00+08:00")
self.assertEqual(window.stat_date, "2026-07-01")
self.assertIsNone(window.max_raw_age_minutes)
def test_total_check_passes_when_total_reaches_minimum(self):
check = smoke.check_total(
"jt808.raw",
@@ -82,6 +102,23 @@ class GoNativeProdSmokeTest(unittest.TestCase):
self.assertIn("gb32960.daily_mileage", names)
self.assertIn("jt808.daily_total_mileage", names)
def test_raw_checks_order_by_received_at_for_ingest_freshness(self):
specs = smoke.build_check_specs(
date_from="2026-07-02T00:00:00+08:00",
date_to="2026-07-03T00:00:00+08:00",
stat_date="2026-07-02",
min_raw=1,
min_history=1,
min_stat=1,
max_raw_age_minutes=15,
)
raw_specs = [spec for spec in specs if spec.name.endswith(".raw")]
self.assertTrue(raw_specs)
for spec in raw_specs:
self.assertEqual(spec.params.get("orderBy"), "receivedAt")
def test_vehicle_identifier_prefers_vin_over_vehicle_key(self):
identifier = smoke.vehicle_identifier({
"vin": "LB9A32A20R0LS1343",
@@ -185,6 +222,26 @@ class GoNativeProdSmokeTest(unittest.TestCase):
self.assertEqual(check.status, "fail")
self.assertIn("latest_age_minutes=60.0", check.message)
def test_total_check_uses_received_at_for_raw_freshness_when_present(self):
now = dt.datetime(2026, 7, 1, 18, 0, 0, tzinfo=dt.timezone.utc)
check = smoke.check_total(
"gb32960.raw",
{
"total": 1,
"items": [{
"ts": "2026-07-01 17:00:00",
"received_at": "2026-07-01 17:58:00",
}],
},
minimum=1,
max_age_minutes=15,
now=now,
)
self.assertEqual(check.status, "pass")
self.assertIn("latest_age_minutes=2.0", check.message)
def test_total_check_passes_when_latest_sample_is_fresh(self):
now = dt.datetime(2026, 7, 1, 18, 0, 0, tzinfo=dt.timezone.utc)