def test_target_task_set(self): "The target_task_set property has the targeted tasks" self.tgg = self.maketgg(["_fake-t-1"]) self.assertEqual(self.tgg.target_task_set.graph, graph.Graph({"_fake-t-1"}, set())) self.assertEqual(set(six.iterkeys(self.tgg.target_task_set.tasks)), {"_fake-t-1"})
def test_full_task_set(self): "The full_task_set property has all tasks" self.tgg = self.maketgg() self.assertEqual(self.tgg.full_task_set.graph, graph.Graph({'_fake-t-0', '_fake-t-1', '_fake-t-2'}, set())) self.assertEqual(sorted(self.tgg.full_task_set.tasks.keys()), sorted(['_fake-t-0', '_fake-t-1', '_fake-t-2']))
def test_target_task_set(self): "The target_task_set property has the targeted tasks" self.tgg = self.maketgg(['_fake-t-1']) self.assertEqual(self.tgg.target_task_set.graph, graph.Graph({'_fake-t-1'}, set())) self.assertEqual(self.tgg.target_task_set.tasks.keys(), ['_fake-t-1'])
def test_target_task_graph(self): "The target_task_graph property has the targeted tasks and deps" self.tgg = self.maketgg(['_fake-t-1']) self.assertEqual(self.tgg.target_task_graph.graph, graph.Graph({'_fake-t-0', '_fake-t-1'}, {('_fake-t-1', '_fake-t-0', 'prev')})) self.assertEqual(sorted(self.tgg.target_task_graph.tasks.keys()), sorted(['_fake-t-0', '_fake-t-1']))
def test_optimized_task_graph(self): "The optimized task graph contains task ids" self.tgg = self.maketgg(['_fake-t-2']) tid = self.tgg.label_to_taskid self.assertEqual( self.tgg.optimized_task_graph.graph, graph.Graph({tid['_fake-t-0'], tid['_fake-t-1'], tid['_fake-t-2']}, { (tid['_fake-t-1'], tid['_fake-t-0'], 'prev'), (tid['_fake-t-2'], tid['_fake-t-1'], 'prev'), }))
def test_full_task_set(self): "The full_task_set property has all tasks" self.tgg = self.maketgg() self.assertEqual( self.tgg.full_task_set.graph, graph.Graph({"_fake-t-0", "_fake-t-1", "_fake-t-2"}, set()), ) self.assertEqual( sorted(self.tgg.full_task_set.tasks.keys()), sorted(["_fake-t-0", "_fake-t-1", "_fake-t-2"]), )
def test_full_task_graph(self): "The full_task_graph property has all tasks, and links" self.tgg = self.maketgg() self.assertEqual( self.tgg.full_task_graph.graph, graph.Graph({'_fake-t-0', '_fake-t-1', '_fake-t-2'}, { ('_fake-t-1', '_fake-t-0', 'prev'), ('_fake-t-2', '_fake-t-1', 'prev'), })) self.assertEqual(sorted(self.tgg.full_task_graph.tasks.keys()), sorted(['_fake-t-0', '_fake-t-1', '_fake-t-2']))
def make_graph(*tasks_and_edges, **kwargs): tasks = {t.label: t for t in tasks_and_edges if isinstance(t, Task)} edges = {e for e in tasks_and_edges if not isinstance(e, Task)} tg = TaskGraph(tasks, graph.Graph(set(tasks), edges)) if kwargs.get("deps", True): # set dependencies based on edges for l, r, name in tg.graph.edges: tg.tasks[l].dependencies[name] = r return tg
def test_target_task_graph(self): "The target_task_graph property has the targeted tasks and deps" self.tgg = self.maketgg(["_fake-t-1"]) self.assertEqual( self.tgg.target_task_graph.graph, graph.Graph({"_fake-t-0", "_fake-t-1"}, {("_fake-t-1", "_fake-t-0", "prev")}), ) self.assertEqual( sorted(self.tgg.target_task_graph.tasks.keys()), sorted(["_fake-t-0", "_fake-t-1"]), )
def test_optimize(self): "optimize_task_graph annotates and extracts the subgraph from a simple graph" input = self.make_graph( self.make_task('task1', ['optimize-to-task', 'dep1']), self.make_task('task2', ['no-optimize']), self.make_task('task3', ['no-optimize']), ('task2', 'task1', 'build'), ('task2', 'task3', 'image'), ) opt, label_to_taskid = optimize_task_graph(input, {}, set()) self.assertEqual(opt.graph, graph.Graph( {label_to_taskid['task2'], label_to_taskid['task3']}, {(label_to_taskid['task2'], label_to_taskid['task3'], 'image')}))
def test_optimized_task_graph(self): "The optimized task graph contains task ids" self.tgg = self.maketgg(["_fake-t-2"]) tid = self.tgg.label_to_taskid self.assertEqual( self.tgg.optimized_task_graph.graph, graph.Graph( {tid["_fake-t-0"], tid["_fake-t-1"], tid["_fake-t-2"]}, { (tid["_fake-t-1"], tid["_fake-t-0"], "prev"), (tid["_fake-t-2"], tid["_fake-t-1"], "prev"), }, ), )
def test_full_task_graph(self): "The full_task_graph property has all tasks, and links" self.tgg = self.maketgg() self.assertEqual( self.tgg.full_task_graph.graph, graph.Graph( {"_fake-t-0", "_fake-t-1", "_fake-t-2"}, { ("_fake-t-1", "_fake-t-0", "prev"), ("_fake-t-2", "_fake-t-1", "prev"), }, ), ) self.assertEqual( sorted(self.tgg.full_task_graph.tasks.keys()), sorted(["_fake-t-0", "_fake-t-1", "_fake-t-2"]), )
def make_opt_graph(*tasks_and_edges): tasks = {t.task_id: t for t in tasks_and_edges if isinstance(t, Task)} edges = {e for e in tasks_and_edges if not isinstance(e, Task)} return TaskGraph(tasks, graph.Graph(set(tasks), edges))
def make_graph(self, *tasks_and_edges): tasks = {t.label: t for t in tasks_and_edges if isinstance(t, Task)} edges = {e for e in tasks_and_edges if not isinstance(e, Task)} return TaskGraph(tasks, graph.Graph(set(tasks), edges))