Exemplo n.º 1
0
    def test_process_tasks_of_one_base_class(self):
        scheduler = Scheduler()
        task1 = TestTask1()
        task2 = TestTask2()
        task3 = TestTask3()
        task4_1 = TestTask4()
        task4_2 = TestTask4()

        task2.add_preceding_task(task1)
        task4_1.add_preceding_tasks([task1, task2])
        task3.add_preceding_task(task1)
        task4_2.add_preceding_tasks([task1, task3])

        scheduler.add_task_to_queue(task1)
        scheduler.add_task_to_queue(task2)
        scheduler.add_task_to_queue(task3)
        scheduler.add_task_to_queue(task4_1)
        scheduler.add_task_to_queue(task4_2)
        scheduler.run_tasks()

        self.assertIn(task1, scheduler._result_map)
        self.assertIn(task2, scheduler._result_map)
        self.assertIn(task3, scheduler._result_map)
        self.assertIn(task4_1, scheduler._result_map)
        self.assertIn(task4_2, scheduler._result_map)
        self.assertGreater(scheduler._result_map[task2], scheduler._result_map[task1])
        self.assertGreater(scheduler._result_map[task3], scheduler._result_map[task1])
        self.assertGreater(scheduler._result_map[task4_1], scheduler._result_map[task2])
        self.assertGreater(scheduler._result_map[task4_2], scheduler._result_map[task3])
Exemplo n.º 2
0
    def test_process_one_task(self):
        scheduler = Scheduler()
        task1 = TestTask1()

        scheduler.add_task_to_queue(task1)
        scheduler.run_tasks()
        self.assertIn(task1, scheduler._result_map)
        self.assertIsNotNone(scheduler._result_map[task1])
Exemplo n.º 3
0
    def test_process_task_with_not_implemented_process(self):
        scheduler = Scheduler()
        task5 = TestTask5()

        scheduler.add_task_to_queue(task5)
        with self.assertRaises(Exception) as exception_context:
            scheduler.run_tasks()
        self.assertEqual(str(exception_context.exception), 'Method process of task {} did not implemented'
                         .format(task5.get_name()))
Exemplo n.º 4
0
def main(spark):
    scheduler = Scheduler()

    get_recipes_task = GetRecipes(spark)
    find_meat_task = FindMeatRecipes(spark)
    find_meat_task.add_preceding_task(get_recipes_task)

    scheduler.add_task_to_queue(get_recipes_task)
    scheduler.add_task_to_queue(find_meat_task)

    scheduler.run_tasks()
Exemplo n.º 5
0
    def test_process_task_with_no_preceding_started(self):
        scheduler = Scheduler()
        task1 = TestTask1()
        task2 = TestTask2()

        task2.add_preceding_task(task1)
        scheduler.add_task_to_queue(task2)
        with self.assertRaises(Exception) as exception_context:
            scheduler.run_tasks()
        self.assertEqual(str(exception_context.exception),
                         'Some tasks were not executed due to incorrect execution graph')
Exemplo n.º 6
0
    def test_process_two_tasks(self):
        scheduler = Scheduler()
        task1 = TestTask1()
        task2 = TestTask2()

        scheduler.clear_queue()
        task1.clear_preceding_tasks()
        task2.clear_preceding_tasks()

        task2.add_preceding_task(task1)
        scheduler.add_task_to_queue(task1)
        scheduler.add_task_to_queue(task2)
        scheduler.run_tasks()

        self.assertIn(task1, scheduler._result_map)
        self.assertIn(task2, scheduler._result_map)
        self.assertGreater(scheduler._result_map[task2], scheduler._result_map[task1])
Exemplo n.º 7
0
    def test_process_two_tasks_after_same(self):
        scheduler = Scheduler()
        task1 = TestTask1()
        task2 = TestTask2()
        task3 = TestTask3()

        task2.add_preceding_task(task1)
        task3.add_preceding_task(task1)

        scheduler.add_task_to_queue(task1)
        scheduler.add_task_to_queue(task2)
        scheduler.add_task_to_queue(task3)
        scheduler.run_tasks()

        self.assertIn(task1, scheduler._result_map)
        self.assertIn(task2, scheduler._result_map)
        self.assertIn(task3, scheduler._result_map)
        self.assertGreater(scheduler._result_map[task2], scheduler._result_map[task1])
        self.assertGreater(scheduler._result_map[task3], scheduler._result_map[task1])
Exemplo n.º 8
0
    def test_run_scheduler_with_empty_queue(self):
        scheduler = Scheduler()

        with self.assertRaises(Exception) as exception_context:
            scheduler.run_tasks()
        self.assertEqual(str(exception_context.exception), 'Scheduler has no tasks to run')