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()
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
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
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])))
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()
def test_input_numpy(array): Client.check_input(DocumentArray.from_ndarray(array))