import time import zmq from .test_process import TestProcessProto class TestProcessQueue(TestProcessProto): _process_cmd = ['minode', '--msg-queue'] @classmethod def setUpClass(cls): super().setUpClass() context = zmq.Context() cls.socket = context.socket(zmq.SUB) cls.socket.connect('tcp://localhost:5556') cls.socket.setsockopt(zmq.RCVTIMEO, 120000) cls.socket.setsockopt(zmq.SUBSCRIBE, b'obj') def test_receive_msg(self): """wait a couple of messages""" timeout = 240 start = time.time() c = 0 while time.time() - start < timeout: if c > 1: return try: tag, data = self.socket.recv().split(b'\x00', 1) except zmq.error.Again: time.sleep(2) continue else: c += 1 self.assertEqual(tag, b'obj') if c == 0: self.fail('No messages received in %ss' % timeout)