Source code for ewokscore.tests.test_graph_io
import pytest
from ewokscore import load_graph
from ewokscore.graph import graph_io
[docs]
@pytest.fixture(scope="module")
def graph():
graph = {"id": "testgraph", "schema_version": "1.1"}
nodes = [
{
"id": "task1",
"label": "a",
"default_inputs": [{"name": "a", "value": 1}],
"task_type": "class",
"task_identifier": "mypackage.mymodule.Task1",
},
{
"id": "task2",
"label": "a",
"default_inputs": [{"name": "a", "value": 2}],
"task_type": "class",
"task_identifier": "mypackage.mymodule.Task2",
},
{
"id": "task3",
"label": "b",
"default_inputs": [{"name": "a", "value": 3}],
"task_type": "class",
"task_identifier": "mypackage.mymodule.Task1",
},
{
"id": "task4",
"label": "c",
"default_inputs": [{"name": "a", "value": 4}],
"task_type": "class",
"task_identifier": "mypackage.mymodule.Task2",
},
]
links = [
{
"source": "task1",
"target": "task2",
},
{
"source": "task2",
"target": "task3",
},
{
"source": "task3",
"target": "task4",
},
]
taskgraph = {"graph": graph, "links": links, "nodes": nodes}
return load_graph(taskgraph).graph
[docs]
def test_parse_inputs(graph):
inputs = list()
expected = inputs
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"id": "task1", "name": "a", "value": 10}]
expected = inputs
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"label": "b", "name": "a", "value": 10}]
expected = [{"id": "task3", "name": "a", "value": 10}]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"label": "a", "name": "a", "value": 10}]
expected = [
{"id": "task1", "name": "a", "value": 10},
{"id": "task2", "name": "a", "value": 10},
]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"task_identifier": "Task1", "name": "a", "value": 10}]
expected = [
{"id": "task1", "name": "a", "value": 10},
{"id": "task3", "name": "a", "value": 10},
]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"task_identifier": "Task1", "label": "a", "name": "a", "value": 10}]
expected = [{"id": "task1", "name": "a", "value": 10}]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"name": "a", "value": 10}]
expected = [{"id": "task1", "name": "a", "value": 10}]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
inputs = [{"all": True, "name": "a", "value": 10}]
expected = [
{"id": "task1", "name": "a", "value": 10},
{"id": "task2", "name": "a", "value": 10},
{"id": "task3", "name": "a", "value": 10},
{"id": "task4", "name": "a", "value": 10},
]
inputs = graph_io.parse_inputs(graph, inputs)
assert inputs == expected
[docs]
def test_update_default_inputs(graph):
expected = {
"task1": [{"name": "a", "value": 1}],
"task2": [{"name": "a", "value": 2}],
"task3": [{"name": "a", "value": 3}],
"task4": [{"name": "a", "value": 4}],
}
graph_io.update_default_inputs(graph, list())
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"id": "task1", "name": "a", "value": 10}]
expected["task1"] = [{"name": "a", "value": 10}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"label": "b", "name": "a", "value": 20}]
expected["task3"] = [{"name": "a", "value": 20}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"label": "a", "name": "a", "value": 30}]
expected["task1"] = [{"name": "a", "value": 30}]
expected["task2"] = [{"name": "a", "value": 30}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"task_identifier": "Task1", "name": "a", "value": 40}]
expected["task1"] = [{"name": "a", "value": 40}]
expected["task3"] = [{"name": "a", "value": 40}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"task_identifier": "Task1", "label": "a", "name": "a", "value": 50}]
expected["task1"] = [{"name": "a", "value": 50}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"name": "a", "value": 60}]
expected["task1"] = [{"name": "a", "value": 60}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
inputs = [{"all": True, "name": "a", "value": 70}]
expected["task1"] = [{"name": "a", "value": 70}]
expected["task2"] = [{"name": "a", "value": 70}]
expected["task3"] = [{"name": "a", "value": 70}]
expected["task4"] = [{"name": "a", "value": 70}]
graph_io.update_default_inputs(graph, inputs)
for node_id, node_attrs in graph.nodes.items():
assert node_attrs["default_inputs"] == expected[node_id]
[docs]
def test_parse_outputs(graph):
outputs = None
expected = [{"id": "task4"}]
outputs = graph_io.parse_outputs(graph, outputs)
assert outputs == expected
outputs = [{"all": False}]
expected = [{"id": "task4"}]
outputs = graph_io.parse_outputs(graph, outputs)
assert outputs == expected
outputs = [{"all": True}]
expected = [{"id": "task1"}, {"id": "task2"}, {"id": "task3"}, {"id": "task4"}]
outputs = graph_io.parse_outputs(graph, outputs)
assert outputs == expected
outputs = [{"all": False}]
expected = [{"id": "task4"}]
outputs = graph_io.parse_outputs(graph, outputs)
assert outputs == expected