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])
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])
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()))
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()
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')
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])
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])
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')