Ejemplo n.º 1
0
    async def register_with_response(self, events):
        """Register events

        Each `RegisterEvent` from `events` is paired with results `Event` if
        new event was successfuly created or `None` is new event could not
        be created.

        Args:
            events (List[common.RegisterEvent]): register events

        Returns:
            List[Optional[common.Event]]

        Raises:
            chatter.ConnectionClosedError: closed chatter connection
            Exception

        """
        conv = self._conn.send(chatter.Data(
            module='HatEvent',
            type='MsgRegisterReq',
            data=[common.register_event_to_sbs(i) for i in events]),
                               last=False)
        response_future = asyncio.Future()
        self._conv_futures[conv] = response_future
        return await response_future
Ejemplo n.º 2
0
async def test_client_register(server_address):
    register_events = [
        common.RegisterEvent(event_type=('a', 'b', 'c'),
                             source_timestamp=common.now(),
                             payload=common.EventPayload(
                                 common.EventPayloadType.JSON, i))
        for i in range(10)
    ]

    server = await create_server(server_address)
    client = await hat.event.client.connect(server_address)
    conn = await server.get_connection()

    client.register([])
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is True
    assert msg.data == chatter.Data('HatEvent', 'MsgRegisterReq', [])

    client.register(register_events)
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is True
    assert msg.data == chatter.Data(
        'HatEvent', 'MsgRegisterReq',
        [common.register_event_to_sbs(i) for i in register_events])

    await conn.async_close()
    await client.async_close()
    await server.async_close()

    with pytest.raises(ConnectionError):
        client.register(register_events)
Ejemplo n.º 3
0
    def register(self, events: typing.List[common.RegisterEvent]):
        """Register events

        Raises:
            ConnectionError

        """
        msg_data = chatter.Data(
            module='HatEvent',
            type='MsgRegisterReq',
            data=[common.register_event_to_sbs(i) for i in events])
        self._conn.send(msg_data)
Ejemplo n.º 4
0
async def test_client_register_with_response(server_address):
    register_events = [
        common.RegisterEvent(event_type=('a', 'b', 'c'),
                             source_timestamp=common.now(),
                             payload=common.EventPayload(
                                 common.EventPayloadType.JSON, i))
        for i in range(10)
    ]

    events = [
        common.Event(event_id=common.EventId(1, 2),
                     event_type=register_event.event_type,
                     timestamp=common.now(),
                     source_timestamp=register_event.source_timestamp,
                     payload=register_event.payload)
        for register_event in register_events
    ]

    events = [event if i % 2 else None for i, event in enumerate(events)]

    server = await create_server(server_address)
    client = await hat.event.client.connect(server_address)
    conn = await server.get_connection()

    register_future = asyncio.ensure_future(client.register_with_response([]))
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is False
    assert msg.data == chatter.Data('HatEvent', 'MsgRegisterReq', [])
    assert not register_future.done()
    conn.send_register_res(msg.conv, [])
    received = await register_future
    assert received == []

    register_future = asyncio.ensure_future(
        client.register_with_response(register_events))
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is False
    assert msg.data == chatter.Data(
        'HatEvent', 'MsgRegisterReq',
        [common.register_event_to_sbs(i) for i in register_events])
    assert not register_future.done()
    conn.send_register_res(msg.conv, events)
    received = await register_future
    assert received == events

    await conn.async_close()
    await client.async_close()
    await server.async_close()

    with pytest.raises(ConnectionError):
        await client.register_with_response(register_events)
Ejemplo n.º 5
0
    def register(self, events):
        """Register events

        Args:
            events (List[common.RegisterEvent]): register events

        Raises:
            chatter.ConnectionClosedError: closed chatter connection
            Exception

        """
        self._conn.send(
            chatter.Data(
                module='HatEvent',
                type='MsgRegisterReq',
                data=[common.register_event_to_sbs(i) for i in events]))
Ejemplo n.º 6
0
    async def register_with_response(
        self, events: typing.List[common.RegisterEvent]
    ) -> typing.List[typing.Optional[common.Event]]:  # NOQA
        """Register events

        Each `common.RegisterEvent` from `events` is paired with results
        `common.Event` if new event was successfuly created or ``None`` is new
        event could not be created.

        Raises:
            ConnectionError

        """
        msg_data = chatter.Data(
            module='HatEvent',
            type='MsgRegisterReq',
            data=[common.register_event_to_sbs(i) for i in events])
        conv = self._conn.send(msg_data, last=False)
        return await self._wait_conv_res(conv)