mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-11-08 13:33:42 +08:00
31 lines
952 B
Python
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) == []
|