"""Small synthetic checks only; model/real-source runs belong on Worker 006.""" import importlib import io import json import threading import zipfile from pathlib import Path from types import SimpleNamespace import numpy as np import pytest @pytest.fixture def pilot(monkeypatch): root = Path(__file__).resolve().parents[1] monkeypatch.syspath_prepend( str(root / "experiments/perception/worker/streaming_profile_stage1") ) return lambda name: importlib.import_module(name) def test_pending_overflow_is_explicit_and_does_not_evict_active(pilot): queue = pilot("pilot_queue").Mailbox(capacity=2, byte_limit=100) def make(sequence): return {"sequence": sequence, "payload_bytes": 10} queue.put(make(0)) active = queue.take() for sequence in (1, 2, 3): queue.put(make(sequence)) assert queue.dropped == [{"sequence": 1, "reason": "pending-overflow"}] assert queue.bytes == 30 assert queue.peak_pending == 2 queue.release(active) assert queue.take()["sequence"] == 2 assert queue.take()["sequence"] == 3 def test_active_bytes_count_towards_memory_limit(pilot): queue = pilot("pilot_queue").Mailbox(byte_limit=20) queue.put({"sequence": 0, "payload_bytes": 20}) active = queue.take() queue.put({"sequence": 1, "payload_bytes": 1}) assert queue.dropped == [{"sequence": 1, "reason": "byte-budget"}] assert queue.peak_bytes == 20 queue.release(active) queue.finish() assert queue.take() is None def test_interrupted_decode_accounts_for_released_but_not_admitted_camera(pilot, monkeypatch): module = pilot("run_joint_pilot") event = SimpleNamespace(time_ns=1_000_000_000, channel="camera", sequence=0, value={}) archive = SimpleNamespace(counters=lambda: {}, close=lambda: None) monkeypatch.setattr(module, "SensorArchive", lambda _path: archive) monkeypatch.setattr(module, "camera_events", lambda *args: iter([event])) monkeypatch.setattr(module, "merged_events", lambda *args: iter([event])) def interrupted(*args): raise EOFError("decoder stopped by supervisor") monkeypatch.setattr(module, "send", interrupted) queue = pilot("pilot_queue").Mailbox() report = {} stop = SimpleNamespace(is_set=lambda: False, wait=lambda _seconds: False) args = SimpleNamespace(sensor_archive="unused", camera_index="unused", frames=1) module.produce(args, SimpleNamespace(stdin=None), queue, stop, report) assert report["arrivals"]["camera"] == 1 assert report["failed_camera_sequences"] == [0] assert "decoder stopped" in queue.error and queue.dropped_count == 0 assert queue.quiescent def test_numpy_member_is_read_incrementally_and_bounded(pilot): data = io.BytesIO() np.savez_compressed(data, points=np.arange(300, dtype="