예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
        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)
예제 #5
0
    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())
예제 #6
0
    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())
예제 #7
0
    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())