示例#1
0
def test_docs(req):
    request = Request(request=req, copy=False)
    request.request_type = 'data'
    docs = request.docs
    assert request.is_used
    assert isinstance(docs, DocumentArray)
    assert len(docs) == 1
示例#2
0
def test_as_pb_object(req):
    request = Request(request=req)
    request.proto
    assert request.is_decompressed
    request = Request(request=None)
    assert request.proto
    assert request.is_decompressed
示例#3
0
def test_request_docs_mutable_iterator():
    """To test the weak reference work in docs"""
    r = Request()
    r.request_type = 'data'
    for d in random_docs(10):
        r.docs.append(d)

    for idx, d in enumerate(r.docs):
        assert isinstance(d, Document)
        d.text = f'look I changed it! {idx}'

    # iterate it again should see the change
    doc_pointers = []
    for idx, d in enumerate(r.docs):
        assert isinstance(d, Document)
        assert d.text == f'look I changed it! {idx}'
        doc_pointers.append(d)

    # pb-lize it should see the change
    rpb = r.proto

    for idx, d in enumerate(rpb.data.docs):
        assert isinstance(d, DocumentProto)
        assert d.text == f'look I changed it! {idx}'

    # change again by following the pointers
    for d in doc_pointers:
        d.text = 'now i change it back'

    # iterate it again should see the change
    for idx, d in enumerate(rpb.data.docs):
        assert isinstance(d, DocumentProto)
        assert d.text == 'now i change it back'
示例#4
0
def test_groundtruth(req):
    request = Request(request=req, copy=False)
    request.request_type = 'data'
    groundtruths = request.groundtruths
    assert request.is_used
    assert isinstance(groundtruths, DocumentArray)
    assert len(groundtruths) == 0
示例#5
0
文件: test_request.py 项目: yk/jina
def test_as_pb_object(req):
    request = Request(request=req)
    request.as_pb_object
    assert request.is_used
    request = Request(request=None)
    assert request.as_pb_object
    assert request.is_used
示例#6
0
def test_groundtruth(req, req_type):
    request = Request(request=req, copy=False)
    request.request_type = req_type
    groundtruths = request.groundtruths
    assert request.is_used
    assert isinstance(groundtruths, DocumentSet)
    assert len(groundtruths) == 0
示例#7
0
def test_command(req):
    request = Request(request=req, copy=False)
    request.request_type = 'control'
    cmd = request.command
    assert request.is_used
    assert cmd
    assert isinstance(cmd, str)
示例#8
0
def test_not_read_zmqlet():
    with MockBasePeaNotRead(args3), Zmqlet(args1, default_logger) as z:
        req = Request()
        req.request_id = random_identity()
        d = req.data.docs.add()
        d.tags['id'] = 2
        msg = Message(None, req, 'tmp', '')
        z.send_message(msg)
示例#9
0
def test_empty_request_type(typ, pb_typ):
    r = Request()
    assert r.request_type is None
    with pytest.raises(ValueError):
        print(r.body)

    r = r.as_typed_request(typ)
    assert r._request_type == typ
    assert isinstance(r.body, pb_typ)
示例#10
0
def chunks(document_factory):
    req = Request()
    req.request_type = 'data'
    req.docs.extend([
        document_factory.create(1, 'test 1'),
        document_factory.create(2, 'test 1'),
        document_factory.create(3, 'test 3'),
    ])
    return req.proto.data.docs
示例#11
0
def test_docs(req, req_type):
    request = Request(request=req, copy=False)
    request.request_type = req_type
    docs = request.docs
    assert request.is_used
    assert isinstance(docs, DocumentSet)
    if req_type == 'index':
        assert len(docs) == 1
    else:
        assert len(docs) == 0
示例#12
0
def test_lazy_append_access(algo):
    reqs = (Request(r.SerializeToString(), algo)
            for r in request_generator('/', random_docs(10)))
    for r in reqs:
        assert not r.is_decompressed
        r = Request().as_typed_request('data')
        # write access r.train
        r.docs.append(Document())
        # now it is read
        assert r.is_decompressed
示例#13
0
def test_pprint_routes(capfd):
    result = []
    r = jina_pb2.RouteProto()
    r.status.code = jina_pb2.StatusProto.ERROR
    r.status.exception.stacks.extend(['r1\nline1', 'r2\nline2'])
    result.append(r)
    r = jina_pb2.RouteProto()
    r.status.code = jina_pb2.StatusProto.ERROR_CHAINED
    r.status.exception.stacks.extend(['line1', 'line2'])
    result.append(r)
    r = jina_pb2.RouteProto()
    r.status.code = jina_pb2.StatusProto.SUCCESS
    result.append(r)
    rr = Request()
    rr.routes.extend(result)
    pprint_routes(rr)
    out, err = capfd.readouterr()
    assert '⚪' in out
    assert '🟢' in out
    assert 'Pod' in out
    assert 'Time' in out
    assert 'Exception' in out
    assert 'r1' in out
    assert 'line1r2' in out
    assert 'line2' in out
    assert 'line1line2' in out
示例#14
0
def test_add_doc_to_type(typ, pb_typ):
    r = Request().as_typed_request(typ)
    for _ in range(10):
        r.docs.append(Document())
        r.groundtruths.append(Document())
    assert len(r.docs) == 10
    assert len(r.groundtruths) == 10
示例#15
0
def matches(document_factory):
    req = Request().as_typed_request('data')
    req.docs.extend([
        document_factory.create(1, 'test 1'),
        document_factory.create(2, 'test 1'),
        document_factory.create(3, 'test 3'),
    ])
    return req.docs
def test_recv_message_zmqlet(mocker):
    zmqlet1 = Zmqlet(args1, default_logger)
    zmqlet2 = Zmqlet(args2, default_logger)
    req = Request()
    req.request_id = random_identity()
    doc = req.data.docs.add()
    doc.tags['id'] = 2
    msg = Message(None, req, 'tmp', '')

    def callback(msg_):
        assert msg_.request.docs[0].tags['id'] == msg.request.data.docs[0].tags['id']

    mock = mocker.Mock()
    zmqlet1.send_message(msg)
    time.sleep(1)
    zmqlet2.recv_message(mock)
    validate_callback(mock, callback)
示例#17
0
def test_lazy_nested_clear_access(algo):
    reqs = (Request(r.SerializeToString(), algo)
            for r in request_generator('/', random_docs(10)))
    for r in reqs:
        assert not r.is_decompressed
        # write access r.train
        r.data.ClearField('docs')
        # now it is read
        assert r.is_decompressed
示例#18
0
def test_lazy_change_message_type(algo):
    reqs = (Request(r.SerializeToString(), algo)
            for r in request_generator('/', random_docs(10)))
    for r in reqs:
        assert not r.is_decompressed
        # write access r.train
        r.control.command = jina_pb2.RequestProto.ControlRequestProto.IDLE
        # now it is read
        assert r.is_decompressed
        assert len(r.data.docs) == 0
def test_not_decompressed_zmqlet(mocker):
    with MockPea(args2) as pea, Zmqlet(args1, default_logger) as z:
        req = Request()
        req.request_id = random_identity()
        d = req.data.docs.add()
        d.tags['id'] = 2
        msg = Message(None, req, 'tmp', '')
        mock = mocker.Mock()
        z.send_message(msg)
        time.sleep(1)
        z.recv_message(mock)

    def callback(msg_):
        pass

    validate_callback(mock, callback)
    print(f' joining pea')
    pea.join()
    print(f' joined pea')
示例#20
0
def test_lazy_nest_access(algo):
    reqs = (Request(r.SerializeToString(), algo)
            for r in request_generator('/', random_docs(10)))
    for r in reqs:
        assert not r.is_decompressed
        # write access r.train
        r.docs[0].id = '1' * 16
        # now it is read
        assert r.is_decompressed
        assert r.data.docs[0].id == '1' * 16
示例#21
0
def test_lazy_access(field, algo):
    reqs = (Request(r.SerializeToString(), algo)
            for r in request_generator('/', random_docs(10)))
    for r in reqs:
        assert not r.is_decompressed

        # access r.train
        print(getattr(r, field))

        # now it is read
        assert r.is_decompressed
示例#22
0
def test_multiple_access(algo):
    reqs = [
        Request(r.SerializeToString(), algo)
        for r in request_generator('/', random_docs(10))
    ]
    for r in reqs:
        assert not r.is_decompressed
        assert r
        assert not r.is_decompressed

    for r in reqs:
        assert not r.is_decompressed
        assert r.data
        assert r.is_decompressed
示例#23
0
def test_request_docs_chunks_mutable_iterator():
    """Test if weak reference work in nested docs"""
    r = Request().as_typed_request('data')
    for d in random_docs(10):
        r.docs.append(d)

    for d in r.docs:
        assert isinstance(d, Document)
        for idx, c in enumerate(d.chunks):
            assert isinstance(d, Document)
            c.text = f'look I changed it! {idx}'

    # iterate it again should see the change
    doc_pointers = []
    for d in r.docs:
        assert isinstance(d, Document)
        for idx, c in enumerate(d.chunks):
            assert c.text == f'look I changed it! {idx}'
            doc_pointers.append(c)

    # pb-lize it should see the change
    rpb = r.proto

    for d in rpb.data.docs:
        assert isinstance(d, DocumentProto)
        for idx, c in enumerate(d.chunks):
            assert isinstance(c, DocumentProto)
            assert c.text == f'look I changed it! {idx}'

    # change again by following the pointers
    for d in doc_pointers:
        d.text = 'now i change it back'

    # iterate it again should see the change
    for d in rpb.data.docs:
        assert isinstance(d, DocumentProto)
        for c in d.chunks:
            assert c.text == 'now i change it back'
示例#24
0
文件: test_request.py 项目: yk/jina
def test_init_fail():
    with pytest.raises(BadRequestType):
        Request(request=5)
示例#25
0
文件: test_request.py 项目: yk/jina
def test_as_json_str(req):
    request = Request(request=req)
    assert isinstance(request.to_json(), str)
    request = Request(request=None)
    assert isinstance(request.to_json(), str)
示例#26
0
文件: test_request.py 项目: yk/jina
def test_command(req):
    request = Request(request=req, copy=False)
    cmd = request.command
    assert request.is_used
    assert cmd
    assert isinstance(cmd, str)
示例#27
0
文件: test_request.py 项目: yk/jina
def test_queryset(req):
    request = Request(request=req, copy=False)
    queryset = request.queryset
    assert request.is_used
    assert isinstance(queryset, QueryLangSet)
示例#28
0
文件: test_request.py 项目: yk/jina
def test_request_type_set_get_fail(req):
    request = Request(request=req, copy=False)
    with pytest.raises(ValueError):
        request.request_type = 'random'
示例#29
0
文件: test_request.py 项目: yk/jina
def test_request_type_set_get(req):
    request = Request(request=req, copy=False)
    request.request_type = 'search'
    assert request.request_type == 'SearchRequestProto'
示例#30
0
文件: test_request.py 项目: yk/jina
def test_docs(req):
    request = Request(request=req, copy=False)
    docs = request.docs
    assert request.is_used
    assert isinstance(docs, DocumentSet)
    assert len(docs) == 1