def testFreezing(self): builder = task_manager.Builder(self.output_directory, None) @builder.RegisterTask('a') def TaskA(): pass @builder.RegisterTask('b', dependencies=[TaskA]) def TaskB(): pass @builder.RegisterTask('c') def TaskC(): pass @builder.RegisterTask('d', dependencies=[TaskB, TaskC]) def TaskD(): pass # assert no exception raised. task_manager.GenerateScenario([TaskB], set([TaskC])) with self.assertRaises(task_manager.TaskError): task_manager.GenerateScenario([TaskD], set([TaskA])) self.TouchOutputFile('a') scenario = task_manager.GenerateScenario([TaskD], set([TaskA])) self.assertListEqual([TaskB, TaskC, TaskD], scenario) self.TouchOutputFile('b') scenario = task_manager.GenerateScenario([TaskD], set([TaskB])) self.assertListEqual([TaskC, TaskD], scenario)
def testParents(self): builder = task_manager.Builder(self.output_directory, None) @builder.RegisterTask('a') def TaskA(): pass @builder.RegisterTask('b', dependencies=[TaskA]) def TaskB(): pass @builder.RegisterTask('c', dependencies=[TaskB]) def TaskC(): pass scenario = task_manager.GenerateScenario([TaskA, TaskB, TaskC], set()) self.assertListEqual([TaskA, TaskB, TaskC], scenario) scenario = task_manager.GenerateScenario([TaskB], set()) self.assertListEqual([TaskA, TaskB], scenario) scenario = task_manager.GenerateScenario([TaskC], set()) self.assertListEqual([TaskA, TaskB, TaskC], scenario) scenario = task_manager.GenerateScenario([TaskC, TaskB], set()) self.assertListEqual([TaskA, TaskB, TaskC], scenario)
def RunSubTest(final_tasks, initial_frozen_tasks, skipped_tasks, reference): scenario = task_manager.GenerateScenario(final_tasks, initial_frozen_tasks) resume_frozen_tasks = task_manager.ListResumingTasksToFreeze( scenario, final_tasks, skipped_tasks) self.assertEqual(reference, resume_frozen_tasks) new_scenario = \ task_manager.GenerateScenario(final_tasks, resume_frozen_tasks) self.assertEqual(skipped_tasks, set(new_scenario))
def RunSubTest(final_tasks, initial_frozen_tasks, failed_task, reference): scenario = \ task_manager.GenerateScenario(final_tasks, initial_frozen_tasks) resume_frozen_tasks = task_manager.ListResumingTasksToFreeze( scenario, final_tasks, failed_task) self.assertEqual(reference, resume_frozen_tasks) failed_pos = scenario.index(failed_task) new_scenario = \ task_manager.GenerateScenario(final_tasks, resume_frozen_tasks) self.assertEqual(scenario[failed_pos:], new_scenario)
def testGraphVizOutput(self): builder = task_manager.Builder(self.output_directory, None) @builder.RegisterTask('a') def TaskA(): pass @builder.RegisterTask('b') def TaskB(): pass @builder.RegisterTask('c', dependencies=[TaskB, TaskA]) def TaskC(): pass @builder.RegisterTask('d', dependencies=[TaskC]) def TaskD(): pass @builder.RegisterTask('e') def TaskE(): pass @builder.RegisterTask('f', dependencies=[TaskD, TaskE]) def TaskF(): pass self.TouchOutputFile('e') scenario = task_manager.GenerateScenario([TaskF], set([TaskE])) output = StringIO.StringIO() task_manager.OutputGraphViz(scenario, [TaskF], output) self.assertEqual(_GOLDEN_GRAPHVIZ, output.getvalue())
def testCollisionError(self): builder_a = task_manager.Builder(self.output_directory, None) builder_b = task_manager.Builder(self.output_directory, None) @builder_a.RegisterTask('a') def TaskA(): pass @builder_b.RegisterTask('a') def TaskB(): pass with self.assertRaises(task_manager.TaskError): task_manager.GenerateScenario([TaskA, TaskB], set())
def testCycleError(self): builder = task_manager.Builder(self.output_directory, None) @builder.RegisterTask('a') def TaskA(): pass @builder.RegisterTask('b', dependencies=[TaskA]) def TaskB(): pass @builder.RegisterTask('c', dependencies=[TaskB]) def TaskC(): pass @builder.RegisterTask('d', dependencies=[TaskC]) def TaskD(): pass TaskA._dependencies.append(TaskC) with self.assertRaises(task_manager.TaskError): task_manager.GenerateScenario([TaskD], set())