def test_sync_receive_messages(): c = sync.SyncConn() c.connect("127.0.0.1", 4150) c.send(protocol.identify({'short_id': 'test', 'long_id': 'test.example'})) c.send(protocol.subscribe('test', 'ch')) mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' for i in range(10): c.send(protocol.ready(1)) body = b'{"data": {"test_key": %d}}' % i ts = int(time.time() * 1000 * 1000) mock_response_write_message(c, ts, 0, i, body) resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_MESSAGE msg = protocol.decode_message(unpacked[1]) assert msg.timestamp == ts assert msg.id == b"%016d" % i assert msg.attempts == 0 assert msg.body == body
def test_sync_authenticate_subscribe(): c = sync.SyncConn() c.connect("127.0.0.1", 4150) c.send( protocol.identify({ 'short_id': 'test', 'long_id': 'test.example', 'client_id': 'test', 'hostname': 'test.example' })) c.send(protocol.subscribe('test', 'ch')) mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK'
def test_sync_receive_messages(): c = sync.SyncConn() c.connect("127.0.0.1", 4150) c.send(protocol.identify({'short_id': 'test', 'long_id': 'test.example', 'client_id': 'test', 'hostname': 'test.example'})) c.send(protocol.subscribe('test', 'ch')) mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' for i in range(10): c.send(protocol.ready(1)) body = ('{"data": {"test_key": %d}}' % i).encode() ts = int(time.time() * 1000 * 1000) mock_response_write_message(c, ts, 0, i, body) resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_MESSAGE msg = protocol.decode_message(unpacked[1]) assert msg.timestamp == ts assert msg.id == ("%016d" % i).encode() assert msg.attempts == 0 assert msg.body == body
def test_sync_authenticate_subscribe(): c = sync.SyncConn() c.connect("127.0.0.1", 4150) c.send(protocol.identify({'short_id': 'test', 'long_id': 'test.example'})) c.send(protocol.subscribe('test', 'ch')) mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') mock_response_write(c, protocol.FRAME_TYPE_RESPONSE, b'OK') resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK' resp = c.read_response() unpacked = protocol.unpack_response(resp) assert unpacked[0] == protocol.FRAME_TYPE_RESPONSE assert unpacked[1] == b'OK'
def _on_data(self, data, **kwargs): self.last_recv_timestamp = time.time() frame, data = protocol.unpack_response(data) if frame == protocol.FRAME_TYPE_MESSAGE: self.last_msg_timestamp = time.time() self.in_flight += 1 message = protocol.decode_message(data) message.on(event.FINISH, self._on_message_finish) message.on(event.REQUEUE, self._on_message_requeue) message.on(event.TOUCH, self._on_message_touch) self.trigger(event.MESSAGE, conn=self, message=message) elif frame == protocol.FRAME_TYPE_RESPONSE and data == b'_heartbeat_': self.send(protocol.nop()) self.trigger(event.HEARTBEAT, conn=self) elif frame == protocol.FRAME_TYPE_RESPONSE: self.trigger(event.RESPONSE, conn=self, data=data) elif frame == protocol.FRAME_TYPE_ERROR: self.trigger(event.ERROR, conn=self, error=protocol.Error(data))