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()
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 == []
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()
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())
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)
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
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)
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')
async def test_empty(client): result = await client.query(common.QueryData(event_types=[['*']])) assert result == []