def test_simple_dependency(self, *args, **kwargs): """ Tests creating a DAG of task dependencies when there is only one event """ A = self.create_task_class(('a',), (), ('a',)) B = self.create_task_class((), ('a',), ()) # Is the event dependency built correctly events = BaseTask.build_task_event_dependency_graph() self.assertEqual(len(events), 1) self.assertEqual(len(events['a'][0]), 1) self.assertIn(A, events['a'][0]) self.assertEqual(len(events['a'][1]), 1) self.assertIn(B, events['a'][1]) # Is the DAG built correctly g = BaseTask.build_full_task_dag() self.assertEqual(len(g.all_nodes), 2) self.assertIn(A, g.all_nodes) self.assertIn(B, g.all_nodes) # B depends on A self.assertIn(B, g.dependent_nodes(A))
def test_multiple_dependency(self, *args, **kwargs): """ Tests creating a DAG of tasks dependencies when there are multiple events. """ T0 = self.create_task_class(('A', 'B'), (), ('A',)) T1 = self.create_task_class(('D', 'D1'), ('A',), ('D')) T2 = self.create_task_class(('C',), ('A',), ('C',)) T3 = self.create_task_class(('E',), ('B',), ('E',)) T4 = self.create_task_class((), ('B',), ()) T5 = self.create_task_class(('evt-5',), ('D',), ('evt-5',)) T6 = self.create_task_class(('evt-6',), ('C'), ('evt-6',)) T7 = self.create_task_class((), ('D1', 'A'), ()) T8 = self.create_task_class((), ('evt-5', 'evt-6', 'E'), ()) g = BaseTask.build_full_task_dag() self.assertEqual(len(g.dependent_nodes(T0)), 5) self.assert_contains_all([T1, T2, T3, T4, T7], g.dependent_nodes(T0)) self.assertEqual(len(g.dependent_nodes(T1)), 2) self.assert_contains_all([T5, T7], g.dependent_nodes(T1)) self.assertEqual(len(g.dependent_nodes(T2)), 1) self.assert_contains_all([T6], g.dependent_nodes(T2)) self.assertEqual(len(g.dependent_nodes(T3)), 1) self.assert_contains_all([T8], g.dependent_nodes(T3)) self.assertEqual(len(g.dependent_nodes(T4)), 0) self.assertEqual(len(g.dependent_nodes(T5)), 1) self.assert_contains_all([T8], g.dependent_nodes(T5)) self.assertEqual(len(g.dependent_nodes(T6)), 1) self.assert_contains_all([T8], g.dependent_nodes(T6)) self.assertEqual(len(g.dependent_nodes(T7)), 0) self.assertEqual(len(g.dependent_nodes(T8)), 0)