Beispiel #1
0
 def test_throttle(self):
     # if we started all tasks at once, we should be done in 2 seconds,
     # since we only start one at a time, then it should take longer
     tm = taskmanager.TaskManager('test_throttle', task_throttle=1)
     tm.add_task(
         taskmanager.Task(name='sleep_2_a', func=time.sleep, fargs=[2]))
     tm.add_task(
         taskmanager.Task(name='sleep_2_b', func=time.sleep, fargs=[2]))
     tm.add_task(
         taskmanager.Task(name='sleep_2_c', func=time.sleep, fargs=[2]))
     tm.add_task(
         taskmanager.Task(name='sleep_2_d', func=time.sleep, fargs=[2]))
     tm.add_task(
         taskmanager.Task(name='sleep_2_e', func=time.sleep, fargs=[2]))
     tm.go()
     self.assertLessEqual(
         1, tm.tasks['sleep_2_b'].start_time -
         tm.tasks['sleep_2_a'].start_time)
     self.assertLessEqual(
         1, tm.tasks['sleep_2_c'].start_time -
         tm.tasks['sleep_2_b'].start_time)
     self.assertLessEqual(
         1, tm.tasks['sleep_2_d'].start_time -
         tm.tasks['sleep_2_c'].start_time)
     self.assertLessEqual(
         1, tm.tasks['sleep_2_e'].start_time -
         tm.tasks['sleep_2_d'].start_time)
Beispiel #2
0
 def test_wait(self):
     tm = taskmanager.TaskManager('test_wait')
     tm.add_task(
         taskmanager.Task(name='sleep_2', func=time.sleep, fargs=[2]))
     tm.go_no_wait()
     r = tm.wait(raise_on_timeout=False, return_wait_status=True)
     self.assertEquals(utils.WaitStatus.ready, r)
Beispiel #3
0
 def test_wait_callable(self):
     # setup
     tm = taskmanager.TaskManager('waitTask')
     tm.add_task(taskmanager.Task('sleep5', time.sleep, fargs=[5]))
     waiter = wait_utils.WaitCallback(lambda: tm.all_tasks_finished,
                                      no_fail=True,
                                      log_trace=True,
                                      return_wait_status=True,
                                      period=0.5)
     # start timer then wait
     tm.go_no_wait()
     status = waiter.wait()
     # check results
     self.assertEquals(wait_utils.WaitStatus.ready, status)
     self.assertGreater(waiter.elapsed_time, 4)
     self.assertLess(waiter.elapsed_time, 6)
     self.assertTrue(waiter.result)
     self.assertIsNone(waiter.error)
Beispiel #4
0
    def test_task_order_tree_alpha(self):
        tm = taskmanager.TaskManager('test_task_order_tree_alpha')

        expected_tasks_order = _make_task_tree_alpha()
        for task_name, task_reqs in expected_tasks_order.items():
            tm.add_task(
                taskmanager.Task(name=task_name,
                                 func=utils.noop,
                                 reqs=task_reqs))

        tasks_and_reqs = {t.name: t.reqs for t in tm.tasks.values()}
        self.assertDictEqual(expected_tasks_order, tasks_and_reqs)

        first_wave = tm._get_ready_tasks()
        self.assertEquals(['task_1'], first_wave)
        for task_name in first_wave:
            tm.tasks[task_name].finished = True

        second_wave = tm._get_ready_tasks()
        self.assertEquals(['task_2'], second_wave)
        for task_name in second_wave:
            tm.tasks[task_name].finished = True

        third_wave = tm._get_ready_tasks()
        self.assertEquals(['task_3'], third_wave)
        for task_name in third_wave:
            tm.tasks[task_name].finished = True

        fourth_wave = tm._get_ready_tasks()
        self.assertEquals(sorted(['task_4', 'task_a_1', 'task_b_1']),
                          sorted(fourth_wave))
        for task_name in fourth_wave:
            tm.tasks[task_name].finished = True

        fifth_wave = tm._get_ready_tasks()
        self.assertEquals(sorted(['task_a_2', 'task_b_2', 'task_c_1']),
                          sorted(fifth_wave))
        for task_name in fifth_wave:
            tm.tasks[task_name].finished = True

        sixth_wave = tm._get_ready_tasks()
        self.assertEquals(
            sorted(['task_a_3', 'task_b_3', 'task_c_2', 'task_d_1']),
            sorted(sixth_wave))
        for task_name in sixth_wave:
            tm.tasks[task_name].finished = True

        seventh_wave = tm._get_ready_tasks()
        self.assertEquals(sorted(['task_e_1_a', 'task_e_1_b']),
                          sorted(seventh_wave))
        for task_name in seventh_wave:
            tm.tasks[task_name].finished = True

        eighth_wave = tm._get_ready_tasks()
        self.assertEquals(sorted(['task_f_1']), sorted(eighth_wave))
        for task_name in eighth_wave:
            tm.tasks[task_name].finished = True

        ninth_wave = tm._get_ready_tasks()
        self.assertEquals(sorted(['task_g_1']), sorted(ninth_wave))
        for task_name in ninth_wave:
            tm.tasks[task_name].finished = True
Beispiel #5
0
    def test_subsanity(self):
        # make subtaskmanager
        stm = taskmanager.SubTaskManager('test_subsanity_child')
        stm.add_task(
            taskmanager.Task(name='test_1', func=_log, fargs=['test_1']))
        stm.add_task(
            taskmanager.Task(name='test_2',
                             reqs='test_1',
                             func=_loop_log_wait,
                             fargs=['test_2', 2, 1]))
        stm.add_task(
            taskmanager.Task(name='test_3',
                             reqs='test_1',
                             func=_log,
                             fargs=['test_3']))
        stm.add_task(
            taskmanager.Task(name='test_4',
                             reqs='test_2',
                             func=_loop_log_wait,
                             fargs=['test_4', 5, 1],
                             active=False))
        stm.add_task(
            taskmanager.Task(name='test_5',
                             reqs='test_1',
                             func=_loop_log_wait,
                             fargs=['test_5', 10, 1]))
        stm.add_task(
            taskmanager.Task(name='test_6',
                             reqs='test_3 test_4',
                             func=_loop_log_wait,
                             fargs=['test_6', 2, 3]))
        stm.add_task(
            taskmanager.Task(name='test_7',
                             reqs='test_6 test_5',
                             func=_loop_log_wait,
                             fargs=['test_7', 5, 1],
                             active=False))
        stm.add_task(
            taskmanager.Task(name='test_8',
                             reqs='test_7',
                             func=_loop_log_wait,
                             fargs=['test_8', 5, 1]))
        stm.add_task(
            taskmanager.Task(name='test_9',
                             reqs='test_8 test_7',
                             func=_loop_log_wait,
                             fargs=['test_9', 5, 1]))

        # make parent taskmanager
        tm = taskmanager.TaskManager('test_subsanity_parent')
        tm.add_task(
            taskmanager.Task(name='task1',
                             func=_loop_log_wait,
                             fargs=['task1', 2, 1]))
        tm.add_task(
            taskmanager.SubManagerTask(name='sub', manager=stm, reqs='task1'))
        tm.add_task(
            taskmanager.Task(name='task2',
                             func=_loop_log_wait,
                             fargs=['task2', 2, 1],
                             reqs='sub'))
        tm.add_task(
            taskmanager.Task(name='task3',
                             func=_loop_log_wait,
                             fargs=['task3', 2, 1],
                             reqs='task1'))

        tm.go()

        log.info('test_subsanity task_rcs: {}'.format(tm.task_rcs))
        self.assertEquals(0, tm.worst_rc)
        expected_task_rcs = {'task1': 0, 'task2': 0, 'task3': 0, 'sub': 0}
        self.assertEquals(expected_task_rcs, tm.task_rcs)
Beispiel #6
0
    def test_sanity(self):
        tm = taskmanager.TaskManager('test_sanity')

        tm.add_task(
            taskmanager.Task(name='test_1', func=_log, fargs=['test_1']))
        tm.add_task(
            taskmanager.Task(name='test_2',
                             reqs='test_1',
                             func=_loop_log_wait,
                             fargs=['test_2', 2, 1]))
        tm.add_task(
            taskmanager.Task(name='test_3',
                             reqs='test_1',
                             func=_log,
                             fargs=['test_3']))
        tm.add_task(
            taskmanager.Task(name='test_4',
                             reqs='test_2',
                             func=_loop_log_wait,
                             fargs=['test_4', 5, 1],
                             active=False))
        tm.add_task(
            taskmanager.Task(name='test_5',
                             reqs='test_1',
                             func=_loop_log_wait,
                             fargs=['test_5', 10, 1]))
        tm.add_task(
            taskmanager.Task(name='test_6',
                             reqs='test_3 test_4',
                             func=_loop_log_wait,
                             fargs=['test_6', 2, 3]))
        tm.add_task(
            taskmanager.Task(name='test_7',
                             reqs='test_6 test_5',
                             func=_loop_log_wait,
                             fargs=['test_7', 5, 1],
                             active=False))
        tm.add_task(
            taskmanager.Task(name='test_8',
                             reqs='test_7',
                             func=_loop_log_wait,
                             fargs=['test_8', 5, 1]))
        tm.add_task(
            taskmanager.Task(name='test_9',
                             reqs='test_8 test_7',
                             func=_loop_log_wait,
                             fargs=['test_9', 5, 1]))

        tm.go()

        log.info('test_sanity task_rcs: {}'.format(tm.task_rcs))
        self.assertEquals(0, tm.worst_rc)
        expected_task_rcs = {
            'test_6': 0,
            'test_5': 0,
            'test_3': 0,
            'test_2': 0,
            'test_1': 0,
            'test_9': 0,
            'test_8': 0
        }
        self.assertEquals(expected_task_rcs, tm.task_rcs)