コード例 #1
0
 def assert_subgraph(self, graph, removed_tasks, replaced_tasks,
                     label_to_taskid, exp_subgraph, exp_label_to_taskid):
     self.maxDiff = None
     optimize.slugid = ('tid{}'.format(i) for i in xrange(1, 10)).next
     try:
         got_subgraph = optimize.get_subgraph(graph, removed_tasks,
                                              replaced_tasks, label_to_taskid)
     finally:
         optimize.slugid = slugid
     self.assertEqual(got_subgraph.graph, exp_subgraph.graph)
     self.assertEqual(got_subgraph.tasks, exp_subgraph.tasks)
     self.assertEqual(label_to_taskid, exp_label_to_taskid)
コード例 #2
0
ファイル: test_optimize.py プロジェクト: wenshiqi0/gecko-dev
 def test_get_subgraph_opt_away(self):
     "when a leaf task is optimized away, it is omitted from the graph"
     graph = self.make_graph(
         self.make_task('task1', optimized=False),
         self.make_task('task2', optimized=True),
         ('task2', 'task1', 'build'),
     )
     label_to_taskid = {'task2': 'dep2'}
     sub = get_subgraph(graph, graph.graph.named_links_dict(), label_to_taskid)
     task1 = label_to_taskid['task1']
     self.assertEqual(sub.graph.nodes, {task1})
     self.assertEqual(sub.graph.edges, set())
     self.assertEqual(sub.tasks[task1].task_id, task1)
     self.assertEqual(sorted(sub.tasks[task1].task['dependencies']), [])
コード例 #3
0
 def assert_subgraph(self, graph, removed_tasks, replaced_tasks,
                     label_to_taskid, exp_subgraph, exp_label_to_taskid):
     self.maxDiff = None
     optimize.slugid = partial(next, (b'tid%d' % i for i in range(1, 10)))
     try:
         got_subgraph = optimize.get_subgraph(graph, removed_tasks,
                                              replaced_tasks,
                                              label_to_taskid,
                                              "DECISION-TASK")
     finally:
         optimize.slugid = slugid
     self.assertEqual(got_subgraph.graph, exp_subgraph.graph)
     self.assertEqual(got_subgraph.tasks, exp_subgraph.tasks)
     self.assertEqual(label_to_taskid, exp_label_to_taskid)
コード例 #4
0
ファイル: test_optimize.py プロジェクト: wenshiqi0/gecko-dev
 def test_get_subgraph_dep_chain(self):
     "when a dependency chain is optimized, it is omitted from the graph"
     graph = self.make_graph(
         self.make_task('task1', optimized=True, task_id='dep1'),
         self.make_task('task2', optimized=True, task_id='dep2'),
         self.make_task('task3', optimized=False),
         ('task2', 'task1', 'build'),
         ('task3', 'task2', 'image'),
     )
     label_to_taskid = {'task1': 'dep1', 'task2': 'dep2'}
     sub = get_subgraph(graph, graph.graph.named_links_dict(), label_to_taskid)
     task3 = label_to_taskid['task3']
     self.assertEqual(sub.graph.nodes, {task3})
     self.assertEqual(sub.graph.edges, set())
     self.assertEqual(sub.tasks[task3].task_id, task3)
     self.assertEqual(sorted(sub.tasks[task3].task['dependencies']), ['dep2'])
コード例 #5
0
def test_get_subgraph(monkeypatch, graph, kwargs, exp_subgraph,
                      exp_label_to_taskid):
    """Tests the `get_subgraph` function.

    Each test case takes 4 arguments:

    1. A `TaskGraph` instance.
    2. Keyword arguments to pass into `get_subgraph`.
    3. The expected subgraph.
    4. The expected label_to_taskid.
    """
    monkeypatch.setattr(optimize, "slugid",
                        partial(next, (b"tid%d" % i for i in range(1, 10))))

    kwargs.setdefault("removed_tasks", set())
    kwargs.setdefault("replaced_tasks", set())
    kwargs.setdefault("label_to_taskid", {})
    kwargs.setdefault("decision_task_id", "DECISION-TASK")

    got_subgraph = optimize.get_subgraph(graph, **kwargs)
    assert got_subgraph.graph == exp_subgraph.graph
    assert got_subgraph.tasks == exp_subgraph.tasks
    assert kwargs["label_to_taskid"] == exp_label_to_taskid
コード例 #6
0
ファイル: test_optimize.py プロジェクト: wenshiqi0/gecko-dev
 def test_get_subgraph_refs_resolved(self):
     "get_subgraph resolves task references"
     graph = self.make_graph(
         self.make_task('task1', optimized=True, task_id='dep1'),
         self.make_task(
             'task2',
             optimized=False,
             task_def={'payload': {'task-reference': 'http://<build>/<test>'}}
         ),
         ('task2', 'task1', 'build'),
         ('task2', 'task3', 'test'),
         self.make_task('task3', optimized=False),
     )
     label_to_taskid = {'task1': 'dep1'}
     sub = get_subgraph(graph, graph.graph.named_links_dict(), label_to_taskid)
     task2 = label_to_taskid['task2']
     task3 = label_to_taskid['task3']
     self.assertEqual(sub.graph.nodes, {task2, task3})
     self.assertEqual(sub.graph.edges, {(task2, task3, 'test')})
     self.assertEqual(sub.tasks[task2].task_id, task2)
     self.assertEqual(sorted(sub.tasks[task2].task['dependencies']), sorted([task3, 'dep1']))
     self.assertEqual(sub.tasks[task2].task['payload'], 'http://dep1/' + task3)
     self.assertEqual(sub.tasks[task3].task_id, task3)
コード例 #7
0
def test_get_subgraph_removed_dep():
    "get_subgraph raises an Exception when a task depends on a removed task"
    graph = make_triangle()
    with pytest.raises(Exception):
        optimize.get_subgraph(graph, {"t2"}, set(), {})
コード例 #8
0
 def test_get_subgraph_removed_dep(self):
     "get_subgraph raises an Exception when a task depends on a removed task"
     graph = self.make_triangle()
     with self.assertRaises(Exception):
         optimize.get_subgraph(graph, {'t2'}, set(), {})