Files
StarPilot/openpilot/starpilot/tests/test_msgq_binding_contract.py
T
2026-11-02 12:28:46 -06:00

31 lines
952 B
Python

import gc
import uuid
import msgq
def test_native_binding_keeps_all_64_reader_slots():
name = f'nb_readers_{uuid.uuid4().hex}'
publisher = msgq.pub_sock(name)
readers = [msgq.sub_sock(name, timeout=1000) for _ in range(64)]
publisher.wait_for_readers()
publisher.send(b'all registered readers receive the same message')
assert [reader.receive() for reader in readers] == [b'all registered readers receive the same message'] * 64
def test_poller_retains_registered_socket_and_returns_its_identity():
name = f'nb_poller_{uuid.uuid4().hex}'
publisher = msgq.pub_sock(name)
reader = msgq.sub_sock(name, timeout=1000)
poller = msgq.Poller()
poller.registerSocket(reader)
identity = id(reader)
del reader
gc.collect()
assert poller.poll(0) == []
publisher.send(b'live')
ready = poller.poll(1000)
assert len(ready) == 1 and id(ready[0]) == identity
assert ready[0].receive() == b'live'
assert poller.poll(0) == []