예제 #1
0
    def setUp(self):
        super().setUp()

        self.score_info = (unique_long_id(), unique_long_id(),
                           unique_long_id(), unique_long_id(),
                           [unique_unicode_id(), unique_unicode_id()])

        patcher = patch("cms.db.Dataset.score_type_object",
                        new_callable=PropertyMock)
        self.score_type = patcher.start().return_value
        self.addCleanup(patcher.stop)
        self.call_args = list()
        self.score_type.compute_score.side_effect = self.compute_score

        self.contest = self.add_contest()
예제 #2
0
파일: WorkerTest.py 프로젝트: PJeBeK/cms
 def new_jobs(number_of_jobs, prefix=None):
     prefix = prefix if prefix is not None else ""
     jobs = []
     calls = []
     for i in xrange(number_of_jobs):
         job_params = [
             ESOperation(ESOperation.EVALUATION,
                         unique_long_id(), unique_long_id(),
                         unique_unicode_id()).to_dict(),
             "fake_task_type",
             "fake_parameters_%s%d" % (prefix, i)
         ]
         job = EvaluationJob(*job_params, info="%s%d" % (prefix, i))
         jobs.append(job)
         # Arguments to get_task_type are the same as for the job,
         # but omitting the operation.
         calls.append(call(*job_params[1:]))
     return jobs, calls
예제 #3
0
파일: databasemixin.py 프로젝트: Nyrio/cms
 def get_announcement(cls, contest=None, **kwargs):
     """Create an announcement"""
     contest = contest if contest is not None else cls.get_contest()
     args = {
         "contest": contest,
         "subject": unique_unicode_id(),
         "text": unique_unicode_id(),
         "timestamp": (contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     announcement = Announcement(**args)
     return announcement
예제 #4
0
파일: databasemixin.py 프로젝트: Nyrio/cms
 def get_token(cls, submission=None, **kwargs):
     """Create a token."""
     submission = submission if submission is not None \
         else cls.get_submission()
     args = {
         "submission": submission,
         "timestamp": (submission.task.contest.start
                       + timedelta(seconds=unique_long_id())),
     }
     args.update(kwargs)
     token = Token(**args)
     return token
예제 #5
0
    def test_failure_due_to_max_number_on_task(self):
        max_number = unique_long_id()
        self.task.max_submission_number = max_number
        # False only when we ask for task.
        self.check_max_number.side_effect = \
            lambda *args, **kwargs: "task" not in kwargs

        with self.assertRaisesRegex(UnacceptableSubmission, "%d" % max_number):
            self.call()

        self.check_max_number.assert_called_with(
            self.session, max_number, self.participation, task=self.task)
예제 #6
0
    def test_failure_due_to_max_number_on_contest(self):
        max_number = unique_long_id()
        self.contest.max_user_test_number = max_number
        # False only when we ask for contest.
        self.check_max_number.side_effect = \
            lambda *args, **kwargs: "contest" not in kwargs

        with self.assertRaisesRegex(UnacceptableUserTest, "%d" % max_number):
            self.call()

        self.check_max_number.assert_called_with(
            self.session, max_number, self.participation, contest=self.contest,
            cls=UserTest)
예제 #7
0
    def test_failure_due_to_max_number_on_task(self):
        max_number = unique_long_id()
        self.task.max_user_test_number = max_number
        # False only when we ask for task.
        self.check_max_number.side_effect = \
            lambda *args, **kwargs: "task" not in kwargs

        with six.assertRaisesRegex(self, UnacceptableUserTest,
                                   "%d" % max_number):
            self.call()

        self.check_max_number.assert_called_with(
            self.session, max_number, self.participation, task=self.task,
            cls=UserTest)
예제 #8
0
 def get_message(cls, participation=None, **kwargs):
     """Create a message."""
     participation = participation if participation is not None \
         else cls.get_participation()
     args = {
         "participation": participation,
         "subject": unique_unicode_id(),
         "text": unique_unicode_id(),
         "timestamp": (participation.contest.start
                       + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     message = Message(**args)
     return message
예제 #9
0
파일: databasemixin.py 프로젝트: Nyrio/cms
 def get_question(cls, participation=None, **kwargs):
     """Create a question."""
     participation = participation if participation is not None \
         else cls.get_participation()
     args = {
         "participation": participation,
         "subject": unique_unicode_id(),
         "text": unique_unicode_id(),
         "question_timestamp": (participation.contest.start
                                + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     question = Question(**args)
     return question
예제 #10
0
 def get_message(cls, participation=None, **kwargs):
     """Create a message."""
     participation = participation if participation is not None \
         else cls.get_participation()
     args = {
         "participation": participation,
         "subject": unique_unicode_id(),
         "text": unique_unicode_id(),
         "timestamp": (participation.group.start
                       + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     message = Message(**args)
     return message
예제 #11
0
 def add_token(self, submission=None, **kwargs):
     """Create a token and add it to the session"""
     if submission is None:
         submission = self.add_submission()
     args = {
         "submission":
         submission,
         "timestamp": (submission.task.contest.start +
                       timedelta(seconds=unique_long_id())),
     }
     args.update(kwargs)
     token = Token(**args)
     self.session.add(token)
     return token
예제 #12
0
    def test_failure_due_to_min_interval_on_task(self):
        min_interval = timedelta(seconds=unique_long_id())
        self.task.min_user_test_interval = min_interval
        # False only when we ask for task.
        self.check_min_interval.side_effect = \
            lambda *args, **kwargs: "task" not in kwargs

        with six.assertRaisesRegex(self, UnacceptableUserTest,
                                   "%d" % min_interval.total_seconds()):
            self.call()

        self.check_min_interval.assert_called_with(
            self.session, min_interval, self.timestamp, self.participation,
            task=self.task, cls=UserTest)
예제 #13
0
    def test_failure_due_to_min_interval_on_contest(self):
        min_interval = timedelta(seconds=unique_long_id())
        self.contest.min_submission_interval = min_interval
        # False only when we ask for contest.
        self.check_min_interval.side_effect = \
            lambda *args, **kwargs: "contest" not in kwargs

        with six.assertRaisesRegex(self, UnacceptableSubmission,
                                   "%d" % min_interval.total_seconds()):
            self.call()

        self.check_min_interval.assert_called_with(
            self.session, min_interval, self.timestamp, self.participation,
            contest=self.contest)
예제 #14
0
    def test_failure_due_to_min_interval_on_task(self):
        min_interval = timedelta(seconds=unique_long_id())
        self.task.min_user_test_interval = min_interval
        # False only when we ask for task.
        self.check_min_interval.side_effect = \
            lambda *args, **kwargs: "task" not in kwargs

        with self.assertRaisesRegex(UnacceptableUserTest,
                                    "%d" % min_interval.total_seconds()):
            self.call()

        self.check_min_interval.assert_called_with(
            self.session, min_interval, self.timestamp, self.participation,
            task=self.task, cls=UserTest)
예제 #15
0
    def test_failure_due_to_min_interval_on_contest(self):
        min_interval = timedelta(seconds=unique_long_id())
        self.contest.min_submission_interval = min_interval
        # False only when we ask for contest.
        self.check_min_interval.side_effect = \
            lambda *args, **kwargs: "contest" not in kwargs

        with self.assertRaisesRegex(UnacceptableSubmission,
                                    "%d" % min_interval.total_seconds()):
            self.call()

        self.check_min_interval.assert_called_with(
            self.session, min_interval, self.timestamp, self.participation,
            contest=self.contest)
예제 #16
0
 def get_submission(cls, task=None, participation=None, **kwargs):
     """Create a submission."""
     task = task if task is not None \
         else cls.get_task(contest=cls.get_contest())
     participation = participation if participation is not None \
         else cls.get_participation(contest=task.contest)
     assert task.contest == participation.contest
     args = {
         "task": task,
         "participation": participation,
         "timestamp": (task.contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     submission = Submission(**args)
     return submission
예제 #17
0
파일: databasemixin.py 프로젝트: Nyrio/cms
 def get_submission(cls, task=None, participation=None, **kwargs):
     """Create a submission."""
     task = task if task is not None \
         else cls.get_task(contest=cls.get_contest())
     participation = participation if participation is not None \
         else cls.get_participation(contest=task.contest)
     assert task.contest == participation.contest
     args = {
         "task": task,
         "participation": participation,
         "timestamp": (task.contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     submission = Submission(**args)
     return submission
예제 #18
0
 def get_announcement(cls, contest=None, **kwargs):
     """Create an announcement"""
     contest = contest if contest is not None else cls.get_contest()
     args = {
         "contest":
         contest,
         "subject":
         unique_unicode_id(),
         "text":
         unique_unicode_id(),
         "timestamp":
         (contest.main_group.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     announcement = Announcement(**args)
     return announcement
예제 #19
0
 def add_submission(self, task=None, participation=None, **kwargs):
     """Add a submission."""
     task = task if task is not None else self.add_task()
     participation = participation \
         if participation is not None \
         else self.add_participation(contest=task.contest)
     assert task.contest == participation.contest
     args = {
         "task": task,
         "participation": participation,
         "timestamp": (task.contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     submission = Submission(**args)
     self.session.add(submission)
     return submission
예제 #20
0
 def add_user_test(self, task=None, participation=None, **kwargs):
     """Add a user test."""
     task = task if task is not None else self.add_task()
     participation = participation \
         if participation is not None \
         else self.add_participation(contest=task.contest)
     assert task.contest == participation.contest
     args = {
         "task": task,
         "participation": participation,
         "input": unique_digest(),
         "timestamp": (task.contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     user_test = UserTest(**args)
     self.session.add(user_test)
     return user_test
예제 #21
0
 def get_question(cls, participation=None, **kwargs):
     """Create a question."""
     participation = participation if participation is not None \
         else cls.get_participation()
     args = {
         "participation":
         participation,
         "subject":
         unique_unicode_id(),
         "text":
         unique_unicode_id(),
         "question_timestamp":
         (participation.group.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     question = Question(**args)
     return question
예제 #22
0
 def get_question(participation=None, **kwargs):
     """Create a question."""
     participation = participation \
         if participation is not None else DatabaseMixin.get_participation()
     args = {
         "participation":
         participation,
         "subject":
         unique_unicode_id(),
         "text":
         unique_unicode_id(),
         "question_timestamp":
         (participation.contest.start + timedelta(0, unique_long_id())),
     }
     args.update(kwargs)
     question = Question(**args)
     return question