예제 #1
0
def test_flow_on_error_callback(restful):
    class DummyCrafterNotImplemented(Executor):
        @requests
        def craft(self, text, *args, **kwargs):
            raise NotImplementedError

    f = Flow(restful=restful).add(uses='!DummyCrafterNotImplemented')
    hit = []

    def f1(*args):
        hit.append('done')

    def f2(*args):
        hit.append('error')

    def f3(*args):
        hit.append('always')

    with f:
        f.index(
            DocumentArray.from_ndarray(np.random.random([10, 10])),
            on_done=f1,
            on_error=f2,
            on_always=f3,
        )

    assert hit == ['error', 'always']

    hit.clear()
예제 #2
0
def test_add_needs_inspect(tmpdir):
    f1 = (
        Flow()
        .add(name='pod0', needs='gateway')
        .add(name='pod1', needs='gateway')
        .inspect()
        .needs(['pod0', 'pod1'])
    )
    with f1:
        f1.index(DocumentArray.from_ndarray(np.random.random([5, 5])), on_done=print)

    f2 = Flow.load_config('yaml/flow-v1.0-syntax.yml')

    with f2:
        f2.index(DocumentArray.from_ndarray(np.random.random([5, 5])), on_done=print)

    assert f1 == f2
예제 #3
0
def test_return_results_sync_flow(return_results, restful):
    with Flow(restful=restful, return_results=return_results).add() as f:
        r = f.index(DocumentArray.from_ndarray(np.random.random([10, 2])))
        if return_results:
            assert isinstance(r, list)
            assert isinstance(r[0], Response)
        else:
            assert r is None
예제 #4
0
def test_flow_needs_all(restful):
    f = Flow(restful=restful).add(name='p1',
                                  needs='gateway').needs_all(name='r1')
    assert f._pod_nodes['r1'].needs == {'p1'}

    f = (Flow(restful=restful).add(name='p1', needs='gateway').add(
        name='p2', needs='gateway').add(name='p3', needs='gateway').needs(
            needs=['p1', 'p2'], name='r1').needs_all(name='r2'))
    assert f._pod_nodes['r2'].needs == {'p3', 'r1'}

    with f:
        f.index(DocumentArray.from_ndarray(np.random.random([10, 10])))

    f = (Flow(restful=restful).add(name='p1', needs='gateway').add(
        name='p2', needs='gateway').add(name='p3', needs='gateway').needs(
            needs=['p1',
                   'p2'], name='r1').needs_all(name='r2').add(name='p4',
                                                              needs='r2'))
    assert f._pod_nodes['r2'].needs == {'p3', 'r1'}
    assert f._pod_nodes['p4'].needs == {'r2'}

    with f:
        f.index(DocumentArray.from_ndarray(np.random.random([10, 10])))
예제 #5
0
def test_flow_on_callback(restful):
    f = Flow(restful=restful).add()
    hit = []

    def f1(*args):
        hit.append('done')

    def f2(*args):
        hit.append('error')

    def f3(*args):
        hit.append('always')

    with f:
        f.index(
            DocumentArray.from_ndarray(np.random.random([10, 10])),
            on_done=f1,
            on_error=f2,
            on_always=f3,
        )

    assert hit == ['done', 'always']

    hit.clear()
예제 #6
0
파일: test_io.py 프로젝트: luojiguicai/jina
def test_input_numpy(array):
    Client.check_input(DocumentArray.from_ndarray(array))