Exemple #1
0
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
Exemple #2
0
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
Exemple #3
0
    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))
Exemple #4
0
    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))