Source code for ewokscore.tests.test_sub_graph

from ewokscore import execute_graph
from ewokscore.graph import load_graph
from ewoksutils.import_utils import qualname
from ewokscore.node import node_id_as_string

from .utils.results import assert_execute_graph_tasks


[docs] def myfunc(name=None, value=0): print("name:", name, "value:", value) return value + 1
[docs] def test_sub_graph_execute(): subsubgraph = { "graph": { "id": "subsubgraph", "schema_version": "1.1", "input_nodes": [{"id": "in", "node": "subsubnode1"}], }, "nodes": [ { "id": "subsubnode1", "task_type": "method", "task_identifier": qualname(myfunc), "default_inputs": [ {"name": "name", "value": "subsubnode1"}, {"name": "value", "value": 0}, ], } ], } subgraph = { "graph": { "id": "subgraph", "schema_version": "1.1", "input_nodes": [{"id": "in", "node": "subnode1", "sub_node": "in"}], }, "nodes": [ {"id": "subnode1", "task_type": "graph", "task_identifier": subsubgraph} ], } graph = { "graph": {"id": "graph", "schema_version": "1.1"}, "nodes": [ { "id": "node1", "task_type": "method", "task_identifier": qualname(myfunc), "default_inputs": [ {"name": "name", "value": "node1"}, {"name": "value", "value": 0}, ], }, {"id": "node2", "task_type": "graph", "task_identifier": subgraph}, ], "links": [ { "source": "node1", "target": "node2", "sub_target": "in", "data_mapping": [ {"target_input": "value", "source_output": "return_value"} ], } ], } ewoksgraph = load_graph(graph) result = execute_graph(ewoksgraph, output_tasks=True) expected = { "node1": {"return_value": 1}, ("node2", ("subnode1", "subsubnode1")): {"return_value": 2}, } assert_execute_graph_tasks(ewoksgraph, result, expected)
[docs] def test_sub_graph_duplicate_aliases(): subsubgraph = { "graph": { "id": "subsubgraph", "schema_version": "1.1", "input_nodes": [ { "id": "in", "node": "inode1", }, { "id": "in", "node": "inode2", }, ], "output_nodes": [ { "id": "out", "node": "inode4", }, { "id": "out", "node": "inode5", }, ], }, "nodes": [ {"id": "inode1", "task_type": "method", "task_identifier": "dummy"}, {"id": "inode2", "task_type": "method", "task_identifier": "dummy"}, {"id": "inode3", "task_type": "method", "task_identifier": "dummy"}, {"id": "inode4", "task_type": "method", "task_identifier": "dummy"}, {"id": "inode5", "task_type": "method", "task_identifier": "dummy"}, ], "links": [ {"source": "inode1", "target": "inode3"}, {"source": "inode2", "target": "inode3"}, {"source": "inode3", "target": "inode4"}, {"source": "inode3", "target": "inode5"}, ], } subgraph = { "graph": { "id": "subgraph", "schema_version": "1.1", "input_nodes": [ { "id": "in", "node": "nonode", "sub_node": "in", }, ], "output_nodes": [ { "id": "out", "node": "nonode", "sub_node": "out", }, ], }, "nodes": [ {"id": "nonode", "task_type": "graph", "task_identifier": subsubgraph} ], } graph = { "graph": {"id": "graph", "schema_version": "1.1"}, "nodes": [ {"id": "node1", "task_type": "method", "task_identifier": "dummy"}, {"id": "node2", "task_type": "method", "task_identifier": "dummy"}, {"id": "graphnode", "task_type": "graph", "task_identifier": subgraph}, ], "links": [ {"source": "node1", "target": "graphnode", "sub_target": "in"}, {"source": "graphnode", "target": "node2", "sub_source": "out"}, ], } ewoksgraph = load_graph(graph) links = { (node_id_as_string(source), node_id_as_string(target)) for source, target in ewoksgraph.graph.edges } expected = { ("graphnode:nonode:inode1", "graphnode:nonode:inode3"), ("graphnode:nonode:inode2", "graphnode:nonode:inode3"), ("graphnode:nonode:inode3", "graphnode:nonode:inode4"), ("graphnode:nonode:inode3", "graphnode:nonode:inode5"), ("graphnode:nonode:inode4", "node2"), ("graphnode:nonode:inode5", "node2"), ("node1", "graphnode:nonode:inode1"), ("node1", "graphnode:nonode:inode2"), } assert links == expected