fix: verify raw freshness by received time
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user