Example #1
0
    def test_should_prefer_tasks_with_higher_priority_from_same_contest(self):
        contest = create_contest_info()

        task_1 = create_task_info(contest=contest, priority=1)
        task_2 = create_task_info(contest=contest, priority=100)

        queues = prioritizing.TasksQueues(random.Random())

        queues.addTask(task_1)
        queues.addTask(task_2)

        self.assertEqual(queues.chooseTask(), task_2)

        queues.delTask(task_2)
        self.assertEqual(queues.chooseTask(), task_1)
Example #2
0
    def test_should_prefer_tasks_from_higher_priority_contests(self):
        contest_1 = create_contest_info(id=1, priority=5)
        contest_2 = create_contest_info(id=2, priority=10)

        task_1 = create_task_info(contest=contest_1, priority=100)
        task_2 = create_task_info(contest=contest_2, priority=1)

        queues = prioritizing.TasksQueues(random.Random())

        queues.addTask(task_1)
        queues.addTask(task_2)

        self.assertEqual(queues.chooseTask(), task_2)

        queues.delTask(task_2)
        self.assertEqual(queues.chooseTask(), task_1)
Example #3
0
    def test_should_respect_contest_weights_if_same_priority(self):
        contest_1 = create_contest_info(id=1, priority=10, weight=2)
        contest_2 = create_contest_info(id=2, priority=10, weight=8)

        queues = prioritizing.TasksQueues(random.Random())

        # Add an equal amount of tasks.
        for _ in range(100):
            queues.addTask(create_task_info(contest=contest_1))
            queues.addTask(create_task_info(contest=contest_2))

        def choose_and_remove():
            task = queues.chooseTask()
            queues.delTask(task)
            return task

        chosen_tasks = [choose_and_remove() for _ in range(100)]

        tasks_from_1 = sum(task.contest.uid == 1 for task in chosen_tasks)
        tasks_from_2 = sum(task.contest.uid == 2 for task in chosen_tasks)

        self.assertGreater(tasks_from_1, 0)
        self.assertGreater(tasks_from_2, 0)
        self.assertGreater(tasks_from_2, 2 * tasks_from_1)