Example #1
0
async def test_query(tmp_path, create_event_server):
    backend_conf = {
        'module': 'hat.event.server.backends.sqlite',
        'db_path': str(tmp_path / 'event.db'),
        'query_pool_size': 1
    }
    modules_conf = []

    with create_event_server(backend_conf, modules_conf) as srv:
        srv.wait_active(5)

        client = await hat.event.client.connect(srv.address)

        resp0 = await client.query(common.QueryData(event_types=[('*', )]))
        assert len(resp0) == 1

        resp1 = await client.register_with_response(
            [common.RegisterEvent(('a', ), common.now(), None)])
        result = await client.query(common.QueryData(event_types=[('*', )]))
        assert resp1 + resp0 == result

        resp2 = await client.register_with_response(
            [common.RegisterEvent(('b', ), common.now(), None)])
        result = await client.query(common.QueryData(event_types=[('*', )]))
        assert resp2 + resp1 + resp0 == result

        await client.async_close()
Example #2
0
async def test_dummy(client):
    result = await client.query(common.QueryData(event_types=[('*',)]))
    assert result == []

    resp = await client.register_with_response(
        [common.RegisterEvent(('a',), None, None)])
    assert len(resp) == 1

    result = await client.query(common.QueryData(event_types=[('*',)]))
    assert result == []
Example #3
0
async def test_query_empty(duration, create_server, create_client):
    with create_server(1) as server:
        client = await create_client(server.address)

        with duration("query empty database with empty QueryData "
                      "(fist time)"):
            await client.query(common.QueryData())

        with duration("query empty database with empty QueryData "
                      "(second time)"):
            await client.query(common.QueryData())

        with duration("query empty database for all event types"):
            await client.query(common.QueryData(event_types=[['*']]))

        await client.async_close()
Example #4
0
async def test_client_query(server_address):
    events = [
        common.Event(event_id=common.EventId(1, 2),
                     event_type=('a', 'b', 'c'),
                     timestamp=common.now(),
                     source_timestamp=None,
                     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()

    query_data = common.QueryData()
    query_future = asyncio.ensure_future(client.query(query_data))
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is False
    assert msg.data == chatter.Data('HatEvent', 'MsgQueryReq',
                                    common.query_to_sbs(query_data))
    assert not query_future.done()
    conn.send_query_res(msg.conv, [])
    received = await query_future
    assert received == []

    query_data = common.QueryData(event_types=[['*']])
    query_future = asyncio.ensure_future(client.query(query_data))
    msg = await conn.receive()
    assert msg.first is True
    assert msg.last is False
    assert msg.data == chatter.Data('HatEvent', 'MsgQueryReq',
                                    common.query_to_sbs(query_data))
    assert not query_future.done()
    conn.send_query_res(msg.conv, events)
    received = await query_future
    assert received == events

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

    with pytest.raises(ConnectionError):
        await client.query(common.QueryData())
Example #5
0
async def test_payload(client, payload_type, payload_data):
    resp = await client.register_with_response([
        common.RegisterEvent(('a', ), None,
                             common.EventPayload(payload_type, payload_data))
    ])
    result = await client.query(common.QueryData(event_types=[('a', )]))

    assert resp == result
    assert len(result) == 1
    assert result[0].payload == common.EventPayload(payload_type, payload_data)
Example #6
0
async def test_multiple_writes(client, register_count, register_size):
    for i in range(register_count):
        resp = await client.register_with_response([
            common.RegisterEvent(('a', ), None, None)
            for _ in range(register_size)
        ])
        assert len(resp) == register_size

        result = await client.query(common.QueryData(event_types=[('a', )]))
        assert len(result) == (i + 1) * register_size
Example #7
0
async def _query(args, client, printer):
    data = common.QueryData(
        event_ids=args.event_ids,
        event_types=args.event_types,
        t_from=args.t_from,
        t_to=args.t_to,
        source_t_from=args.source_t_from,
        source_t_to=args.source_t_to,
        payload=(common.EventPayload(type=common.EventPayloadType.JSON,
                                     data=json.encode(args.payload))
                 if args.payload is not None else None),
        order=args.order,
        order_by=args.order_by,
        unique_type=args.unique_type,
        max_results=args.max_results)
    events = await client.query(data)
    printer.print(events)
Example #8
0
async def test_empty(client):
    result = await client.query(common.QueryData(event_types=[('*', )]))
    assert len(result) == 1
    assert result[0].event_type == ('event', 'communication', 'connected')
Example #9
0
async def test_empty(client):
    result = await client.query(common.QueryData(event_types=[['*']]))
    assert result == []