Spaces:
Build error
Build error
| """Test mmap reader can parse ticks written by Rust.""" | |
| import struct | |
| import tempfile | |
| from pathlib import Path | |
| from prediction_engine.python_bridge.mmap_reader import ( | |
| HEADER_FMT, HEADER_SIZE, MAGIC, TICK_FMT, TICK_SIZE, CompactTick, MmapReader, | |
| ) | |
| def _write_test_mmap(path: str, ticks: list): | |
| capacity = 100 | |
| file_size = HEADER_SIZE + capacity * TICK_SIZE | |
| with open(path, "wb") as f: | |
| f.write(struct.pack(HEADER_FMT, MAGIC, capacity, len(ticks), 0)) | |
| for venue, side, price, size, ts, mhash in ticks: | |
| f.write(struct.pack(TICK_FMT, venue, side, price, size, ts, mhash)) | |
| remaining = file_size - HEADER_SIZE - len(ticks) * TICK_SIZE | |
| f.write(b"\x00" * remaining) | |
| def test_read_header(): | |
| with tempfile.NamedTemporaryFile(suffix=".mmap", delete=False) as f: | |
| path = f.name | |
| _write_test_mmap(path, []) | |
| reader = MmapReader(path) | |
| reader.open() | |
| ticks = reader.read_new_ticks() | |
| assert ticks == [] | |
| reader.close() | |
| Path(path).unlink() | |
| def test_read_ticks(): | |
| with tempfile.NamedTemporaryFile(suffix=".mmap", delete=False) as f: | |
| path = f.name | |
| test_ticks = [ | |
| (0, 0, 0.62, 100.0, 1709726400_000_000, 12345), | |
| (1, 1, 0.35, 200.0, 1709726401_000_000, 67890), | |
| ] | |
| _write_test_mmap(path, test_ticks) | |
| reader = MmapReader(path) | |
| reader.open() | |
| ticks = reader.read_new_ticks() | |
| assert len(ticks) == 2 | |
| assert ticks[0].venue == "polymarket" | |
| assert ticks[0].price == 0.62 | |
| assert ticks[1].venue == "kalshi" | |
| assert ticks[1].side == "no" | |
| reader.close() | |
| Path(path).unlink() | |