diff --git a/swh/scheduler/tests/common.py b/swh/scheduler/tests/common.py index 2dcacbb..3efd906 100644 --- a/swh/scheduler/tests/common.py +++ b/swh/scheduler/tests/common.py @@ -1,102 +1,100 @@ # Copyright (C) 2017-2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import copy import datetime TEMPLATES = { 'git': { 'type': 'update-git', 'arguments': { 'args': [], 'kwargs': {}, }, 'next_run': None, }, 'hg': { 'type': 'update-hg', 'arguments': { 'args': [], 'kwargs': {}, }, 'next_run': None, 'policy': 'oneshot', } } TASK_TYPES = { 'git': { 'type': 'update-git', 'description': 'Update a git repository', 'backend_name': 'swh.loader.git.tasks.UpdateGitRepository', 'default_interval': datetime.timedelta(days=64), 'min_interval': datetime.timedelta(hours=12), 'max_interval': datetime.timedelta(days=64), 'backoff_factor': 2, 'max_queue_length': None, 'num_retries': 7, 'retry_delay': datetime.timedelta(hours=2), }, 'hg': { 'type': 'update-hg', 'description': 'Update a mercurial repository', 'backend_name': 'swh.loader.mercurial.tasks.UpdateHgRepository', 'default_interval': datetime.timedelta(days=64), 'min_interval': datetime.timedelta(hours=12), 'max_interval': datetime.timedelta(days=64), 'backoff_factor': 2, 'max_queue_length': None, 'num_retries': 7, 'retry_delay': datetime.timedelta(hours=2), }, } def tasks_from_template(template, max_timestamp, num, - num_priority=0, priorities=None, status=None): + num_priority=0, priorities=None): """Build tasks from template """ def _task_from_template(template, next_run, priority, *args, **kwargs): ret = copy.deepcopy(template) ret['next_run'] = next_run if priority: ret['priority'] = priority if args: ret['arguments']['args'] = list(args) if kwargs: ret['arguments']['kwargs'] = kwargs - if status: - ret['status'] = status return ret def _pop_priority(priorities): if not priorities: return None for priority, remains in priorities.items(): if remains > 0: priorities[priority] = remains - 1 return priority return None if num_priority and priorities: priorities = { priority: ratio * num_priority for priority, ratio in priorities.items() } tasks = [] for i in range(num + num_priority): priority = _pop_priority(priorities) tasks.append(_task_from_template( template, max_timestamp - datetime.timedelta(microseconds=i), priority, 'argument-%03d' % i, **{'kwarg%03d' % i: 'bogus-kwarg'} )) return tasks diff --git a/swh/scheduler/tests/test_common.py b/swh/scheduler/tests/test_common.py index a099c95..e27b8da 100644 --- a/swh/scheduler/tests/test_common.py +++ b/swh/scheduler/tests/test_common.py @@ -1,83 +1,62 @@ # Copyright (C) 2017-2019 The Software Heritage developers # See the AUTHORS file at the top-level directory of this distribution # License: GNU General Public License version 3, or any later version # See top-level LICENSE file for more information import datetime from .common import tasks_from_template, TEMPLATES def test_tasks_from_template_no_priority(): nb_tasks = 3 template = TEMPLATES['git'] next_run = datetime.datetime.utcnow() tasks = tasks_from_template(template, next_run, nb_tasks) assert len(tasks) == nb_tasks for i, t in enumerate(tasks): assert t['type'] == template['type'] assert t['arguments'] is not None assert t.get('policy') is None # not defined in template assert len(t['arguments']['args']) == 1 assert len(t['arguments']['kwargs'].keys()) == 1 assert t['next_run'] == next_run - datetime.timedelta(microseconds=i) assert t.get('priority') is None - assert t.get('status') is None # not in template nor as parameter - - -def test_tasks_from_template_disabled(): - nb_tasks = 2 - template = TEMPLATES['git'] - next_run = datetime.datetime.utcnow() - tasks = tasks_from_template(template, next_run, nb_tasks, - status='disabled') - - assert len(tasks) == nb_tasks - - for i, t in enumerate(tasks): - assert t['type'] == template['type'] - assert t['arguments'] is not None - assert t.get('policy') is None # not defined in template - assert len(t['arguments']['args']) == 1 - assert len(t['arguments']['kwargs'].keys()) == 1 - assert t['next_run'] == next_run - datetime.timedelta(microseconds=i) - assert t.get('priority') is None - assert t['status'] == 'disabled' def test_tasks_from_template_priority(): nb_tasks_no_priority = 3 nb_tasks_priority = 10 template = TEMPLATES['hg'] priorities = { 'high': 0.5, 'normal': 0.3, 'low': 0.2, } next_run = datetime.datetime.utcnow() tasks = tasks_from_template( template, next_run, nb_tasks_no_priority, num_priority=nb_tasks_priority, priorities=priorities) assert len(tasks) == nb_tasks_no_priority + nb_tasks_priority repartition_priority = {k: 0 for k in priorities.keys()} for i, t in enumerate(tasks): assert t['type'] == template['type'] assert t['arguments'] is not None assert t['policy'] == template['policy'] assert len(t['arguments']['args']) == 1 assert len(t['arguments']['kwargs'].keys()) == 1 assert t['next_run'] == next_run - datetime.timedelta(microseconds=i) priority = t.get('priority') if priority: assert priority in priorities repartition_priority[priority] += 1 assert repartition_priority == { k: v * nb_tasks_priority for k, v in priorities.items() }