fix(HEL-356): harden realtime quote completeness
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
@@ -57,6 +57,33 @@ class SchedulerTests(unittest.TestCase):
|
||||
self.assertEqual(ran["eod_a"], 1)
|
||||
tmp.cleanup()
|
||||
|
||||
def test_realtime_warmup_runs_once_per_interval_during_market(self) -> None:
|
||||
tmp = tempfile.TemporaryDirectory()
|
||||
db = HubDB(Path(tmp.name) / "hub.db")
|
||||
adapter = TushareAdapter("x", transport=fake_transport)
|
||||
settings = Settings(
|
||||
encryption_key=SecretVault.generate_key(),
|
||||
scheduler_enabled=False,
|
||||
db_path=db.path,
|
||||
quality={"realtime_warmup_interval_seconds": 120},
|
||||
)
|
||||
pipe = Pipeline(db, adapter, settings)
|
||||
pipe.ingest_reference("20240902")
|
||||
calls: list[str] = []
|
||||
sched = Scheduler(db, pipe, jobs={"realtime_warmup": lambda day: calls.append(day) or {}})
|
||||
|
||||
first = sched.tick(datetime(2024, 9, 2, 10, 0, 0, tzinfo=SHANGHAI))
|
||||
duplicate = sched.tick(datetime(2024, 9, 2, 10, 1, 0, tzinfo=SHANGHAI))
|
||||
second = sched.tick(datetime(2024, 9, 2, 10, 2, 0, tzinfo=SHANGHAI))
|
||||
lunch = sched.tick(datetime(2024, 9, 2, 12, 0, 0, tzinfo=SHANGHAI))
|
||||
|
||||
self.assertIn("realtime_warmup", first)
|
||||
self.assertNotIn("realtime_warmup", duplicate)
|
||||
self.assertIn("realtime_warmup", second)
|
||||
self.assertNotIn("realtime_warmup", lunch)
|
||||
self.assertEqual(calls, ["20240902", "20240902"])
|
||||
tmp.cleanup()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
||||
Reference in New Issue
Block a user