Ejemplo n.º 1
0
def test_invert_links():
    A = value(1)
    B = value(2)
    C = add(A, B)

    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \
        in C.links[B.root]

    deps = invert_links(C.links)
    assert deps == {
        A.root: {},
        B.root: {},
        C.root: {
            ArgumentAddress(ArgumentKind.regular, 'a', None): A.root,
            ArgumentAddress(ArgumentKind.regular, 'b', None): B.root
        }
    }
Ejemplo n.º 2
0
def test_is_node_ready():
    A = value(1)
    B = add(1, A)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_node_ready(A.nodes[A.root])
    assert not is_node_ready(B.nodes[B.root])
Ejemplo n.º 3
0
def test_is_node_ready():
    A = value(1)
    B = add(1, A)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_node_ready(A.nodes[A.root])
    assert not is_node_ready(B.nodes[B.root])
Ejemplo n.º 4
0
def test_with_keywords():
    A = value(1)
    B = value(2)
    C = takes_keywords(a=A, b=B, s="regular!")
    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == ("regular!",)
    assert C.nodes[C.root].bound_args.kwargs == {'a': Empty, 'b': Empty}
Ejemplo n.º 5
0
def test_with_keywords():
    A = value(1)
    B = value(2)
    C = takes_keywords(a=A, b=B, s="regular!")
    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == ("regular!", )
    assert C.nodes[C.root].bound_args.kwargs == {'a': Empty, 'b': Empty}
Ejemplo n.º 6
0
def test_merge_workflow():
    A = value(1)
    B = value(2)
    C = add(A, B)

    assert is_workflow(C)
    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \
        in C.links[B.root]
Ejemplo n.º 7
0
def test_merge_workflow():
    A = value(1)
    B = value(2)
    C = add(A, B)

    assert is_workflow(C)
    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \
        in C.links[B.root]
Ejemplo n.º 8
0
def test_binder():
    A = value(1)
    B = value(2)
    C = gather(A, B)

    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 0)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 1)) \
        in C.links[B.root]
Ejemplo n.º 9
0
def test_binder():
    A = value(1)
    B = value(2)
    C = gather(A, B)

    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 0)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.variadic, 'a', 1)) \
        in C.links[B.root]
Ejemplo n.º 10
0
def test_invert_links():
    A = value(1)
    B = value(2)
    C = add(A, B)

    C = get_workflow(C)
    A = get_workflow(A)
    B = get_workflow(B)

    assert is_workflow(C)
    assert C.nodes[C.root].bound_args.args == (Empty, Empty)
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'a', None)) \
        in C.links[A.root]
    assert (C.root, ArgumentAddress(ArgumentKind.regular, 'b', None)) \
        in C.links[B.root]

    deps = invert_links(C.links)
    assert deps == {
        A.root: {},
        B.root: {},
        C.root: {
            ArgumentAddress(ArgumentKind.regular, 'a', None): A.root,
            ArgumentAddress(ArgumentKind.regular, 'b', None): B.root}}
Ejemplo n.º 11
0
def test_hybrid_coroutine_runner_03():
    A1 = [f(i) for i in range(11)]
    A2 = [g(i) for i in range(7)]
    B = sum(gather(*(A1+A2)))

    tic1, c1 = ticcer()
    tic2, c2 = ticcer()

    result = Scheduler().run(
        hybrid_coroutine_worker(selector, {
            1: tic_worker(tic1), 2: tic_worker(tic2)}),
        get_workflow(B))

    assert c1() == 11
    assert c2() == 7
    assert result == 173
Ejemplo n.º 12
0
def test_hybrid_coroutine_runner_03():
    A1 = [f(i) for i in range(11)]
    A2 = [g(i) for i in range(7)]
    B = sum(gather(*(A1 + A2)))

    tic1, c1 = ticcer()
    tic2, c2 = ticcer()

    result = Scheduler().run(
        hybrid_coroutine_worker(selector, {
            1: tic_worker(tic1),
            2: tic_worker(tic2)
        }), get_workflow(B))

    assert c1() == 11
    assert c2() == 7
    assert result == 173
Ejemplo n.º 13
0
def test_get_workflow():
    assert get_workflow(4) is None
Ejemplo n.º 14
0
def test_get_workflow():
    assert get_workflow(4) is None
Ejemplo n.º 15
0
def run(wf, *, display, n_threads=1):
    """Run the workflow using the dynamic-exclusion worker."""
    worker = dynamic_exclusion_worker(display, n_threads)
    return noodles.Scheduler(error_handler=display.error_handler)\
        .run(worker, get_workflow(wf))
def test_sched_meth():
    a = A(5)
    b = a.mul(5)
    result = Scheduler().run(process_worker(registry), get_workflow(b))
    assert result == 25